参考文献 .......................................................................................................................................... 9
一、设计任务及意义
本系统是基于AT89C52单片机的数字式简易低频信号发生器。用程序实现方波、锯齿波、三角波等信号,并在Protues电子设计平台上对方案进行了仿真。消除了传统信号发生器存在元器件分散性造成波形失真的弊端。系统采用AT89C52 单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)、按键电路。通过按键控制可产生方波、锯齿波、正弦波。波形的频率和幅度在一定范围内可任意改变,其设计简单、性能优良,可用于多种需要低频信号源的场所,具有一定的实用性。
二、设计方案选择及论证
系统方案比较
方案一:采用函数信号发生器ICL8038集成模拟芯片,(如图2-1)它是一种可以同时产生方波、三角波、正弦波的专用集成电路。但是这种模块产生的波形都不是纯净的波形,会寄生一些高次谐波分量,采用其他的措施虽可滤除一些,但不能完全滤除掉。 键 盘 显 示 D/A 单片机 ICL8038 运输出 算方案二:采用分立元件实现非稳态的多谐振振荡器,然后根据需要加入积分电路等构成电D/A 路正弦、矩形、三角等波形发生器。这种信号发生器输出频率范围窄,而且电路参数设定较繁琐,其频率大小的测量往往需要通过硬件电路的切换来实现,操作不方便。 方案三:采用单片机和DAC0832数模转换器生成波形,由于是软件滤波,所以不会有寄生的高次谐波分量,生成的波形比较纯净。它的特点是价格低、性能高,在低频范围内稳定图2-1方案一方框图 性好、操作方便、体积小、耗电少。
经比较,方案三既可满足课程设计的基本要求又能充分发挥其优势,电路简单,易控制,性价比较高,所以采用该方案。
三、硬件设计
系统总体框图设计
本系统是以单片机AT89C51和8位D/A转换芯片DAC0832共同实现正弦波,方波,锯齿波这三种常见波形的产生及显示相互切换的功能。
PC机 下载线 单片机 波形选择开关 图3-1 系统总体框图 3.1单片机晶振电路
对于MCS-51一般的晶振可以在1.2MHZ—12MHZ之间选择,这是电容C可以对应的选择10pf-30Pf。对于本设计的电容C用30pF,晶振选用12MHZ。晶振电路解法图3-2,一条引脚接在XTAL1,另一条接在XTAL2。电路图如图3-1-1所示:
DAC0832 OP1P 示波器
图3-1-1
3.2单片机复位电路
复位是单片机的初始化工作,复位后中央处理器CPU和单片机内的其它功能部件都处在一定的初始状态,并从这个状态开始工作。为了防止程序执行过程中失步或运行紊乱,此处我们采用了上电复位及手动复位电路,电路图如图3-1-2所示:
图3-1-2
3.3完整电路 参照附录三
四、软件设计
单片机内部数据只有0、1之分,所产生的信号也都是离散信号。为了能够让单片机输出所需的数字信号,我们采用对信号采样、量化的方法来实现由单片机产生所需信号。在设计中,对正弦信号进行采样,通过查表来实现输出不同的幅度值。采样点越密,信号失真度也就越小。对于三角波,就是实现2次循环,通过由最小值到最大值和由最大值到最小值的循环来实现三角波的输出。方波的输出时间间隔由键盘输入,然后由软件通过定时、计数器来控制。因此,通过控制不同的计数初值就可以控制整个方波信号的频率,其计数初值=65 536-输入值。对于其他波形,程序根据输入频率值计算出波形的输出时间参数,即波形中每2点的时间间隔C。程序设定寄存器T0作定时器,T1作计数器。当计算出C≤65 536时, CPU只使用T0。当C>65 536时,CPU将T0和T1串联起来使用。T0/T1被调用后开始计数,总定时时间到,输出一个点,反复循环,从而在一个周期内输出完整波形。设计中软件分为初始化模块、显示模块、键盘扫描模块、键值处理模块和波形产生模块。 4.1 初始化子函数
初始化子函数的主要工作是设置定时器的工作模式、初值预置、开中断和打开定时器等。在这里,定时器T1工作于16位定时模式,单片机按定时时间重复的把波形送到DAC0832的寄存器。其程序流程图如下图4-2所示: 4. 2键扫描子函数
键扫描子函数的任务是检查3个键是否有键按下,若有键按下,则执行相应的功能。这里3个键分别用于频率增加、频率减小和正弦波,锯齿波和方波的选择功能。其程序流程图如图4-3所示: