单片机课程设计Word下载.docx
《单片机课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
二、指导教师评语
2012年月日
三、成绩
验收盖章
(湖南城市学院通信与电子工程学院,益阳,413000)
1设计目的
通过对本课题的设计,掌握A/D、D/A转换的应用,用单片机通过编程产生各种波形的方法。
熟悉单片机应用系统的设计以及软硬件的调试。
单片机本身并没有开发能力,必须借助开发工具即硬件开发环境才能进行开发。
单片机的硬件开发环境有PC机、编程器和仿真机等。
2设计的主要内容和要求
设计一个简易波形发生器,要求该系统能通过开关或按钮有选择性的输出方波、锯齿波、三角波及正弦波等四种波形,并且这四种波形的频率均可在一定范围内调节,电压的幅度也可以通过电位器在一定范围内进行调节。
对于四种波形的切换,用四个开关的四种状态来表示(或用按钮)。
选用D/A转换器选用DAC0832来输出波形。
通过拨码开关来调节频率。
3整体设计方案
本方案直接采用Atmel公司的AT89C51作为波形发生器。
波形的具体产生是通过DAC来产生,Atmel公司的AT89C51在这方面的设计为我们提供了极大的方便,用它实现的好处在于,外围电路极其简单,另外在DAC的编程方面又提供及其便利的编程环境。
外围电路的设计包括三大部分,第一是键盘控制电路的设计,这里采用4个独立按键,由P1.0、P1.1、P1.2、P1.3的进行控制。
通过P0口输出数字波形信号,经过DAC0832转换为模拟信号进行输出。
在波形输出的同时利用按键(拨码开关)来进行频率调节,通过对DAC0832的VREF参考电压的控制来调节输出波形的幅度。
另外由于Atmel公司的AT89C51接DAC输出,为保证电流的输出在P0口接上上拉电阻,保证驱动电路正常驱动。
本设计的特点是全面采用数字电路方案,因而工作稳定可靠。
利用单片机控制管理,使频率设置和占空比调整等操作可用键盘输入,十分方便。
通过按键的控制来调节输出波形的形式、频率和幅度,如图3.1所示。
图3.1整体设计方框图
4硬件电路的设计
根据设计要求,可以考虑四种波形切换,用四个开关的四种状态来实现。
波形频率的改变是通过P2口来控制实现。
波形输出是通过D/A转换器实现的,可以选用D/A专用芯片0832来完成。
通过控制DAC0832的参考电压来调节输出波形的幅度,采用一个1K的电位器来调节。
这样系统的主要器件就确定了。
其系统的硬件电路原理图如图4.1所示。
系统选用12MHZ晶振,如用8MHZ晶振,则输出波形的频率可得到相应降低。
A/D转换器芯片的地址按图中所示接线为7000H,采样通道为IN0,三个通道地址选择端ADD-A,ADD-B及ADD-C接在数据线上,也可以接到P2口线上,只是按图所示接线,在启动A/D转换器时,累加器A中应送通道值。
当然,按设计要求也可将这三根地址线接地,但这样不利于系统扩展,0809EOC端在A/D转换结束后会产生一个上跳变,将其接到P3.2口,这样当A/D转换结束时可按等待及查询两种方式读取数据,编程较为灵活,若采取中断方式读取结果,从EOC输出的信号应加反相器后再送到P3.2口,以便与单片机的中断逻辑相匹配。
分频器74ALS74将1MHZ的地址锁存信号四分频,变为250KHZ脉冲后,提供给0809作为其工作脉冲。
D/A转换器芯片DAC0832将单片机输入的数字量转变为电流信号并以差分方式送给运算放大器LM324,后者将其变为电压信号输出。
若要得到正负电压,则应该为运算放大器提供正负电源。
按途中所示,接线0832地址为8000H。
图4.1系统的硬件电路原理图
5软件设计
根据硬件设计,系统用按钮切换波形,可考虑采用查询或中断方式进行,这两种方式比较起来后者效率更高。
若采用查询方式检测按钮,则系统需花费时间去定期检测P3.3口管脚电位,这样就增加了软件开销,降低了效率,因此采用中断方式编程比较理想。
其编程思想是安排一个存储单元存放按钮次数,初值设为0,对应于某种波形,每中断一次数据加1,以对应另一种波形。
因此中断程序的任务仅仅是通过改变按钮的次数来存放单元的数据而已,波形转换在主程序中进行。
各种波形的输出频率是通过改变两次输出数据之间的时间间隔来实现的。
具体做法是首先对模拟量进行采样,得到相应的A/D值用这个A/D值作为延时基数进行延时,这样输出波形的频率就和模拟电压联系起来,只要调整电位器旋钮改变输入电压模拟量,就可以改变波形频率。
主程序框图如图5.1所示。
图5.1主控制器程序流程图
6系统仿真
在Proteus的ISIS7.7sp2软件环境下画出电路原理图,接下来就是将设计的程序在KeilC51μVision4开发集成环境上编译成机器语言,进入Proteus的ISIS,鼠标左键点击菜单“Debug”,选中“useromotedebugermonitor”,便可实现KeilC与Proteus连接调试。
首先在Proteus中双击单片机AT89C51,将KeilC下编程生成的.HEX文件导入到AT89C51中,可在Proteus中单击全速仿真运行按钮
,进行现象的查看,能清楚地观察到芯片上每一个引脚的电平变化,红色代表高电平,蓝色代表低电平;
如果现象不正确,则在KeilC中单步调试程序,并在Proteus观察现象,那一步不正确则对该段的程序进行修改,调试直到仿真完全成功为止,仿真现象如图6.1所示。
图6.1单片机波形发生器仿真图
该仿真验证的过程为,首先按开始按
,然后按下与P1.0相连的独立按键,这时在输出端通过示波器显示一个方波。
调节拨动开关,可使方波的频率发生变化,调节电位器Rv1,可使波形的幅度发生变化。
仿真结果如图6.2所示。
图6.2方波波形输出仿真结果图
按下与P1.1相连的独立按键,这时在输出端通过示波器显示一个锯齿波。
仿真结果如图6.3所示。
图6.3锯齿波波形输出仿真图
按下与P1.2相连的独立按键,这时在输出端通过示波器显示一个三角波。
仿真结果如图6.4所示。
图6.4三角波输出波形仿真图
按下与P1.3相连的独立按键,这时在输出端通过示波器显示一个正弦波。
仿真结果如图6.5所示。
图6.5正弦波输出波形仿真图
7使用说明
在设计的波形发生器中,可以通过与P1口相连的4个按键来选择输出的波形,按键P1.0为方波输出,按键P1.1为锯齿波输出,按键P1.2为三角波输出,按键P1.3为正弦波输出。
通过对和DAC0832相连的电位器RV1可以调节输出波形的幅度。
在和单片机P2口相连的有一组拨码开关,通过这组拨码开关可以调节输出波的频率。
8设计总结
通过这段时间的课程设计,我加深了对单片机的了解与应用,学会了如何把理论应用于实际,如何用我们所学的知识去解决正常生活中的问题。
在程序设计时时有不懂的地方需时时翻书,说明了对单片机技术掌握的并不是很熟悉,有待进一步提高对其的深入了解,同时在做这个课程设计的过程中我们了解到了更多有关于单片机的应用,像老师所说的那样,什么东西都可以用单片机做出来,只是看你钻没钻进去,还有就是意识到了学好模拟电路基础和数字电路基础是十分重要的,那是做单片机应用知识所必备的。
在当今科技发展如此迅速的时代,计算机已经成为了必不可少的工具,它无处不在,学习掌握计算机的技能已成为一项必修课,想要在这个社会有一立足之处,就必须学好计算机,能准确的掌握计算机知识,并熟练的贯彻到生活之中。
参考文献
[1]何立民.单片机应用系统设计[M].北京:
北京航空航天大学,1996.
[2]李华.MCS—51系列单片实用接口技术[M].北京:
北京航空航天大学出版社,1993.
[3]何立民.单片机应用技术选编
(一)[M].北京:
[4]邬宽明.单片机外围器件实用手册(数据传输接口器件分册)[M].北京:
北京航空航天大学出版社,2002.
[5]李胡育.单片机原理及接口技术[M].北京:
北京航空航天大学出版社,1994.
[6]Philips.80C51-based8-BitMicrocontrollers[M].1994.
[7]李建忠.单片机原理及应用[M].西安:
西安电子科技大学出版,2002.
[8]张俊谟.单片机中级教程[M].北京:
北京航空航天大学出版,2000.
附件:
程序清单
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
JNBP1.0,P10
JNBP1.1,P11
JNBP1.2,P12
JNBP1.3,P13
P10:
MOVR7,#00H
LCALLSQU
P11:
MOVR7,#01H
LCALLSAW
P12:
MOVR7,#02H
LCALLTRI
P13:
MOVR7,#03H
LCALLSIN
SQU:
JNBP1.1,N1
JNBP1.2,N2
JNBP1.3,N3
LJMPSSQU
N1:
LJMPTC0
N2:
N3:
SSQU:
CJNER7,#00H,TC0
MOVR0,#00H
;
MOVDPTR,#7FFFH
K00:
MOVA,#0FFH
MOVX@DPTR,A
MOVP0,#0FFH
MOVP2,#0FFH
MOVA,P2
CPLA
MOVR3,A
L00:
DECR3
CJNER3,#255,L00
INCR0
CJNER0,#254,K00
K01:
MOVA,#00H
MOVX@DPTR,A
MOVP0,#00H
L01:
CJNER3,#255,L01
CJNER0,#254,K01
LJMPSQU
TC0:
RET
SAW:
JNBP1.0,N4
JNBP1.2,N5
JNBP1.3,N6
LJMPSSAW
N4:
LJMPTC1
N5:
N6:
SSAW:
CJNER7,#01H,TC1
MOVR0,#0FFH
MOVDPTR,#7FFFH
K10:
MOVA,R0
MOVX@DPTR,A
MOVP0,R0
L10:
CJNER3,#255,L10
CJNER0,#255,K10
LJMPSAW
TC1:
TRI:
JNBP1.0,N7
JNBP1.1,N8
JNBP1.3,N9
LJMPTTRI
N7:
LJMPTC2
N8:
N9:
TTRI:
CJNER7,#02H,TC2
K20:
L20:
CJNER3,#255,L20
CJNER0,#254,K20
K21:
L21:
CJNER3,#255,L21
DECR0
CJNER0,#0,K21
LJMPTRI
TC2:
SIN:
JNBP1.0,N10
JNBP1.1,N11
JNBP1.2,N12
LJMPSSIN
N10:
LJMPTC3
N11:
N12:
SSIN:
CJNER7,#03H,TC3
K30:
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
L30:
CJNER3,#255,L30
CJNER0,#255,K30
LJMPSIN
TC3:
TAB:
DB80H,82H,84H,86H,88H,8AH,8CH,8EH,90H,92H,94H,96H,98H,9AH,9CH,9EH
DB0A0H,0A2H,0A4H,0A6H,0A8H,0AAH,0ABH,0ADH,0AFH,0B1H,0B2H,0B4H,0B6H,0B7H,0B9H,0BAH
DB0BCH,0BDH,0BFH,0C0H,0C1H,0C3H,0C4H,0C5H,0C6H,0C8H,0C9H,0CAH,0CBH,0CCH,0CDH,0CEH
DB0CEH,0CFH,0D0H,0D1H,0D1H,0D2H,0D2H,0D3H,0D3H,0D4H,0D4H,0D4H,0D4H,0D5H,0D5H,0D5H
DB0D5H,0D5H,0D5H,0D5H,0D4H,0D4H,0D4H,0D4H,0D3H,0D3H,0D2H,0D2H,0D1H,0D1H,0D0H,0CFH
DB0CEH,0CEH,0CDH,0CCH,0CBH,0CAH,0C9H,0C8H,0C6H,0C5H,0C4H,0C3H,0C1H,0C0H,0BFH,0BDH
DB0BCH,0BAH,0B9H,0B7H,0B6H,0B4H,0B2H,0B1H,0AFH,0ADH,0ABH,0AAH,0A8H,0A6H,0A4H,0A2H
DB0A0H,9EH,9CH,9AH,98H,96H,94H,92H,90H,8EH,8CH,8AH,88H,86H,84H,82H
DB80H,7DH,7BH,79H,77H,75H,73H,71H,6FH,6DH,6BH,69H,67H,65H,63H,61H
DB5FH,5DH,5BH,59H,57H,55H,54H,52H,50H,4EH,4DH,4BH,49H,48H,46H,45H
DB43H,42H,40H,3FH,3EH,3CH,3BH,3AH,39H,37H,36H,35H,34H,33H,32H,31H
DB31H,30H,2FH,2EH,2EH,2DH,2DH,2CH,2CH,2BH,2BH,2BH,2BH,2AH,2AH,2AH
DB2AH,2AH,2AH,2AH,2BH,2BH,2BH,2BH,2CH,2CH,2DH,2DH,2EH,2EH,2FH,30H
DB31H,31H,32H,33H,34H,35H,36H,37H,39H,3AH,3BH,3CH,3EH,3FH,40H,42H
DB43H,45H,46H,48H,49H,4BH,4DH,4EH,50H,52H,54H,55H,57H,59H,5BH,5DH
DB5FH,61H,63H,65H,67H,69H,6BH,6DH,6FH,71H,73H,75H,77H,79H,7BH,7DH
END