单片机与接口技术课程设计-函数波形发生器_第1页
单片机与接口技术课程设计-函数波形发生器_第2页
单片机与接口技术课程设计-函数波形发生器_第3页
单片机与接口技术课程设计-函数波形发生器_第4页
单片机与接口技术课程设计-函数波形发生器_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、 波形产生过程174.4 运行效果·.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

4、、d2区:05v电压输出3、g5区:键盘&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区片选信号线地址范围:片选地址范围片选地址范围cs10f000h0ffffhcs50b000h0bfffhcs20e000h0efffhcs60a000h0af

5、ffhcs30d000h0dfffhcs709000h09fffhcs40c000h0cfffhcs808000h08fffh3课程设计任务及工作量的要求包括课程设计计算说明书、图纸、实物样品等要求按照课程设计说明书的格式规范撰写课程设计说明书,正文部分包括:(1)功能描述:对系统要实现的功能进行简明扼要的描述。(2)硬件设计:画系统硬件结构图,并简单描述。(3)软件设计:将系统划分功能模块,并用框图表示各功能模块之间的衔接关系;详细说明各软件模块的实现过程,流程图等。(4)运行效果:说明系统的运行效果(附运行界面图片、系统运行结果照片)。(5)心得体会:谈谈自己在课程设计过程中的心得体会、存

6、在哪些不足以及预期的解决办法。说明:(1)课程设计说明书用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%。这说明单片机的应用在我国还处于起步阶段,有着广阔的前景。培养单片机人才,特别是在工程技术人员中普及单片机知识有着重要的现实意义。第二章 设计目的本课程设计是在学生学习完单片机与接口技术课程后进行的一次全面的综合练习。通过本次课程设计进一步巩固和加深对单片机课程的基本知识的理解,掌握使用单片机的基本技能,了解有关单片机应用系统开发的过程与方法,提高利用单片机软硬件解决实际问题的能力。第三章 设计要求本课题要求使用5

10、1单片机及可编程并行da转换芯片dac0832等外围接口电路芯片实现一个函数波形发生器。要求:1、系统可以输出正弦波、方波、三角波和锯齿波;2、输出波形的选择通过4只按键加以选择,其对应关系为:按键1234输出波形正弦波方波三角波锯齿波3、每种波形的周期可以通过可调电压控制;4、输出波形可以在示波器上正确显现;5、波形编号在led数码管有显示;6、可适当增加其它类型函数波形。第四章 具体设计4.1设计思路 按照本设计的要求,选择元件at89s51、8255a、adc0809、dac0832及一些旁路元件设计本函数波形发生器。 按照设计要求,由按键决定输出波形的形状,关于这一点,可以通过在at8

11、9s51芯片的p1口的p1.0,p1.1,p1.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结构图及引脚

12、排列2)各引脚功能如下:电源输入端,在 范围内。dgnd:数字信号地。 agand:模拟信号地,最好与基准电压共地。di0di7:8位数字信号输入端,di7为最高位,di0为最低位。使用时与单片机的数据总线端口相连。:片选信号输入端,低电平有效,当=0时,芯片被选中。ile:数据锁存控制输入端,高电平有效。:第一级输入寄存器写选通控制输入端,低电平有效。当=0,ile=1,=0时,待转换的数据被锁存到第一级8位寄存器中。:数据传送控制输入端,低电平有效。:dac寄存器写选通控制输入端,低电平有效。当=0,=0时,输入寄存器中的待转换数据被送入8位dac寄存器中。:外部反馈信号输入端。:d/a转

13、换器电流输出1端,当输入数字量全为“1”时,输出电流达到最大值,输入数值量全为“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:地址锁存信号控

14、制端。eoc:转换结束输出信号,高电平有效。在a/d转换结束后,eoc引脚输出低电平信号,表示正在进行a/d转换,a/d转换结束时,eoc引脚输出高电平,表示a/d转换结束。使用时,eoc信号可以作为a/d转换器的状态信号进行查询,也可以直接作为中断请求信号。(3)可编程并行接口芯片8255a1)硬件结构图8255a结构图及引脚排列2)各引脚功能如下d7d0:双向,三态数据线,和cpu系统系统总线相连。:片选信号,输入,低电平有效。a0,a1:端口地址选择信号,输入。:读信号,输入,低电平有效。:写信号,输入,低电平有效。reset:复位信号,输入,高电平有效。pa7pa0:端口a的输入/输出

