《单片机技术及应用》课程设计报告--波形发生器.doc_第1页
《单片机技术及应用》课程设计报告--波形发生器.doc_第2页
《单片机技术及应用》课程设计报告--波形发生器.doc_第3页
《单片机技术及应用》课程设计报告--波形发生器.doc_第4页
《单片机技术及应用》课程设计报告--波形发生器.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机技术及应用课程设计报告专 业: 电子信息工程 班 级: 07302 (本) 姓 名: 指导教师: 二零一零 年 六 月 二十 目录一 课程设计目的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四 原始硬件图18五 改进后的硬件图.19六 总结.20七 老师评语.22.参考文献23 波形发生器 一 课程设计目的实现波形发生器可以产生锯齿波、三角波、方波和正弦波等常用标准波形。二 课程设计题目描述和要求利用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芯片实现电压输出三 课程设计报告内容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程序如下: mov dptr,#7fffh ;dac0832地址 st:mov a,#00h loop:movx dptr,a ;启动d/a转换 inc a ;累加器内容加一 ajmp loop ; 连续输出波形程序从标号loop处执行到指令到执行ajmp loop共需5个机器周期,采用12mhz的晶振,一个机器周期为1us,则每个阶梯的时间为t=5*1us,一个正向阶梯波的总周期的总时间为t=255*t=1275us,即此阶梯波的重复频率为f=1/t=78hz.由此可见,由软件来产生波形,其频率是较低的。要想提高频率,可通过改进程序,减少执行时间,但这种方法是有限的,根本的办法还得靠改进路. 图8.13由图8.13可见,由于每一个阶梯波较小,总体看起来是一个锯齿波.如果要改变这种波形的周期,可采用延时的方法,程序若如下: mov dptr,#7fffh ;dac0832地址st:mov a,#00hloop:movx dptr,a ;启动d/a变换acall delay ;延时inc aajmp loop ;连续输出波形delay:mov r4,#0ffh ;延时子程序loop1:mov r5,#10hloop2:nopdjnz r5,loop2djnz r4,loop1ret在延时子程序中改变延时时间的长短,即可改变输出波形的周期。锯齿波波形:3.2.2三角波模块:在以上这个正向的锯齿波的前提下,若要获得负向的锯齿波只需将以上程序中的指令inca换成指令deca即可,如果想获得任意起始电压和终止电压的波形,则需先确定起始电压和终止电压所对应的数字。程序中首先从起始电压对应的数字量开始输出,当达到终止电压对应的数字量时返回,如此反复。将正向锯齿波与负向锯齿波组合起来就可以获得三角波,程序如下: mov dptr,#7fffh ;dac0832地址tri: mov a,#00h ;三角波up: movx dptr,a ;启动d/a转换 inc a ;上升沿 cjne a,#0ffh,updown: movx dptr,a ;启动d/a转换 dec a ;下降沿 cjne a,#00h,down ajmp up ;连续输出波形3.2.3方波模块:方波信号也是波形发生器中常用的一种信号,下面的程序可以从dac的输出端得到矩形波,当延时子程序delay1与delay2的延时时间大体相同时即为方波,改变延时时间可得到不同占空比的矩形波,上限电平及上限电平对应的数字量可用前面讲过的方法获得。程序如下:mov dptr,#7fffh ;dac0832地址sq: mov a,#low ;取低电平数字量 movx dptr,a ;dac输出低电平 acall delay1 ;延时1 mov a,#high movx dptr,a ;dac输出高电平 acall delay2 ;延时2 ajmp sq ;连续输出波形以上程序中未列出延时子程序,可仿照前面锯齿波中的延时子程序编写,输出矩形波的占空比为t1/(t1+t2),输出波形如图8.15所示。改变延时值使t1=t2即可得到方波矩形波矩形波实验图3.2.4正弦波模块:图8.14利用dac接口实现正弦波发生器时,先要对正弦波模拟电压进行离散化。如图8.14所示,对于一个正弦波取n等分离散点,按定义计算出对应于1,2,3.n各离散点的数据值d1,d2,d3,d4.dn制成一个正弦表。因为正弦波在半周期内是以极值点为中心对称,而且正负波形为互补关系,故在制正弦表时只需进行1/4周期,取0pi/2之间的数值,步骤如下:(1) 计算0pi/2区间n/4个离散的正弦值(2) 根据对称关系,复制pi/2 pi区间的值(3) 将0pi区间各点根据求补即得pi2pi区间各值将得到的这些数据根据所用dac的位数进行量化,得到相应的数字值,依次存入ram或固化于eprom中,从而得到一个全周期的正弦编码表程序如下:sin: mov dptr,#sintab ;正弦波 mov r0,#6dhloop: clr amovc a,a+dptrmov r0,ainc dptrinc r0cjne r0,#80h,loopmov dptr,#7fffh ;dac0832端口地址mov r0,#6dhloop1: mov a,r0 ;取得第一个1/4周期的数据movx dptr,a ;送往dac0832inc r0cjne r0,#7fh,loop1loop2: mov a,r0 ;取得第二个1/4周期的数据movx dptr,a ;送往dac0832dec r0cjne r0,#6dh,loop2loop3: mov a,r0 ;取得第三个1/4周期的数据cpl a ;数据取反movx dptr,a ;送往dac0832inc r0cjne r0,#7fh,loop3loop4: mov a,r0 ;取得第四个1/4周期的数据cpl a ;数据取反movx dptr,a ;送往dac0832dec r0cjne r0,#6dh,loop4jb 20h.3, loop1 ;输出连续波形ljmp heresintab: db 7fh,89h,94h,9fh,0aah,0b4h,0beh,0c8h,0d1h,0d9hdb 0e0h,0e7h,0edh,0f2h,0f7h,0fah,0fch,0feh,0ffh正弦波图3.2.5顶层模块:根据按键按下的不同,中断0对应于不同的波形处理org 0000hstart:ljmp mainorg 0003h ;外部中断 入口ljmp inser ;转到中断服务程序org 0030hmain:mov dptr,#7fffh ;dac0832地址setb ex0 ;允许 中断 setb it0 ;负边沿触发方式 setb ea ;开中断here: jb 20h.0,st ;阶梯波处理jb 20h.1,tri ;三角波处理jb 20h.2,sq ;方波处理jb 20h.3,sin ;正弦波处理sjmp here ;等待中断inser:jnb p1.0, ll1 ;中断服务程序,查询按键sjmp l1ll1: mov 20h,#00h setb 20h.0 ;设置阶梯波标志sjmp rtl1: jnb p1.2, ll2sjmp l2ll2: mov 20h,#00hsetb 20h.1 ;设三角梯波标志 sjmp rtl2: jnb p1.4, ll3sjmp l3ll3: mov 20h,#00hsetb 20h.2 ;设置方波标志 sjmp rtl3: jnb p1.6, ll4sjmp rtll4: mov 20h,#00hsetb 20h.3 ;设置正弦波标志 rt: reti ;中断返回. ;波形程序略 end运用proteus设计的波形发生器仿真原理图如上图是运用proteus仿真的图形,可是出现的图形很不理想,所以进行了改进下图为改进后的同相比例运算电路改进后的proteus仿真的图形如下.元件列表stc89c51芯片 1块dac0832芯片 1块ua741cn芯片 一块按键 4个电阻 10k 1个 电阻 0.22k 4个可提供在线的stc89c小系统板(其中包括了 晶振crystal 12hz有源电容 10u 一个 陶瓷电容 22pf 2个)导线若干还用到实验室里的直流电压源和示波器 74ls21引脚图 ua741cn引脚图3.2.6采用dac0832实现波形发生器的总程序模块org 0000hstart:ljmp mainorg 0003h ;外部中断 入口ljmp inser ;转到中断服务程序org 0030hmain:mov dptr,#7fffh ;dac0832地址setb ex0 ;允许 中断 setb it0 ;负边沿触发方式 setb ea ;开中断here: jb 20h.0,st ;阶梯波处理jb 20h.1,tri ;三角波处理jb 20h.2,sq ;方波处理jb 20h.3,sin ;正弦波处理sjmp here ;等待中断inser:jnb p1.0, ll1 ;中断服务程序,查询按键sjmp l1ll1: mov 20h,#00h setb 20h.0 ;设置阶梯波标志sjmp rtl1: jnb p1.2, ll2sjmp l2ll2: mov 20h,#00hsetb 20h.1 ;设三角梯波标志 sjmp rtl2: jnb p1.4, ll3sjmp l3ll3: mov 20h,#00hsetb 20h.2 ;设置方波标志 sjmp rtl3: jnb p1.6, ll4sjmp rtll4: mov 20h,#00hsetb 20h.3 ;设置正弦波标志 rt: reti ;中断返回st: mov a,#00h ;阶梯波loopp: movx dptr,a ;启动d/a转换 inc a jb 20h.0,loopp ;连续输出波形 ljmp here tri: mov a,#00h ;三角波up: movx dptr,a ;启动d/a转换 inc a ;上升沿 cjne a,#0ffh,updown: movx dptr,a ;启动d/a转换 dec a ;下降沿 cjne a,#00h,down jb 20h.1, up ;连续输出波形 ljmp heresq: mov a,#00h ;方波 movx dptr,a ;dac输出低电平 acall delay ;延时1 mov a,#0ffh movx dptr,a ;dac输出高电平 acall delay ;延时2 jb 20h.2, sq ;连续输出波形 ljmp heresin: mov dptr,#sintab ;正弦波mov r0,#6dhloop: clr amovc a,a+dptrmov r0,ainc dptrinc r0cjne r0,#80h,loopmov dptr,#7fffh ;dac0832端口地址mov r0,#6dhloop1: mov a,r0 ;取得第一个1/4周期的数据movx dptr,a ;送往dac0832inc r0cjne r0,#7fh,loop1loop2: mov a,r0 ;取得第二个1/4周期的数据movx dptr,a ;送往dac0832dec r0cjne r0,#6dh,loop2loop3: mov a,r0 ;取得第三个1/4周期的数据cpl a ;数据取反movx dptr,a ;送往dac0832inc r0cjne r0,#7fh,loop3loop4: mov a,r0 ;取得第四个1/4周期的数据cpl a ;数据取反movx dptr,a ;送往dac0832dec r0cjne r0,#6dh,loop4jb 20h.3, loop1 ;输出连续波形ljmp heresintab: db 7fh,89h,94h,9fh,0aah,0b4h,0beh,0c8h,0d1h,0d9hdb 0e0h,0e7h,0edh,0f2h,0f7h,0fah,0fch,0feh,0ffhdelay: mov r4,#0fh ;延时子程序loop11: mov r5,#10hloop22: nopnopnopdjnz r5,loop22djnz r4,loop11retend原理是基于dac的电压输出与其数字输入量成正比关系四 原始硬件图可供在线下载的stc89c51小系统板实验现象 按下阶梯波键时 按下三角波键时 按下方波键时 按下正弦波键时 五 经改进后的硬件图及改进后的现象图实验现象阶梯波形 三角波形 方波波形 按下正弦波波形键时出现的波形 (与正弦波有点出入)六 总结 组长:陈丽华 全程参与组员:李小兵 负责硬件焊接及调试张欢 负责方波模块及ppt杜浩 负责正弦波模块,有参与到硬件调试张浩 负责阶梯波模块和元器件购买李冲 负责三角波模块和元器件购买 通过这次对波形发生器的设计和实践,让我们进一步了解了设计的程序,也让我们了解了关于波形发生器的基本原理与设计理念,要设计一个电路要先用仿真仿真成功后才能实际节线和焊接,但是最后的成品却不一定与仿真时完全一样,因为在实际接线中有着各种个样的条件制约着,例如做音乐发生器时在接蜂鸣器之前必需加一个驱动. 在程序设计时时有不懂的地方需时时翻书,说明了对单片机技术掌握的并不是很熟悉,有待进一步提高对其的深入了解,同时在做这个课程设计的过程中我们了解到了更多有关于单片机的应用,像老师所说的那样,什么东西都可以用单片机做出来,只是看你钻没钻进去,还有就是意识到了学好模拟电路基础和数字电路基础是十分重要的,那是做单片机应用知识所必备的 在硬件电路的焊接时,一定要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论