单片机波形发生器.docx
- 文档编号:13705201
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:13
- 大小:72.13KB
单片机波形发生器.docx
《单片机波形发生器.docx》由会员分享,可在线阅读,更多相关《单片机波形发生器.docx(13页珍藏版)》请在冰点文库上搜索。
单片机波形发生器
单片机课程设计报告书
课题名称
单片机波形发生器
姓名
学号
院、系、部
专业
指导教师
201年月3日
单片机波形发生器设计
20086510李磊
一、设计目的
2人一组,设计一个波形发生器,该波形发生器可发生:
矩形波、三角波、锯齿波、梯形波、正弦波。
实际应用中巩固微机原理、单片机、数字电子技术、电子电路设计等专业科目所学知识,为毕业设计打下基础。
二、设计要求
1指定波形可通过DAC来实现,
2用按键来控制输出波形
3用一位数码管显示波形代码
三、硬件电路设计
硬件部分:
主机芯片STC89C52
74HC573数码管锁存器,
RS232串口,STC单片机下载程序与电脑串口通信,
IO扩展排针,P0P1P2P3+5VGND全数引出扩展口设计在板子顶部更便于外接扩展电路
4*4矩阵键盘学习键盘输入原理及扫描方法等多种扫描程序.
4个独立按键,连接到外中断.
51/AVR双复位电路通过J16切换不同的复位电平晶振座;由于做单片机实验时经常要用到不同频率的晶振可方便更换.
AD转换部分用试验箱上的模块
最小系统的元件表:
序号
名称
数量
15
40Pzip座
1
7
串口接口
1
13
MAX232芯片
1
12
USB接口
1
C1、C2
晶振电容22p
2
51、AVR
复位按钮
2
Y1
晶振座
3孔
J16
复位跳线插针
3针
RP1
4.7k排阻
1
D1―D8
LED白发红
8
J10
led电源跳线
2针
R9
10k复位电阻
1
S17-S20
单独按键
4
输出口
双排针
2×18针
C9-C12
max232外围电容1μF
4
POWER
自锁按钮
1
C13
复位电容10μF
1
R16
电源指示灯电阻1K
1
R1-R8
LED限流电阻1K
8
power指示灯
绿发绿led
1
c8
电源滤波电容1000μ
1
四、使用说明
该系统的软件比较典型:
包括键盘的应用,显示的应用和DA转换器的应用。
该波形发生器可发生:
矩形波、三角波、锯齿波、梯形波
当启动后:
数码管显示“0”;波形为矩形波
当按键一次:
数码管显示“1”;波形为三角波
当按键第二次:
数码管显示“2”;波形为锯齿波
当按键第三次:
数码管显示“3”;波形为梯形波
再次按键,显示归零,波形为矩形波,依次循环进行,按复位键重新开始。
不同波形的产生实际上是对输出的二进制数字进行进行相应的改变来实现的。
矩形波的输出最为简单,只要按照设定的周期值将输出的电压改变即可。
(通过将输出信号按位取反即可)
三角波的输出也比较简单,单片机的输出只要完成数字量递增和递减交替进行即可。
(将输出的二进制信号依次加1,达到0xff时依次减1到0x00即可)
锯齿波的输出也比较简单,单片机的输出只要完成数字量递增、归零,再次递增、归零如此循环进行即可。
(将输出的二进制信号依次加1,达到0xff时置为0x00即可)
梯形波的输出也比较简单,单片机的输出只要完成数字量递增、维持延时一定时间,再递减、延时一定时间;再依次类推,循环进行即可。
(将输出的二进制信号依次加1,达到0xff时保持一段时间,再依次减1到0x00,保持一段时间即可)
正弦波的输出最麻烦,如果在软件中计算出输出的各点电压值,将会浪费很多的CPU时间,以至于无法满足频率的要求。
通常最简单的方法是通过手动的方法计算出输出各点的电压值,然后在编写程序时以数组的方式给出。
当需要时,只要按照顺序进行输出即可。
这种方法比运算法速度快且曲线的形状修改灵活。
在本设计中将360度分为256个点,则每两个点之间的间隔为1.4度,然后计算出每个点电压对应的数字量即可。
只要反复输出这组数据到DAC,就可以在系统输出端得到想要的正弦波。
五、流程图设计
六、程序设计如下:
源程序:
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVTMOD,#05H(00000101-T0计数器方式1)
LP6:
MOVTL0,#0
SETBTR0
SETBIT0(下降沿触发)
LP:
MOVP1,TL0
MOVR0,P1
CJNER0,#4,LP7
SJMPLP6
LP7:
CJNER0,#00H,LP1
ACALLS0
SJMPLP
S1:
MOVA,#1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVR0,A
MOVA,#01H
MOVDPTR,#8002H
MOVX@DPTR,A
MOVDPTR,#8004H
MOVA,R0
MOVX@DPTR,A
MOVDPTR,#9000H
MOVR0,#0
LOOP1:
MOVA,R0
MOVX@DPTR,A
ACALLDELAY1
INCR0
CJNER0,#255,LOOP1
LOOP2:
DECR0
MOVA,R0
MOVX@DPTR,A
ACALLDELAY1
CJNER0,#0,LOOP2
RET
LP1:
CJNER0,#01,LP2
ACALLS1
SJMPLP
LP2:
CJNER0,#02,LP3
ACALLS2
SJMPLP
LP3:
CJNER0,#03,LP
ACALLS3
SJMPLP
TAB:
DB3FH,06H,5BH,4FH,66H
S0:
JBCF0,LOOP
SETBF0
MOVA,#0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVR0,A
MOVA,#01H
MOVDPTR,#8002H
MOVX@DPTR,A
MOVDPTR,#8004H
MOVA,R0
MOVX@DPTR,A
MOVA,#01H
MOVDPTR,#9000H
LOOP:
MOVX@DPTR,A
ACALLDELAY
CPLA
RET
S3:
MOVA,#3
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVR0,A
MOVA,#01H
MOVDPTR,#8002H
MOVX@DPTR,A
MOVDPTR,#8004H
MOVA,R0
MOVX@DPTR,A
MOVDPTR,#9000H
MOVR0,#0
LOOP5:
MOVA,R0
MOVX@DPTR,A
ACALLDELAY1
INCR0
CJNER0,#255,LOOP5
ACALLDELAY
LOOP6:
DECR0
MOVA,R0
MOVX@DPTR,A
ACALLDELAY1
CJNER0,#0,LOOP6
ACALLDELAY
RET
DELAY1:
MOVR1,#255
NEXT1:
DJNZR1,NEXT1
RET
DELAY:
MOVR5,#10
MOVR6,#200
MOVR7,#200
LOOP8:
DJNZR6,LOOP8
MOVR6,#200
DJNZR7,LOOP8
MOVR7,#200
DJNZR5,LOOP8
MOVR5,#10
RET
END
S2:
MOVA,#2
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVR0,A
MOVA,#01H
MOVDPTR,#8002H
MOVX@DPTR,A
MOVDPTR,#8004H
MOVA,R0
MOVX@DPTR,A
MOVDPTR,#9000H
MOVR0,#0
LOOP4:
MOVA,R0
MOVX@DPTR,A
ACALLDELAY1
INCR0
CJNER0,#255,LOOP4
RET
SETTAB:
DB80H,83H,86H,89H,8DH,90H,93H,96H
DB99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH
DB0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H
DB0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H
DB0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H
DB0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H
DB0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH
DB0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH
DB0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H
DB0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH
DB0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH
DB0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H
DB0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H
DB0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99H
DB96H,93H,90H,8DH,89H,86H,83H,80H
DB80H,7CH,79H,78H,72H,6FH,6CH,69H
DB66H,63H,60H,5DH,5AH,57H,55H,51H
DB4EH,4CH,48H,45H,43H,40H,3DH,3AH
DB38H,35H,33H,30H,2EH,2BH,29H,27H
DB25H,22H,20H,1EH,1CH,1AH,18H,16H
DB15H,13H,11H,10H,0EH,0DH,0BH,0AH
DB09H,08H,07H,06H,05H,04H,03H,02H
DB02H,01H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,01H,02H
DB02H,03H,04H,05H,06H,07H,08H,09H
DB0AH,0BH,0DH,0EH,10H,11H,13H,15H
DB16H,18H,1AH,1CH,1EH,20H,22H,25H
DB27H,29H,2BH,2EH,30H,33H,35H,38H
DB3AH,3DH,40H,43H,45H,48H,4CH,4EH
DB51H,55H,57H,5AH,5DH,60H,63H,66H
DB69H,6CH,6FH,72H,76H,79H,7CH,80H
S4:
MOVA,#4
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVR0,A
MOVA,#01H
MOVDPTR,#8002H
MOVX@DPTR,A
MOVA,R0
ACALLDELAY1
INCR0
CJNER0,#255,TT1
RET
程序说明:
主程序中通过子程序调用来产生各种波形,
调用子程序“S0”;波形为矩形波
调用子程序“S1”;波形为三角波
调用子程序“S2”;波形为锯齿波
调用子程序“S3”;波形为梯形波
调用子程序“S4”;波形为正弦波
七、设计总结:
经过一学期单片机的学习,我对这门课有了基本的了解,尤其是对波形发生器有了进一步认识。
这次课程的设计,让我得到了一次用所学的知识去分析问题和解决问题的机会,使我在单片机的基本原理,单片机的硬件构成,单片机应用系统开发以及对汇编语言的掌握方面都有进一步的提高,尤其是对单片机的波形发生器有了更进一步的认识。
实验过程中,遇到很多问题,如如何通过软件使硬件更加简单,一些编程方法,扩展思维。
软件延时的作用、计数器的广泛应用、查表、各种波形子程序的调用等各种应用都涉及到了,在应用过程中,因为循环语句运用不当,导致形成死循环,无法正常执行其它模块,还因循环无法避开初始化部分,导致初始化后边的程序不起作用等等一系列问题,都在此次课程设计中得到解决,收获很大。
此次课程设计进一步巩固了我在课堂上学习的知识,加深了我对这些知识的理解和认识,同时也加深了对编程软件和下载软件的认识和应用。
此次课程设计得到了老师和同学的帮助,同时通过查阅相关资料,书籍设计中遇到的许多问题得到了解决,这个过程使我受益匪浅。
八、参考文献:
[1]李广弟等.单片机基础北京航空航天出版社,2001
[2]冯博琴、吴宁主编微型计算机原理与接口技术,清华大学出版社,2007
[3]刘守义等.单片机技术基础.西安电子科技大学出版社,2007
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 波形 发生器
![提示](https://static.bingdoc.com/images/bang_tan.gif)