《单片机技术及应用》课程设计报告专业:电子信息工程班级:07302(本)姓名:陈丽华指导教师:包玲二零一零年六月二十2目录一课程设计目的...................................................................................3二课程设计题目描述和要求................................................................3三课程设计报告内容............................................................................43.1波形图思路....................................................................................43.2波形图设计过程(方案设计与论证,调试与仪器说明)..........43.1.1锯齿波模块:..........................................................................43.1.2三角波模块:..........................................................................63.1.3方波模块:..............................................................................73.1.4正弦波模块:..........................................................................93.1.5顶层模块:............................................................................113,1,6采用DAC0832实现波形发生器的总程序模块......................14四原始硬件图...................................................................................19五改进后的硬件图……………………..…………………………..19六总结………………………………………………………….…….22七老师评语………………………………………………………….22.参考文献...............................................................................................233《波形发生器》一课程设计目的实现波形发生器可以产生锯齿波、三角波、方波和正弦波等常用标准波形。二课程设计题目描述和要求利用DAC接口实现波形发生器可以产生锯齿波、三角波、方波和正弦波等常用标准波形。将P1.0,P1.2,P1.4和P1.6分别作为这四种波的控制位,当相应的控制键按下后,出现相应的波形设计原理DAC接口技术DAC(Digital-Analog-Conventor)的功能是将数字量转化为与其成比例的模拟电压或电流信号,输出到仪表外部进行各种控制DAC芯片种类很多,有通用廉价的DAC芯片,也有高速高精度及高分辨率的DAC芯片在这里我们采用的的是DAC0832各种类型的DAC芯片都具有数字量输入端,模拟量输入端和基准电压端。数字量输入端有以下几种类型:1无数据锁存,2带单数据锁存器,3带双数据锁存器,4可接收串行数字输入。第一种在与单片机接口时,要外加锁存器,第二种和第三种可直接与单片机接口,第四种与单片机接口十分简单,接收数据较慢,适用于远距离现场控制的场合模拟量输出有两种方式:电压输出及电流输出。电压输出的DAC芯片相当于一个电压源,其内阻很小,选用这种芯片时,与它匹配的电阻应较大,电流输出的芯片相当于电流源,其内阻较大,选用这种芯片时,负载电阻不可太大。在实际应用中,常选用电流输出的DAC芯片实现电压输出4三课程设计报告内容3.1波形图思路在8051单片机的控制下,产生三角波,锯齿波,方波以及正弦波,各种波形所采用的硬件接口都是一样的,由于控制程序不同而产生不同的波形3.2波形图设计过程(方案设计与论证,调试与仪器说明)将该任务分成六个模块进行设计,分别为:锯齿波模块,三角波模块,方波模块,正弦波模块,然后是顶层模块,最后是将所有模块拼合成总体模块我们所涉及的电路:DAC0832工作于单缓冲器方式,它的ILE接+5V。/CS和/XFER相连后由8051的P2.7控制,/WR1和/WR2相连后由8051的/WR控制DAC0832的地址为7FFFH,工作于单缓冲器方式,执行一次对DAC0832的写入操作即可完成一次D/A转换。3.2.1锯齿波模块:8051单片机的累加器A从0开始循环增量,每增量一次向DAC0832写入一个数据,得到一个输出电压,这样可以获得一个正向的阶梯波DAC0832的分辨率为8位,如其满足的电压为5V,则一个阶梯的幅度为5V/(2*2*2*2*2*2*2*2)=19.5mV程序如下:MOVDPTR,#7FFFH;DAC0832地址ST:MOVA,#00HLOOP:MOVX@DPTR,A;启动D/A转换INCA;累加器内容加一AJMPLOOP;连续输出波形程序从标号LOOP处执行到指令到执行AJMPLOOP共需5个机器周期,采用12MHZ的晶振,一个机器周期为1us,则每个阶梯的时间为t=5*1us,一个正向阶5梯波的总周期的总时间为T=255*t=1275us,即此阶梯波的重复频率为F=1/T=78HZ.由此可见,由软件来产生波形,其频率是较低的。要想提高频率,可通过改进程序,减少执行时间,但这种方法是有限的,根本的办法还得靠改进路.图8.13由图8.13可见,由于每一个阶梯波较小,总体看起来是一个锯齿波.如果要改变这种波形的周期,可采用延时的方法,程序若如下:MOVDPTR,#7FFFH;DAC0832地址ST:MOVA,#00HLOOP:MOVX@DPTR,A;启动D/A变换ACALLDELAY;延时INCAAJMPLOOP;连续输出波形DELAY:MOVR4,#0FFH;延时子程序LOOP1:MOVR5,#10HLOOP2:NOPDJNZR5,LOOP2DJNZR4,LOOP1RET在延时子程序中改变延时时间的长短,即可改变输出波形的周期。锯齿波波形:63.2.2三角波模块:在以上这个正向的锯齿波的前提下,若要获得负向的锯齿波只需将以上程序中的指令INCA换成指令DECA即可,如果想获得任意起始电压和终止电压的波形,则需先确定起始电压和终止电压所对应的数字。程序中首先从起始电压对应的数字量开始输出,当达到终止电压对应的数字量时返回,如此反复。将正向锯齿波与负向锯齿波组合起来就可以获得三角波,程序如下:MOVDPTR,#7FFFH;DAC0832地址TRI:MOVA,#00H;三角波UP:MOVX@DPTR,A;启动D/A转换INCA;上升沿CJNEA,#0FFH,UPDOWN:MOVX@DPTR,A;启动D/A转换DECA;下降沿CJNEA,#00H,DOWNAJMPUP;连续输出波形73.2.3方波模块:方波信号也是波形发生器中常用的一种信号,下面的程序可以从DAC的输出端得到矩形波,当延时子程序DELAY1与DELAY2的延时时间大体相同时即为方波,改变延时时间可得到不同占空比的矩形波,上限电平及上限电平对应的数字量可用前面讲过的方法获得。程序如下:MOVDPTR,#7FFFH;DAC0832地址SQ:MOVA,#LOW;取低电平数字量MOVX@DPTR,A;DAC输出低电平ACALLDELAY1;延时1MOVA,#HIGHMOVX@DPTR,A;DAC输出高电平ACALLDELAY2;延时2AJMPSQ;连续输出波形以上程序中未列出延时子程序,可仿照前面锯齿波中的延时子程序编写,输出矩形波的占空比为T1/(T1+T2),输出波形如图8.15所示。改变延时值使T1=T2即可得到方波8矩形波矩形波实验图93.2.4正弦波模块:图8.14利用DAC接口实现正弦波发生器时,先要对正弦波模拟电压进行离散化。如图8.14所示,对于一个正弦波取N等分离散点,按定义计算出对应于1,2,3......N各离散点的数据值D1,D2,D3,D4....DN制成一个正弦表。因为正弦波在半周期内是以极值点为中心对称,而且正负波形为互补关系,故在制正弦表时只需进行1/4周期,取0~Pi/2之间的数值,步骤如下:(1)计算0~Pi/2区间N/4个离散的正弦值(2)根据对称关系,复制Pi/2~Pi区间的值(3)将0~Pi区间各点根据求补即得Pi~2Pi区间各值将得到的这些数据根据所用DAC的位数进行量化,得到相应的数字值,依次存入RAM或固化于EPROM中,从而得到一个全周期的正弦编码表程序如下:SIN:MOVDPTR,#SINTAB;正弦波MOVR0,#6DHLOOP:CLRAMOVCA,@A+DPTRMOV@R0,AINCDPTR10INCR0CJNER0,#80H,LOOPMOVDPTR,#7FFFH;DAC0832端口地址MOVR0,#6DHLOOP1:MOVA,@R0;取得第一个1/4周期的数据MOVX@DPTR,A;送往DAC0832INCR0CJNER0,#7FH,LOOP1LOOP2:MOVA,@R0;取得第二个1/4周期的数据MOVX@DPTR,A;送往DAC0832DECR0CJNER0,#6DH,LOOP2LOOP3:MOVA,@R0;取得第三个1/4周期的数据CPLA;数据取反MOVX@DPTR,A;送往DAC0832INCR0CJNER0,#7FH,LOOP3LOOP4:MOVA,@R0;取得第四个1/4周期的数据CPLA;数据取反MOVX@DPTR,A;送往DAC0832DECR0CJNER0,#6DH,LOOP4JB20H.3,LOOP1;输出连续波形LJMPHERESINTAB:DB7FH,89H,94H,9FH,0AAH,0B4H,0BEH,0C8H,0D1H,0D9HDB0E0H,0E7H,0EDH,0F2H,0F7H,0FAH,0FCH,0FEH,0FFH11正弦波图3.2.5顶层模块:根据按键按下的不同,中断0对应于不同的波形处理ORG0000HSTART:LJMPMAINORG0003H;外部中断入口LJMPINSER;转到中断服务程序ORG0030HMAIN:MOVDPTR,#7FFFH;DAC0832地址SETBEX0;允许中断SETBIT0;负边沿触发方式SETBEA;开中断HERE:JB20H.0,ST;阶梯波处理JB20H.1,TRI;三角波处理JB20H.2,SQ;方波处理JB20H.3,SIN;正弦波处理SJMPHERE;等待中断INSER:JNBP1.0,LL1;中断服务程序,查询按键SJMPL1LL1:MOV20H,#00H12SETB20H.0;设置阶梯波标志SJMPRTL1:JNBP1.2,LL2SJMPL2LL2:MOV20H,#00HSETB20H.1;设三角梯波标志SJMPRTL2:JNBP1.4,LL3SJMPL3LL3:MOV20H,#00HSETB20H.2;设置方波标志SJMPRTL3:JNBP1.6,LL4SJMPRTLL4:MOV20H,#00HSETB20H.3;设置正弦波标志RT:RETI;中断返回………..;波形程序略END13运用Proteus设计的波形发生器仿真原理图如上图是运用Proteus仿真的图形,可是出现的图形很不理想,所以进行了改进下图为改进后的同相比例运算电路改进后的Proteus仿真的图形如下.元件列表