这里介绍一个基于51单片机的函数波形发生器实现方式,包括软件和硬件实现原理介绍。
波形发生器是能够发出一定规律的周期性信号的装置,比如正弦波、方波、三角波、锯齿波等,一些数字信号发生器可以发出任意波形。波形发生器按照实现原理,一般有两种,一种是模拟式、另外一种是数字式,模拟式主要以模拟电路为主,通过各种信号发生电路来产生对应的信号;另外一种是利用数字控制的方式。今天我们介绍一个利用51单片机产生简易正弦波、方波、三角波的实验方法。
老规矩先上电路图。
下面对图评论一番。控制核心是AT89C51单片机、四个独立的控制按键、一个1602液晶显示器、波形输出方面使用的是DAC0832,比较典型的DAC,虽然现实中不怎么使用但是很多教材里都对这款芯片情有独钟,DA的输出端利用两个运放组成的反向电路对信号进行了处理和放大。四个按键的主要功能是对输出波形的种类进行选择、对输出波形的频率进行调整、对输出波形的幅值进行调整。
上电以后1602显示的内容为波形类型、波形频率、波形幅值。信号的基本要素都显示有显示。
接下来点开示波器看一下产生的波形图。左侧第一个按键是用于进行波形选择的。
三种波形还算可以没有出现严重的失真。在波形幅值方面主要是从1-5V。左侧开始第二个按键用于参数加、第三个按键用于参数减,第四个按键用于修正参数的选择。
在幅值为5V时正弦波形和三角波有一些失真,在波形的端点处比较严重。
调整频率值时,按键2和3用于频率值的加减操作。
波形的频率值精确度较差,主要是程序中定时器数值存在较大误差。
接下来看看程序。
波形的主要实现方式是将三种波形的数据转换成数组,然后通过对数组的查询,实现相应波形的输出,通过修改数据输出的时间间隔就可以达到修改信号频率的目的。通过对表中数据进行运算就可以改变相应的幅值。
上面介绍的就是这个信号发生器的使用方法。对此有需要的小伙伴可以自行下载。(水平有限、不喜勿喷)
链接:https://pan.baidu.com/s/11qLsG7yPcS0RXsGIc0t4gg
提取码:mcb1