APP下载

多功能波形发生器设计

2015-06-15陈红谢勤岚

现代电子技术 2015年12期
关键词:键盘波形单片机

陈红++谢勤岚

摘 要: 设计一种多功能波形发生器,以C8051F040单片机为控制器,控制波形发生器MAX038和功放实现输出正弦波、方波、三角波。该多功能波形发生器使用键盘调整波形频率,通过液晶显示屏显示频率,使用键盘选择不同的功能模式,实现外测电压的信号采集、数据存储和波形再现;可以实现USB串口传输并将接收到的信号进行波形再现。采集和由串口接收到的数据可通过I2C总线方式存入数据存储器中,也可以在单片机内部存储器中存入波形数据,再将其显示。

关键词: 波形发生器; MAX038; C8051F040单片机; I2C

中图分类号: TN911?34; TP937 文献标识码: A 文章编号: 1004?373X(2015)12?0110?05

0 引 言

在现代电子技术的研究及应用领域中,常常需要价格便宜、简单易用、高精度且频率可调的信号源。而信号源的核心是波形发生器,因此设计实用的波形发生器是很有必要的[1]。

波形发生器可以由晶体管、运算放大器等通用器件构成,但更多的则是用专门的函数信号发生器集成电路实现。早期的波形发生器集成芯片,如L8038、BA205、XR2207/2209等,它们的功能较少、精度不高,频率上限只有300 kHz,无法产生更高频率的信号,调节方式也不够灵活,频率和占空比不能独立调节,二者互相影响[2]。目前市场上主要的波形发生芯片有美国Harris公司的ICL8038和美国MAXIM公司的MAX038。ICL8038只能产生300 kHz以下的频段波形,而且频率调节与占空比调节不能独立进行,无法满足信号源频率的高精度要求。相比而言MAX038芯片有着ICL8038芯片无法实现的优点。因此本设计使用高精度波形发生芯片MAX038,该芯片电路连接简单,只需很少的外部电路就可以产生频率在0.1~40 MHz的高精度、高稳定度的宽频带波形[3]。同时结合Silicon Labs公司的C8051F040单片机,使其可以满足多任务、实时性要求。

1 波形发生器总体设计

采用 C8051F040单片机为核心,设计制作可以调节频率的多功能波形信号发生器[4]。芯片MAX038产生信号的频率可以通过调整电流和外接电容的大小来控制,因此本设计主要采用控制电流的方法来控制MAX038所产生的频率。该信号发生器能同时产生3路输出可调的正弦波、方波和三角波,并且占空比可以连续调节。

系统可以检测外部电路模拟信号,通过一个电压跟随器对检测的信号进行缓冲和隔离后,再经过单片机C8051F040内集成的A/D将信号转换为数字信号并存入AT24C02中。当需要输出时再通过D/A转换,转换成模拟信号,由D/A0端口输出,经MAX038芯片产生波形,并由液晶显示器1602显示其频率。也可以通过USB串口接受从电脑中下载的数据,并存入AT24C02中,同样可以再通过D/A转换,转换成模拟信号,由D/A0端口输出,经MAX038产生波形,通过液晶显示器显示频率[5]。系统可以通过4×4键盘输入频率值,从而达到直接控制MAX038产生波形的目的,并能够用1602液晶显示器显示波形的频率。系统还可以在单片机中存入波形信号,然后通过功率放大器,直接产生波形。波形发生器框图如图1所示。

2 波形发生器硬件设计

2.1 波形发生模块

将C8051F040单片机的D/A0端口通过一个电阻直接与芯片MAX038的IN管脚相连,通过控制D/A0端口的电压值的变化来控制IN管脚的电流产生变化,从而达到控制波形频率的目的。本信号发生器通过3路MAX038芯片能同时产生3路输出可调的正弦波、方波、三角波波形,输出的波形稳定性好、精度高,占空比可以连续调节。信号输出部分再采用低损耗电流反馈型宽带运放MAX477作电压放大,很好地解决了带宽和带负载能力的要求。

