用单片机实现函数发生器功能 硬件:单片机+LCD1602+N个按键+4个LED灯+DAC0832。 基本要求: 按下按键可使DAC输出不同波形(正弦波、三角波、锯齿波、方波),对应LED灯亮,且在LCD1602上显示当前波形信息。 扩展要求(可任意选做,每实现一项+10分): 1.LCD显示增加当前波形的频率; 2.有按键可增加or减少频率; 3.波形幅值可设定; 提交Proteus+Keil+文档打包
一、 硬件选择及连接 1.硬件选择 ①AT89C51单片机(一个) 选择原因: 拥有完善的外部扩展总线,通过这些总线可方便地扩展外围单元、外围接口等。单片机与工业标准的MCS-51型机的指令集和输出引脚兼容,便于产品后续工业量产化。芯片内自带中断系统,可用于按键按下时触发中断从而可以控制波形。 ②DAC0832(一个) 选择原因: 由于单片机产生的是数字信号,要想得到所需要的波形,就要把数字信号转换成模拟信号,所以可以选用价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器DAC0832,而且DAC0832是电流型输出。 ③LM324(一个) 选择原因: DAC0832作为电流型输出,在应用时要外接运放使之成为电压型输出。所以运算放大器的作用是将DAC0832输出的电流信号转化为电压信号。 ④LCD1602(一个) 选择原因: LCD1602作为字符型液晶显示模块,具有体积小,重量轻,功耗低和显示内容丰富等优点,而且可以显示两行,因此可以符合要求在第一行显示波形形状和频率大小,在第二行显示幅值大小。 ⑤按键(四个) 选择原因:用于控制波形种类和频率、幅值的改变。 ⑥LED灯(四个) 选择原因:用于表示对应波形的产生。 ⑦电阻(100Ω 四个) 选择原因:由于LED灯连接在P0口,因此需要连接上拉电阻,LED灯才能够亮。
2. 硬件连接 
二、软件流程图
主程序流程图 
| 按键按下检查函数流程图 
| 定时器0中断函数流程图 
| KEY1按键按下流程图 
| KEY2按键按下流程图 
| KEY3按键按下流程图 
| KEY4按键按下流程图 
|
三、完整C语言程序 主程序函数爆部分代码 

定义四种波形64个点的位置信息和频率参数的代码部分 
定义按键按下检查函数的代码部分 

定时器初始化和中断函数的代码部分 
定义LCD1602显示器显示函数的代码部分 

四、 仿真运行视频链接 链接:用51单片机实现函数发生器功能www.bilibili.com/video/BV15P41117s
|