1、 页 1 基于单片机原理的 波形发生器 摘要 : 本系统采用单片机 C8051 为控制核心 ,输出数字量 ,然后由 DAC0832 把数字量转换成模拟量 ;但是输出的是电流 ,需要用运放 (OP07),把电流转换成电压量。显示利用的是LCD1602 的液晶,显示其波形,幅值。按键应用的是独立按键,用来波形的切换,幅值,频率的调解。其运算核心,我们通过 MATLAB 对正弦波,三角板,正弦波进行采样,得到一组组数据,然后同过数组存储;利用中断对数组进行扫描。其频率的调解就是调节其中断间隔的时间,幅值就是调节其数字的大小(同时乘以某个小于 1 的数 )。为了波形的合成,我们采用的点的个数都是 20
2、 个 。 关键词: AT-89C51 DAC0832 独立按键 OP07 页 2 The Design of Waveform Generator Based on 51 Abstract: This system adopts single-chip C8051 as the control core, digital output, and then by DAC0832 convert digital to analog; But the output is current, the need to use operational amplifier (OP07), the amount
3、 of current into a voltage. Display using the LCD1602 LCD, display the waveform amplitude. Key applications is independent, switch to waveform, amplitude, frequency of mediation. Its core operation, we use MATLAB to sine wave, triangle, the sine wave samples, groups of data, and then with an array o
4、f storage; Using the interrupt for scanning array. The frequency of mediation is to adjust one interval time, amplitude is adjusting the size of its digital (multiplied by a certain number of less than 1) at the same time. For the waveform synthesis, we adopt the number of points is 20. Keywords: AT
5、-89C51 DAC0832 Separate button OP07 页 3 一 、 题目要求 及分析 设计任务:设计制作一个波形发生器,该波形发生器 能产生正弦波、方波、三角波和由用户编辑的特定形状波形。 示意图如下: 图 1 设计要求图 设计要求: 1.具有产生正弦波、方波、三角波三种周期性波形的功能; 2.用键盘输入编辑生成上述三种波形(同周期)的线性组合波形,以及由基波及其谐波( 5 次以下)线性组合的波形。 3.具有波形存储功能。 4.输出波形的频率范围为 100Hz 20kHz(非正弦波频率按 10 次谐波计算);重复频率可调,频率步进间隔 100Hz。 5.输出波形幅度范围 O
6、5V(峰 峰值),可按步进 0.1V(峰 峰值)调整。 6.具有显示输出波形的类 型、重复频率(周期)和幅度的功能。 7.增加红外配置功能(串口配置程序或其他方式) 页 4 二 、 总体系统方案设计 题目要求实现的任务是设计并制作一个函数信号发生器,能够产生正弦波、方波、三角波,要求不用 DDS 和专用的波形产生芯片,频率范围在 1Hz1MHZ 可调,在频率范围为 1HZ10KHz 时,步进不大于 10Hz 在频率范围为 10KHz1MHz 时,步进不大于 100Hz,并且电压范围在 05V 可调,步进为 0.1V,能够实时的显示波形的类型及其频率和幅值。现在对以下方案进论证和验证。 2.1
7、总体设计思路 根据题目的要求,经过仔细的考虑各种要素,制定了整体方案:以 AT89C51 单片机为控制核心, P0 口接 DAC0832 信号输入并进行数模转换, P1 口接矩阵键盘, P2 口接液晶显示器 LCD1602,由程序控制 P0 口产生波形(分别是正弦波、方波、三角波),再由按键及按键次数控制产生波形的种类及频率和幅值在一定范围内可调,并且能够按任意键实现波形频率和幅值的设定(不通过步进按键设定来控制)。由运放 OP07 实现 DAC0832 输出电流到电压的转换,即实现数字信号到模拟信号的转换。在 LCD 上实时的显示波形的频率和幅值,波形在 示波器上产生。 其波形的存储方式,我
8、们通过按键确定,一旦按键按下后,就把当时的波形对应的参数存储起来,例如幅度值,频率值等参数。波形的合成:为了波形的合成,我们在采样的时候,对正弦波,三角波,方波都只取乐 20 个点;因为点越少,其频率达到的值就会越大;合成时就是对幅值点进行一个叠加后赋给 DAC0832 输出一组波形。红外,通过外部中断高低电平的延时的时间来进行解码。 页 5 2.2 总体框图 本系统总体框图如图 2 所示: 图 2 系统总体框图 2.3 信号发生部分 方案一:采用模拟分立元件或单片压控函数发生器,可以产 生正弦波、方波、三角波,通过调整外部元件可以改变输出频率,但采用模拟元器件由于元件分散性太大,因而产生频率
9、稳定性较差,精度低,地抗干扰能力低,成本高,而且灵活心性较差,不能实现任意波形以及波形运算输出等智能化的功能。 方案二:采用锁相式频率合成方案,锁相式频率合成一个高稳定度和精确度的大量离散技术,他在一定程度上解决了既要频率稳定精确又要频率在较大的范围内可调的矛盾,但是频率受 VCO 可便频率范围的影响,高低频率比不可能做的很高,而且只能产生正弦波或方波,不能满足任意波形的要求。 方案三:采用单片机和数模转换 DAC0832 实现波形的产生。波形的产生是通过AT89C51 执行方波波形程序,向 D/A 转换器的输入端按一定的规律发生数据,从而在DA 转换电路输出端得到相应的电压波形。在 AT89
10、C51 的 P1 口接矩阵按键,通过软件编程来选择波形、幅值、频率,每种波形对应一个按键,此方案原理简单,实现起来比较容易。 经比较,方案三能够更好的实现题目的要求,三种波形的产生可有程序控制,并通过按键选择波形的输出,在示波器上显示波形。波形的周期与频率步进也可以用程页 6 序控制,具有线路简单、结构紧凑等优点。在本设计的基础上,加上 LCD 显示器 ,则可以通过按键设定波形频率,并在 LCD 显示频率、幅值电压。输出的波形稳定,精度高,滤波好,抗干扰效果好,连接简单,性价比高。综上所述,我们选择第三种方案。 2.4 显示部分 方案一:数码管显示,由于本题要求实时的显示输出信号的幅度、频率,
11、而数字不能显示字符。 方案二: LED 点阵显示, LED 点阵显示虽然能够显示数字和字符,但是显示的效果不好,而且不易编程。 方案三: LCD 液晶显示, LCD 液晶显示不但能显示字符和数字,而且效果较好,且容易实现。 2.5 按 键 部分 方案一:采用独立按键,他的按键的数目比少,但是它的 结构简单,方便操作,执行效率高等优势。 方案二:采用矩阵键盘,它以较少得 IO 口实现了 按键的功能,随之其操作比较复杂。 经对比,由于我们需求的按键比较少,但是对执行的效率比较高,所以采用独立按键。 页 7 三、 硬件电路 本系统由单片机、波形转换( D/A)电路、显示接口电路、键盘电路、电源电路、
12、串口电路等六部分组成。电路图如图 3.1 所示: 图 3 硬件电路原理图 3.1 功能与基本原理 功能:形成扫描码、键值识别、案件处理、参数设置、字符设置等形成液晶显示波形的类型及频率和幅值;通过定时器 0 产生定时中 断,形成波形的数字编码,并输出到 D/A 接口电路和显示驱动电路。 AT89C51 外接 12M 晶振作为时钟频率,并采用电源复位设计。复位电路采用上电复位,其工作原理是,当通电时,电容两端相当于短路,于是 TST 引脚为高电平,然页 8 后对电容充电。 RST 端电压慢慢下降,降到一定程度,即为低电平,单片机开始工作。产生方波程序思路:对于小于 100Hz 的频率,根据定时器
13、溢出时间 1us,将频率值换算为定时器溢出次数,当达到规定的次数时,将输出管脚的状态取反达到方波的产生;对于大于 100HZ 的频率,直接根据频率值设置其定时溢出的时间 ,当溢出时间达到时,将输出管脚取反达到方波的产生。产生三角波程序思路:要产生峰值电压为 5V 的三角波,一个周期需要定时 510 次,由此便可以计算出每次定时溢出的时间,再将每次定时的电压加权便可以达到三角波的波形;产生正弦波程序思路:给正弦波的一个周期设定 table 表,由 20 个数据,相当于每个周期定时 255 次,则每次定时溢出的时间便可计算出,每个点的电压加权便可得到正弦波的电压,即,形成正弦波。 3.2 资源分配
14、 软、硬件设计是比不可少的,为了满足功能和指标的要求,资源分配为:单片机用 12MHz 晶振, P0 口与 DAC0832 相连; P1 口接矩阵按键,实现频率、幅值以及波形的选择; P2 口接 LCD1602 液晶显示器,实时显示波形的频率、幅值、类型。 3.2.1 显示接口电路 功能:驱动 LCD 液晶显示、扫描按钮。 由 LCD1602 液晶显示器和矩阵按键组成。当某一按键按下时,扫描程序扫描到之后,通过 P2 口将数字信号发送到 LCD1602, LCD1602 液晶专门用于显示字母、数字、符号等点阵式 LCD,其外接电压时 5V。扫描利用软件程序实现,当某一按键按下时,扫描立即检测到
15、,随即调用子程序,执行相应的功能。其与单片机连接如图 4 所示: 页 9 图 4 显示部分电路图 3.3 波形转换( D/A)电路 功能:将波形样值得编码转换成模拟值,完成波形的输出。 由一片 DAC0832 和 LF356 运放组成。 DAC0832 是一个具有两个输入数据寄存器的 8 位 DAC。目前生产的 DAC 芯片分为两类,一类芯片内部设置有数据寄存器,不需要外加电路就可以直接与微型计算机接口。另一类芯片内没有数据寄存器,输出信号随数据输入线的状态的变化而变化,因此不能直接与微型计算机接口,必须通过并行口与微型计算机接口。 DAC0832 是具有 20 条引线的双列直插式 CMOS
16、器件,它内部具有两级数据 寄存器,完成 8 位电流 D/A 转换,股不需要外加电路。 DAC0832 是电流输出型,示波器上显示波形,通常需要电压信号,电流信号到电压信号的转换可以用运算放大器 LF356 实现。 单片机想 DAC0832 发送数字编码,产生不同的输出。先利用采样定理对各种波形进行抽样,然后把各种采样值进行编码,收到的数字量存入各个波形表,执行程序时通过查表的方法依次取出,经过 D/A 转换后输出就可以得到波形。假如 N 个点构成波形的一个周期,则 DAC0832 输出 N 个样点值后,样值点形成运动轨迹,即,一个周期。重复输出 N 个点后,成为第二个周期 。利用单片机的晶振控制输出周期的速度,也就是控制输出的波形的频率。这样就控制了输出波形的及其幅值和频率,例如:正弦波,页 10 取 20 个样值点。具体连接的电路图如图 5 所示: 图 5D/A 转换的电路连接图 3.4 红外电路 图 6 红外电路 红外的工作原理: 51 单片机对遥控的解码和我们前面所讲的串口并口通信不同,他不是单纯的用高电平代表 1,低电平代表 0。这一点大家要从思想上面转变过来。他是发送一连串的数据帧,这个数据帧就是一连串的二进制代码,单片机通过区分高电平的持续时间来区别红外编码的。我们就以 HC6800 单片机上的 红外接头为例来说明,