《单片机与接口技术课程设计函数波形发生器.doc》由会员分享,可在线阅读,更多相关《单片机与接口技术课程设计函数波形发生器.doc(24页珍藏版)》请在三一办公上搜索。
1、成绩 南京工程学院课程设计说明书(论文)题 目 函数波形发生器 课 程 名 称 单片机与接口技术 院 系 电力工程学院 专 业 电气工程及自动化 班 级 学 生 姓 名 学 号 设 计 地 点 指 导 教 师 设计起止时间:2011年6月20日至2011年6月24日 目 录课程设计说明书 1第一章 前言7第二章 设计目的7第三章 设计要求7第四章 具体设计74.1 设计思路74.2 硬件设计.84.2.1 设计所用元件84.2.2 硬件接线图104.3 软件设计 .114.3.1 各功能模块之间的衔接关系114.3.2 程序流程图114.3.3 程序设计134.3.4 波形产生过程174.4
2、运行效果.184.4.1 星研程序截图184.4.2 示波器输出波形及频率变化对波形的响 194.4.3 数码显示 20第五章 心得体会 21第六章 参考文献 22南京工程学院课程设计任务书题目 函数波形发生器 课 程 名 称 单片机与接口技术 院(系、部、中心) 电力工程学院 专 业 电气工程及其自动化 班 级 电气081 起 止 日 期 2011.6.202010.6.24 指 导 教 师 王 曼 1课程设计应达到的目的本课程设计是在学生学习完单片机与接口技术课程后进行的一次全面的综合练习。通过本次课程设计进一步巩固和加深对单片机课程的基本知识的理解,掌握使用单片机的基本技能,了解有关单片
3、机应用系统开发的过程与方法,提高利用单片机软硬件解决实际问题的能力。2课程设计题目及要求本课题要求使用51单片机及可编程并行DA转换芯片DAC0832等外围接口电路芯片实现一个函数波形发生器。要求:系统可以输出正弦波、方波、三角波和锯齿波;输出波形的选择通过4只按键加以选择,其对应关系为:按键1234输出波形正弦波方波三角波锯齿波每种波形的周期可以通过可调电压控制;输出波形可以在示波器上正确显现;波形编号在LED数码管有显示;可适当增加其它类型函数波形。说明:实验箱硬件电路连接图如下:1、G6区:按键电路 JP74:按键控制接口;按下0信号,松开1信号 2、D2区:05V电压输出3、G5区:键
4、盘&LED(LED为共阴极数码管)A:按键的列线B:数码管段码C:数码管选择脚D:按键的行线4、F3区:DAC0832数模转换5、G4区:ADC0809模数转换,ADC0809输入时钟CLK(10k1280kHZ),可从B2区选用 6、星研实验仪中引出的P0和P2口只能作地址/数据总线使用,不能做I/O口使用;需扩8255A7、A3区A0、A1是地址锁存器对应P0.0、P0.1输出引脚;A3区片选信号线地址范围:片选地址范围片选地址范围CS10F000H0FFFFHCS50B000H0BFFFHCS20E000H0EFFFHCS60A000H0AFFFHCS30D000H0DFFFHCS709
5、000H09FFFHCS40C000H0CFFFHCS808000H08FFFH3课程设计任务及工作量的要求包括课程设计计算说明书、图纸、实物样品等要求按照课程设计说明书的格式规范撰写课程设计说明书,正文部分包括:(1)功能描述:对系统要实现的功能进行简明扼要的描述。(2)硬件设计:画系统硬件结构图,并简单描述。(3)软件设计:将系统划分功能模块,并用框图表示各功能模块之间的衔接关系;详细说明各软件模块的实现过程,流程图等。(4)运行效果:说明系统的运行效果(附运行界面图片、系统运行结果照片)。(5)心得体会:谈谈自己在课程设计过程中的心得体会、存在哪些不足以及预期的解决办法。说明:(1)课程
6、设计说明书用A4纸统一打印,按电力学院课程设计说明书规范统一要求书写并装订。(2)课程设计的程序上交,文件夹名称为学生姓名及学号的组合。(3)答辩:未经指导教师许可或无故不到者,缺勤率达50%的学生不能参加答辩。 答辩时,设计者在阐述自己的设计过程和结果,突出设计中遇到的主要问题和解决方法,回答教师提问。4主要参考文献1、 胡汉才.单片机原理及其接口技术.北京:清华大学出版社,20045课程设计进度安排起 止 日 期工 作 内 容6月20日21日6月22 日23日6月24日需求分析,系统总体设计系统软、硬件调试验收考核6成绩考核办法课程设计成绩的组成: 课程总评成绩分项比例表工作表现设计成果考
7、核测评30%40%30%课程设计成绩评定需综合考虑以下因素:(1)工作表现:独立工作能力及设计过程的表现。占总成绩的30%。(2)设计成果:设计说明书(计算书、论文)、图纸、程序、作品等的质量。占总成绩的40%。(3)考核测评:课程设计结束前,指导教师应采用考试或答辩等形式对所指导的学生进行测评。如采用答辩形式,需填写课程设计答辩记录,测评成绩占总成绩的30%。(4)有创新的设计可以根据情况适当加分。教研室审查意见:教研室主任签字: 年 月 日院(系、部、中心)意见:主管领导签字: 年 月 日函数波形发生器课程设计第一章 前言当今世界在以电子信息技术为前提下推动了社会跨越式的发展,科学技术的飞
8、速发展带动 了国家生产力的大幅度提高,由此可见,电子信息技术在人们生活中所占的重要地位,特别是单片机,在各行各业的生产实践中都占有很大的比重。目前单片机渗透我们生活的各个领域。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用于智能化控制的科学家、工程师。科技越发达,智能化的东西就越多,使用的单片机就越多。看来学
9、习单片机是社会发展的需求。据统计,我国的单片机年容量已达1-3亿片,且每年以大约16%的速度增长,但相对于世界市场我国的占有率还不到1%。这说明单片机的应用在我国还处于起步阶段,有着广阔的前景。培养单片机人才,特别是在工程技术人员中普及单片机知识有着重要的现实意义。第二章 设计目的本课程设计是在学生学习完单片机与接口技术课程后进行的一次全面的综合练习。通过本次课程设计进一步巩固和加深对单片机课程的基本知识的理解,掌握使用单片机的基本技能,了解有关单片机应用系统开发的过程与方法,提高利用单片机软硬件解决实际问题的能力。第三章 设计要求本课题要求使用51单片机及可编程并行DA转换芯片DAC0832
10、等外围接口电路芯片实现一个函数波形发生器。要求:1、系统可以输出正弦波、方波、三角波和锯齿波;2、输出波形的选择通过4只按键加以选择,其对应关系为:按键1234输出波形正弦波方波三角波锯齿波3、每种波形的周期可以通过可调电压控制;4、输出波形可以在示波器上正确显现;5、波形编号在LED数码管有显示;6、可适当增加其它类型函数波形。第四章 具体设计4.1设计思路 按照本设计的要求,选择元件AT89S51、8255A、ADC0809、DAC0832及一些旁路元件设计本函数波形发生器。 按照设计要求,由按键决定输出波形的形状,关于这一点,可以通过在AT89S51芯片的P1口的P1.0,P1.1,P1
11、.2,P1.3四个口接4个按钮,分别对应1,2,3,4四个按键,按下不同的按钮以实现不同波形的输出。对于波形的周期用可调电压控制,可以在ADC0809模块的输入端接可调电阻,可调电阻接电源来得到不同的电压幅值,通过A/D转换实现频率(周期)的调节。对于输出波形在示波器上显示,可以通过将DAC0832经D/A转换后的值输出到示波器来观察得到。对于波形编号在LED数码管由显示,可以在8255A的并口I/O输出口接数码管,通国相应程序控制实现。4.2硬件设计4.2.1设计所用元件(1)DAC0832 数模转换模块 1)硬件结构图DAC0832结构图及引脚排列2)各引脚功能如下:电源输入端,在 范围内
12、。DGND:数字信号地。 AGAND:模拟信号地,最好与基准电压共地。DI0DI7:8位数字信号输入端,DI7为最高位,DI0为最低位。使用时与单片机的数据总线端口相连。:片选信号输入端,低电平有效,当=0时,芯片被选中。ILE:数据锁存控制输入端,高电平有效。:第一级输入寄存器写选通控制输入端,低电平有效。当=0,ILE=1,=0时,待转换的数据被锁存到第一级8位寄存器中。:数据传送控制输入端,低电平有效。:DAC寄存器写选通控制输入端,低电平有效。当=0,=0时,输入寄存器中的待转换数据被送入8位DAC寄存器中。:外部反馈信号输入端。:D/A转换器电流输出1端,当输入数字量全为“1”时,输
13、出电流达到最大值,输入数值量全为“0”时,输出电流达到最小值。:D/A转换器电流输出2端,+=常数。(2)ADC0809模数转换模块1)硬件结构图ADC0809结构图及引脚排列2)各引脚功能如下ADC0809为一种逐次比较型A/D转换器,都有以下引脚:IN0IN7:8路模拟信号输入端。每个瞬间转换一个模拟信号,各路之间的切换由软件改变C,B,A引脚上的编码来实现。,GND:电源与地引脚,由单一的+5V电源供电。D0D7:8位数字量输入端。START:A/D转换启动信号输入端,加上正脉冲后启动A/D转换。CLK:时钟信号输入端。ALE:地址锁存信号控制端。EOC:转换结束输出信号,高电平有效。在
14、A/D转换结束后,EOC引脚输出低电平信号,表示正在进行A/D转换,A/D转换结束时,EOC引脚输出高电平,表示A/D转换结束。使用时,EOC信号可以作为A/D转换器的状态信号进行查询,也可以直接作为中断请求信号。(3)可编程并行接口芯片8255A1)硬件结构图8255A结构图及引脚排列2)各引脚功能如下D7D0:双向,三态数据线,和CPU系统系统总线相连。:片选信号,输入,低电平有效。A0,A1:端口地址选择信号,输入。:读信号,输入,低电平有效。:写信号,输入,低电平有效。RESET:复位信号,输入,高电平有效。PA7PA0:端口A的输入/输出线,双向,三态。PB7PB0:端口A的输入/输
15、出线,双向,三态。PC7PC0:端口A的输入/输出线,双向,三态。4.2.2硬件接线图接线图说明:在接线图中,AT89S51的P1.0,P2.0,P3.0,P4.0四个口分别皆有四个按钮1,2,3,4,P0口的P0.0P0.7口同时与74LS373译码器的D0D7,DAC0832的DI0DI7,ADC0809的OUT1OUT8,8255A的D0D7口相连,74LS373的输出端Q0,Q1分别接8255A的A0和A1口来实现数据信号的传递,这只是仿真图的连线,具体试验台上的连线与其有所差异。在试验台上,集成的模块之间的联系可以省略,具体的接线是A3区的P1口用排线接到G6区的JP74上,8255
16、A的片选端接A3区的CS2,DAC0832的片选端接A3区的CS3,ADC0809的片选端接A3区的CS4,片选的接线由程序来确定。A3区的A0,A1接8255A的A0,A1,而8255A的输出PA口及PB口分别用排线连接数码管显示区G5区的B和C。ADC0809的输入IN0接到D2区的05V可调电阻上,CLK接到B2区的时钟CLK处,选择125KHz(可改变),ADDA,ADDB,ADDC分别接地,而EOC口接到A3区的P3.3 INT1中断口。DAC0832的OUT出口接示波器。到此,实验台接线完毕。4.3 软件设计4.3.1 各功能模块之间的衔接关系如图所示为各个功能模块之间的关系,从源
17、头的按下不同的按键,中间经过AT89S51,8255A,DAC0832,ADC0809这几个大模块以及一些小的元件,最终得到理想的波形并且在数码管上显示相应波形的编号。中间在ADC0809模块上,由外部电压信号输入,经过A/D转换,最终变成对于波形频率改变的控制信号,完成整个流程。4.3.2 程序流程图 主程序流程图 锯齿波程序流程图 三角波程序流程图 方波程序流程图 正弦波程序流程图 数码显示子程序流程图 延时程序1 流程图 延时程序2 流程图 延时程序3流程图4.3.3 程序设计ORG 0000HSJMP MAINORG 0030HMAIN: MOV SP,#60H ;设置堆栈 MOV A
18、,#00H ;设置A初值 MOV DPTR,#0E000H ;初始化 MOVX DPTR,A MOV DPTR,#0EFFFH ;赋8255A片选地址 MOV A,#80H ;将8255A控制字写入寄存器A MOVX DPTR,A ;写入控制字,设置PA,PB,PC口为输出口MOV R2,#00H ;赋R2初值为00HCLR 00HCLR 01HCLR 02HCLR 03H ACALL PLAY ;调用数码显示程序显示START:JNB P1.0,ZXUAN ;判断P1.0口状态,为低电平转移 JNB P1.1,FBO ;判断P1.1口状态,为低电平转移 JNB P1.2,SJIAO ;判断P
19、1.2口状态,为低电平转移 JNB P1.3,JCHI ;判断P1.3口状态,为低电平转移 JB 00H,ZXUAN ;判断标志位00H状态,为高电平转移 JB 01H,FBO ;判断标志位01H状态,为高电平转移 JB 02H,SJIAO ;判断标志位02H状态,为高电平转移 JB 03H,JCHI ;判断标志位03H状态,为高电平转移 AJMP START JCHI::SETB 03H ;锯齿波程序 CLR 00H CLR 01H CLR 02H MOV R2,#04H LCALL PLAY ;跳转数码管显示程序 MOV DPTR,#0D000H ;写入DAC0832片选地址#0D000H
20、 MOV A,#00H ;赋A初值#00HLOOP:MOV DPTR,#0D000H ;写入DAC0832片选地址#0D000H MOVX DPTR,A INC A ;A自增1 LCALL LOP3 ;调用延时子程序3 JNZ LOOP ;判断A中是否为0,非0转移LOOP AJMP START ;回到主程序SJIAO:SETB 02H ;三角波程序 CLR 00H CLR 01H CLR 03H MOV R2,#03H LCALL PLAY ;调用数码显示程序 MOV DPTR,#0D000H ;写入DAC0832片选地址#0D000H MOV A,#00H ;赋A初值#00H MOV R6
21、,#0FFH ;最高点值LOOP1:MOV DPTR,#0D000H ;写入DAC0832片选地址#0D000H MOVX DPTR,A INC A ;A自增1 LCALL LOP3 ;调用延时程序3 DJNZ R6,LOOP1 ;输出宽度 MOV A,#0FFH ;重新给值,保护现场 MOV R6,#0FFHLOOP2:MOV DPTR,#0D000H ;写入DAC0832片选地址#0D000H MOVX DPTR,A DEC A ;A自减1 LCALL LOP3 ;调用延时程序3 DJNZ R6,LOOP2 ;输出宽度 SJMP START ;返回主程序ZXUAN:LJMP ZXUAN1F
22、BO:SETB 01H ;方波程序 CLR 00H CLR 02H CLR 03H MOV R2,#02H LCALL PLAY ;调用数码显示程序 MOV A,#00H ;赋A初值#00H MOV DPTR,#0D000H ;写入DAC0832片选地址#0D000H MOVX DPTR,A LCALL LOP1 ;调用延时程序1 MOV A,#0FFH ;赋A最大值 MOV DPTR,#0D000H ;写入DAC0832片选地址#0D000H MOVX DPTR,A LCALL LOP1 ;调用延时程序1 MOV A,#00H ;A重新赋值#00H LJMP START ;返回主程序ZXUA
23、N1:SETB 00H ;正弦波程序 CLR 01H CLR 02H CLR 03H MOV R2,#01H LCALL PLAY ;调用数码显示程序 MOV A,#00H ;赋A初值#00HLOOP5:MOV R7,A ;保护A MOV DPTR,#SIN ;将表SIN写入DPTR MOVC A,A+DPTR ;查表 MOV DPTR,#0D000H ;写入DAC0832片选地址#0D000H MOVX DPTR,A LCALL LOP ;调用延时程序 MOV A,R7 ;返回A值 INC A ;A自增1 CJNE A,#00H,LOOP5 ;判断A中值是否为0,非0转移 LJMP STAR
24、T ;返回主程序LOP: MOV DPTR,#0C000H ;延时程序 JNB P3.3,$ ;判断P3.3口状态 MOVX A,DPTR JZ SKIP ;判断A中值是否为0 DJNZ ACC,$ ;根据A/D转换值延迟SKIP:MOVX DPTR,A ;启动0809RET ;延迟程序结束LOP1:MOV R7,#0FFH ;延时程序1 MOV DPTR,#0C000H ;写入DAC0832片选地址#0D000H JNB P3.3,$ ;判断P3.3口状态 MOVX A,DPTR JZ SKIP1 ;判断A中值是否为0LOP2:DJNZ R7,LOP2 ;增大延时长度 MOV R7,#0FF
25、H DJNZ ACC,LOP2 ;根据A/D转换值延迟SKIP1:MOVX DPTR,A ;启动0809 RET ;延迟程序结束LOP3:MOV R5,A ;延时程序3,保护R5 MOV DPTR,#0C000H ;写入DAC0832片选地址#0D000H JNB P3.3,$ ;判断P3.3口状态 MOVX A,DPTR JZ SKIP2 ;判断A中值是否为0 DJNZ ACC,$ ;根据A/D转换值延迟SKIP2:MOVX DPTR,A ;启动0809 MOV A,R5 ;返回R5 RET ;延迟程序结束 PLAY:MOV A,#0FEH ;将PB口的位码控制数据写入寄存器A MOV DP
26、TR,#0EFFDH ;写入8255A PB口片选地址 MOVX DPTR,A ;向PB口输出位码控制数据 MOV A,R2 ;给A赋R2中的值 MOV DPTR,#LED ;指向字型码表 MOVC A,A+DPTR ;用查表法输出数码 MOV DPTR,#0EFFCH ;写入8255A PA口片选地址 MOVX DPTR,A ;启动8255A RET ;返回主程序LED:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,78H,6FH,00H ;数码显示位码表SIN:DB 80H,83H,86H,89H,8DH,90H,93H,96H ;正弦波位码表 DB 99H,9CH
27、,9FH,0A2H,0A5H,0A8H,0ABH,0AEH DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H DB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H DB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H DB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH DB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH
28、,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH DB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H DB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH DB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH DB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H DB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H DB 0AEH,0ABH,0A8H,0A5H,0A2H,9FH, 9CH, 99H DB 96H,93H,9
29、0H,8DH,89H,86H,83H,80H DB 80H,7CH,79H,78H,72H,6FH,6CH,69H DB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51H DB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AH DB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27H DB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16H DB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AH DB 09H, 08H, 07H, 06H, 05H, 04H,
30、 03H, 02H DB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00H DB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02H DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H DB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15H DB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25H DB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38H DB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH,
31、4EH DB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66H DB 69H, 6CH, 6FH, 72H, 76H, 79H, 7CH, 80H END 4.3.4 波形产生过程说明 由接线图说明,在实验台通电,PC与试验台通讯完成之后,点击运行,看到示波器并无输出波形,这时系统处于待机状态。在按下P1口的任何一个按钮后,系统查询检测到P1.0,P1.1,P1.2,P1.3中有一个口发生电平跳变,则程序中跳转执行相应的子程序,这部分跳转执行的子程序是波形产生程序,依次分别为正弦波,方波,三角波,锯齿波。对于正弦波的产生,以用查表法来实现。把初始值00H赋给寄存器A,表示从零点开始,再由查给定的正弦波上的点的数值来描绘正弦波的曲线,后在经过DAC0832的数模转换作用,将数字信号转换为模拟信号,最后在示波器上输出正弦波的图形。对于方波的产生,先给定一个初值,延时,再给定另一个不同的初值,延时,重复可以实现数字信号输出,后在经过DAC0832的数模转换作用,将数字信号转换为模拟信号,最后在示波器上输出方波