资讯详情

基于51单片机的波形发生器的设计

1引言

1.1主题要求及分析

题目:基于51单片机的波形发生器设计,即51单片机控制产生正弦波、方波、三角波等多种波形。.1.1示意图

6e740a063c4226747e7aba726853868a.png

图1:系统流程示意图

1.2设计要求

(1) 该系统具有三种周期性波形:正弦波、三角波和方波。

(2) 上述三种波形(同周期)的产生由键盘控制,以及由基波及其谐波(5次以下)线性组合的波形。

(3) 该系统具有存储波形的功能。

(4) 系统输出波形的频率范围为1Hz~1MHz,重复频率可调,频率步进间隔≤100Hz,非正弦波的频率按10次谐波计算。

(5) 系统输出波形范围0~5V。

(6) 该系统具有显示输出波形类型、重复频率和振幅的功能。

2波形发生器系统设计方案

波形信号发生器的设计和制作可以产生正弦波、方波和三角波波,不使用DDS以及一些特殊的波形生成芯片。让系统的频率范围在1Hz~1MHZ频率范围为1HZ~10KHz步进小于或等于10Hz,频率范围为10KHz~1MHz步进小于或等于100Hz,而且电压为0~5V范围可实时显示波形的类型、频率和振幅。2.1方案设计理念

以AT89C51单片机是系统控制的核心,其中P0口接DAC0832同时转换数模作为信号输入。P一口用来接键盘,P2口接LED显示器,由程序来控制P0口产生的波形由按键和按键次数控制,并通过按键控制波形频率值和振幅值。操作放大器DAC0832实现输出电流向电压的转换,即数字信号向模拟信号的转换。另外在LED实时频率值和振幅值显示在上面,波形显示在示波器中。并通过按钮确定波形数据的存储模式。按下按钮后,存储当时波形对应的范围值、频率值等参数。

波形合成:在波形合成中,通过外部中断高低电平延迟时间解码,在采样中,正弦波、三角波、方波只有20个采样点,因为采样点越少,频率越大,合成是振幅值叠加输出一组波形。.2设计框图及系统介绍

设计框图如下图所示:

图2:框图设计

2.3选择合适的设计方案

方案1:模拟分立元件或单片函数发生器可产生正弦波、方波和三角波,方法简单。输出频率的变化也可以通过调整外部元件来实现,但模拟元件的分散性太大,导致频率稳定性差、抗干扰性低、灵活性差、精度低,无法实现任何波转换和波操作输出的独立控制功能。

方案2:采用专业的相频率合成方案。这种锁相频率合成是一种高稳定性、高精度的大量离散技术。它能准确产生波形,很好地解决频率稳定性和精度要求频率在较大范围内可调的问题。但是频率受VCO可变频率范围的影响,高低频率比不能很高,只能产生正弦波或方波,不能满足三角波的要求。

方案三:采用AT89C51单片机和数模转换器DAC0832实现波形的产生。产生波形的方法是使用AT89C51单片机执行波形程序DAC在0832转换器的输入端输入相应的数据DA转换电路输出端,然后通过输出电路转换得到相应的电压波形。在AT89C51的P1口接按钮控制波形的类型和频率,每个波形对应一个按钮模式。该方案原理简单,适合操作,相对容易实现。

相比之下,方案3的设计可以更好地实现和完成主题的要求。产生的三种波形和频率可以由按钮控制,不同的波形可以通过按钮换,所需的波形也可以显示在示波器上。波形的频率步进也可以实现调节,具有线路简单、可行性高、符合设计要求等优点。在本设计的基础上,加上LED数字显示管可以在LED频率值和幅度值信息显示在上面。输出波形也比较稳定,精度高,通过滤波电路增强了系统的抗干扰性,电路简单,性价比高。综上所述,我们选择了第三种方案。

3主硬件电路及器件介绍

3.180C51单片机

图3:8051引脚图

