单片机波形发生器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机课程设计报告书
课题名称 波形发生器设计
姓 名 段永乐
学 号 院、系、部 电气工程系 专 业 电子信息工程 指导教师
高迎霞、孙秀婷
2013年7 月8日
※※※※※※※※※ ※※
※※ ※※ ※※
※※※※※
※※
2010级单片机 课程设计
波形发生器设计
段永乐
一、设计目的
本次设计是以单片机为基础,设计输出多种波形的波形发生器。联系使用各个接口芯片(如STC89C52、DAC0832等)的功能特性及接口方法,并能运用其实现一个简单的微机应用系统功能器件。
二、设计要求
1、设计一个能产生方波、三角波、梯形波、锯齿波、正弦波的波形发生器。
2、产生指定波形可以通过DAC来实现,不同波形产生实质上是对输出的二进制数字量进行相应改变来实现的。方波信号可以利用定时器中断产生的,每次中断时,将输出的信号按位反即可;三角波信号是将输出的二进制数字信号依次加1,达到0xff时依次减1,并实时将数字信号经D/A转换得到;锯齿波信号是将输出的二进制数字信号依次加1,达到0xff时置为0x00,并实时将数字信号经D/A转换得到的;梯形波是将输出的二进制数字信号依次加1,达到0xff时保持一段时间,然后依次减1直至0x00,并实时将数字信号经D/A转换得到的;正弦波可以预先写出正弦波表,通过读出表中的值然后经D/A转换后输出。
3、用按键来控制输出的波形,如课设计5个按键S0、S1、S2、S3、S4,按一次S1键不断输出三角波等。
4、用一位数码管显示波形代码:如输出方波,显示代码“1”。
三、硬件电路设计
3.1系统结构框图
波形发生器系统主要由主单片机芯片、按键数码管显示以及D/A转换几部分组成。系统结构框图如图3-1所示。
波形选择按键模块:通过外部中断0计数来选择波形的种类。
频率选择按键模块:通过外部中断1计数来选择波形的延时时间来实现。
数码管显示模块:采用共阴极数码管,段码高电平有效,位码低电平有效。
D/A转换模块:将查表的到的数字信号转换为模拟信号输出,再将模拟信号通过运算放大器,转换为电压输出。
波形输出模块:将D/A转换完后的结果接上示波器观察波形,还可以通过改变频率来观测不同频率的波形。
单片机模块:存放本实验用到的各种波形子程序、外部中断子程序、主程序、段码表、波形转换数表。
图3-1系统结构框图
3.2 STC89C52单片机介绍
图3-2 STC89C52引脚图
单片机
频率选择按键
数码管显示
波形选择按键
波形输出 D/A 转换
其工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz。用户应用程序空间4K ROM。片上集成512字节RAM。它利用ISP技术写入程序,开发方便。内部RSM用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;ROM用以存放程序、一些原始数据和表格;I/O口为四个8位并行I/O口,既可以做输入,也可以做输出。
总共40个引脚,电源用2个(VCC和GND),晶振用2个,复位1个,EA/Vpp 用1个,29引脚PSEN和30引脚ALE位外扩数据/程序存储器时才有特定用处,还有四个P端口,每个端口各有8个引脚。其引脚如图3-2所示。
3.3数码管显示电路
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。在本次设计中使用的是动态显示驱动,采用共阴极数码管,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,由于此次设计只选择一个数码管点亮,给定位码一个固定值,将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮,再选通段码使其显示代表波形的数字。数码管显示电路图如图3-3所示。
图3-3数码管显示电路
3.4D/A转换及I/V转换电路
D/A转换器将数字信息转换成与数值成正比的电压/电流。本设计采用T型解码网络D/A转换。选用DAC0832作为单元器件。使用DAC0832的单缓冲方
式。DAC0832是电流输出型的转换器,要通过示波器来显示波形,必须接入运算放大电路。D/A转换及I/V转换电路如图3-4所示。
3-4 D/A转换及I/V转换电路
3.5系统电路原理图
元件选择:5V电源,主单片机芯片STC89C52,DAC0832一片,锁存器74HC753两个,八位数码管六个,按键两个,运算放大器三个,反相器及电阻若干。系统电路原理图如图3-6所示。
3-5系统电路原理图
四、程序流程图设计
4.1主程序流程图
主程序流程图如图4-1所示。
图4-1主程序流程图
通过独立按键产生下降沿,使外部中断INT0,INT1有效。INT0控制波形的种类,INT1控制频率的选择。波形种类的显示通过LED灯显示,因为只使用一位二极管,则只需将位码赋固定值,通过查表显示段码值。本实验开始就使LED灯显示0,调用波形子程序,通过示波器显示方波的波形。通过对波形种类按键的计数,即中断子程序中size计数,来实现在主程序中对波形种类的选择,从而调用相应的波形产生程序,通过示波器显示波形,波形的频率可以通过频率改变按键改变,来实现不同频率波形的产生。
4.2波形产生及频率变化流程图
波形产生及频率变化流程图如图4-2所示。
图4-2 波形产生及频率变化流程图
本框图实现了显示不同频率波形和波形种类的数码管显示。数码管和不同波形的显示,通过外部中断0计数来实现,数码管的显示,将位码赋一固定值,段码通过调用段码表的值来实现。波形的显示,通过查表,将表的内容赋给8032转换器的地址,进行数模转换得到模拟值,再进行延时、循环,从而的到几个周期的波形。波形的频率,通过外部中断1计数来实现,通过改变波形的显示时间,从而达到了改变频率的目的。
五、程序设计
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
#define LEDLen 6
xdata unsigned char OUTBIT _at_ 0x8002; // 位控制口
xdata unsigned char OUTSEG _at_ 0x8004; // 段控制口