DAC0832波形发生器的设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

参考文献 (9)

一、设计任务及意义

本系统是基于AT89C52单片机的数字式简易低频信号发生器。用程序实现方波、锯齿波、三角波等信号,并在Protues 电子设计平台上对方案进行了仿真。消除了传统信号发生器存在元器件分散性造成波形失真的弊端。系统采用AT89C52 单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)、按键电路。通过按键控制可产生方波、锯齿波、正弦波。波形的频率和幅度在一定范围内可任意改变,其设计简单、性能优良,可用于多种需要低频信号源的场所,具有一定的实用性。

二、设计方案选择及论证

系统方案比较

方案一:采用函数信号发生器ICL8038集成模拟芯片,(如图2-1)它是一种可以同时产生方波、三角波、正弦波的专用集成电路。但是这种模块产生的波形都不是纯净的波形,会寄生一些高次谐波分量,采用其他的措施虽可滤除一些,但不能完全滤除掉。

方案二:采用分立元件实现非稳态的多谐振振荡器,然后根据需要加入积分电路等构成正弦、矩形、三角等波形发生器。这种信号发生器输出频率范围窄,而且电路参数设定较繁琐,其频率大小的测量往往需要通过硬件电路的切换来实现,操作不方便。

方案三:采用单片机和DAC0832数模转换器生成波形,由于是软件滤波,所以不会有寄生的高次谐波分量,生成的波形比较纯净。它的特点是价格低、性能高,在低频范围内稳定性好、操作方便、体积小、耗电少。

经比较,方案三既可满足课程设计的基本要求又能充分发挥其优势,电路简单,易控制,性价比较高,所以采用该方案。

图2-1方案一方框图 D/A 键 盘

单片机

ICL8038

运算电

显 示

D/A

输出

三、硬件设计

系统总体框图设计

本系统是以单片机AT89C51和8位D/A 转换芯片DAC0832共同实现正弦波,方波,锯齿波这三种常见波形的产生及显示相互切换的功能。

图3-1 系统总体框图 3.1单片机晶振电路

对于MCS-51一般的晶振可以在1.2MHZ —12MHZ 之间选择,这是电容C 可以对应的选择10pf-30Pf 。对于本设计的电容C 用30pF ,晶振选用12MHZ 。晶振电路解法图3-2,一条引脚接在XTAL1,另一条接在XTAL2。电路图如图3-1-1所示:

图3-1-1

3.2单片机复位电路

复位是单片机的初始化工作,复位后中央处理器CPU 和单片机内的其它功能部件都处在一定的初始状态,并从这个状态开始工作。为了防止程序执行过程中失步或运行紊乱,此处我们采用了上电复位及手动复位电路,电路图如图3-1-2所示:

示波器

OP1P

DAC0832

波形选择开关 单片机 PC 机 下载线

图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所示:

程图

4.3波形数据产生子函数

波形数据产生函数是定时器T1的中断程序。当定时器溢出时,发生一次中断。

当发生中断时,单片机按次序将

波形数据表中的波形数据一一送到DAC8032,DAC8032根据输入的数据大小输出对应电压。波形数据产生子函数流程图如图4-4所示:

T1中断允许,开定时器,开总中断

T1置初值,设为16位定时模式 开始 返回

查键开始

返回

定时值减1

波形选择

定时值加1 查键号,按键值执行功能

有键按下?

N

Y

图4-4

4.4 主函数

主函数的任务是进行上电初始化,并在程序运行中不断查询按键情况执行相应的功能。 程序设计见附录五

五、系统测试及结果

硬件电路的调试比较简单,只要元器件安装无误,一般都能一次成功。软件调试主要是各子程序的调试,对于频数的增减按键,由于计数器为16位定时器,最大值为65535,在加减时用255作为减数,这样频率的调整变化较快些,但是在接近最高频率变化太快;如果加减时用一作加减数,那么在频率的高端变化平稳,而在频率的低端则变化太慢。调试时可根据应用特点选择加减数的大小。简易低频信号源输出频率指标实际测试如下:

(1)当按下K3键一下时,波形为正弦波。波形图如图5-1所示:

功能标志=1?

开中断、中断返回

查表指针加1

正弦波输出

方波输出

锯齿波输出 关中断、关定时、重装初值、开定时

中断开始

相关文档
最新文档