80C51单片机按功能分为8个部件:微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、四个I/O口(P0口、P1口、P2口、P3口)、串行口、定时器/计数器、中断系统和特殊功能寄存器(SFR)集中控制模式[1]。

介绍各功能部件:

(1) 数据存储器(RAM):片中有128个字节单元,片外最多可扩展到64K字节。用于存储数据,我们称之为电影中的数据存储器。

(2) 程序存储器(ROM/EPROM):片内ROM为4K,片外最多可扩展至64K字节。

(3) 中断系统:5级中断系统,2级中断优先。

(4) 定时器/计数器:2个16位定时器/计数器,有四种工作方式。

(5) 串行口:全双工串行通信接口,有四种工作方式。

(6) 特殊功能寄存器(SFR)每个寄存器,每个寄存器占一个存储单元。

(7) 微处理器:8位CPU,内部有8位CPU(位处理器)不仅可以处理字节数据,还可以处理位变量。

此外,还有四个8位双向并行输入/输出(I/O)每个端口有八条引线、一个输出驱动器和一个输入缓冲器。这四个端口的功能并不完全相同。P0口可以做一般I/O端口也可用作地址/数据总线;P一口是准双向并行口,作为一般并行口I/O口使用;P除了可以作为通用I/O除了使用,还可以CPU高八位地址线用于访问外部存储器;P三口多功能口除具有准双向功能I/O除功能外,还具有第二功能。

控制引脚介绍:

(1) 电源:单片机使用5V电源,其中40引脚正级,20引脚接地。

(2) 时钟引脚XTAL1、XTAL2小时引脚外接晶体与片内相反的放大器形成振荡器,产生片内CPU时钟控制信号。此引脚还可与晶体振荡器外接。

(3) RST:当时钟电路开始工作时,24个时钟周期以上的高电平可以使单片机复位。此外,我们在这里引脚VCC连接24兆欧的下拉电阻,连接外部电路之间的两个36微电容,以确保有效的复位。当单片机正常工作时,引脚应为≤0.5V低电平。

(4) ALE:访问外部程序存储器时ALE输出脉冲用于16位地址中低8位的锁定信号(地址锁定允许)P0口重用地址/数据。不访问外部锁存器时,ALE时钟频率正脉冲信号输出为1/6,约为时钟振荡器的1/6。但在两个机器周期中,每当访问外部数据存储器时ALE只出现一次,即ALE会跳过脉冲。因此,严格地说,用户不能使用它ALE时钟源或定时。ALE可驱动8个端TTL负载

(5) /PSEN(29脚)ROM存储器的读取通信号。执行访问片以外ROM的MOVC在指令期间,每个机器周期PSEN在片外产生负脉冲ROM选择数据存储器,这两次有效/PSEN没有信号。其他情况下,/PSEN线均为高电平封锁状态。

(6) /EA/VPP(31脚):当EA端保持高电平时,程序地址小于4KB读取内部存储器指令,但在PC值超过4KB在程序地址中执行外部存储器中的程序;当/EA保持低电平时,无论地址大小,只访问外部程序存储器,读取外部程序存储器指令[2]。

3.2DAC0832

图4:DAC0832引脚图

DAC0832是8分辨率的D/A集成电路中有两级输入寄存器的转换芯片。锁存器由8位输入DAC 寄存器、8 位D/A 由转换器和转换控制电路组成。存储主机发送的数字量,使输入数字得到缓冲和锁定,并进行控制。DAC0832输出为电流,一般要求输出为电压,因此必须通过外部操作放大器转换为电压[3]。DAC0832芯片有三种输入方式:双缓冲、单缓冲和直通,以满足各种电路的需要(如需要多路)D/A异步输入、同步转换等)。

DAC0832的引脚功能如下:

(1) D0~D7.数字信号输入端。

(2) ILE:允许输入寄存器,高电平有效。

(3) CS:选片信号,低电平有效。

(4) WR1.写信号1,低电平有效。

(5) XFER:低电平有效地传输控制信号。

