代世臣 辽宁锦州渤海大学工学院
基于单片机的信号波形发生器设计
代世臣 辽宁锦州渤海大学工学院
本课题所要设计的是通过单片机和数模转换器等产生我们所需要的频率的信号,而其中信号的幅度,频率的增加减少等等都可以根据需要去进行调节。通过单片机AT89C51把程序输出给DAC0832,DAC0832将数值转化为模拟的信号量,再通过运算放大器将信号转换为电压并显示在示波器上,从而显示出不同波形。
AT89C51单片机 DAC0832 正弦波
波形发生器就是一个相对来讲比较简单同时又便于操作的函数发生器,它可以产生多种波形:三角、正弦还有方波。它拥有着十分宽泛的使用途径。它所要发展的趋势显而易见,就是变成高精度,宽调幅。波形发生器是有较高的精度,较强的稳定性,可重复,并且容易进行操作,还可以产生很多的标准以及定义信号的电子仪器。波形发生器有很多占优势的地方,比如可以不间断的进行相位的变化,同时还能够让频率拥有一定的稳定性,这样既可以对频率,波形,幅值等等进行控制,同时还可以模拟很多种较为复杂的信号,还可以和别的仪器进行通信,成为测试系统,所以它大量被运用在自动控制,通讯仪器或仪表等领域。
系统利用DAC0832单片机编程的方式,并且查询表格的方式来对我们所需要的波形进行输出,这个方法可以通过编程来对信号波形的频率幅度进行调节和控制,并且在硬件电路没有改变的时候,我们可以通过改变程序来进行频率的改变。同时,因为我们是通过编程产生的数字信号,所以信号的精度我们可以做的很高。设计总方框图如图1所示。
2.1 单片机选型
单片机现在已经充斥着我们生活的很多地方。导弹导航,飞机仪表,计算机网络的使用和各种数据的传递,工业自动化过程的实时控制和数据处理,多种智能IC卡,汽车安全保障系统,控制全自动洗衣机,以及玩具电子宠物等等,这些都离不开单片机。
系统选用AT89C51单片机,AT89C51使用范围很大,我们可以把它用在很多地方,很多我们想使用的地方。各接口可以与显示器和DAC0832进行连接,主要在于将数字量信号转换成模拟量信号进行输出。
2.2 波形电路设计
DAC0832是一个八位的采样频率的数模转换器,因为里面包含有二级的输入寄存器,所以这个芯片有双缓冲、单缓冲和直接导通这三种方式来进行输入。这个芯片的应用很广泛。D/A转换结果采用电流形式输出。如果需要相应的模拟电压信号,可以通过线性运算放大器的很高的输入阻抗来实现。运算放大器的反馈电阻都可以通过固有电阻内的RFB终端参考被连接到逻辑输入从而让TTL电平得到满足,可以与TTL电路或微型电路进行直接的链接。
通过对滑动变阻器的调节,给定一个基准电压,给定的电压输入给DAC0832上的VREF,从而给数模转换器一个电压,这个电压决定了最后输出的最大电压。波形产生的原理:经过单片机定时器的中断处理所采集的点,也就是数值,会经由连接端口输送给DAC0832,定时器中断所实现的是波形数值的输出,数模输出的电流通过运算放大器转变成运放电压量输出。以此来产生三种波形。如图2所示:
2.3 显示电路
本次设计所用到的LCD液晶显示器1602控制器共有11条控制指令。显示器的读写操作、光标的显示都是用编程指令来实现的。每次对控制器进行读写操作时都必须进行读写操作,确保D7为0。具体如表1所示。(在表格中1代表高电平,0代表低电平)
图1 设计总方框图
图2 单片机与DAC0832接口电路
2.4 按键电路
按键是单片机不可缺少的人机互动设备,按键就像一个开关,手按下即闭合,手放开即断开。人们大都使用的是矩形的和独立式的。发光二极管点亮的条件是:阳极是对应高电平、阴极对应着低电平。因此,要想发光二极管亮,就要从P1口输出数据。
表1 控制器指令
3.1 总体系统设计
(1)选用独立式按键与单片机进行连接,可以选择波形,增加频率或降低频率,通过单片机的中断处理存下波形和频率。
(2)选用1602显示器与单片机进行连接,可以读写指令和数据,在显示器上显示波形名称和频率。
(3)选用DAC0832数模转换器,可以将单片机输出的数字量转换成模拟量进行输出,并通过运算放大器输出电压。
(4)我们在写具体的程序之前,为了减少不必要的麻烦提升效率,我们需要有一个具体的规划,这样可以少走弯路。
(5)要合理分配系统资源。
(6)要在关键的地方标注,谢明解释和含义,让别人读程序时更加简单明了。
(7)要在抗干扰方面苦下功夫,让程序可以流畅运行。
主要流程如图3所示。
图3 整体流程图
3.2 设计各部分程序及函数
3.2.1 正弦波设计
假设要生成一个正弦波如公式一。adc0832数据端口给的数据的范围是0~255一共256个。那么我们可以得到数据端口的数值的具体量,即公式二;假设我在X轴上抽样256个点(0~255),那么这个256位的数组可以用EXCEL生成,如公式三。怎么选择,具体情况具体分析。本设计采集了256个点。
3.2.3 正弦波输出程序
本文通过单片机AT89C51的软硬件设计方法,通过单片机AT89C51把程序输出给DAC0832,DAC0832将数值转化为模拟的信号量,最终生成波形。
[1]张靖武等.单片机系统的PROTEUS设计与仿真.电子工业大学,2007.3
[2]何立民.单片机应用系统设计.北京:北京航空航天大学出版社,2010.8
[3]李学礼.基于Proteus软件的单片机实验室建设[J].单片机与嵌入式系统的应用,2005(9):5-6
[4]韩晓春,程明霄.单片机仿真实验平台的设计与开发.徐州工程学院学报,2007.8