简易信号发生器单片机课程设计报告.docx
《简易信号发生器单片机课程设计报告.docx》由会员分享,可在线阅读,更多相关《简易信号发生器单片机课程设计报告.docx(14页珍藏版)》请在冰豆网上搜索。
![简易信号发生器单片机课程设计报告.docx](https://file1.bdocx.com/fileroot1/2023-1/4/070ddfd8-a11c-47a7-952a-5724c860911d/070ddfd8-a11c-47a7-952a-5724c860911d1.gif)
简易信号发生器单片机课程设计报告
课程设计(论文)任务书
电气 学 院 电力系统及其自动化 专 业 12
(1) 班
一、课程设计(论文)题目:
简易信号发生器设计
二、课程设计(论文)工作自2015年1月12日起至2015年1月16日止。
三、课程设计(论文)地点:
电气学院机房10-303
四、课程设计(论文)内容要求:
1.课程设计的目的
(1)综合运用单片机原理及应用相关课程的理论知识和实际应用知识,进行单片机应用系统电路及程序设计,从而使这些知识得到进一步的巩固,加深和发展;
(2)熟悉和掌握单片机控制系统的设计方法,汇编语言程序设计及proteus软件的使用;
(3)通过查阅图书资料、以及书写课程设计报告可提高综合应用设计能力,培养独立分析问题和解决问题的能力。
2.课程设计的内容及任务
(1)可产生频率可调的正弦波(64个点)、方波、锯齿波或三角波。
(2)显示出仿真波形。
(3)通过按键选择输出波形的种类。
(4)在此基础上使输出波形的幅值可控。
3.课程设计说明书编写要求
(1)设计说明书用A4纸统一规格,论述清晰,字迹端正,应用资料应说明出处。
(2)说明书内容应包括(装订次序):
题目、目录、正文、设计总结、参考文献等。
应阐述整个设计内容,要重点突出,图文并茂,文字通畅。
(3)报告内容应包括方案分析;方案对比;整体设计论述;硬件设计(电路接线,元器件说明,硬件资源分配);软件设计(软件流程,编程思想,程序注释,)
调试结果;收获与体会;附录(设计代码放在附录部分,必须加上合理的注释)
(4)
学生签名:
2015年1月16日
课程设计(论文)评审意见
(1)总体方案的选择是否正确;正确()、较正确()、基本正确()
(2)程序仿真能满足基本要求;满足()、较满足()、基本满足()
(3)设计功能是否完善;完善()、较完善()、基本完善()
(4)元器件选择是否合理;合理()、较合理()、基本合理()
(5)动手实践能力;强()、较强()、一般()
(6)学习态度;好()、良好()、一般()
(7)基础知识掌握程度;好()、良好()、一般()
(8)回答问题是否正确;正确()、较正确()、基本正确()、不正确()
(9)程序代码是否具有创新性;全部()、部分()、无()
(10)书写整洁、条理清楚、格式规范;规范( )、较规范( )、一般()
总评成绩 优( )、良( )、中( )、及格( )、不及格( )
评阅人:
年月日
简易信号发生器
摘要:
这次课设的主要目的自己动手做一个可以实现简易信号发生器的设计,在设计中考虑到波形可以在一定范围里的频率和幅值的调整和不同波形的变换,可以准确地将信号在示波器中显示出来。
信号发生器应用广泛,种类繁多,性能各异,分类也不尽一致。
按照频率范围分类可以分为:
超低频信号发生器、低频信号发生器、视频信号发生器、高频波形发生器、甚高频波形发生器和超高频信号发生器。
按照输出波形分类可以分为:
正弦信号发生器和非正弦信号发生器。
非正弦信号发生器又包括:
脉冲信号发生器、函数信号发生器、扫频信号发生器、数字序列波形发生器、图形信号发生器、噪声信号发生器等。
按照信号发生器性能指标可以分为一般信号发生器和标准信号发生器。
前者指对输出信号的频率、幅度的准确度和稳定度以及波形失真等要求不高的一类信号发生器。
后者是指其输出信号的频率、幅度、调制系数等在一定范围内连续可调,并且读数准确、稳定、屏蔽良好的中、高档信号发生器。
此次的简易信号发生器的设计,将采用单片机编程方式,通过数模转换来实现正弦波、三角波、锯齿波、方波的输出。
在程序运行中,当接收到来自外界的命令,可按实际的需要调整信号波的频率幅值及波形,需要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出。
1、总体方案论述..................................6
任务分析.....................................6
方案对比.....................................6
系统总设计...................................6
2、硬件电路..................................7
主控电路.....................................7
按键电路......................................7
显示电路......................................8
3、软件设计......................................11
正弦波.......................................11
方波.........................................13
锯齿波.......................................14
三角波.......................................15
延时程序.....................................16
总程序.......................................17
4、系统调试结果..................................18
软件调试应用.............................18
软件仿真过程..........................18
仿真结果.....................................19
5、总结与体会....................................24
收获与体会...................................24
不足与改进...................................24
附录...............................................25
参考文献..........................................30
1、总体方案论述
1.1任务分析
(1)可产生频率可调的正弦波(64个点)、方波、锯齿波或三角波。
我们设想将频率可调功能通过按键来显示,正弦波、方波、锯齿波或三角波可以用单片机汇编语言程序写出并通过数模转换显示出来。
(2)显示出仿真波形。
通过片外数模转换显示。
(3)通过按键选择输出波形的种类。
可设置外部中断使得通过按键来从容地切换各种波形。
(4)在此基础上使输出波形的幅值可控。
可通过按键来实现。
方案对比
在设计的过程中,我们产生了如下方案:
方案一:
用四个按键来代表四个波形,然后用四个按键来代表各自波形的调频功能,再用四个按键来代表各自波形的调幅功能。
方案二:
用四个按键来代表四个波形,然后用一个按键来控制四个波形的频率,再用一个按键来控制除正弦波外其他波形的幅值。
通过比较两个方案,方案一器件较多,连线繁琐,方案二较方案一简单,也降低了写代码的难度。
由于正弦波本身的特殊性,此次设计我们放弃了对正弦波幅值的调控。
系统总设计
总体设想是:
将调频按键、调幅按键、波形按键作为输入信号输入到单片机内来调用各自的程序通过D/A转换器显示出来。
2、硬件设计
主控电路
将总中断EA接高电平,将四个波形按键通过四端输入与门接入即外部中断0,说明此次程序设计我们要用到外部中断0了。
按键电路
由图可知,正弦波按键、方波按键、三角波按键、锯齿波按键分别接入单片机的、、、,当按下去时对应的接口为低电平,即当检测到某个接口为低电平时,就调用对应的波形程序。
调幅按键、调频按键分别接入单片机的、,当按下去时对应的接口为低电平,即当检测到某个接口为低电平时,就调用对应的调幅调频程序。
显示电路
由图可知,单片机的~接入DAC0832的Dl0~D17并接入上拉电阻,单片机的接入DAC0832的1、2、17、18号引脚,即此数模转换器的地址为#0FEFFH。
DAC0832芯片简介:
(1)DAC0832的特性
DAC0832是采用CMOS/Si-Cr工艺制作而成的8位D/A转换器。
它可直接与AT89C51单片机相连,其主要特性如下:
1 分辨率为8位。
2 电流输出,建立时间为1μs。
3 可双缓冲输入、单缓冲输入或直接数字输入。
4 单一电源供电(+5~+15V)。
5 低功耗,20mW。
(2)DAC0832的内部结构及外部引脚
DAC0832有一个8位输入寄存器、一个8位DAC寄存器和一个8位D/A转换器3个部分组成,它的两个寄存器实现了输入数据的两级缓冲,D/A转换器采用E-2RT形电阻网络。
“8位输入寄存器”用于存放单片机送来的数字量,由LE2控制;“8位D/A转换器”受“8位DAC寄存器”输出的数字量控制,能输出和数字量成正比的模拟电流。
因此,DAC0832通常需要外接有运算放大器组成的I/V转换电路,才能得到模拟输出电压。
图:
8位数字信号输入端,可与单片机的数据总线PO口相连,用于接收单片机送来的待转换为模拟量的数字量。
CS:
片选端,当CS为低电平时,本芯片被选中。
ILE:
数据锁存允许端,高电平有效。
WR1:
第一级输入寄存器写选通控制端,低电平有效,当CS=0,ILE=1,WR1=0时,待转换的数据信号被锁存到第一级8位输入寄存器中。
WR2:
DAC寄存器写选通控制端,低电平有效。
当XFER=0,WR2=0时,输入寄存器中待转换的数据传入8位DAC寄存器中。
XFER:
数据传送控制信号,低电平有效。
在XFER和WR2都有效时,LE2上产生正脉冲,LE2的负跳变将输入寄存器内容打入DAC寄存器。
图基准电压输入,它与DAC内的电阻网络相连。
V可在+10V范围内调节。
IOUT1:
D/A转换器电流输出1端,输入数字量全为1时,IOUT1最大;输入数字量全为0时,IOUT1最小。
IOUT2:
D/A转换器电流输出2端,IOUT2+IOUT1=常数。
Rfb:
外部反馈信号输入端,内部已有反馈电阻Rfb,根据需要也可外接反馈电阻。
VCC:
电源输入端。
DGND:
数字信号地。
AGND:
模拟信号地,最好与基准电压共地。
MOVDPTR,#0FEFFH;DAC端口地址FEFFHDPTR
MOV@DPTR,A;启动D/A转换。
3、软件设计
正弦波
通过64个16进制的立即数所组成的点来显示正弦波形,这64个点可通过查表方式获取。
正弦波程序:
ZX:
MOVR3,#00H
LOOP0:
MOVA,R3
MOVDPTR,#TABLE
EX)。
选择合适的工作频率即可确认。
然后运行调试
图仿真结果
正弦波正常波形:
图正弦波调频后的波形:
图方波正常波形:
图方波调频后波形:
图方波调幅后波形:
图三角波正常波形:
图三角波调频后波形:
图三角波调幅后波形:
图锯齿波正常波形:
图锯齿波调频后波形:
锯齿波调幅后波形:
4、总结与体会
收获与体会
这次单片机课设历时数天,我们选的课题是简易信号发生器。
可以说是呕心沥血,苦尽甘来。
但是这让我们学到了很多东西,巩固了以前的知识,特别是汇编语言的使用,以前上课的时候对汇编语言一知半解,但通过此次课设之后,我对汇编语言的了解更深了,运用更加熟练了。
通过本次课设,锻炼了自己独立设计程序的能力。
在本次课程设计中,我们很重视功能的划分和各个模块之间的联系,分成了多个模块,即三角波、正弦波、锯齿波、方波模块,这样便于程序的检测和修改。
通过本次课设,使我们懂得了理论与实际的结合是很重要的。
只有把理论知识和实践相结合,才能真正为社会服务,从而提高自己的实践动手能力和独立思考能力。
谢谢老师给我们这一个宝贵的锻炼的机会。
不足与改进
此次简易信号发生器的设计最终所显示出来的效果总体能满足老师的要求,但是还是有点瑕疵和遗憾,首先由于时间的紧迫和正弦波本身的特性,我们没能实现对正弦波调幅的功能。
此前我们曾经想过将正弦波的表里面的值修改一下,但出来的正弦波形已然失真,于是乎被迫放弃,对于改进此类问题,我们想过重新制作一个正弦波的表,其幅值与之前的正弦波的表不一样,便可实现正弦波的调幅功能,但制作这张表涉及大量计算,迫于时间压力,所以这一块我们被迫放弃。
至于其他方法,我们目前没有想出来,甚是遗憾。
除此之外,我们对调幅调频的值有其他的想法:
可以增加调频或调幅的值,我们设想通过查表的方法使调出更多的幅值和频率,但由于我们担心如果这样写将增加代码量,调试过程中会出现技术性问题,所以被迫放弃。
不过总体来说,我们所设计的简易信号发生器实现了老师所指定的功能,还是值得欣慰的。
附录:
ORG0000H
LJMPMAIN;主程序
ORG0003H
LJMPINT01
ORG0030H
MAIN:
MOVP0,#0FFH;给P0口高电平
MOVSP,#60H;设置堆栈指针
ZC:
MOVR6,#01H
MOVR7,#0FH
CLRIT0;外部中断设置为低电平触发
SETBEX0;开启外部中断0
SETBEA;开启总中断
START:
;确保每个波形能够循环输出
CJNER7,#00H,LLL0
SJMPZX
SJMPSTART
LLL0:
CJNER7,#01H,LLL1
SJMPFB
SJMPSTART
LLL1:
CJNER7,#02H,LLL2
SJMPSJ
SJMPSTART
LLL2:
CJNER7,#03H,LLL3
LJMPJUC
LLL3:
SJMPSTART
INT01:
;产生外部中断0,检测对应的按钮输出对应的波形
JB,LL0
MOVR7,#00H
SJMPLL3
LL0:
JB,LL1
MOVR7,#01H
SJMPLL3
LL1:
JB,LL2
MOVR7,#02H
SJMPLL3
LL2:
JB,LL3
MOVR7,#03H
SJMPLL3
LL3:
RETI
ZX:
MOVR3,#00H;产生正弦波
LOOP0:
MOVA,R3
MOVDPTR,#TABLE;查表
MOVCA,@A+DPTR
MOVDPTR,#0FEFFH;定义DAC0832地址
MOVX@DPTR,A;读数据
INCR3
JB,LOOP1;正弦波调频
LCALLD50US
LOOP1:
CJNER3,#255,LOOP0
MOVR3,#00H
CJNER7,#00H,START;检测键是否按下
AJMPZX
FB:
MOVDPTR,#0FEFFH;产生方波
JB,LOOP2;检测调幅按钮调幅
MOVA,#0CCH;方波高电平幅值1
SJMPLOOP3
LOOP2:
MOVA,#055H;方波高电平幅值2
LOOP3:
MOVX@DPTR,A
LCALLD200US;延时
JB,LOOP4;方波前半周期调频
LCALLD200US
LOOP4:
MOVA,#5;方波低电平幅值
MOVX@DPTR,A
LCALLD200US;延时
JB,LOOP5;方波后半周期调频
LCALLD200US
LOOP5:
CJNER7,#01H,START;检测键是否按下
AJMPFB
SJ:
MOVR3,#00H;产生三角波
LOOP6:
MOVA,R3
MOVDPTR,#0FEFFH
MOVX@DPTR,A
INCR3;波形上升
MOVA,R3
JB,LOOP7;三角波前半周期调频
LCALLD50US
LOOP7:
JB,LOOP8;三角波调幅
CJNEA,#0FFH,LOOP6;幅值1
SJMPLOOP9
LOOP8:
CJNEA,#055H,LOOP6;幅值2
LOOP9:
DECR3;波形下降
JB,LOOP10;三角波后半周期调频
LCALLD50US
LOOP10:
MOVA,R3
MOVDPTR,#0FEFFH
MOVX@DPTR,A
CJNER3,#00H,LOOP9
CJNER7,#02H,SJOUT;检测键是否按下
AJMPSJ
SJOUT:
LJMPSTART
JUC:
MOVR3,#00H;产生锯齿波
LOOP11:
MOVA,R3
MOVDPTR,#0FEFFH
MOVX@DPTR,A
INCR3;波形上升
MOVA,R3
JB,LOOP12;锯齿波调频
LCALLD50US
LOOP12:
JB,LOOP13;锯齿波调幅
CJNEA,#0FFH,LOOP11;幅值1
SJMPLOOP14
LOOP13:
CJNEA,#055H,LOOP11;幅值2
LOOP14:
CJNER7,#03H,JUCOUT;检测键是否按下
AJMPJUC
JUCOUT:
LJMPSTART
D200US:
MOVR1,#2;200μs延时
MOVR2,#50
L5:
DJNZR2,$
DJNZR1,L5
RET
D50US:
MOVR1,#1;50μs延时
MOVR2,#23
L6:
DJNZR2,$
DJNZR1,L6
RET
TABLE:
DB080h,083h,086h,089h,08ch,090h,093h,096h,099h,09ch,09fh,0a2h,0a5h,0a8h,0abh,0aeh;产生正弦波代码
DB0b1h,0b3h,0b6h,0b9h,0bch,0bfh,0c1h,0c4h,0c7h,0c9h,0cch,0ceh,0d1h,0d3h,0d5h,0d8h
DB0dah,0dch,0deh,0e0h,0e2h,0e4h,0e6h,0e8h,0eah,0ebh,0edh,0efh,0f0h,0f1h,0f3h,0f4h
DB0f5h,0f6h,0f8h,0f9h,0fah,0fah,0fbh,0fch,0fdh,0fdh,0feh,0feh,0feh,0ffh,0ffh,0ffh
DB0ffh,0ffh,0ffh,0ffh,0feh,0feh,0feh,0fdh,0fdh,0fch,0fbh,0fah,0fah,0f9h,0f8h,0f6h
DB0f5h,0f4h,0f3h,0f1h,0f0h,0efh,0edh,0ebh,0eah,0e8h,0e6h,0e4h,0e2h,0e0h,0deh,0dch
DB0dah,0d8h,0d5h,0d3h,0d1h,0ceh,0cch,0c9h,0c7h,0c4h,0c1h,0bfh,0bch,0b9h,0b6h,0b3h
DB0b1h,0aeh,0abh,0a8h,0a5h,0a2h,09fh,09ch,099h,096h,093h,090h,08ch,089h,086h,083h
DB080h,07dh,07ah,077h,074h,070h,06dh,06ah,067h,064h,061h,05eh,05bh,058h,055h,052h
DB04fh,04dh,04ah,047h,044h,041h,03fh,03ch,039h,037h,034h,032h,02fh,02dh,02bh,028h
DB026h,024h,022h,020h,01eh,01ch,01ah,018h,016h,015h,013h,011h,010h,00fh,00dh,00ch
DB00bh,00ah,008h,007h,006h,006h,005h,004h,003h,003h,002h,002h,002h,001h,001h,000h
DB000h,000h,001h,001h,002h,002h,002h,003h,003h,004h,005h,006h,006h,007h,008h,00ah
DB00bh,00ch,00dh,00fh,010h,011h,013h,015h,016h,018h,01ah,01ch,01eh,020h,022h,024h
DB026h,028h,02bh,02dh,02fh,032h,034h,037h,039h,03ch,03fh,041h,044h,047h,04ah,04dh
DB04fh,052h,055h,058h,05bh,05eh,061h,064h,067h,06ah,06dh,070h,074h,077h,07ah,07dh
END
参考文献
[1]单片机课程设计实例指导.李光飞.北京航空航天大学出版社.
[2]单片机课程设计.蔡明文.华中科技出版社.
[3]电子设计自动化——Proteus在电子电路与51单片机中的应用.
[4]单片微机原理及应用.徐春辉.北京:
电子工业出版社,