MAX038所产生的波形的频率是由COSC引脚的电容量和IN引脚的电流所决定的。假设C8051F040单片机的D/A0端口的输出电压为VIN,D/A0端口与IN管脚相连的电阻大小为RIN,COSC引脚所接的电容的大小为CF,则MAX038所产生的波形的频率(单位:MHz)为:

[fo=VINRINCF] (1)

当在FADJ引脚施加一个±2.4 V范围的电压时,可使输出频率有±70%的变化,此时可以实现对频率进行精确的调整[4]。

MAX038所产生的波形的占空比是由DADJ引脚的电压变化来控制的,当DADJ引脚的电压在±2.4 V范围内变化时,输出波形的占空比将在15%~85%之间变化。

MAX038产生的正弦波、方波或三角波,具体的输出波形由地址A0和A1的输入数据进行设置,如表2所示(其中X表示无关)。波形发生器能同时3路输出3种波形,所以将3路MAX038的输出波形的选择地址分别设置成为表1所示的3种固定状态。

2.2 功放模块

波形发生器对输出波形具有一定的功率要求,因此要对MAX038的输出信号进行功率放大。MAX477是MAXIM公司开发的一款低噪声、低微分增益和阶段误差、高转换速率、高精度、高输出电流的高频运算放大器,其-3 dB 带宽可达到300 MHz,最小输出电流为100 mA。因此选用MAX477对输出信号进行功率放大。图3为功放模块的原理图,通过调节反馈电阻值可以改变输出电压的放大倍数,其中电压最大可放大10 倍左右,整个系统的输出功率可达到数瓦。

2.3 USB接口模块

采用CH372芯片来接收由串口传来的数据。CH372是一个USB总线的通用设备接口芯片,遵守USB1.1协议。在本地端,CH372具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机、DSP等控制器的系统总线上。

2.4 数据存储

数据存储主要用于存储外测电压的信号数据以及从USB串口接收到的数据,采用的存储芯片为AT24C02。AT24C02的特点是支持I2C总线数据传送协议,相应的存储器电路如图4所示。采用由主器件控制传送数据的模式,通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上。

2.5 键盘模块

为了减少I/O口的占用,波形发生器的键盘采用矩阵式键盘。图5为键盘原理图。

2.6 液晶显示模块

波形发生器采用1602液晶显示屏。1602液晶显示屏具有外接电路简单,操作方便等特点,能够同时显示16×2,即32个字符。1602液晶显示器具体电路如图6所示。

3 软件设计

3.1 软件总设计与总流程图

系统采用C8051F040单片机。C8051F040 单片机是完全集成的混合信号片上系统型MCU,具有64 个数字I/O 引脚,片内集成了一个CAN 2.0B 控制器,并集成有ADC和 DAC。其中ADC为真正12 位、100 KSPS的ADC,并带有PGA 和 8 通道模拟多路开关;DAC有两组,为12 位DAC,且具有可编程数据更新方式[6]。程序采用C语言编写,操作C8051F040对外围器件进行控制[7],总流程图如图7所示。

3.2 波形发生程序

产生波形时对MAX038的控制只需控制其IN脚所输入的电流。该电流应由C8051F040提供,而电流是一个模拟量。因此,在这里需要用到C8051F040中的D/A转换器,将数字量转换成模拟量。

C8051F040中的D/A转换器有两组,每组D/A转换器的输出摆幅均为0 V到VREE?1LSB,对应的输入码范围是0x000~0xFFF。由于三路MAX038所输出的信号为同一频率,所以在此将只用到第一组D/A转换器。

输入给D/A转换器的数据来源有3种:第一种是从键盘获得的需要产生的波形的频率;第二种是单片机内部存储的波形数据;第三种是来自于外部信号存储于AT24C02存储器中的波形数据。本程序均可将其完好的转换成模拟信号。

猜你喜欢

键盘波形单片机
你知道手机拨号键盘上为什么要有*和#吗?
键盘猫
对《压力容器波形膨胀节》2018版新标准的理解及分析
基于单片机的SPWM控制逆变器的设计与实现
Cлово месяца
ikbc R300机械键盘
基于单片机的层次渐变暖灯的研究
基于单片机的便捷式LCF测量仪
基于LFM波形的灵巧干扰效能分析
基于ARM的任意波形电源设计