一种基于AT89C51低频信号源的设计2010-07-2716:47:20作者:梁巧艳杨会彩杜延军樊延虎来源:现代电子技术关键字:信号源单片机D/A转换低噪声函数信号发生器是一种常用的信号源,它广泛地应用在电子技术实验。目前常用的函数信号发生器,一般可靠性较差,准确度较低,难以满足科研和高精度实验的需要。现用单片机和支持软件及其外设电路构成的智能函数信号发生器,采用编程的方法来实现波形,将产生波形的程序用子程序的形式编写,在需要波形时再调用相应子程序,经过D/A转换、运算放大器处理后,作为该信号源输出,其线路简捷、功能强大、性价比较高。1主要芯片介绍1.1AT89C51单片机芯片1.1.1引脚图本文采用的单片机芯是AT89C51,它是采用高速CMOS制造工艺,通用型为40脚双列直插封装方式,其引脚如图1所示。只要将+5V电源接到VCC和VSS两端,将晶振接到XTAL1和XTAL2两端,给EA端加高电平控制电压,然后将机器码固化到AT89C51内就可以使用了。1.1.2单片机基本功能单片机基本系统即单片机正常工作不可缺少的部分,进行设计都要在此系统基础上进行。(1)外接晶振引脚XTAL1与XTAL2单片机之所以要加振荡器是因为单片机内的CPU在执行指定程序时,要经过“取指”、“译码”,再定时给相关电路发出控制信号,以实现“机器码指令”所要求的功能。这就要求内部必须有一个基准时钟。可通过外接晶振或振荡信号二种方式来实现,一般采用外接晶振的方法较方便。XTAL1(19),XTAL2(18)为外接晶振的两个引脚。接入晶振时,还要接入两个20~30pF的瓷片电容C1,C2,晶振频率因单片机工作速度而异,IntelMCS-51系列为1.2~12MHz,ATMEL89C系列为0~24MHz,目前常采用6MHz,11.059MHz和12MHz。石英晶振起振后,XTAL2(18)脚有一个3V左右的正弦波。C1,C2短路、晶振不良,AT89C51(18),(19)脚内部反相器会损坏。VCC电源未加上等故障可能造成晶振不起振,使单片机无法工作。当采用外部振荡器时,信号接入(19)脚,(18)脚悬浮。振荡器的12分频为一个机器周期,当外接12MHz晶振时,一个机器周期为1μs。MCS-51大多数指令为一个机器周期。(2)复位与复位电路单片机必须进行复位,是因为单片机内的CPU“取指”过程即为CPU从PC指针所指定的程序存储器ROM地址单元中读取“机器码”的过程。单片机加电后,PC指针应指向ROM中某个固定的单元,当然,程序开始的第一条指令也应放在ROM的这一地址单元内,这样整个程序才能有序地执行。这个单元就是ROM的0000H单元。只有上电复位正常后,PC值才为0000H,即指向ROM的0000H单元。此外,专用寄存器SFR中的SP为07H,即指向片内数据存储器(片内RAM)07H单元,P0~P3值为0FFH,其余的专用寄存器值大多为00H。复位的方法:当振荡器正常工作时,RST(9)脚上出现的两个机器周期的高电平将使单片机有效复位。考虑到振荡器有一定的起振时间,该引脚必须保持10ms以上高电平,才能有效复位。复位电路有开机自动复位和手动复位。注意:复位信号为2个以上机器周期的高电平,单片机复位后正常工作时应该为低电平,如果未加复位电平或复位后复位电平仍未撤除,则单片机不能正常工作,此时,可检查RST电压及相关器件。在掉电期问RST/VPD引脚如接入备用电源VPD(5V±0.5V),则可保存片内数据。当VCC下降到某一规定值时,VPD便向片内RAM供电。(3)EA/VDD片内程序存储器选用端单片机复位后,PC指针可能指向片内ROM0000H或片外ROM0000H单元,这取决于EA/VDD(31)脚外接高电平(指向片内ROM0000H)还是低电平(指向片外ROM0000H)。AT89C51内部有4kBROM,这时EA(31)脚需外接高电位VCC。在编程期间,此引脚作编程电压VDD的输入端。1.2关于DAC0832DAC0832是具有20条引脚的双列直插式COMS器件,它内部具有两级数据寄存器,完成8位电流D/A转换。其结构框图及信号引线如图2所示。以下是其三种不同的工作方式:(1)直通方式将WR1,WR2,XFER,CS接地,ILE接高电平,就能使得两个寄存器的输出跟随输入的数字量变化,DAC0832的输出也同时跟随变化。直通方式常用于连续反馈控制的环路中。(2)单缓冲方式单缓冲方式就是将其中一个寄存器工作在直通状态,另一个处于受控的锁存器状态。在实际应用中,如果只有一路模拟量输出,或虽有几路模拟量但并不要求同步输出,就可采用单缓冲方式。(3)双缓冲方式所谓双缓冲方式就是将两个寄存器都处于受控的锁存方式。为了实现两个寄存器的可控,应当给它们各分配一个端口地址,以便能按照端口地址进行操作。D/A转换采用两步写操作来完成。可在DAC0832转换输出前一个数据的同时,将下一个数据传送到输入寄存器,以提高D/A转换速度。还可用于多路数模转换系统,以实现多路模拟信号同步输出的目的。在所设计的电路中DAC0832采用的是单缓冲方式。2原理概述单片机通过扩展D/A转换接口,结合灵活的程序可以方便地产生各种低频信号。下面以正弦信号为例进行说明。2.1正弦波信号的产生原理正弦波的产生比较特殊,它不能由单片机直接产生,它只能产生如图3所示的阶梯波来向正弦波逼近。很显然,在一个周期内阶梯波的阶梯数目越多,单片机输出的波形也就越接近正弦波。先假定正弦波的振幅是2.56V,则波谷对应的数字量为最小值00H,波峰对应的数字量为最大值FFH。将正弦波的第一个周期的波形按角度均分为若干等份,并计算出各点对应的电压值,电压值计算方法:Vx=2.5·(1+sinθ),因为00H~FFH对应的数字量为0~255,所以根据算出的电压就可直接写出各点所对应的数字量。单片机将一个周期的数字量存入一定的存储区域中,然后依次循环取出这些数字量,并送D/A电路转换成阶梯波,即近似的正弦波输出。所输出的正弦波的幅值可以通过D/A转换电路实现。2.2变频原理单片机产生的阶梯逼近正弦波对应的程序中加入了软件延时,最后再加入根据20H单元中的内容进行延时的延时程序,那么20H单元中的内容一变,则输出正弦波的频率也就发生了变化。即:就是把一个正弦信号(阶梯逼近)取样、量化、编码,形成一个正弦函数表储存在了ROM中。合成时改变相位增量,由于相位增量不同,则一个周期内的取样点数也不同,从而达到频率合成的目的。正弦信号本身是非线性的,而其相位是线性的,如图4所示。因此,每隔一段时间△t(时钟周期),有对应的相位变化△p,即:p=ω△t=2πf△t从上式可以得到合成信号的频率f为:3系统硬件设计其系统硬件原理图如图5所示。3.1单片机选择本系统中使用AT89C51单片机。电路板上的EA引脚可利用跳线接电源,也可接地。因此,在此管座上可以插AT89C51,AT80C31等芯片。3.2D/A转换电路DAC0832与单片机的连接中对主要功能信号的处理方法如下:图中DAC0832与AT89C51的连接方式是单缓冲方式。这种单缓冲方式是DAC0832的两个缓冲器同时受控,将CS与XFER相连受控于AT89C51的P2.0信号,WR1和WR2相连受控于AT89C51的WR信号,由于P2.0连至DAC0832的CS,故该片的地址为FEFFH(无关位取“1”)。3.3开关的功能和应用由于本设计中要用按键控制波形输出,现将各按键说明如下:K0~K4分别与AT89C51的P1.0~P1.4相连,依次控制着锯齿波、方波、三角波、梯形波、正弦波的产生。通过对51单片机进行D/A转换接口扩展,通过对INT0端设置按钮改变20H单元中的内容以调整频率,利用中断与查询相结合的方式进行波形选择,具体可以通过对P1口来设置完成。例P1.0为锯齿波信号选择开关,当加上电源后,自动复位电路开始工作,单片机开始工作。当K0键按下,即想要输出锯齿波时,P1.0为低电平,扫描程序调用锯齿波子程序,产生的数字信号送DAC0832进行数模转换,其输出经运算放大电路后输出锯齿波。4软件设计4.1主程序流程图程序流程图如图6所示。4.2正弦波的流程图及子程序4.2.1流程图流程图如图7所示。4.2.2子程序5结语该信号源的设计是以MCS-51单片机和DAC0832为核心元件,结合较简捷的外围电路来构建低频信号源。它能产生三角波、正弦波等5种信号,本设计采用硬件和软件相结合,电路较传统的简单且操作方便,具有一定的参考价值。