(6) WR2.写信号2,低电平有效。

(7) IOUT1、IOUT2:DAC电流输出端。

(8) RFB:反馈电阻集成在电影中。

(9) VREF:基准电压(-10~10)V)。

(10) Vcc:是源电压( 5~ 15V)。

(11) AGND:模拟地 NGND:数字地,可和AGND一起使用.3数码显示管

数码管显示是通过控制7个笔画段的亮度或暗度以及控制一个小数点的亮度和暗度来实现的。LED 共阴极和共阳极2显示器 种形式。共阳极显示器是发光二极管的阳极连接在一起。当需要显示一个字符时,只需将共阳极端连接到一个高电平,并根据显示需要允许a-h在某些位置连接低电平。共阴极显示器是发光二极管的阴极连接在一起,当需要显示字符时,只需将共阴极端连接到低电平,a-h 一些位接高电平即可。

显示器的工作模式分为静态显示模式和动态显示模式:

(1) 静态显示是指显示器在显示字符时,相应的发光二极管恒定导通或截止,如a、b、c、d、e、f导通,g截止日期显示0,使显示器显示字符的字形数据通常称为段数据。每个七段显示器的静态显示模式需要一个8 并行控制位置。优点是显示稳定,提高了工作效率。缺点是当位数较大时,显示口会增加。

(2) 动态显示方式是一位一位的轮流点亮各位显示器,对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数可以实现亮度较高较稳定的显示,如显示器的位数不大于8位,则控制显示器公共极的电位只需要一个8位口(位数据口),控制字形也需要一个8位口(段数据口)。要使显示管显示不同的数字或者字符,需要使端口输出相应的字型码

4 系统的硬件设计

4.1 硬件原理框图

对于该波形发生器的设计,我们采用了以AT89C51 单片机芯片作为核心处理器,编程实现各种不同类型信号的产生,最后通过D/A转换输出到示波器。结构简单,思路井井有条。根据设计的基本要求,我们又把其细分为不同的功能模块,各个功能模块相互联系,相互协调,通过单片机程序构成一个统一的整体。其整体电路原理框图如图5 所示:

图5:电路原理框图(见附件)

4.2 89C51系统设计

89C51单片机是该波形发生器的核心,具有2个定时器,32个并行I/O口,1个串行I/O口,5个中断源[4]。由于本设计功能简单,数据处理容易,数据存储空间也足够,因为我们采用了片选法选择芯片,进行芯片的选择和地址的译码。在单片机最小系统中,单片机从P1口接收来自键盘的信号,并通过P0口输出控制信号,通过DA转换芯片最终由示波器显示输出波形,P2控制显示器段选码,P3口中的P3.4-P3.6通过74LS138译码器控制位选码,输出显示信息。如果有键盘按下,则在控制器端产生一个读信号,使单片机读入信号,如果有信号输出,则在写控制端产生一个写信号,并通过示波器和显示器显示相应的信息。

单片机引脚分配如下:

RST:用于复位电路;

XTAL1,XTAL2:外接晶振,产生时钟信号;

P0 口:键盘输出信号。

P1 口:8 位数字信号输出,外接DAC0832; 具体为:P1.0、P1.1 波形选择;P1.2、P1.3、P1.4 频率个位,十位,百位调节;P1.5 频率加减控制;P1.6 跳出循环。

P2 口:LED 显示器段选码;

P3 口:P3.0 锁存器74HC573 片选信号;P3.2 中断控制;P3.4-P3.6 为74LS138 输入信号,译码控制LED 显示器位选。P3.7 为74LS138 片选码。4.3 时钟电路

单片机的时钟信号通常用两种电路形式得到:内部振荡和外部振荡方式。在引脚XTAL1 和XTAL2 外接晶体振荡器,构成了内部振荡方式。由于单片机内部有一个高增益的反相放大器,当外接晶振后,就构成了自激振荡,并产生振动时钟脉冲。晶振通常选用6MHZ、12MHZ、24MHZ。我们选择了24MHZ和晶振分别接引脚XTAL1 和XTAL2,电容C1,C2 均选择为30pF,对振荡器的频率有稳定作用,当频率较大时,正弦波方波、三角波中每一点的延时时间为几微秒,故延时时间还要加上指令时间才能获得较大的频率波形。

