单片机DA数模转换实验报告
实验(二)DA转换实验
实验二D/ A转化实验一、实验目的:(1)掌握D/A转换与单片机的接口方法。
(2)了解D/A芯片PCF8591转换性能及编程方法。
(3)了解单片机系统中扩展D/ A转换芯片的基本方法二、实验内容利用实验仪上的PCF8591做D/A转换实验,写入DA的数模值,然后累加该值,显示该值到数码管,延时100m后循环写入变化后的DA值,观察LED9的变化。
三、实验说明A/ D转换器大致分有三类:一是双积分A/ D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近式A/ D转换器,精度、速度、价格适中;三是并行A/ D 转换器,速度快,价格也昂贵。
PCF8591属第二类,PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。
PCF8591具有4个模拟输入、1个模拟输出和1个串行I²C总线接口。
PCF8591的3个地址引脚A0, A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。
在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。
四、实验步骤(1)单片机P0口与J3相连,用作数码管显示(2)单片机P2.2与J2(B)相连,P2.2与J2(A)相连。
(3)跳帽J50 连接,给数码管供电。
(4)单片机P2.0与J8(SCL)相连,最为时钟输出,单片机P2.1与J8(SDL)相连最为数据输入输出。
(5)J31中AD0与W4用跳帽相连,选择AD通道。
(6)利用keil软件编写程序,并且用STC程序下载工具下载程序。
(7)观察LED9的变化。
单片机c语言程序设计---DA转换实验报告
单片机c语言程序设计---D/A转换实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称: D/A转换实验一、实验目的和要求1.掌握数模转换的概念2.掌握D/A转换芯片DAC0832的功能及特点,掌握与单片机的接口3.掌握D/A转换芯片DAC0832的c语言编程实例二、实验内容和原理实验1.信号发生器功能:使用DAC0832用作信号发生器,编写产生锯齿波、三角波和方波的程序。
本次项目中,DAC0832采用单缓冲单极性的线选法接线方式,其选通地址为7FFFH。
(1)硬件设计使用P1口接3个独立的按键S01、S02、S03,当按下S01时输出锯齿波,按下S02时输出三角波,当按下S03时输出方波。
电路原理图如下仿真所需元器件(2)proteus仿真通过Keil编译后,利用protues软件进行仿真。
在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。
启动仿真,观察仿真结果。
三、实验要求:1.完成信号发生器实验。
具体包括绘制仿真电路图、编写c源程序、进行仿真并观察仿真结果,需要保存原理图截图,保存c源程序,总结观察的仿真结果。
完成思考题。
四、操作方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。
2.在keil上进行编译后生成“xxx.hex”文件。
3.编译好的“xxx.hex”文件加入AT89C51。
启动仿真,观察仿真结果。
五、实验结果与分析void main(){while(1){while( K01==0 ) //生成锯齿波{for(cDigital=0;cDigital<=250;cDigital++){TransformData(cDigital);//进行数模转换}}while( K02==0 ) //生成三角波{for(cDigital=0;cDigital<=250;cDigital++){TransformData(cDigital);//进行数模转换}for(cDigital=250;cDigital>=0;cDigital--){TransformData(cDigital);//进行数模转换}}while( K03==0 ) //生成方波{TransformData(0);//进行数模转换Delay(500);TransformData(250);//进行数模转换Delay(500);}}}六、讨论和心得。
DA转换实验
unsigned long int Yx;//显示全局变量
unsigned char idata xb=0,CKx[20]={0};
#define jz 11.0592
sbit LED_D1=P4^3;
sbit LED_D2=P4^4;
{
ES=0;
xb=0;
z=0;
for(j=0;j<9;j++)
{
send(CKx[j]);
}
ES=1;
for(j=1;j<9;j++)
{
z=z*10;
z=z+(CKx[j] & 0x0f);
}
DA_conver(z);
Yx=z;
}
//Yx=Yx+1;
LED_D1=~LED_D1;
delay(0xf000);
2.2 D/A转换器
数字量是用代码按数位组合起来表示的,对于有权码,每位代码都有一定的权。为了将数字量转换成模拟量,必须将每一位的代码按其权的大小转换成相应的模拟量,然后将这些模拟量相加,即可得与数字量成正比的模拟量,从而实现了数字—模拟转换。
D/A转换器通常是由数码寄存器、模拟电子开关电路、解码网络、求和电路及基准电压几部分。
CK1_T2_9600_10bit();//在11.0592MHz,is9.6k
T0_csh();
ET0=1;
ES=1;
EA=1;
ctr_S1=0;
ctr_FG=0;
s2fg=0;
// send(0xaa);
// send(0xbb);
DA 转换实验
单片机原理及应用实验报告实验项目名称:D/A 转换实验实验日期:2013.12.17 实验成绩:实验评定标准:一、实验目的了解DAC 0832 基本工作原理;掌握DAC 0832 与单片机接口设计方法。
二、实验器材安装有keil uVision和proteus软件的PC机一台三、实验内容(1)编写并调试出一个输出方波的程序。
(2)编写并调试出一个输出阶波的程序。
(3)编写并调试出一个输出三角波的程序。
(4)编写并调试出一个输出锯齿波的程序。
(5)编写一个驱动直流电机的程序。
四、实验步骤打开Keil程序,执行菜单命令“Project”‡“New Project”创建“0832DA转换”项目,并选择单片机型号为AT89C51。
执行菜单命令“File”‡“New”创建文件,输入源程序,保存为“0832DA转换.A51”。
在“Project”栏的File项目管理窗口中右击文件组,选择“Add Files to Group ‘Source Group1’”将源程序“0832DA转换.A51”添加到项目中。
执行菜单命令“Project”‡“Options for Target ‘Target 1’”,在弹出的对话框中选择“Output”选项卡,选中“Greate HEX File”。
执行菜单命令“Project”‡“Build Target”,编译源程序。
如果编译成功,则在“Output Window”窗口中显示没有错误,并创建了“0832DA转换.HEX”文件。
在proteus仿真平台上建立参考图系统,并将程序上载到虚拟芯片上运行。
五、实验结果及分析ORG 0000H START: LJMP MAINORG 0030H MAIN: MOV DPTR,#7FFFHMOV A,#3FH LOOP: MOVX @DPTR,AJNB P1.0,INCDJNB P1.2,DECDLJMP LOOP INCD: ADD A,#20HCJNE A,#0E0H,LOOPMOV A,#20HLJMP LOOP DECD: CLR CSUBB A,#20HCJNE A,#00H,LOOPMOV A,#20HEND SJMP LOOP实验结果:方波和梯形波:锯齿波和三角波:实验分析:数模转换器,它是一种将二进制数字量形式的离散信号转换成以标准量(或参考量)为基准的模拟量的器件。
单片机实验DA转换器DAC0832的应用的报告
单片机应用技术课程报告实验名称D/A转换器DAC0832的应用实验时间2020年6月30 日学生姓名实验地点钉钉群线上同组人员专业班级1、实验目的(1)了解D/A转换与单片机的接口方法;(2)了解D/A转换芯片DAC0832的性能及编程方法(3)掌握D/A转换的程序设计方法。
2、任务设计要求(1)掌握实验原理,读懂实验线路图,了解所用到的元器件特性。
(2)会绘制电路原理图,会连接电路原理图。
(3)将编制的锯齿波、方波程序运行,用示波器观察波形。
使用STC89C51单片机、DAC0832芯片,设计一个波形发生器,能产生正弦波、方波、三角波、锯齿波,梯形波,要求通过编程实现不同波型的产生,通过按键实现不同波形输出的切换。
3、总体设计方案4、硬件电路设计5、软件程序设计#include<absacc.h>#include<reg51.h>#define DAC0832 XBYTE[0x7fff]sbit k1=P1^0;sbit k2=P1^1;sbit k3=P1^2;sbit k4=P1^3;sbit k5=P1^4;int flag1=0;int flag2=0;int flag3=0;int flag4=0;int flag5=0;unsigned char code zhengxian[256]={0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5, 0xa8,0xab,0xae,0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9, 0xcc,0xce,0xd1,0xd3,0xd5,0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6, 0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf4,0xf6,0xf7,0xf8,0xf9, 0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9, 0xf8,0xf7,0xf6,0xf4,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,0xda,0xd8,0xd6,0xd3,0xd1,0xce,0xcc,0xc9, 0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb4,0xb1,0xae,0xab,0xa8,0xa5, 0xa2,0x9f,0x9c,0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83,0x80,0x7d, 0x7a,0x76,0x73,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55, 0x52,0x4f,0x4c,0x49,0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,0x31, 0x2e,0x2c,0x2a,0x27,0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15, 0x14,0x12,0x10,0x0f,0x0d,0x0c,0x0b,0x09,0x08,0x07,0x06,0x05,0x04, 0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08, 0x09,0x0a,0x0c,0x0d,0x0e,0x10,0x12,0x13,0x15,0x17,0x18,0x1a,0x1c, 0x1e,0x20,0x23,0x25,0x27,0x29,0x2c,0x2e,0x30,0x33,0x35,0x38,0x3b, 0x3d,0x40,0x43,0x46,0x48,0x4b,0x4e,0x51,0x54,0x57,0x5a,0x5d,0x60, 0x63,0x66,0x69,0x6c,0x6f,0x73,0x76,0x79,0x7c};void delay()//延时程序{int i;for(i=0;i<1000;i++);}void panduan (void)//函数panduan用于扫描按键状态判断输出波形{if (k1==0){//按键消抖delay();if (k1==0)//通过赋值flag选择波形flag1=1;flag2=0;flag3=0;flag4=0;flag5=0;}if(k2==0){delay();if (k2==0)flag1=0;flag2=1;flag3=0;flag4=0;flag5=0;}if (k3==0){//补充程序flag1=0;flag2=0;flag3=1;flag4=0;flag5=0;。
单片机DA转换实验报告
实验九D/A实验报告㈠实验目的1.掌握单片机与D/A的接口及编程方法;2.通过D/A动态波形输出进一步理解D/A的工作原理;3.结合实验六中的A/D来检验软硬件的正确性。
4.进一步了解单片机系统地址分配概念。
㈡实验器材1.G6W仿真器一台2.MCS—51实验板一台3.PC机一台4.信号发生器一台5.示波器一台㈢实验内容及要求DAC0832是内含双锁存器且可与单片机8051直接接口的8位D/A,从实验板的电原理图可见,当0832管脚ILE为高,CS2为低时,8051对0832写入待转换的8位数字量,当对0832写入任意数(WR、CS2都为低)时,8051启动D/A转换。
把具有一定规律变化的数据连续送到0832,可用示波器在运放741输出端看到一定规律的动态波形。
将实验六中A/D所存数据直接送到0832,在D/A输出端也可用示波器观察到还原后的A/D输入端信号。
注意:在实验前,应先检查DAC0832的参考电压是否正确。
(要求DAC0832的参考电压值为Vref = -5V,用万用表观察DAC0832芯片的8脚电压值。
若不对,可调节实验板上的电位器W3来改变D/A的参考电压值。
)㈣实验步骤1.接ILE至高电平(+5V),根据CS2与高位地址线的连接情况,确定0832在系统中的地址。
2.将微机与伟福仿真系统及51实验板相连接。
3.编写双向锯齿波或三角波输出的D/A程序,利用伟福仿真系统及计算机汇编成目标码,运行并调试程序,用示波器观察实验结果。
4.编写送A/D数据至D/A转换程序,并将在实验六中所编写A/D采样程序与之连接组合,运用伟福仿真系统及计算机汇编成目标码,运行并调试程序,用示波器观察对照A/D输入端和D/A输出端的波形。
㈤ 实验框图㈥ 思考题1. 在实验步骤4中,对比了A/D 输入端和D/A 输出端的波形,它们有什么不同?为什么?A/D 输出端是正弦波形,而D/A 输出端是一段直流加一段正弦波形。
实验六 DA转换实验
实验六D/A转换实验一、实验目的:1.了解D/A转换的基本原理。
1.了解D/A转换芯片0832的性能及编程方法。
2.了解单片机系统中扩展D/A转换的基本方法。
二、实验设备:EL-MUT-III型单片机实验箱、8051CPU模块三、实验内容:利用DAC0832,编制程序产生锯齿波、三角波、正弦波。
三种波形轮流显示。
四、实验原理:D/A转换是把数字量转换成模拟量的变换,从D/A输出的是模拟电压信号。
产生锯齿波和三角波只需由A存放的数字量的增减来控制;要产生正弦波,较简单的手段是造一张正弦数字量表。
取值范围为一个周期,采样点越多,精度就越高。
本实验中,输入寄存器占偶地址端口,DAC寄存器占较高的奇地址端口。
两个寄存器均对数据独立进行锁存。
因而要把一个数据通过0832输出,要经两次锁存。
典型程序段如下: MOV DPTR,#PORTMOV A,#DATAMOVX @DPTR,AINC DPTRMOVX @DPTR,A其中第二次I/O写是一个虚拟写过程,其目的只是产生一个WR信号。
启动D/A。
五、实验电路:六、实验步骤:1、DAC0832的片选CS0832接CS0,输出端OUT接示波器探头。
2、将短路端子DS的1、2短路七、程序框图T14.ASM主程序MAIN 锯齿波显示子程序:PRG1三角波显示子程序:PRG2 正弦波显示子程序:PRG3中断子程序:DELAY;实验接线:DAC0832的片选CS0832接CS0,输出端OUT接示波器探头。
NAME T92 ;0832数模转换实验PORT EQU 0CFA0HCSEG AT 4000HLJMP STARTCSEG AT 4100HSTART: MOV R1,#02H ;置计数初值于R1ACALL PRG1 ;显示锯齿波MOV R1,#01H ;置计数初值于R1ACALL PRG2 ;显示三角波MOV R1,#01H ;置计数初值于R1ACALL PRG3 ;显示正弦波LJMP START ;转START循环显示PRG1: MOV DPTR,#PORT+1 ;DAC寄存器端口地址送DPTR问题1、端口地址是多少?MOV A,#00H ;初值送ACCLOOP: MOV B,#0FFHLOOP1: MOV DPTR,#PORT ;DAC输入寄存器端口地址MOVX @DPTR,A ;送出数据INC DPTR ;问题2、加一,,是什么寄存器端口地址MOVX @DPTR,A ;启动转换INC A ;数据加一CJNE A,#0FFH,LOOP1MOV A,#00HDJNZ B,LOOP1DJNZ R1,LOOP ;计数值减到40H了吗?没有则继续RET ;产生锯齿波问题3、描述锯齿波是如何产生的?PRG2: MOV DPTR,#PORT+1MOV A,#00HLP0: MOV B,#0FFHLP1: MOV DPTR,#PORT ;LP1循环产生三角波前半周期MOVX @DPTR,AINC DPTRMOVX @DPTR,AINC ACJNE A,#0FFH,LP1 ;数据为FFH吗?不等则转LP1MOV R2,#0FEHLP2: MOV DPTR,#PORT ;LP2循环产生三角波后半周期MOV A,R2MOVX @DPTR,AINC DPTRMOVX @DPTR,ADJNZ R2,LP2DJNZ B,LP1DJNZ R1,LP0 ;计数值到80H则退出执行下一步RET问题3、描述三角波是如何产生的?PRG3: MOV B,#00HLP3: MOV DPTR,#DATA0MOV R4,#0FFH ;FFH为DA TA0表中的数据个数LP4: MOVX A,@DPTR ;从表中取数据MOV R3,DPHMOV R5,DPLMOV DPTR,#PORTMOVX @DPTR,AINC DPTRMOVX @DPTR,AMOV DPH,R3MOV DPL,R5INC DPTR ;地址下移DJNZ R4,LP4DJNZ B,LP3DJNZ R1,PRG3RET问题4、描述正弦波是如何产生的?DA TA0: DB 80H,83H,86H,89H,8DH,90H,93H,96HDB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEHDB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5HDB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8HDB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9HDB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5HDB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDHDB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDHDB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6HDB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAHDB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAHDB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7HDB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1HDB 0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99HDB 96H,93H,90H,8DH,89H,86H,83H,80HDB 80H,7CH,79H,76H,72H,6FH,6CH,69HDB 66H,63H,60H,5DH,5AH,57H,55H,51HDB 4EH,4CH,48H,45H,43H,40H,3DH,3AHDB 38H,35H,33H,30H,2EH,2BH,29H,27HDB 25H,22H,20H,1EH,1CH,1AH,18H,16HDB 15H,13H,11H,10H,0EH,0DH,0BH,0AHDB 09H,8H,7H,6H,5H,4H,3H,2HDB 02H,1H,0H,0H,0H,0H,0H,0HDB 00H,0H,0H,0H,0H,0H,1H,2HDB 02H,3H,4H,5H,6H,7H,8H,9HDB 0AH,0BH,0DH,0EH,10H,11H,13H,15HDB 16H,18H,1AH,1CH,1EH,20H,22H,25HDB 27H,29H,2BH,2EH,30H,33H,35H,38HDB 3AH,3DH,40H,43H,45H,48H,4CH,4EH DB 51H,51H,55H,57H,5AH,5DH,60H,63HDB 69H,6CH,6FH,72H,76H,79H,7CH,80H END。
单片机AD与DA转换实验报告
AD与DA转换实验报告一.实验目的⑴掌握A/D转换与单片机接口的方法;⑵了解A/D芯片0809转换性能及编程方法;⑶通过实验了解单片机如何进行数据采集。
⑷熟悉DAC0832 内部结构及引脚。
⑸掌握D/A转换与接口电路的方法。
⑹通过实验了解单片机如何进行波形输出。
二.实验设备装有proteus的电脑一台三.实验原理及内容1.数据采集_A/D转换(1)原理①ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
②ADC0809引脚结构:D7 ~ D0:8位数字量输出引脚。
IN0 ~ IN7:8位模拟量输入引脚。
VCC:+5V工作电压。
GND:地。
REF(+):参考电压正端。
REF(-):参考电压负端。
START:A/D转换启动信号输入端。
ALE:地址锁存允许信号输入端。
(以上两种信号用于启动A/D转换).EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。
OE:输出允许控制端,用以打开三态数据输出锁存器。
CLK:时钟信号输入端(一般为500KHz)。
A、B、C:地址输入线。
(2)内容和步骤1.硬件电路设计:设计基于单片机控制的AD转换应用电路。
AD转换芯片采用ADC0809。
ADC0809的通道IN3输入0-5V之间的模拟量,通过ADC0809转换成数字量在数码管上以十进制形成显示出来。
ADC0809的VREF接+5V电压。
2. 软件设计:程序设计内容(1) 进行A/D转换时,采用查询EOC的标志信号来检测A/D转换是否完毕,经过数据处理之后在数码管上显示。
(2) 进行A/D转换之前,要启动转换的方法:ABC=110选择第三通道。
ST=0,ST=1,ST=0产生启动转换的正脉冲信号2.D/A转换及数字式波形发生器(1)原理典型D/A转换DAC0832芯片V cc 芯片电源电压, +5V ~+15V VREF 参考电压, -10V ~+10VRFB 反馈电阻引出端, 此端可接运算放大器输出端 AGND 模拟信号地 DGND 数字信号地DI7~ DI0数字量输入信号。
DA转换实验报告
一、实验目的1. 学习数/模转换的基本原理。
2. 掌握DAC0832的使用方法。
二、实验设备PC机一台,TD-PITE实验装置或TD-PITC实验装置一套,示波器一台。
三、实验内容设计实验电路图实验线路并编写程序,实现D/A转换,要求产生锯齿波、三角波,并用示波器观察电压波形。
四、实验原理D/A转换器是一种将数字量转换成模拟量的器件,其特点是:接收、保持和转换的数字信息,不存在随温度、时间漂移的问题,其电路抗干扰性较好。
大多数的D/A转换器接口设计主要围绕D/A集成芯片的使用及配置响应的外围电路。
DAC0832是8位芯片,采用CMOS工艺和R-2RT形电阻解码网络,转换结果为一对差动电流Iout1和Iout2输出,其主要性能参数如表1示,引脚如图1所示。
D/A转换单元实验电路图如图2所示。
表1 DAC0832性能参数图1 DAC0832引脚图图2 D/A实验单元电路图五、实验步骤1. 实验接线图如图3所示,按图接线。
2. 编写实验程序,经编译、链接无误后装入系统。
3. 运行程序,用示波器测量DA的输出,观察实验现象。
4. 自行编写实验程序,产生三角波形,使用示波器观察输出,验证程序功能。
图3 D/A实验接线图5. 产生三角波程序如下:STACK SEGMENT STACKDW 32 DUP(?)STACK ENDSCODE SEGMENTASSUME CS: CODE, SS: STACKSTART: MOV AX, 00H ; 产生三角波MOV DX, 600HMOV AL, 00HAA1: CALL DELAYINC ALJZ AA2OUT DX, ALJMP AA1AA2: CALL DELAYDEC ALJZ AA1OUT DX,ALJMP AA2DELAY : PUSH CXMOV CX, 03FFHAA3: PUSH AXPOP AXLOOP AA3POP CXRETCODE ENDSEND START六、实验结果因实验室缺乏足够的示波器设备,故采用软示波器显示波形。
实验十DA、AD转换实验报告(一)
实验十DA、AD转换实验报告(一)引言概述:实验十DA、AD转换实验报告(一)本实验报告旨在介绍实验十DA、AD转换的相关内容。
在本次实验中,我们将会学习数字模拟转换和模拟数字转换的原理与方法,并通过实际操作进行验证。
本报告将按照以下五个主要部分进行阐述:(1)实验准备,(2)DA转换原理与方法,(3)AD转换原理与方法,(4)实验步骤与结果,(5)实验总结。
正文内容:1. 实验准备1.1 硬件准备- 数字模拟转换器(DAC)模块- 模拟数字转换器(ADC)模块- 连接电缆1.2 软件准备- 实验十DA、AD转换实验软件2. DA转换原理与方法2.1 DA转换原理- 数字模拟转换器将数字信号转换为模拟电压或电流输出的过程- 通过将数字数据转换为电路中的模拟信号,实现了数字信号到模拟信号的转换2.2 DA转换方法- 标准电压法- 标准电流法- R-2R网络法3. AD转换原理与方法3.1 AD转换原理- 模拟数字转换器将模拟量转换为数字量的过程- 通过将连续的模拟信号转换为离散的数字信号,实现了模拟信号到数字信号的转换3.2 AD转换方法- 逐次逼近法- 并行比较法- 闪存式转换法4. 实验步骤与结果4.1 实验设置- 连接DAC和ADC模块到电路中- 连接电缆,确保连接正确4.2 实验步骤- 设置DAC模块的输出值- 进行DA转换并记录输出结果- 将模拟信号输入到ADC模块中- 进行AD转换并记录输出结果4.3 实验结果- 实验运行过程中的数据记录与图表展示5. 实验总结5.1 实验心得体会- 通过本次实验,我更深入地了解了DA、AD转换的原理与方法- 实际操作过程中加深了对数字模拟转换和模拟数字转换的理解5.2 实验结果分析- 分析实验得到的数据与图表,验证转换原理与方法的准确性5.3 实验改进与展望- 在后续的实验中,可以进一步探索其他类型的DA、AD 转换器- 可以对实验步骤进行改进,提高实验效果和精确度总结:本实验报告阐述了实验十DA、AD转换的相关内容。
第(7)次实验报告-DA转换
0x38,0x43,0x4e,0x5a,0x66,0x73};//正弦波代码表
4、将调试正确的程序粘贴在此处,并对重要语句添加注释信息。
#include <reg52.h>
#include <absacc.h> //XBYTE[]头文件
1、实验要求:参考教材P280页的第一个程序段编程产生锯齿波。
2、已知条件:实验箱上D/A转换器0832芯片的端口地址为“7FFFH”。
3、将调试正确的程序粘贴在此处,并对重要语句添加注释信息。
第二个实验:编程产生“锯齿波”
1、实验要求:参考教材P280页的第一个程序段编程产生锯齿波。
2、已知条件:实验箱上D/A转换器0832芯片的端口地址为“7FFFH”。
《单片机基础》第7次实验报告
实验内容
利用D/A转换芯片0832编程产生“锯齿波”、“三角波”、“阶梯波”。
实验目的
学习对D/A转换芯片0832的编程。
姓名
学号
班级
电信12
实验设备:实验箱配件一套;数字示波器一台。
实验准备:
(1)实验箱的拨码开关K10拨在下方;KC拨在上方。
(2)将实验箱上的P0.0~P0.7接至U14D0~U14D7;WR接至U14WR。
DAC0832 = 0x00;
Delay();
DAC0832 = 0xff;
Delay();
}
void triangleWave()
{
uchar temp =0x00;
for(temp;temp<0xff;temp++)
{
DA数模转换实验
实验一 D/A数模转换实验一、实验目的1、掌握数模转换的基本原理。
2、熟悉12位D/A转换的方法。
二、实验内容通过A/D&D/A卡完成12位D/A转换的实验,转换公式如下:U o =Vref(211K12+210K11+ (20))/212Vref=5.0V例如:数字量=0100,0000,0000K 11=0,K10=1,K9=0,K8=0,K7=0,K6=0,K5=0,K4=0 K3=0, K2=0, K1=0, K=0模拟量Uo =Vref(4096-211K7+210K6+ (20))/212=2.5三、实验方法(1)硬件连接:将数据采样卡上标有AD1 IN 的插孔与DA1 OUT 的插孔相连。
(2)实验硬件原理示意图:数字量 D/A 转换 A/D采集计算机显示结果四、软件使用1、打开软件,在实验课题菜单中选中D/A数模转换实验;或者在左栏快捷区选中D/A数模转换实验项目条,双击即可。
2、在相应弹出的对话框中填写参数,在数字量对应区填写目标数字量。
注意:数字量的范围从0--40963、点击变换按钮,转换出对应的模拟量,如果点击运行,则执行采样数据,等待数据传输完成后,在测量图形中观测对应的数据;点击取消,则取消当前实验。
4、实验完成后起用测量标尺,观测图形并测量数据;在主窗口中单击Measure键,使用弹出标尺,进行单值测量;选择Single项,进行单测量;Double项,进行双测量,测量标尺可以拖动使用5、退出实验,在实验课题菜单中选择退出即可。
五.实验报告1.画出数字量与模拟量的对应曲线。
2.计算出理论值,将其与实验结果比较,分析产生误差的原因。
实验二 A/D模数转换实验一、实验目的1.掌握模数转换的基本原理。
2.熟悉12位A/D转换的方法。
二、实验内容通过A/D&D/A卡完成12位A/D转换的实验,转换公式如下:数字量=模拟量/Vref x2N 其中N是A/D的位数,Vref是基准电压。
da转换实验报告
da转换实验报告DA转换实验报告一、引言数字模拟转换(DA)是现代电子技术中的重要应用之一。
DA转换器将数字信号转换为模拟信号,使得数字系统与模拟系统之间能够进行有效的信息交流。
本实验旨在通过搭建一个基本的DA转换电路,探究其工作原理和性能特点。
二、实验装置和方法1. 实验装置:本实验所用的装置包括:数字信号发生器、DA转换器、示波器、模拟电压表等。
2. 实验方法:(1)将数字信号发生器的输出端与DA转换器的输入端相连;(2)将DA转换器的输出端与示波器相连,以观察转换后的模拟信号波形;(3)通过调节数字信号发生器的频率、幅度等参数,观察DA转换器输出的模拟信号变化。
三、实验结果与讨论1. 实验结果:在实验过程中,我们通过调节数字信号发生器的频率和幅度,观察到了DA转换器输出的模拟信号波形的变化。
当数字信号发生器输出一个方波信号时,我们可以看到DA转换器输出的是一个相应的模拟方波信号。
当数字信号发生器输出一个正弦波信号时,我们可以看到DA转换器输出的是一个相应的模拟正弦波信号。
2. 讨论:通过实验结果的观察和分析,我们可以得出以下结论:(1)DA转换器能够将数字信号转换为模拟信号,实现数字系统与模拟系统之间的信息交流;(2)DA转换器的输出信号波形与输入信号波形具有一定的对应关系,但转换过程中可能会存在一定的失真;(3)数字信号发生器的频率和幅度对DA转换器的输出信号波形有一定的影响,不同的输入信号参数会导致不同的输出结果。
四、实验总结通过本次实验,我们对DA转换器的工作原理和性能特点有了更深入的了解。
DA转换器在现代电子技术中具有广泛的应用,可以用于音频信号处理、通信系统、控制系统等领域。
然而,由于DA转换器的性能限制和转换过程中可能存在的失真问题,我们在实际应用中需要综合考虑各种因素,选择合适的DA转换器进行设计和应用。
总之,本次实验通过搭建一个基本的DA转换电路,通过调节数字信号发生器的参数,观察了DA转换器的输出信号波形的变化,并对其工作原理和性能特点进行了分析和讨论。
单片机扩展模数转换器实验报告
SBUF=0x0a;
while(TI==0) ;
TI=0;
}
};
}
void Int0() interrupt 0
{
t=DAT;
P1=t; //读取转换结果并显示
DAT=0x00; //开始下一次转换
}
六.实验心得
学习了A/D转换与单片机的接口方法。对A/D芯片ADC0809转换性能及编程方法有了了解,通过实验了解单片机如何进行数据采集,锻炼了编程的能力。
PCON = 0;
TR1 = 1; //定时器1开始工作
}
void Int0_Init()
{
EA=1; //CPU开中断
EX0=1; //开外部中断0
IT0=1; //边沿触发方式
}
void time0() interrupt 1
{ time++; //每1ms,time加1
TH0=64614/256; //重新装载定时器初值
实验四单片机扩展模数转换器实验
一.实验目的
1.掌握A/D转换与单片机的接口方法。
2.了解A/D芯片ADC0809转换性能及编程方法。
3.通过实验了解单片机如何进行数据采集
二.实验内容
验证性实验:
(1)实验内容:
单片机模数转换实验,利用实验台上的ADC0809做A/D转换器,实验台上
2
的电位器提供模拟量输入,编制程序,将模拟量转换成数字量,把数字量转换为
TL0=64614%256;
ET0=1; //开定时器中断0
TR0=1; //开启定时器0并开始工作
}
/*---串口初始化---***/
void Uart_Init()
实验报告实验九DA转换实验
实验报告实验九DA转换实验EDA实验报告之实验九D/A转换实验1、实验⽬的1)了解D/A转换的基本原理。
2)了解D/A转换芯⽚0832的性能及编程⽅法。
3)了解单⽚机系统中扩展D/A转换的基本⽅法。
2、实验要求:利⽤DAC0832,编制程序产⽣锯齿波、三⾓波、正弦波。
三种波轮流显⽰,⽤⽰波器观看。
3、实验说明1) D/A转换是把数字量转换成模拟量的变换,实验台上D/A电路输出的是模拟电压信号。
要实现实验要求,⽐较简单的⽅法是产⽣三个波形的表格,然后通过查表来实现波形显⽰。
2) 产⽣锯齿波和三⾓波的表格只需由数字量的增减来控制,同时要注意三⾓波要分段来产⽣。
要产⽣正弦波,较简单的⽅法是造⼀张正弦数字量表。
即查函数表得到的值转换成⼗六进制数填表。
D/A转换取值范围为⼀个周期,采样点越多,精度越⾼些。
本例采⽤的采样点为256点/周期。
3) 8位D/A转换器的输⼊数据与输出电压的关系为U(0∽-5V)=Uref/256×NU(-5V∽+5V)=2·Uref/256×N-5V (这⾥Uref为+5V)4、原理图及连线连线:见WAVE6000 帮助\LAB6000图⽰帮助5、实验内容1)使⽤仪器、仪表,开发平台型号本实验⽤到了WAVE 6000软件平台,电脑⼀台,LAB6000实验箱,⽰波器,若⼲连线,串⾏数据线。
2)性能指标、技术要求、思路⽅案、流程图5.1性能指标、技术要求见实验⽬的和实验要求。
5.2 思路⽅案:利⽤⼀个字节恰好能表⽰的数的范围:0—255,共256个,把⼀个周期的采样点数设置为256,在巧妙地利⽤INC,DJNZ,MOVX @DPTR,A等指令循环的产⽣锯齿波和三⾓波。
5.3流程图:(见下页)备注:框图可能看起来不是很清晰,因为实验中考虑到了0-1=255这个特性,所以要⾃⼰运⾏程序才能深刻体会它的妙处所在。
另外,此程序为产⽣周期的波形,故没有结束标志。
3)源程序(就这个实验⽽⾔,延时是没有必要的。
数模转换实验
D/A0832转换实验1.实验目的:了解D/A 转换与单片机的接口方法;了解D/A 转换芯片DA0832的性能及编程方法。
2.实验内容:利用0832输出一个三角波电压,数码管显示数字量值。
3.实验器材:(1)G2200/2100 实验平台 1 台 (2)仿真器/仿真板 1 台 (3)计算机 1 台 (4)实验连线 若干4.接线图案:5.程序框图:6.实验原理:D/A 转换器的功能主要是将输入的数字量转换成模拟量输出,在语音合成等方面得到了广泛的应用。
本实验中采用的转换器为DAC0832,该芯片为电流输出型8位D/A 转换器,输入设有两级缓冲锁存器,因此可同时输出多路模拟量。
本实验中采用单级缓冲连接方式,用0832来产生三角波,具体线路如上图所示。
Vref引脚的电压极性和大小决定了输出电压的极性与幅度,G2200/2100实验平台上的DA0832的第8引脚(Vref)的电压已接为-5V,所以输出电压值的幅度为0-5V。
7.实验步骤:(1)设定工作模式为模式2,即程序空间在仿真器上,数据空间在用户板上。
把DA0832的片选CS13孔和Xfer孔接至译码器的YS3(0B000H-0BFFFH)孔。
DA0832的WR1孔和WR2孔连控制总线区的/WR孔。
(2)硬件诊断:G2200/2100+仿真器连PC机,在伟福WAVE6000/VW调试环境下点击外部数据窗口图标(),在打开的XDATA窗口中的0B000H地址(即DA0832的片选空间)上写入FFH,则Aout孔输出应为5V,将00H写入,则Aout孔输出应为0V。
(3)编写程序、编译程序,用单步、断点、连续方式调试程序,排除软件错误。
运行程序,键显区数码管上显示不断加大或减小的数字量,用万用表测量D/A输出孔AOUT,应能测出不断加大或减少的电压值。
8.思考问题:修改程序,使能产生锯齿波。
9.软件清单:( MCS51\A22.ASM C51\C22.C)// 实验二十二D/A0832转换实验#define LEDLen 6#define MODE 0x03xdata unsigned char CS0832 _at_ 0xb000;xdata unsigned char OUTBIT _at_ 0x8002; // 位控制口xdata unsigned char OUTSEG _at_ 0x8004; // 段控制口xdata unsigned char IN _at_ 0x8001; // 键盘读入口unsigned char LEDBuf[LEDLen]; // 显示缓冲code unsigned char LEDMAP[] = { // 八段管显示码0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};void Delay(unsigned char CNT){unsigned char i;while (CNT-- !=0)for (i=100; i !=0; i--);}void DisplayLED(){unsigned char i;unsigned char Pos;unsigned char LED;Pos = 0x20; // 从左边开始显示for (i = 0; i < LEDLen; i++) {OUTBIT = 0; // 关所有八段管LED = LEDBuf[i];OUTSEG = LED;OUTBIT = Pos; // 显示一位八段管Delay(5);Pos >>= 1; // 显示下一位}OUTBIT = 0; // 关所有八段管}void Write0832(unsigned char b){CS0832 = b;}void main(){unsigned char i = 0;unsigned char j;while(1) {LEDBuf[0] = 0X3F;LEDBuf[1] = 0X7F;LEDBuf[2] = 0X4f;LEDBuf[3] = 0X5b;LEDBuf[4] = 0X00;LEDBuf[5] = 0X00;Write0832(i);LEDBuf[5] = LEDMAP[i & 0x0f] ;LEDBuf[4] = LEDMAP[i>>4 & 0x0f] ;i++;for(j=0; j<20; j++)DisplayLED(); // 延时};}; "传统模块" 实验二十二D/A0832转换实验; 把DA0832的片选CS13孔和Xfer孔接至译码器的YS3(0B000H-0BFFFH)孔; A0832的WR1孔和WR2孔连控制总线区的/WR孔。
DA转换实验报告
D/A转换实验
实验日期
年 月 日(星期 第 节)
实验成绩
一、目的和要求(目的要明确,抓住重点,符合实验指导书中的要求)
1、掌握MCS-51单片机D/A转换的原理以及常用DAC芯片的编程方法;
2、掌握proteus的使用方法;
3、掌握Keil uVision的使用方法;
二、实验内容(用最简练的语言反映实验的内容)
void tlc5615(unsigned int dat)
{
unsigni<12;i++)
{
SCK=0;//时钟低电平
DIN=(dat<<i)&0x800;
//按位将数据送入TLC5616,此处仿真
SCK=1;//时钟高电平
}
SCK=0;//时钟低电平
六、实验总结(实验中遇到的问题及解决过程,实验中产生的错误及原因分析、实验体会和收获等)
通过对DACO832模数转换的实验,我了解到对于要实现的目的,首先要熟悉编程器件的状态工作特性,并且按照其工作时序图,合理安排不同端口赋值的顺序,最终才能顺利的完成数字量-模拟量的转换。其次在编程过程中,对于正弦波的输出,我直接应用了sin函数,结果总是出来不了正弦的波形,后来发现 keil中的数给端口是不能为负的,然后我将其乘上一个数再加一个比它大的数,最终解决了这个小问题。最后我知道这种操作性实验只有多练多实验,将理论学习与实际实验结合才能更加有效的掌握知识,得到提高。
void main()//主函数
{
unsigned int dd=0;
while(1)
{
tlc5615(dd);//送出数据
dd=dd+5;
if(dd>=1000)
DA转换实验报告.
D/A转换实验报告组员:田亚峰杜亚亚摘要此次设计实验是以AT89C51、DAC0832、741为核心,并加以其他辅助电路来实验D/A转换,其中主要是利用单片机来控制从数字量到模拟量的整个转换。
先是从键盘输入数字量到单片机,再从单片机输出到DAC0832,经D/A转换后输出与该数字量大小对应的模拟电压,并用LED数码管显示出来输入的数字量值。
目录1.方案设计及论证 (2)1.1理论分析 (2)1.2单片机选择 (2)1.3键盘设计 (2)1.4 D/A转换选择 (3)2.硬件设计 (3)2.1单片机模块 (3)2.2 D/A转换模块 (4)3.软件设计 (6)4.仿真验证及调试 (6)4.1调试方法 (6)4.2性能测试仪器 (7)4.3实验数据 (7)4.4误差分析 (8)5.设计总结及体会 (8)附录(一):实物图 (9)附录(二)软件程序 (9)1.方案设计及论证1.1理论分析根据本次设计任务的要求,由单片机模块、D/A转换模块、反相比例加法运算电路构成。
系统框图如下:图1 系统框图1.2单片机选择方案一:选用AT89C51方案二:选用AT89C52论证:1)AT89C52的程序空间为8K 比AT89C51的空间大2)AT89C52多了个T2定时器,所以比89C51多几个寄存器因此选用AT89C52.1.3键盘设计方案一:采用独立式键盘方案二:采用矩阵式键盘论证:由于独立式键盘占用较多的I/O线,因此选用4×4矩阵式键盘输入,以保证10个数全部完整输入,节省I/O端口资源。
1.4 D/A转换选择此次设计选用DAC0832,它是由一个八位输入锁存器、一个8位D/A 锁存器和一个8位D/A转换器三个部分组成。
D/A转换器将输入的数字量转换为模拟量输出,数字量是由若干数位构成的,就是把每一位上的代码按照权值转换为对应的模拟量,再把各位所对应的模拟量相加,所得到各位模拟量的和便是数字量所对应的模拟量。
da数模转换实验报告范文
da数模转换实验报告范文篇一:微机原理实验报告--数模转换微机原理实验报告实验题目:数/模转换器DAC0832系部:电子与信息工程系学生姓名:专业班级:学号:指导教师:2022.12.30一.实验目的1.掌握D/A转换原理;2.熟悉D/A芯片接口设计方法;3.掌握DAC0832芯片的使用方法。
二.实验设备1.PC微机一台;2.TD-PIT实验装置一台;3.示波器一台。
三.实验要求用DAC0832设计一个D/A转换接口电路,采用单缓冲工作方式,产生方波、三角波、锯齿波和正弦波。
四.实验原理1.DAC3802的结构及性能(1)输入/输出信号。
D7-D0为8位数据输入线;IOUT1为DAC电流输出1,IOUT2为DAC电流输出2,IOUT1和IOUT2之和为一常量;RFB为反馈信号输入端,反馈电阻在芯片内。
(2)控制信号。
ILE为允许输入锁存信号;WR1和WR2分别为锁存输入数据信号和锁存输入寄存器到DAC寄存器的写信号;某FER为传送控制信号;CS为片选信号。
(3)电源。
VCC为主电源,电压范围为+5V到+15V;VREF为参考输入电压,范围为-10V到+10V。
DAC0832管脚及其内部结构框图2.工作方式外部五个控制信号:ILE,CS,WR1,WR2,某FER连接方式的不同,可工作于多种方式:直通方式,单缓冲方式,双缓冲方式(1)直通方式ILE接高、CS、WR1、WR2、某FER接地,两级寄存器均直通;(2)单缓冲方式两级寄存器一个受控,一个直通;(3)双缓冲方式两级寄存器均受控。
0832为电流输出型D/A,要得模拟电压,必需外加转换电路(运放)。
五.实验内容1.硬件电路图:2.软件程序设计(1)产生方波tackegmenttack'tack'dw32dup()tackendcodeegmentbeginprocfaraume:tack,c:codepuhduba某,a某puha某MOVD某,0D800H;片选信号输入地址MOVAL,0NE某T:OUTD某,ALMOVD 某,0D800HOUTD某,ALLOOP$;延时NOTAL;求反,由高电平转为低电平或有低电平转为高电平PUSHA某;保护数据MOVAH,11INT21HCMPAL,0;有按键退出POPA某JZNE某Tretbeginendpcodeendendbegin(2)产生三角波tackegmenttack'tack'dw32dup()tackenddataegmentdataendcodeegmentbeginprocfaraume:tack,c:code,d:datapuhduba某,a某puha某MOVD某,0D800HMOVAL,0NE某T:OUTD某,ALCALLDELAY;调用延时篇二:数模转换器和模数转换器实验报告实验报告课程名称实验项目数/模转换器和模/数转换器实验实验仪器系别计算机系专业网络工程班级/学号学生姓名_实验日期成绩_______________________指导教师实验五数/模转换器和模/数转换器实验一、实验目的1.了解数/模转换器的基本原理,掌握DAC0832芯片的使用方法。
实验三 DA转换实验
实验三 DA转换实验实验预习要求1、学习 MSP430F6638 单片机中DAC12的配置使用方法。
2、了解DAC转换原理。
一、实验目的1、了解DAC转换原理。
2、掌握MSP430F6638 中DAC12的配置使用方法。
3、能够使用DAC12输出正弦波电压。
二、实验器材PC 机,MSP430F6638 EVM,USB数据线,万用表,示波器。
三、实验内容1、验证性实验:学习MSP430F6638 中DAC12 模块的使用。
通过配置相关的寄存器,实现了在P7.6 引脚中产生了一个0-3.3V 之间的固定模拟电压。
用万用表测量输出管脚P7.6的电压,并与计算得到的理想输出电压进行比较。
2、设计性实验:掌握MSP430F6638 中DAC12 模块的使用。
通过配置相关的寄存器,实现在P7.6 引脚中连续输出两种幅度(幅度分别为AVcc和AVcc/2)的正弦波电压,用示波器测量输出管脚P7.6,查看正弦波是否符合要求。
四、实验原理数模转换是将数字量转换为模拟电量(电流或电压),使输出的模拟电量与输入的数字 量成正比。
实现这种转换功能的电路叫数模转换器(DAC)。
D/A 转换器基本上由4 个部分组成,即权电阻网络、运算放大器、基准电源和模拟开关。
数字量以串行或并行方式输入、存储于数字寄存器中,数字寄存器输出的各位数码,分别控制对应位的模拟电子开关,使数 码为1的位在位权网络上产生与其权值成正比的电流值,再由求和电路将各种权值相加,即 得到数字量对应的模拟量。
图3.1 DAC12 模块结构框图DAC12 模块结构如图3.1所示。
参考电压可有五种选择,分别是:2.5V、2.0V、1.5V、外部电压,AVCC。
DAC12_0DAT中保存的是需要转换的数字电压值,它与0x0FFF 的比值应该等于实际输出的模拟电压值与参考电压的比值。
另外配置DAC 转换器的关键寄存器DAC12_xCTL0 Register。
主要的控制位有: DAC12OPS:选择输出通道 DAC12SREFx:选择参考电压 DAC12ENC:转换使能DAC12CALON:启动校验功能五、实验步骤1、验证性试验(1)按照实验一中的实验步骤对验证性实验进行下载调试。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验目的和要求1、掌握单片机与DAC0832的接口设计方法。
2、掌握Proteus软件与Keil软件的使用方法。
二、设计要求。
1、用Proteus软件画出电路原理图,在单片机的外部扩展片外三总线,并通过片外三总线与0832接口。
2、在单片机的外部扩展一个4个按键的键盘。
3、按下K0,产生连续方波信号。
4、按下K1,产生连续锯齿波信号。
5、按下K2,产生连续三角波信号。
6、按下K3,产生连续正弦波信号。
7、通过外接示波器观察波形。
三、电路原理图。
图1、电路仿真图四、实验程序流程框图和程序清单。
ORG 0000HSTART: LJMP MAINORG 0100HMAIN: MOV SP, #60H LOOP: LCALL KEYJB 20H.0, JUCHIBOJB 20H.1, JUXINGBOJB 20H.2, SANJIAOBOJB 20H.3, ZHENGXIANJB 20H.4, TIXINGBOLJMP LOOPJUCHIBO: MOV R2, #00HLOOP1: MOV DPTR, #0000HMOV A , R2MOVX @DPTR, ALCALL KEYJB 20H.0, JUCHIBOJB 20H.1, JUXINGBOJB 20H.2, SANJIAOBOJB 20H.3, ZHENGXIANJB 20H.4, TIXINGBOINC R2LJMP LOOP1JUXINGBO: MOV DPTR , #0000H LOOP2: MOV R3, #0FFHMOV A, R3MOVX @DPTR, ALCALL DELAY1msLCALL KEYJB 20H.0, JUCHIBOJB 20H.1, JUXINGBOJB 20H.2, SANJIAOBOJB 20H.3, ZHENGXIANJB 20H.4, TIXINGBOMOV R3, #00HMOV A, R3MOVX @DPTR, ALCALL DELAY1msLCALL KEYJB 20H.0, JUCHIBOJB 20H.1, JUXINGBOJB 20H.2, SANJIAOBOJB 20H.3, ZHENGXIANJB 20H.4, TIXINGBOLJMP LOOP2SANJIAOBO:MOV R2, #00HMOV DPTR, #0000H LOOP3: MOV A, R2NOPNOPMOVX @DPTR, AINC R2LCALL KEYJB 20H.0, JUCHIBOJB 20H.1, JUXINGBOJB 20H.2, SANJIAOBOJB 20H.3, ZHENGXIANJB 20H.4, TIXINGBOCJNE R2, #0FFH, LOOP3LOOP4: MOV A, R2NOPNOPMOVX @DPTR, ADEC R2LCALL KEYJB 20H.0, JUCHIBOJB 20H.1, JUXINGBOJB 20H.2, SANJIAOBOJB 20H.3, ZHENGXIANJB 20H.4, TIXINGBOCJNE R2, #00H, LOOP4LJMP LOOP3ZHENGXIAN:MOV R2, #00HLOOP5: MOV DPTR, #SINMOV A, R2MOVC A, @A+DPTRMOV DPTR, #0000HMOVX @DPTR, AINC R2LCALL KEYJB 20H.0, JUCHIBOJB 20H.1, JUXINGBOJB 20H.2, SANJIAOBOJB 20H.3, ZHENGXIANJB 20H.4, TIXINGBOLJMP LOOP5TIXINGBO: MOV R2, #00HMOV DPTR, #0000HLOOP6: MOV A, R2MOVX @DPTR, AINC R2LCALL KEYJB 20H.0, JUCHIBOJB 20H.1, JUXINGBOJB 20H.2, SANJIAOBOJB 20H.3, ZHENGXIANJB 20H.4, TIXINGBOCJNE R2, #0FFH, LOOP6LCALL DELAY20msLOOP7: MOV A, R2MOVX @DPTR, ADEC R2LCALL KEYJB 20H.0, JUCHIBOJB 20H.1, JUXINGBOJB 20H.2, SANJIAOBOJB 20H.3, ZHENGXIANJB 20H.4, TIXINGBOCJNE R2, #00H, LOOP7LCALL DELAY20msLJMP LOOP6SIN: DB 07FH ,082H ,085H ,088H ,08BH ,08FH ,092H ,095H ,098H ,09BH ,09EH ,0A1H ,0A4H ,0A7H ,0AAH ,0ADH DB 0B0H ,0B3H ,0B6H ,0B8H ,0BBH ,0BEH ,0C1H ,0C3H ,0C6H ,0C8H ,0CBH ,0CDH ,0D0H ,0D2H ,0D5H ,0D7H DB 0D9H ,0DBH ,0DDH ,0E0H ,0E2H ,0E4H ,0E5H ,0E7H ,0E9H ,0EBH ,0ECH ,0EEH ,0EFH ,0F1H ,0F2H ,0F4HDB 0F5H ,0F6H ,0F7H ,0F8H ,0F9H ,0FAH ,0FBH ,0FBH ,0FCH ,0FDH ,0FDH ,0FEH ,0FEH ,0FEH ,0FEH ,0FEHDB 0FEH ,0FEH ,0FEH ,0FEH ,0FEH ,0FEH ,0FDH ,0FDH ,0FCH ,0FBH ,0FBH ,0FAH ,0F9H ,0F8H ,0F7H ,0F6HDB 0F5H ,0F4H ,0F2H ,0F1H ,0EFH ,0EEH ,0ECH ,0EBH ,0E9H ,0E7H ,0E5H ,0E4H ,0E2H ,0E0H ,0DDH ,0DBHDB 0D9H ,0D7H ,0D5H ,0D2H ,0D0H ,0CDH ,0CBH ,0C8H ,0C6H ,0C3H ,0C1H ,0BEH ,0BBH ,0B8H ,0B6H ,0B3HDB 0B0H ,0ADH ,0AAH ,0A7H ,0A4H ,0A1H ,09EH ,09BH ,098H ,095H ,092H ,08FH ,08BH ,088H ,085H ,082HDB 07FH ,07CH ,079H ,076H ,073H ,06FH ,06CH ,069H ,066H ,063H ,060H ,05DH ,05AH ,057H ,054H ,051HDB 04EH ,04BH ,048H ,046H ,043H ,040H ,03DH ,03BH ,038H ,036H ,033H ,031H ,02EH ,02CH ,029H ,027HDB 025H ,023H ,021H ,01EH ,01CH ,01AH ,019H ,017H ,015H ,013H ,012H ,010H ,00FH ,00DH ,00CH ,00AHDB 009H ,008H ,007H ,006H ,005H ,004H ,003H ,003H ,002H ,001H ,001H ,000H ,000H ,000H ,000H ,000HDB 000H ,000H ,000H ,000H ,000H ,000H ,001H ,001H ,002H ,003H ,003H ,004H ,005H ,006H ,007H ,008HDB 009H ,00AH ,00CH ,00DH ,00FH ,010H ,012H ,013H ,015H ,017H ,019H ,01AH ,01CH ,01EH ,021H ,023HDB 025H ,027H ,029H ,02CH ,02EH ,031H ,033H ,036H ,038H ,03BH ,03DH ,040H ,043H ,046H ,048H ,04BHDB 04EH ,051H ,054H ,057H ,05AH ,05DH ,060H ,063H ,066H ,069H ,06CH ,06FH ,073H ,076H ,079H ,07CH KEY: LCALL KEYCHULIJZ EXITCJNE A, 10H, CC MOV A, #0MOV 20H, AJZ EXITCC: MOV 10H, A LCALL DELAY1msLCALL KEYCHULIJZ EXIT MOV B, 20HKEYSF: LCALL KEYCHULIJZ KEY1 LJMP KEYSFKEY1: MOV 20H, BEXIT: RET KEYCHULI: PUSH PSWCLR RS1SETB RS0MOV P1, #0FFH MOV A, P1CPL AMOV 20H, ACLR RS1CLR RS0POP PSW RET DELAY1ms: MOV R7, #01H DL1: MOV R6, #8EHDL0: MOV R5, #02HDJNZ R5, $DJNZ R6, DL0 DJNZ R7, DL1 RETDELAY20ms: MOV R6, #0D7HDL2: MOV R5, #2DH DJNZ R5, $ DJNZ R6, DL2NOPNOPRET END开始键扫键值=0?键值=1键值=2键值=4键值=8键值=16送键值为0送键值为0送键值为0送键值为0送键值为0键值=0?键值=0?键值=0?键值=0?键值=0?调产生方波函数调产生锯齿波函数调产生三角波函数调产生正弦波函数调产生梯形波函数结束Y N Y N N N N N Y Y Y Y五、实验结果。
图2、仿真结果图3、仿真结果图4、仿真结果图5、仿真结果六、实验总结。
由图4可知,设计要求2的内容已经成功完成;由图5可以看出要求3的内容已经成功完成。
通过这次实验,掌握了通过8255来扩展单片机的I/O口线,对8255已经有了充分的认识,以实践操作来验证理论知识,学到了很多东西。
七、思考题。
编程实现产生连续梯形波信号ORG 0000HSTART: LJMP MAINORG 0100HMAIN: MOV SP, #60HTIXINGBO: MOV R2, #00HMOV DPTR, #0000HLOOP6: MOV A, R2MOVX @DPTR, AINC R2LCALL KEYJB 20H.0, JUCHIBOJB 20H.1, JUXINGBOJB 20H.2, SANJIAOBOJB 20H.3, ZHENGXIANJB 20H.4, TIXINGBOCJNE R2, #0FFH, LOOP6LCALL DELAY20msLOOP7: MOV A, R2MOVX @DPTR, ADEC R2LCALL KEYJB 20H.0, JUCHIBOJB 20H.1, JUXINGBOJB 20H.2, SANJIAOBOJB 20H.3, ZHENGXIANJB 20H.4, TIXINGBOCJNE R2, #00H, LOOP7LCALL DELAY20msLJMP LOOP6DELAY20ms: MOV R6, #0D7HDL2: MOV R5, #2DHDJNZ R5, $DJNZ R6, DL2NOPNOPRETEND图6、思考题仿真结果。