15、线,双向,三态。pb7pb0:端口a的输入/输出线,双向,三态。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区

16、的p1口用排线接到g6区的jp74上,8255a的片选端接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:

18、mov sp,#60h ;设置堆栈 mov a,#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口状态,为低电

19、平转移 jnb p1.2,sjiao ;判断p1.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,#0d000

20、h ;写入dac0832片选地址#0d000h 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

21、a,#00h ;赋a初值#00h mov r6,#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 ;

22、返回主程序zxuan:ljmp zxuan1fbo: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重新赋值#00

23、h ljmp start ;返回主程序zxuan1: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 ;判

24、断a中值是否为0,非0转移 ljmp start ;返回主程序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,l

25、op2 ;增大延时长度 mov r7,#0ffh 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 ;将

26、pb口的位码控制数据写入寄存器a mov dptr,#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

27、,96h ;正弦波位码表 db 99h,9ch,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

28、,0ffh,0ffh db 0ffh,0ffh,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

29、, 9ch, 99h db 96h,93h,90h,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, 0

30、8h, 07h, 06h, 05h, 04h, 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, 40

31、h, 43h, 45h, 48h, 4ch, 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中有一个口发生电平跳变,则程序中跳转执行相应的子程序,这部分跳转执行的子程序是波形产生程序,依次分别为正弦波,方波,三角波,锯齿波。对于正弦波的产生

32、,以用查表法来实现。把初始值00h赋给寄存器a,表示从零点开始,再由查给定的正弦波上的点的数值来描绘正弦波的曲线,后在经过dac0832的数模转换作用,将数字信号转换为模拟信号,最后在示波器上输出正弦波的图形。对于方波的产生,先给定一个初值,延时,再给定另一个不同的初值,延时,重复可以实现数字信号输出,后在经过dac0832的数模转换作用,将数字信号转换为模拟信号,最后在示波器上输出方波的图形。对于三角波的产生,先给寄存器初值,再给定到达最大值时的宽度,让宽度数值做自减1循环,每自减一次,寄存器中的值就自增1,知道到最大值,完成上升段的数字输出,下降段给寄存器赋最大值,再以同样宽度数值做自减1

33、循环,每自减一次,寄存器中数值自减1,最后回到零,在执行大循环,到此,一个完整的三角波数字输出完毕,再经过dac0832的数模转换作用,将数字信号转换为模拟信号,最后在示波器上输出三角波的图形。对于锯齿波的输出,锯齿波其实是三角波的一半,只要先向寄存器赋初值,再让寄存器中数据自增1,增到最大值后发生溢出,自动回到初值,实现一个锯齿波的数字输出。再经过dac0832的数模转换作用,将数字信号转换为模拟信号,最后在示波器上输出锯齿波的图形。课题中还要求对输出波形的频率可以调整,这可以用adc0809,通过其中的a/d转换延时来实现。所以就在每一次输出一个点后调用一次延时子程序,无数个输出被延时,在

34、输出时就相当于增大了波形的周期,也就是改变了频率,同时改变频率的波形还能在示波器上正确显示。在延时程序中,由adc0809的工作过程:首先选择adc0809的一个模拟输入通道(由adda,addb,addc三个引脚的状态决定),当执行“movx dptr,a”指令后,单片机的号有效,从而产生一个启动脉冲信号给adc0809的strat引脚,开始对选中的模拟信号进行转换,当转换结束后,adc0809的转换结束信号eoc=1,当执行“movx a,dptr”指令时,单片机发出读控制信号,通过逻辑电路控制oe端为高电平,把转换完毕的数字量读入到寄存器中。在这个过程中,当有模拟量信号输入时,就进行延时操作,以来实现用外部可调电压控制输出波形的频率这一要求。对于输出波形同时显示该波形对应编号这一功能,可用8255a扩展i/o连接8段数码管来实现。在程序中,每执行一个波形程序,都在程序开头加入把该波形对应标号写入工作寄存器r2中,同时调用数码显示子程序。在数码显示子程序中,把r2通过查表法得出的值送入寄存器中,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论