波形发生器
实验报告
基于 STC89C52 的信号发生器的设计过程
1
【摘要】 本例所设计的低频信号发生器要求能输出频率范围在 0.1~50Hz 的正
弦波,三角波和方波信号。其中正弦波和三角波信号可以用按键选择输出。
【关键词】单片机 信号发生器 STC89C52
DAC0832
一、绪论
随着电子测量及其他部门对各类信号发生器的广泛需求及电子技术的迅速
发展,促使信号发生器种类增多,性能提高。尤其随着 70 年代微处理机的出现,
更促使信号发生器向着自动化、智能化方向发展。现在,许多信号发生器待有微
处理机,因而具备了自校,自检,自动故障诊断和自动波形形成和修正等功能,
可以喝控制计算机及其他测量仪器一起方便的构成自动测试系统。当前信号发生
器总的趋势是向着宽频率覆盖、低功耗、高频率精度、多功能、自动化和智能化
方向发展。
二、系统总体设计方案
2.0 方案论证
方案一:用分立元件组成的函数发生器:通常是单函数发生器且频率不高,
其工作不很稳定,不易调试。
方案二:利用专用直接数字合成 DDS 芯片的函数发生器:能产生任意波形并
达到很高的频率。但成本较高。
方案三:利用 STC89C51 单片机和 DAC0832 芯片:稳定性好,不多用其他芯
片,从而减小了系统的成本,也完成能够满足系统的需求,且暂用空间小,
低功耗。
综合考虑,方案三各项性能和指标都优于其他几种方案,能使输出频率有较
好稳定性,充分体现了模块化设计的要求,而且这些芯片及器件均为通用器
件,在市场上较常见,价格也低廉,样品制作成功的可能性比较大,所以本
设计采用方案三。
2.1 系统设计功能要求
(1)具有产生正弦波、方波、三角波三种周期性波形的功能。
(2)用键盘输入编辑生成上述三种波形(同周期)的线性组合波形,以及
由基波及其谐波(5 次以下)线性组合的波形。
(3)具有波形存储功能。
(4)输出波形的频率范围为 100Hz~20kHz(非正弦波频率按 10 次谐波计
算);重复频率可调,频率步进间隔≤100Hz。
(5)输出波形幅度范围 0~5V(峰-峰值),可按步进 0.1V(峰-峰值)调整。
(6)具有显示输出波形的类型、重复频率(周期)和幅度的功能。
2
2.2 系统技术方案
键盘
显示部分
波形生成
波形输出
其 他 输 入
装置
微控制器
波形存储
利用 STC89C51 单片机和 DAC0832 芯片,因其稳定性好,可不多用其他芯片,从
而减小了系统的成本,也完成能够满足系统的需求,且暂用空间小,低功耗。
三、系统设计
3.1 控制电路及其功能
3.1.1 最小系统
由于在软件中没有找到 STC80c52,故在此以 AT89s52 代替,他们核心基本相
同,在实际制作中会使用 STC89c52。
3.1.2 控制部分电路
基于 89C52 单片机的控制部分电路,SW7 为选择正弦波,SW8 为选择方波,SW9 为
3
选择三角波,SW2 为增加,SW3 为减小
3.1.3 数与模转换部分
数模转换部分以 DAC0832 和放大电路实现,以单片机主控。
DAC0832 与单片机结成双极性模拟输出电压方式,当单片机把一个数据直接写入
DAC 寄存器是,DAC0832 的输出模拟电压信号随之变化。利用 D/A 转换器可以产
生各种波形,如方波,三角波,锯齿波等以及它们组合产生的复合波形和不规则
波形。数/模转换部分硬件电路图如图
3.1.4 波形存储模块
单片机运行时的数据都存在于 RAM(随机存储器)中,在掉电后 RAM 中的数据是
4
无法保留的,
在 STC 单片机中内置了 EEPROM ,这样就节省了片外资源 ,从而可以使单片机
可以将数据写入到程序存储器中,使得数据如同烧入的程序一样,掉电不丢失,
波形存储就是利用 EEPROM
3.2 软件模块设计
3.2.1 初始化函数
对于中断函数,按键引脚设置的初始化,包括开启,关闭中断程序,对应波
形输出引脚的设定。
3.2.2 按键的检测
设有十个按键:频率和振幅的增加,减少,以及波形的选择、存储和读写。
流程图:
5
开始
是否有按键按下按
下
按键类型
频率增加
频率减小
波形转换
结束
2.2.3 波形输出
波形数据产生函数是定时器 T1 的中断程序。当定时器计数溢出时,发生一次中
断。当发生中断时,单片机按次序将波形数据表的波形数据一一送入 DAC0832,
DAC0832 根据输入的数据大小输出对应电压。
中断开始
关中断,定时,重装
初值,开定时
功能标志-1
输出方波
输出三角波
输出正弦波
查表指针+1
6
开中断,中输返回
四、系统调试
4.1 电路调试
首先根据电路图查看是否焊接正确,检查完毕后使用万用表查看电路是否通
畅。完毕后接通电源进行测试。
4.2 软件调试
软件调试相对复杂:先编写显示程序并进行硬件的正确性检验,然后分别进
行主程序,读出初始化子程序、键盘扫描子程序,执行相应的波形产生子程序。
本系统设计程序采用 c 语言编写,用 keil 编译器编程调试。
由于之前在 Proteus 仿真软件中对本系统进行了反复仿真与论证,不断进行
修改以达到理想的波形以及振幅频率调节效果
五、总结
本次实物制作中,也是遇到了很多难题,本来以为很简单的东西,做起来还是不
容易的,仅仅只是频率调节就卡了几天,频率达不到要求,利用单片机的定时器
来改变频率没想成不能改变,百思不得其解,最终利用 dds 原理改变取点数来改
变频率,但是要达到要求需要 512 万个频率点才能保证不失真,这点没能实现,
最终的频率也只是达到了 1K 多,这也跟单片机的自身处理能力有关,总之在这
次的制作学习过程中我们学到了很多。
附录一
系统原理图
7
此处是总的原理图。
附录二
成品实物图
8