单片机课程设计波形发生器.docx
- 文档编号:3932060
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:25
- 大小:1.10MB
单片机课程设计波形发生器.docx
《单片机课程设计波形发生器.docx》由会员分享,可在线阅读,更多相关《单片机课程设计波形发生器.docx(25页珍藏版)》请在冰豆网上搜索。
单片机课程设计波形发生器
单片机课程设计
题目:
波形发生器
班级:
机091-7
学号:
姓名:
指导老师:
小组成员:
2012年6月4日
目录
第一章概述………………………………………………………3
第二章设计任务…………………………………………………4
第三章硬件设计…………………………………………………4
3.1系统主体构造……………………………………………4
3.2硬件元件概述……………………………………………5
3.3硬件连接…………………………………………………12
3.4硬件参数简介……………………………………………15
第四章软件设计…………………………………………………15
4.1方波程序设计……………………………………………16
4.2三角波程序设计…………………………………………17
4.3正弦波程序设计…………………………………………18
第五章系统功能描述和功能……………………………………21
第六章设计心得…………………………………………………21
第七章参考文献…………………………………………………22
附录…………………………………………………………………22
附录1………………………………………………………………22
附录2………………………………………………………………23
附录3………………………………………………………………24
第一章概述
课程设计是为了提高学生的动手能力,实践能力,创新能力而开设的一门实践,它充分利用了学校实验室所能提供的各种仪器及器材,根据学生所掌握的知识,从实际情况出发而制定的实践项目。
课程设计是一项重要的实践性教育环节,是学生在完成本专业所有课程学习后必须接受的一项结合本专业方向的、系统的、综合的工程训练。
在教师指导下,运用工程的方法,通过一个较复杂课题的设计练习,可使学生通过综合的系统设计,熟悉设计过程、设计要求、完成的工作内容和具体的设计方法,掌握必须提交的各项工程文件。
课程设计的基本目的是:
培养理论联系实际的设计思想,训练综合运用电路设计和有关先修课程的理论,结合生产实际分析和解决工程实际问题的能力,巩固,加深和扩展有关电子类方面的知识。
课程设计的主要任务是运用所学微控制器技术、微机原理等方面的知识,设计出一台以AT89C51为核心的单片机数据采集、通讯或测控系统,完成信息的采集、处理、输出及人机接口电路等部分的软、硬件设计。
多功能波形发生器设计课题需要充分灵活运用编程语言所提供的各种指令语句,巧妙利用软硬件实现以上所要求的功能,在程序逻辑设计上也要求正确,合理的对项目进行分解分块,合理的逻辑设计可以起到事半功倍的效果,是整个项目当中最富有创新性和挑战性的部分。
第二章设计任务
本次设计要求采用单片机和DAC设计波形发生器,具体要求如下:
(1)利用单片机和DAC0832产生方波、三角波、正弦波等波形。
(2)完成DAC与运放的连接,输出可供示波器显示。
(3)用按键改变波型的种类,波形的幅值与频率。
第三章硬件设计
3.1系统主体构造
芯片方面选用AT89C51与DAC0832为主要芯片,根据要求采用键盘选择产生的波形的类型,所以基本电路有键盘电路,数模转换电路。
整体框架图如下所示:
3.2硬件元件概述
本次设计所采用的硬件资源主要有:
3.2.1AT89C51单片机
其引脚图如图3.1所示。
图3.1AT89C51引脚图
芯片的引脚描述如下:
1、主电源引脚VCC和VSS
VCC——(40脚)接+5V电压;
VSS——(20脚)接地。
2、外接晶体引脚XTAL1和XTAL2
XTAL1(19脚)接外部晶体的一个引脚。
在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。
当采用外部振荡器时,对HMOS单片机,此引脚应接地;对CHMOS单片机,此引脚作为驱动端。
XTAL2(18脚)接外晶体的另一端。
在单片机内部,接至上述振荡器的反相放大器的输出端。
采用外部振荡器时,对HMOS单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器的输入端;对XHMOS,此引脚应悬浮。
3、控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP
①RST/VPD(9脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。
推荐在此引脚与VSS引脚之间连接一个约8.2k的下拉电阻,与VCC引脚之间连接一个约10μF的电容,以保证可靠地复位。
VCC掉电期间,此引脚可接上备用电源,以保证内部RAM的数据不丢失。
当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压范围(5±0.5V)内,VPD就向内部RAM提供备用电源。
②ALE/PROG(30脚):
当访问外部存贮器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。
即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。
因此,它可用作对外输出的时钟,或用于定时目的。
然而要注意的是,每当访问外部数据存储器时,将跳过一个ALE脉冲。
ALE端可以驱动(吸收或输出电流)8个LS型的TTL输入电路。
对于EPROM单片机(如8751),在EPROM编程期间,此引脚用于输入编程脉冲(PROG)。
③PSEN(29脚):
此脚的输出是外部程序存储器的读选通信号。
在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN有效。
但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。
PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入。
④EA/VPP(引脚):
当EA端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH(对851/8751/80C51)或1FFFH(对8052)时,将自动转向执行外部程序存储器内的程序。
当EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器。
对于常用的8031来说,无内部程序存储器,所以EA脚必须常接地,这样才能只选择外部程序存储器。
对于EPROM型的单片机(如8751),在EPROM编程期间,此引脚也用于施加21V的编程电源(VPP)。
4、输入/输出(I/O)引脚P0、P1、P2、P3(共32根)
①P0口(39脚至32脚):
是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。
②P1口(1脚至8脚):
是准双向8位I/O口。
由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。
P1口能驱动(吸收或输出电流)4个LS型的TTL负载。
对8052、8032,P1.0引脚的第二功能为T2定时/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。
对EPROM编程和程序验证时,它接收低8位地址。
③P2口(21脚至28脚):
是准双向8位I/O口。
在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。
在对EPROM编程和程序验证期间,它接收高8位地址。
P2可以驱动(吸收或输出电流)4个LS型的TTL负载。
④P3口(10脚至17脚):
是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。
P3能驱动(吸收或输出电流)4个LS型的TTL负载。
作为第一功能使用时,就作为普通I/O口用,功能和操作方法与P1口相同。
作为第二功能使用时,各引脚的定义如表所示。
值得强调的是,P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。
第二功能描述如下:
P3.010RXD(串行输入口)
P3.111TXD(串行输出口)
P3.212INT0(外部中断0)
P3.313INT1(外部中断1)
P3.414T0(定时器0外部输入)
P3.515T1(定时器1外部输入)
P3.616WR(外部数据存储器写脉冲)
P3.717RD(外部数据存储器读脉冲)
3.2.2D/A转换0832芯片
DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器。
DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。
其芯片引脚图如图3.2所示,
图3.2DAC0832引脚图
引脚功能如下:
D0~D7:
数字信号输入端。
ILE:
输入寄存器允许,高电平有效。
CS:
片选信号,低电平有效。
WR1:
写信号1,低电平有效。
XFER:
传送控制信号,低电平有效。
WR2:
写信号2,低电平有效。
IOUT1、IOUT2:
DAC电流输出端。
RFB:
是集成在片内的外接运放的反馈电阻。
VREF:
基准电压(-10~10V)。
VCC:
是源电压(+5~+15V)。
AGND:
模拟地NGND:
数字地,可与AGND接在一起使用。
3.2.3LM324四运算放大器
★LM324内部包括有两个独立的、高增益、内部频率补偿的运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源
电流与电源电压无关。
它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。
特点
★内部频率补偿
★直流电压增益高(约100dB)
★单位增益频带宽(约1MHz)
★电源电压范围宽:
单电源(3—32V);
双电源(±1.5—±16V)
★低功耗电流,适合于电池供电
★低输入偏流
★低输入失调电压和失调电流
★共模输入电压范围宽,包括接地
★差模输入电压范围宽,等于电源电压范围
★输出电压摆幅大(0至VCC-1.5V)
极限参数
电参数(除非特别说明,Vcc=5.0V,VEE=GND,TA=25℃)
管脚排列图
3.3硬件连接
3.3.1数模转换电路
数模转换电路采用的是DAC0832芯片。
它是一种使用较多的8位D/A转换器,其转换时间1us,工作电压为+5V到+15V,基准电压-10V到+10V。
由于其内部有两个8位寄存器和一个8位D/A转换器,故可进行两级缓冲操作,使操作有很大的灵活性,本设计采用单缓冲方式。
DAC0832与AT89C51的连接。
单片机P0口与数模转换器的数据口连接,为保证单片机P0口的驱动能力,在P0口加上上拉电阻。
数模转换电路的连接如下图:
徐晓奇朱伟杰穆磊李玉哲王健
图3.3数模转换电路
3.3.2键盘电路
键盘电路是控制部分。
通过K1控制产生方波,K2控制产生三角波,K3控制产生正弦波。
调幅与调频本应采用另连个键控制,但在分析DAC0832的输出,U=(Vref/2n)*D,由此公式可知,输出波形的幅度与Vref的大小有关,所以我们通过控制Vref的大小来改变波形的幅度,以简化我们的程序。
频率我们采用P2口控制,通过控制P2口的大小来改变程序中循环次数,来达到控制延时的目的,继而控制了频率。
键盘接口如下图:
图3.4键盘电路
3.3.3复位电路与时钟电路
该电路采用上电复位,利用电容充电来实现的,即上电瞬间RST端的电位与VCC相同,随着充电电流的减少,RST的电位逐渐下降。
由于频率较大时,三角波、正弦波、方波中每一点延时时间为几微秒,故延时时间还要加上指令时间才能获得较大的功率波形,该电路采用12MHZ晶振。
原理图如下:
图3.5复位电路与时钟电路
3.4硬件参数简介
AT89C51单片机采用12MHz时钟,VCC供电电源采用+5v,DAC0832工作电源采用+5v,运算放大器工作电压分别接+15v和-15v。
第四章软件设计
程序是本设计中的重点。
单片机的功能与它的程序有很大关系,本设计中,为实现输出三种波形,要使单片机定时向数模转换器发送数据,数据的不同将实现不同的波形输出。
输出波形原理图如下:
4.1方波程序设计
方波只有两个值,即1和0,因此只要定时向数模转换器发送FFH和00H即可。
程序如下:
SQU:
JNBP1.1,N1
JNBP1.2,N2
LJMPSSQU
N1:
MOVR7,#01H
LJMPTC0
N2:
MOVR7,#02H
LJMPTC0;判断其他键是否按下,从方波转到其他波形
SSQU:
CJNER7,#00H,TC0
MOVR0,#00H
K00:
MOVP0,#0FFH;送P0口FFH,即送FFH到数模转换器
MOVP2,#0FFH
MOVA,P2
CPLA
MOVR3,A
L00:
DECR3
CJNER3,#255,L00;通过P2口控制循环次数,以调整延时
INCR0
INCR0
CJNER0,#254,K00;不断将FFH送入数模转换器
MOVR0,#00H
K01:
MOVP0,#00H;送00H到数模转换器
MOVP2,#0FFH
MOVA,P2
CPLA
MOVR3,A
L01:
DECR3
CJNER3,#255,L01
INCR0
INCR0
CJNER0,#254,K01;不断送00H到数模转换器
LJMPSQU
TC0:
RET
4.2三角波程序设计
三角波有上升与下降两条边,所以从00H发送到FFH应有相同的间隔,我选择没隔02H发送一次数据,即发送00H、02H、04H…FEH、FEH…04H、02H、00H,程序原理图如下:
TRI:
JNBP1.0,N3
JNBP1.2,N4
LJMPTTRI
N3:
MOVR7,#00H
LJMPTC2
N4:
MOVR7,#02H
LJMPTC2;判断其他键是否按下,从三角波转换到其他波形
TTRI:
CJNER7,#01H,TC2
MOVR0,#00H
K20:
MOVP0,R0;将P0的数据送入数模转换器
MOVP2,#0FFH
MOVA,P2
CPLA
MOVR3,A
L20:
DECR3
CJNER3,#255,L20;通过P2口控制延时
INCR0
INCR0;R0内容加2
CJNER0,#254,K20;实现将00H不断加2,然后送入数模转换器
K21:
MOVP0,R0;R0的数据送入数模转换器
MOVP2,#0FFH
MOVA,P2
CPLA
MOVR3,A
L21:
DECR3
CJNER3,#255,L21
DECR0
DECR0;R0内容减2
CJNER0,#0,K21;实现将FEH不断减2,然后送入数模转换器
LJMPTRI
TC2:
RET
4.3正弦波程序设计
正弦波和三角波类似,都有上升与下降两条边,而且正弦波有正负极之分,所以它的数据表比三角波的复杂,其数据表见程序,程序原理如下:
SIN:
JNBP1.0,N5
JNBP1.1,N6
LJMPSSIN
5:
MOVR7,#00H
LJMPTC3
N6:
MOVR7,#01H
LJMPTC3;判断是否有其他键按下,并跳转到其他波形
SSIN:
CJNER7,#02H,TC3
MOVR0,#00H
K30:
MOVA,R0
MOVDPTR,#TAB;将TAB的地址送入DPTR
MOVCA,@A+DPTR;从TAB中取出数据,放入A中
MOVP0,A;将A中数据送入数模转换器
INCR0
MOVP2,#0FFH
MOVA,P2
CPLA
MOVR3,A
L30:
DECR3
CJNER3,#255,L30;K2口控制延时
CJNER0,#255,K30
LJMPSIN
TC3:
RET
TAB:
DB
80H,82H,84H,86H,88H,8AH,8CH,8EH,90H,92H,94H,96H,98H,9AH,9CH,9EH
DB
0A0H,0A2H,0A4H,0A6H,0A8H,0AAH,0ABH,0ADH,0AFH,0B1H,0B2H,0B4H,0B6H,0B7H,0B9H,0BAH
DB
0BCH,0BDH,0BFH,0C0H,0C1H,0C3H,0C4H,0C5H,0C6H,0C8H,0C9H,0CAH,0CBH,0CCH,0CDH,0CEH
DB0CEH,0CFH,0D0H,0D1H,0D1H,0D2H,0D2H,0D3H,0D3H,0D4H,0D4H,0D4H,0D4H,0D5H,0D5H,0D5H
DB0D5H,0D5H,0D5H,0D5H,0D4H,0D4H,0D4H,0D4H,0D3H,0D3H,0D2H,0D2H,0D1H,0D1H,0D0H,0CFH
DB0CEH,0CEH,0CDH,0CCH,0CBH,0CAH,0C9H,0C8H,0C6H,0C5H,0C4H,0C3H,0C1H,0C0H,0BFH,0BDH
DB0BCH,0BAH,0B9H,0B7H,0B6H,0B4H,0B2H,0B1H,0AFH,0ADH,0ABH,0AAH,0A8H,0A6H,0A4H,0A2H
DB
0A0H,9EH,9CH,9AH,98H,96H,94H,92H,90H,8EH,8CH,8AH,88H,86H,84H,82H
DB
80H,7DH,7BH,79H,77H,75H,73H,71H,6FH,6DH,6BH,69H,67H,65H,63H,61H
DB5FH,5DH,5BH,59H,57H,55H,54H,52H,50H,4EH,4DH,4BH,49H,48H,46H,45H
DB
43H,42H,40H,3FH,3EH,3CH,3BH,3AH,39H,37H,36H,35H,34H,33H,32H,31H
DB
31H,30H,2FH,2EH,2EH,2DH,2DH,2CH,2CH,2BH,2BH,2BH,2BH,2AH,2AH,2AH
DB2AH,2AH,2AH,2AH,2BH,2BH,2BH,2BH,2CH,2CH,2DH,2DH,2EH,2EH,2FH,30H
DB
31H,31H,32H,33H,34H,35H,36H,37H,39H,3AH,3BH,3CH,3EH,3FH,40H,42H
DB
43H,45H,46H,48H,49H,4BH,4DH,4EH,50H,52H,54H,55H,57H,59H,5BH,5DH
DB
5FH,61H,63H,65H,67H,69H,6BH,6DH,6FH,71H,73H,75H,77H,79H,7BH,7DH
END
第五章系统功能描述和说明
DAC波形发生器采用AT89C51单片机于DAC0832连接,DAC0832输出的模拟信号经过运算放大器放大,通过示波器显示波形。
本发生器可以实现对输出波形:
类型,频率,幅值的人工控制。
●通过AT89C51的P0口引出的三个个按键选择相应的输出波形:
方波,三角波,正弦波
●通过AT89C51的P2口引出的八个开关改变输出波形的频率。
●通过转动电位器的旋钮,改变输出波形的幅值。
启动系统后,程序会等待用户按键选择波形,用户可以通过与P1.0,P1.1,P1.2三引脚相连的按键,依次选择输出方波,三角波和正弦波。
在输出波形的同时,用户可以通过DSW1拨码器的八个按键改变输出波形的频率,通过旋转RV1电位器旋钮,改变波形幅值。
第六章设计心得
这两周,在老师的精心指导下和同学合作之下最终成功地完成了此次设计,通过本次课程设计,我有了很多收获,同时也发现了一些问题。
通过本次课程设计,将理论与实践结合起来,使我对单片机的应用有了深刻的了解,让我对单片机的编程和和使用单片机解决实际问题的能力有了很大的提高。
另外,本次设计培养了小组同学之间的合作精神。
同时,通过本次课程设计也让我发现了一些问题。
例如,对单片机基础知识掌握的不好,是我在本次设计中多次出现问题;其次是对单片机的仿真缺乏了解。
总之,通过这次课程设计使我对单片机语言的理解和掌握上有了很大的进步,以前所了解的单片机语言仅限于一些片面的知识,通过这次编程,将这些零零碎碎的知识汇集起来,编写出了一个完整的系统,并且对单片机语言的应用能力有了极大的提高,对于硬件接口的问题也有了深刻的了解,体会到了单片机的独具一格的思想。
第七章参考文献
【1】新编单片机原理及应用汪贵平李登峰龚贤武雷旭编著机械工业出版社
【2】51单片机技术与应用系统开发案例精选江志红编著清华大学出版社
【3】单片机硬件接口电路及案例分析谢宜仁编著电子工业出版社
【4】单片机原理实用教程——基于proteus虚拟仿真
【5】C51单片机典型模块设计与应用边春元李文涛江杰杜平编著机械工业出版社
附录
附录1硬件电路连接图
图12波形发生器硬件设计图
附录2系统仿真图
方波仿真图
三角波仿真图
正弦波仿真图
附录3程序设计主程序
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
JNBP1.0,D1;判断K1
JNBP1.1,D2;判断K2
JNBP1.2,D3;判断K3
LJMPMAIN;子程序跳转
D1:
MOVR7,#00H
LCALLSQU;跳转到方波子程序
LJMPMAIN
D2:
MOVR7,#01H
LCALLTRI;跳转到三角波子程序
LJMPMAIN
D3:
MOVR7,#02H
LCALLSIN;跳转到正弦波子程序
LJMPMAIN
方波子程序
SQU:
JNBP1.1,N1
JNBP1.2,N2
LJMPSSQU
N1:
MOVR7,#01H
LJMPTC0
N2:
MOVR7,#02H
LJMPTC0;判断其他键是否按下,从方波转到其他波形
SSQU:
CJNER7,#00H,TC0
MOVR0,#00H
K00:
MOVP0,#0FFH;送P0口FFH,即送FFH到数模转换器
MOVP2,#0FFH
MOVA,P2
CPLA
MOVR3,A
L00:
DECR3
CJNER3,#255,L00;通过P2口控制循环次数,以调整延时
INCR0
INCR0
CJNER0,#254,K00;不断将FFH送入数模转换器
MOVR0,#00H
K01:
MOVP0,#00H;送00H到数模转换器
MOVP2,#0FFH
MOVA,P2
CPLA
MOVR3,A
L01:
DECR3
CJNER3,#255,L01
INCR0
INCR0
CJNER0,#254,K01;不断送00H到数模转换器
LJMPSQU
TC0:
RET
三角波子程序
TRI:
JNBP1.0,N3
J
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 波形 发生器