图6:时钟电路

4.4 复位电路

复位引脚RST 通过一个施密特触发器与复位电路相连,施密特触发器用来抑制噪声。复位电路通常采用上电自动复位和按钮复位两种方式。在每个机器周期的S5P2,施密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。本设计选择了按键复位如图7, 在系统运行时,按一下开关,就在RST 断出现一段高电平,使图6 时钟电路图器件复位。此时ALE、PSEN、P0、P1、P2、P4 输出高电平,在RST 上输入返回低电平以后,就退出复位状态开始工作。

图7:按键复位4.5 键盘接口电路

常用的键盘电路一般为矩阵式,但是对于此设计,为了方便程序的简单化,我们采用了一般的键盘接口输出信号。具体实现方法:P1.0、P1.1用来作为波形选择,其中当P1.0=0,P1.1=0 输出正弦波,当P1.0=0,P1.1=1 输出三角波,当P1.0=1,P1.1=1 输出方波。P1.2、P1.3、P1.4 用来作为频率个位,十位,百位调节;P1.5 控制频率加减;P1.6 跳出循环。

图8:键盘接口电路

4.6 LED显示电路

本设计选择了8位共阴极数码管如图9,它的8个发光二极管的阴极(二极管正端)连接在一起,通常公共阴极接低电平,其它管脚接驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的位置导通电流,还需根据外接电源及额定位置导通电流来确定相应的限流电阻。显示电路用于显示信号的波形种类和信号的频率,并且使系统能根据按键实时显示相关信息。该系统中添加74LHC573 锁存器,用于驱动数码显示管,使其更易于控制,增加显示的准确性。使用74LS138 译码器,利用P3.4-P3.6 控制数码管的位选。

1

图9:数码管显示电路

4.7 数模转换器

由于单片机输出的是数字信号,因为要得到模拟信号的波形就必须对其进行数模换。我们采用了DAC0832 数模转换器,该芯片由8 位输入锁存器、8 位DAC 寄存器、8 位D/A 转换器及转换控制电路四部分构成。由于其输出为电流输出,因为外加运算放大器OP07 使之装换为电压输出。最后通过示波器显示输出的波形。

图10:D/A转换电路

5 系统软件设计

5.1 流程图:

图11:流程图(见附件)

5.2 产生波形图

本设计将各种波形的数据通过P1.0 口和P1.1 口选择,送往在单片机的程序储存器里,通过改变信号的频率的个位,十位,百位来改变这个频率,然后计算其技术初值,开启中断,通过改变D/A 转换器输出波形。5.2.1 正弦波

图12:仿真正弦波

正弦波程序如下:

void zhengxuanbo()

{

uint k=0;

while(1)

{

P0=table[k++];

delay(t);

xianshiqi(t);

if(k==182)

{

k=0;

}

if(s5==0)

{

t=t+1;

}

if(s6==0)

{

t=t-1;

}

}

}5.2.2 三角波

产生三角波的原理:三角波产生是通过P0口将00H送入寄存器A中,DAC0832输出A中的内容,通过A中数值的加1递升,同时延时,当A中的内容为0FF时,A中的内容减1递减,从而循环产生三角波[5]。

图13:仿真三角波

三角波程序:void sanjiaobo()

{

uint j=0;

while(1)

{

P0=j;

delay(t);

j=j+1;

P0=j;

delay(t);

xianshiqi(t);

if(j==256)

{

if(j!=0)

{

j=j-1;

P0=j;

delay(t);

xianshiqi(t);

if(s5==0)

{

t=t+1;

[1] [2]

标签: 5脚带开关电位器4k7式数字变送器j95组合式连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台