单片机课程设计正弦波发生器论文内容摘要:

0个点的查表每来一次定时器中断加1,到50后清0F0标志位用来判断现在调整频率还是幅值CU(09H)查表计数(用作频率调整)每次加1,到21之后清0CHZ(12H)查表计数(用作幅值调整)每次加1,到5之后清0CTH0(10H)存储调整后的TH0的初值CTL0(11H)存储调整后的TL0的初值CDPH存储调整后的DPH的值 OUTBIT(08002H)位控制端口OUTSEG(08004H)段控制端口IN(08001H)键盘读入端口LEDBuf(60H)显示缓冲区首地址60H~65H四、运行结果分析(出现的问题、如何解决。 )搭建PROTEUS仿真电路,进行软件模拟仿真(图12)图12 PROTEUS仿真电路此电路和实际电路有差异,主要用于前期的软件仿真,基本的波形发生,测试MATLAB软件计算出的数值运行后是否满足设计要求。 此外,我还用此电路测试了取不同点数时,波形差异。 分别测试了30点、50点、70点以及100点,点数越多越接近正弦,点数越少失真越严重。 但是点数过多,所能达到的频率最低值越大,不能满足本设计中频率达到1000HZ的要求。 经试验,取50点可以达到最好的效果,是频率达到要求,波形又不失真严重。 前期仿真完成后,进行上机调试。 起初,加上键盘显示程序时,键盘和显示程序时钟程序始终不正常。 经老师指点,改变思路,在进行频率和幅度设置时,关掉波形发生功能。 顺利完成调试。 系统上电,产生50HZ,5V~+5V正弦波。 按单脉冲发生键,进入设置程序,按键盘0键决定调节频率还是幅值;按1键进行调节;按2键完成设置,开始输出波形。 (图1图1图1图16分别为几种不同频率和幅值的输出波形)图13 正弦波(100HZ,5V~+5V)图13 正弦波(100HZ,4V~+4V)图14 正弦波(200HZ,4V~+4V)五、设计总结本次设计题目是正弦信号发生器。 用到的硬件有按键、数码管显示、译码电路、DAC0838051单片机。 通过这次设计,进一步熟悉了这些硬件的用法。 熟悉了WAVE编程软件的使用。 对汇编语言进行单片机程序设计有了更深一步的认识。 完成本次设计后,学到了一种新的编程思路:大量的应用查表的方式进行程序设计,可以有效的增加程序执行的效率,缩短其执行时间,一些对程序执行时间有严格要求的场合,可以用此思路进行设计。 当然,查表方式进行程序设计亦有其缺点:占用大量的内部ROM空间,对于一些内部ROM空间不是很充足的单片机,过多的表可能导致ROM空间不足。 因此,进行程序设计时要将查表方式和算法方式进行综合考虑,选择效率较高的方式进行设计,也可以将两种方式有效结合起来。 此次设计能顺利完成,要感谢李老师的指导,在加入键盘和显示程序时,遇到了困难,是李老师的指导,使我走出了泥潭。 六、参考资料[1] 胡宴如. 高频电子线路[M].高教出版社. :1219 [2] 卢屹. 数字锁相环的参数设计及其应用[J] 通信技术2001,(9):1215[3] 涂时亮等. :科学技术文献出版社重庆分社,1988[4] 张志良. :机械工业出版社,2001[5] 徐君毅等,:上海科学技术版社,1988[6] 成都木马科技. :北京希望电子出版社,1988[7] 、:中国广播电视出版社,1999[8] :北京航空航天大学出版社,1994附录:源程序 ORG 0000H AJMP MAIN ORG 0003H LJMP WBZD0 ORG 000BH LJMP DSZD0 ORG 0030H CU EQU 09H CTH0 EQU 10H CTL0 EQU 11H CHZ EQU 12H CDPH EQU 13H OUTBIT equ 08002h。 位控制口 OUTSEG equ 08004h。 段控制口 IN equ 08001h。 键盘读入口 LEDBuf equ 60h。 显示缓冲MAIN: MOV CHZ,0 MOV A,00H MOV DPTR,09000H MOV TMOD,11H MOV TH0,0FFH MOV TL0,0EDH SETB EA SETB ET0 SETB ET1 SETB EX1 SETB IT0 SETB IT1 MOV CDPH,09H SETB EX0 MOV CTH0,0FFH MOV CTL0,0FH SETB TR0 SJMP $Delay: mov r7, 0DelayLoop: djnz r7, DelayLoop djnz r6, DelayLoop retDisplayLED: mov r0, LEDBuf mov r1, 6。 共6个八段管 mov r2, 00100000b。 从左边开始显示Loop: mov dptr, OUTBIT mov a, 0 movx @dptr, a。 关所有八段管 mov a, @r0 mov dptr, OUTSEG movx @dptr, a mov dptr, OUTBIT mov a, r2 movx @dptr, a。 显示一位八段管 mov r6, 1 call Delay mov a, r2。 显示下一位 rr a mov r2, a inc r0 djnz r1, Loop retTestKey: mov dptr, OUTBIT mov a, 0 movx @dptr, a。 输出线置为0 mov dptr, IN movx a, @dptr。 读入键状态 cpl a anl a, 0fh。 高四位不用 retGetKey: mov dptr, OUTBIT mov P2, dph mov r0, Low(IN) mov r1, 00100000b mov r2, 6KL。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。