基于at89c51单片机的多功能函数信号发生器 下载本文

表2 元器件

元件名称 单片机 晶振 电容 电解电容 电阻 开关 开关 集成块 集成块 集成块 数码管 电阻 滑动变阻器 电源 排阻 发光二级管

型号 AT89C51 12MHz 30pF 10uF 10k欧 BUTTON BUTTON DAC0832 LM358 74LS573 共阴、蓝色 10k欧、7k欧 10k欧 +5V 1k 红色 1 1 2 1 1 1 4 1 2 1 1 2 1 1 1 4 数量/个 用途 主控芯片 晶振电路 晶振电路 复位电路 复位电路 复位电路 选择输出 D/A转换 运放电路 驱动电路 显示电路 运放电路 运放电路 提供电源 显示电路 显示电路 3 软件设计

- 16 -

4.1程序流程图

开 始 各芯片初始化 按键按下? S1按下 S2按下 S3按下 S4按下 s1num++ 频率f增加 频率f减少 显示频率域波形种类 LED显示 s1num s1num s1num s1num LED显示 =0 =1 =2 =3 输出正弦波,LED显示A2 输出三角波,LED显示B2 输出矩形波,LED显示C2 输出锯齿波,LED显示D2

图19 程序流程图

3.2 程序代码

·正弦波的代码可分为256个数值,相应时段付相应值,这样既可产生模拟的正弦波

- 17 -

形,代码如下

·单片机输出正弦波三角波方波等信号的程序如下: //按键S1按一下,输出正弦波

//按键S1按两下,输出三角波

- 18 -

//按键S1按三下,输出方波

// 按键S1按4下,输出锯齿波

·频率显示部分:当按键S4按下后,显示频率,频率计算公式为 TH0=(65535-temp)/256;

TL0=(65535-temp)%6; //temp定义为定时器定义时间 f=(int)(1000000/(temp*256)); //f为频率

·频率控制部分:根据按键控制temp的值,频率就会增大或减小。

4 系统仿真及调试

5.1系统仿真图

正弦波如下图

- 19 -