386563mahongwei0721基于8051直流数字电压表的设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

积分式直流数字电压表的设计摘要:在不采用专用A/D转换器芯片的前提下设计积分式直流数字电压表,设计采用压频(V/F)变换器LM331将预处理后的电压转化成相应的频率,通过单片机80C51测得频率,经过压频变换的线性度比例软件处理后LED显示。预处理部分采用了程控放大器PGA100对不同的信号放大满足线性度要求。为了节省端口,LED驱动显示采用SPI接口芯片HD7279A。关键字:LM331;80C51;PGA100;HD7279AAbstract:ByconvertingpreprocessedvoltageintofrequencyusingV/FconverterLM331,thefrequencyisobtainedbymicroprocessor80C51,afterV/FconversionlinearproportionalsoftwaredisposingvoltagedisplaysonLED,aintegraldirectdigitalvoltmeterisdesignedwithoutA/Dconverterchip.PGA100whichmeetthedemandofdifferentsignalisusedinpreprocesspart.Tosaveports,SPIinterfacechipHD7279AisusedinLEDdisplaydrive.Keywords:LM331;80C51;PGA100;HD7279A一、设计的总体结构框图二、信号预处理——程控增益放大器PGA100A5A4A3增益A2A1A0通道0001000IN00012001IN10104010IN20118011IN310016100IN4信号预处理PGA100V/F变换LM33180C51F译码驱动HD7279ALED显示UiVi图1PGA100引脚图表1增益与通道选择方式为了提高测量的精度,智能化控制仪表应能自动转换量程。而且为了使不同信号输入LM331时都必须满足其线性度要求,对不同信号选择不同的放大增益。所以信号预处理必须选用程控增益放大器来实现。采用程控放大器后,可通过单片机反馈控制来改变放大器的增益,对幅值小的信号采用大增益,对幅值大的信号采用小增益,使进入V/F转换器的信号满量程达到均一化。程控放大器的反馈回路包含有一个精密梯形电阻网络或权电阻网络,使其增益可按二进制或十进制的规律进行控制。一个具有3条增益控制A5、A4、A3线的增益放大器,具有8种可能的增益。PGA100是一种多路输入的程控放大器芯片,它将多路转换输入和程控放大增益集中在一个芯片内,这对于小信号多路数据采集系统来说特别适用。PGA100的主要特性是增益线性度高,非线性小,稳定时间短,通道之间干扰小,有8个二进制的增益控制(*1*2*4*8*16*32*64*128)。其图1所示为PGA100引脚排列,引脚A0-A2用来选择输入通道,引脚A4-A5用来选择增益,选择方式如表1所示。图中通道选择由P1.1~P1.3决定,放大倍数选择由P1.4~P1.6决定。CP上升沿使最新设置的通道号与增益生效。10132101IN511064110IN6111128111IN7三、电压—频率转换V/F转换技术是A/D转换的另一种形式,其作用是把模拟量变成频率。伴随半导体技术的发展,V/F变换器的性能不断提高,成本越来越低,其价格不足普通A/D转换器的二十分之一,在低速数据采集系统中,是一种既简单又便宜的A/D转换电路。V/F变换器电路选择性能价格比良好的LMX31系列中的LM331芯片用做V/F变换器。LM331的动态范围宽1HZ~100KHZ;线性度好,最大非线性失真小于0.01%。工作频率低到11Hz时尚有较好的线性;变换精度高,数字分辨率可达12bit;外接电路简单,只需接入几个外部元件就可方便构成V/F变换电路,并且容易保证转换精度。LM331引出脚8个,能够在单一+5V电源下工作。此外,LMX31系列采用温度补偿基准电路,在电源电压波动的情况下工作稳定,且在允许的温度范围内精度—温度特性可达65010/℃,LMX31系列芯片典型应用引脚连接图如图2所示。LM331内部由输入比较器、定时比较器、R2S触发器、输出驱动管、复零晶体管、能隙基准电路、精密电流源电路、电流开关、输出保护管等部分组成。由图可知,LMX31系列芯片的基本应用电路可由外接少量电阻、电容组成。输入模拟信号inV与xV在输入比较器中进行比较,若inVxV则启动单脉冲定时器,接通开关电流源并使频率输出晶体管导通。定时器的周期为:T=1.1tR*tC在此周期中,电流源向LC充电,充电电流为I,xV上升,当inVxV时,电流源关闭,定时器复位,LC经LR放电直到inVxV为止,而后比较器再次启动定时器,进入下一个循环。由于LC的平均充电电流I=ti*outf,流出LC的电流xV/LRxV/inV,故V/F转换器可在一定的频率范围内使其输出频率与输入电压保持线性关系。由公式I=ti*outf=xV/LR,可得outf=I/ti=1.9*inV/(1.1LRtRtC)=inVsR/2.09LRtRtC,式中,sR,LR,tR为精密电阻(线绕电阻);tC为高稳定性电容(聚酯膜电容)。取tC=0.01F,tR=6.8k,LR=100k,sR=15k时,由上式可得:outf=1000inV。可得:当inV=1mV时,outf=1HZ;当inV=2V时,outf=2000HZ,线性度可达0.01%。图2LM331内部电路及典型应用引脚连接图四、LM331与单片机的连接LM331芯片与外围电路可以实现V/F转换,模拟信号经压/频转换器LM331,把电压信号转化为脉冲信号,脉冲信号送到单片机的计数/定时端口,由80C51单片机对频率信号进行接收、处理、储存。由于压/频转换器LM331的压/频转换关系成线性,所以我们可以根据采集到频率数据知道模拟信号的大小,从而实现了模拟信号到数字信号的转换。频率计数器、定时器可以使用80C51单片机的计数/定时端口,通过软件编程实现。基准频率、数据处理也是通过软件编程实现,数据可以储存到内部或外部数据存储器中。如图3所示为LM331与单片机80C51组成A/D转换的接口电路。用80C51内部T1做计数器,T0做定时器,将LM331的频率输出端通过三极管接口接到80C51的T1(P3.5)端。LM331与单片机80C51组成作A/D转换器时,其最大脉冲计数和定时器的定时时间取决于系统所要求的系统分辨率。如果要求分辨率是12位,则脉冲数为122=4096个。因为本系统设计要求最高输入2V电压,则输入脉冲2000HZ,其脉冲周期为0.5ms,所以定时时间为0.5ms*4096=2.048s。依次类推,设计要求在2V档时分辨率是1mV,可得A/D转换的分辨率是11位的,所以确定定时时间T=112*0.5ms=1.024s。在实际设计中,为了消除干扰在输入端7端子上接了RC低通滤波电路,电容Cin=0.1uF,电阻Rin=100K,滤波器的截止频率F0为:012ininfRC=16HZ。所以此系统在理论上不能测量1.6mV以下的电压,符合系统10mV~2V量程要求。图3LM331与单片机的连接五、数码显示电路图4DH7279A与LED接线原理图如图4所示,DH7279A芯片实现LED显示器与单片机的串行连接,本次设计选择性价比良好的DH7279A做数码管接口芯片,它是具有串行接口,可同时驱动8位共阴式数码管或64个LED发光管的智能显示驱动芯片,还可连接多达64键的键盘矩阵,单片即可完成LED显示及键盘接口的全部功能,其特点主要包括串行接口,无需外围元件可直接驱动LED;各位独立控制译码/不译码及消隐和闪烁属性;具有段寻址能力,方便控制独立LED;64键键盘控制器,内含去抖动电路。此外,DH7279A内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式。本次设计中选择芯片DH7279A为译码方式0工作方式,在图中数码管位选信号由DH7279A芯片DIG3—DIG0控制,因此对应的位选控制指令为83H—80H。此外DH7279A的段驱动输出接数码管对应的段码。六、软件设计系统软件设计包括三部分:量程选择、频率测量、数据处理、数据显示。由于程控放大器的放大倍数要根据实际的采样值大小而定,当刚开始采样时,PGA100无法确定需要放大多少倍。如果放大倍数过小容易产生较大误差,从而失去意义;放大倍数过大,容易超量程而产生错误结果所以,为了确定具体的放大倍数,必须根据第1次的V/F转换值由80C51来确定PGA100的放大倍数。因此,程序设计采用由80C51控制,进行两次V/F转换的方法。并以第2次V/F转换的结果为准,这样做也可以消除系统偶然误差。首先假设选择放大倍数为1,启动转换测得Fout,若Fout2000HZ,则Vin2000mV,显示超量程标志;若200HZFout2000HZ,则200mVVin2000mV。放大倍数不变,重新测量得到Fout,数据处理后,选择用0~2V量程显示,单位为V,小数点后面三位。若Fout200HZ,则选择放大倍数为8,重新测量得到Fout,数据处理后,选择用0~200mV量程显示,单位为mV,最高位显示0。对于PGA100,当送给PGA100的通道字出现在数据线上时,输入到该芯片18脚的CP脉冲上升沿把通道字及增益字锁存在PGA100内部的锁存器中。于是通道字和增益字设置结束。关于频率测量部分,LM331输出端Fout连接80C51的T1口,对其脉冲个数计数得到N,内部定时器T0进行定时,为了满足系统要求的分辨率1mV,定时时间T设为1.024s,T1开始计数,同时T0开始计时。计时时间到读出计数值N。则频率值Fout=N/T。单片机80C51采用6MHZ的晶振,T0工作于方式1时,其最大定时时间为131.072ms。若要求更长的定时时间,可利用T0产生溢出中断,再用片内RAM单元作软件计数器对溢出中断计数,扩展定时时间。现要定时1.024s大于方式1最大定时时间,可以采用定时器方式1定时102.4ms,软件计数10次来实现。整体流程图如图5所示:图5软件流程图定时器T0计数器T1及中断初始化子程序Init():voidInit(void){TMOD=0x51;TL0=0;TH0=0x38;TL1=0;TH1=0;EA=1;ET0=1;}PGA100初始化子程序PGAInit():voidPGAInit(void){P11=0;P12=0;P13=0;//设置通道号选IN0P14=0;P15=0;P16=0;PGA=1;//设置增益为1}定时器T0中断服务子程序Timer0():voidTimer0(void)interrupt1using1{uchari;i=i+1;if(i=10)flag=1;TL0=0;TH0=0x38;}写HD7279A控制芯片子程序write7279():voidwrite7279(unsignedcharcmd,unsignedcharcmd){send_byte(cmd);send_byte(data);}voidsend_byte(unsignedchardata){unsignedcharI;P02=0;long_delay();for(i=0;i8;i++){if(data&0x80)P01=1;elseP01=0;P00=1;short_delay();P00=0;data=data*2;}}超量程显示子程序flow_display():voidflow_display(void){write7279(0x83,0x0c);//显示千位write7279(0x82,0x0c);//显示百位write7279(0x81,0x0c);//显示十位write7279(0x80,0x0c);//显示个位write7279(0x88,0xff);/

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功