简易信号发生器单片机课程设计报告材料.docx
- 文档编号:18201245
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:32
- 大小:1.63MB
简易信号发生器单片机课程设计报告材料.docx
《简易信号发生器单片机课程设计报告材料.docx》由会员分享,可在线阅读,更多相关《简易信号发生器单片机课程设计报告材料.docx(32页珍藏版)》请在冰点文库上搜索。
简易信号发生器单片机课程设计报告材料
课程设计(论文)任务书
电气学 院 电力系统与其自动化专 业12〔1〕班
一、课程设计(论文)题目:
简易信号发生器设计
二、课程设计(论文)工作自2015年1月12日起至2015年1月16日止。
三、课程设计(论文)地点:
电气学院机房10-303
四、课程设计(论文)内容要求:
1.课程设计的目的
〔1〕综合运用单片机原理与应用相关课程的理论知识和实际应用知识,进展单片机应用系统电路与程序设计,从而使这些知识得到进一步的巩固,加深和开展;
〔2〕熟悉和掌握单片机控制系统的设计方法,汇编语言程序设计与proteus软件的使用;
〔3〕通过查阅图书资料、以与书写课程设计报告可提高综合应用设计能力,培养独立分析问题和解决问题的能力。
2.课程设计的内容与任务
〔1〕可产生频率可调的正弦波〔64个点〕、方波、锯齿波或三角波。
〔2〕显示出仿真波形。
〔3〕通过按键选择输出波形的种类。
〔4〕在此根底上使输出波形的幅值可控。
〔1〕设计说明书用A4纸统一规格,论述清晰,字迹端正,应用资料应说明出处。
〔2〕说明书内容应包括〔装订次序〕:
题目、目录、正文、设计总结、参考文献等。
应阐述整个设计内容,要重点突出,图文并茂,文字通畅。
〔3〕报告内容应包括方案分析;方案比照;整体设计论述;硬件设计〔电路接线,元器件说明,硬件资源分配〕;软件设计〔软件流程,编程思想,程序注释,〕
调试结果;收获与体会;附录〔设计代码放在附录局部,必须加上合理的注释〕
〔4〕
学生签名:
2015年1月16日
课程设计(论文)评审意见
〔1〕总体方案的选择是否正确;正确〔〕、较正确〔〕、根本正确〔〕
〔2〕程序仿真能满足根本要求;满足〔〕、较满足〔〕、根本满足〔〕
〔3〕设计功能是否完善;完善〔〕、较完善〔〕、根本完善〔〕
〔4〕元器件选择是否合理;合理〔〕、较合理〔〕、根本合理〔〕
〔5〕动手实践能力;强〔〕、较强〔〕、一般〔〕
〔6〕学习态度;好〔〕、良好〔〕、一般〔〕
〔7〕根底知识掌握程度;好〔〕、良好〔〕、一般〔〕
〔8〕回答如下问题是否正确;正确〔〕、较正确〔〕、根本正确〔〕、不正确〔〕
〔9〕程序代码是否具有创新性;全部〔〕、局部〔〕、无〔〕
〔10〕书写整洁、条理清楚、格式规X;规X〔 〕、较规X〔 〕、一般〔〕
总评成绩 优〔 〕、良〔 〕、中〔 〕、与格〔 〕、不与格〔 〕
评阅人:
年月日
简易信号发生器
摘要:
这次课设的主要目的自己动手做一个可以实现简易信号发生器的设计,在设计中考虑到波形可以在一定X围里的频率和幅值的调整和不同波形的变换,可以准确地将信号在示波器中显示出来。
信号发生器应用广泛,种类繁多,性能各异,分类也不尽一致。
按照频率X围分类可以分为:
超低频信号发生器、低频信号发生器、视频信号发生器、高频波形发生器、甚高频波形发生器和超高频信号发生器。
按照输出波形分类可以分为:
正弦信号发生器和非正弦信号发生器。
非正弦信号发生器又包括:
脉冲信号发生器、函数信号发生器、扫频信号发生器、数字序列波形发生器、图形信号发生器、噪声信号发生器等。
按照信号发生器性能指标可以分为一般信号发生器和标准信号发生器。
前者指对输出信号的频率、幅度的准确度和稳定度以与波形失真等要求不高的一类信号发生器。
后者是指其输出信号的频率、幅度、调制系数等在一定X围内连续可调,并且读数准确、稳定、屏蔽良好的中、高档信号发生器。
此次的简易信号发生器的设计,将采用单片机编程方式,通过数模转换来实现正弦波、三角波、锯齿波、方波的输出。
在程序运行中,当接收到来自外界的命令,可按实际的需要调整信号波的频率幅值与波形,需要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出。
一、总体方案论述..................................6
.....................................6
.....................................6
...................................6
二、硬件电路..................................7
.....................................7
......................................7
......................................8
三、软件设计......................................11
.......................................11
.........................................13
.......................................14
.......................................15
.....................................16
.......................................17
四、系统调试结果..................................18
.............................18
..........................18
.....................................19
五、总结与体会....................................24
...................................24
...................................24
附录...............................................25
参考文献..........................................30
一、总体方案论述
1.1任务分析
(1)可产生频率可调的正弦波〔64个点〕、方波、锯齿波或三角波。
我们设想将频率可调功能通过按键来显示,正弦波、方波、锯齿波或三角波可以用单片机汇编语言程序写出并通过数模转换显示出来。
(2)显示出仿真波形。
通过片外数模转换显示。
(3)通过按键选择输出波形的种类。
可设置外部中断使得通过按键来从容地切换各种波形。
(4)在此根底上使输出波形的幅值可控。
可通过按键来实现。
1.2方案比照
在设计的过程中,我们产生了如下方案:
方案一:
用四个按键来代表四个波形,然后用四个按键来代表各自波形的调频功能,再用四个按键来代表各自波形的调幅功能。
方案二:
用四个按键来代表四个波形,然后用一个按键来控制四个波形的频率,再用一个按键来控制除正弦波外其他波形的幅值。
通过比拟两个方案,方案一器件较多,连线繁琐,方案二较方案一简单,也降低了写代码的难度。
由于正弦波本身的特殊性,此次设计我们放弃了对正弦波幅值的调控。
总体设想是:
将调频按键、调幅按键、波形按键作为输入信号输入到单片机内来调用各自的程序通过D/A转换器显示出来。
二、硬件设计
将总中断EA接高电平,将四个波形按键通过四端输入与门接入P3.2即外部中断0,说明此次程序设计我们要用到外部中断0了。
由图可知,正弦波按键、方波按键、三角波按键、锯齿波按键分别接入单片机的P2.1、P2.2、P2.3、P2.4,当按下去时对应的接口为低电平,即当检测到某个接口为低电平时,就调用对应的波形程序。
调幅按键、调频按键分别接入单片机的P2.6、P2.5,当按下去时对应的接口为低电平,即当检测到某个接口为低电平时,就调用对应的调幅调频程序。
由图可知,单片机的P0.0~P0.7接入DAC0832的Dl0~D17并接入上拉电阻,单片机的P2.0接入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形电阻网络。
DAC0832的内部结构如图2.3.2所示。
“8位输入存放器〞用于存放单片机送来的数字量,由LE2控制;“8位D/A转换器〞受“8位DAC存放器〞输出的数字量控制,能输出和数字量成正比的模拟电流。
因此,DAC0832通常需要外接有运算放大器组成的I/V转换电路,才能得到模拟输出电压。
DAC0832采用的是双列直插式封装,其引脚布置如图2.3.3所示,其各引脚的功能如下。
DI0~DI7:
8位数字信号输入端,可与单片机的数据总线PO口相连,用于接收单片机送来的待转换为模拟量的数字量。
CS:
片选端,当CS为低电平时,本芯片被选中。
ILE:
数据锁存允许端,高电平有效。
WR1:
第一级输入存放器写选通控制端,低电平有效,当CS=0,ILE=1,WR1=0时,待转换的数据信号被锁存到第一级8位输入存放器中。
WR2:
DAC存放器写选通控制端,低电平有效。
当XFER=0,WR2=0时,输入存放器中待转换的数据传入8位DAC存放器中。
VREF:
基准电压输入,它与DAC内的电阻网络相连。
VREF可在+10VX围内调节。
IOUT1:
D/A转换器电流输出1端,输入数字量全为1时,IOUT1最大;输入数字量全为0时,IOUT1最小。
IOUT2:
D/A转换器电流输出2端,IOUT2+IOUT1=常数。
Rfb:
外部反应信号输入端,内部已有反应电阻Rfb,根据需要也可外接反应电阻。
VCC:
电源输入端。
DGND:
数字信号地。
AGND:
模拟信号地,最好与基准电压共地。
MOVDPTR,#0FEFFH;DAC端口地址FEFFHDPTR
MOVDPTR,A;启动D/A转换。
三、软件设计
通过64个16进制的立即数所组成的点来显示正弦波形,这64个点可通过查表方式获取。
正弦波程序:
ZX:
MOVR3,#00H
LOOP0:
MOVA,R3
MOVDPTR,#TABLE//查表
MOVCA,A+DPTR
MOVDPTR,#0FEFFH//定义DAC0832地址
MOVXDPTR,A//读数据
INCR3
CJNER3,#255,LOOP0
MOVR3,#00H
AJMPZX
//产生正弦波代码
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
分别设大数值和小数值作为方波的上限电平数值和下限电平数值,并分别延时一段时间,就形成方波。
--
方波程序:
FB:
MOVDPTR,#0FEFFH
MOVA,#0CCH//方波高电平幅值
MOVXDPTR,A
LCALLD200US//延时
MOVA,#5//方波低电平幅值
MOVXDPTR,A
LCALLD200US//延时
AJMPFB
输入数字量从0开始,逐次加1进展D/A转换。
当〔A〕等于某个值时,将〔A〕清零,重复上述过程,如此循环,便成锯齿波。
锯齿波程序:
JUC:
MOVR3,#00H
LOOP11:
MOVA,R3
MOVDPTR,#0FEFFH
MOVXDPTR,A
INCR3
MOVA,R3
CJNEA,#0FFH,LOOP11//与最高值比拟
AJMPJUC
输入数字量从0开始,逐次加1进展D/A转换。
当〔A〕等于指定值时,逐次减1进展D/A转换直至为零,再重复上述内容,如此循环,便成三角波。
三角波程序:
SJ:
MOVR3,#00H
LOOP6:
MOVA,R3
MOVDPTR,#0FEFFH
MOVXDPTR,A
INCR3
MOVA,R3
CJNEA,#0FFH,LOOP6//与给定值比拟
LOOP9:
DECR3
MOVA,R3
MOVDPTR,#0FEFFH
MOVXDPTR,A
CJNER3,#00H,LOOP9//与最小值比拟
AJMPSJ
延时200μS计算式:
1+1+〔50*2+2〕*2=206
程序:
D200US:
MOVR1,#2//200μs延时
MOVR2,#50
L5:
DJNZR2,$
DJNZR1,L5
RET
延时50μS计算式:
1+1〔23*1+1〕*2=50
程序:
D50US:
MOVR1,#1//50μs延时
MOVR2,#23
L6:
DJNZR2,$
DJNZR1,L6
RET
总程序:
见附录
四、系统调试结果
1、
因为SJMPJUC在第26行,JUC程序在第102行,超出了SJMP所执行的地址X围。
改正:
将SJMP改为LJMP。
2、设置函数的标号时,由于整个程序设置的标号数量比拟多,如此经常会出现设置标号错误或者设置重复的问题,使得调试的结果无法达到自己预先设计好的结果执行。
3、指令代码的输入格式错误,在编程的过程中,写了一句指令。
CJNEA,R7,LOOP11,编译时报错,出现“EXPRESSIONTYPEDOESNOTMATCHINSTRUCTION〞。
如此明确所写指令的格式发生错误。
调出元器件:
序号
元器件名称
元器件型号
数目
1
单片机芯片
AT89C51
1
2
数模转换器
DAC0832
1
3
单刀单掷开关
2
4
复位开关
4
5
示波器
1
6
电阻
5k
8
7
四端输入与门
74LS21
1
8
运算放大器
UA741
1
按照原理图画出芯片、接线。
接入代码:
在Keil上运行代码,代码运行无误会生成HEX文件,然后再protues上双基单片机模型,会弹出一个如下对话框。
点击文件按钮,选择所需要的程序文件〔.HEX〕。
选择适宜的工作频率即可确认。
然后运行调试
正弦波正常波形:
正弦波调频后的波形:
方波正常波形:
方波调频后波形:
方波调幅后波形:
三角波正常波形:
三角波调频后波形:
三角波调幅后波形:
锯齿波正常波形:
锯齿波调频后波形:
锯齿波调幅后波形:
五、总结与体会
这次单片机课设历时数天,我们选的课题是简易信号发生器。
可以说是呕心沥血,苦尽甘来。
但是这让我们学到了很多东西,巩固了以前的知识,特别是汇编语言的使用,以前上课的时候对汇编语言一知半解,但通过此次课设之后,我对汇编语言的了解更深了,运用更加熟练了。
通过本次课设,锻炼了自己独立设计程序的能力。
在本次课程设计中,我们很重视功能的划分和各个模块之间的联系,分成了多个模块,即三角波、正弦波、锯齿波、方波模块,这样便于程序的检测和修改。
通过本次课设,使我们懂得了理论与实际的结合是很重要的。
只有把理论知识和实践相结合,才能真正为社会服务,从而提高自己的实践动手能力和独立思考能力。
谢谢教师给我们这一个宝贵的锻炼的机会。
此次简易信号发生器的设计最终所显示出来的效果总体能满足教师的要求,但是还是有点瑕疵和遗憾,首先由于时间的紧迫和正弦波本身的特性,我们没能实现对正弦波调幅的功能。
此前我们曾经想过将正弦波的表里面的值修改一下,但出来的正弦波形已然失真,于是乎被迫放弃,对于改良此类问题,我们想过重新制作一个正弦波的表,其幅值与之前的正弦波的表不一样,便可实现正弦波的调幅功能,但制作这X表涉与大量计算,迫于时间压力,所以这一块我们被迫放弃。
至于其他方法,我们目前没有想出来,甚是遗憾。
除此之外,我们对调幅调频的值有其他的想法:
可以增加调频或调幅的值,我们设想通过查表的方法使调出更多的幅值和频率,但由于我们担心如果这样写将增加代码量,调试过程中会出现技术性问题,所以被迫放弃。
不过总体来说,我们所设计的简易信号发生器实现了教师所指定的功能,还是值得欣慰的。
附录:
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,检测对应的按钮输出对应的波形
P2.1,LL0
MOVR7,#00H
SJMPLL3
LL0:
P2.2,LL1
MOVR7,#01H
SJMPLL3
LL1:
P2.3,LL2
MOVR7,#02H
SJMPLL3
LL2:
P2.4,LL3
MOVR7,#03H
SJMPLL3
LL3:
RETI
ZX:
MOVR3,#00H;产生正弦波
LOOP0:
MOVA,R3
MOVDPTR,#TABLE;查表
MOVCA,A+DPTR
MOVDPTR,#0FEFFH;定义DAC0832地址
MOVXDPTR,A;读数据
INCR3
P2.5,LOOP1;正弦波调频
LCALLD50US
LOOP1:
CJNER3,#255,LOOP0
MOVR3,#00H
CJNER7,#00H,START;检测键是否按下
AJMPZX
FB:
MOVDPTR,#0FEFFH;产生方波
P2.6,LOOP2;检测调幅按钮调幅
MOVA,#0CCH;方波高电平幅值1
SJMPLOOP3
LOOP2:
MOVA,#055H;方波高电平幅值2
LOOP3:
MOVXDPTR,A
LCALLD200US;延时
P2.5,LOOP4;方波前半周期调频
LCALLD200US
LOOP4:
MOVA,#5;方波低电平幅值
MOVXDPTR,A
LCALLD200US;延时
P2.5,LOOP5;方波后半周期调频
LCALLD200US
LOOP5:
CJNER7,#01H,START;检测键是否按下
AJMPFB
SJ:
MOVR3,#00H;产生三角波
LOOP6:
MOVA,R3
MOVDPTR,#0FEFFH
MOVXDPTR,A
INCR3;波形上升
MOVA,R3
P2.5,LOOP7;三角波前半周
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 信号发生器 单片机 课程设计 报告 材料