微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于51单片机控制的数字气压计设计与实现

基于51单片机控制的数字气压计设计与实现

时间:12-28 来源:互联网 点击:

部分以及一个中断源、一个定时器和一个计数器。因此,笔者选用了ATMEL的AT89C2051单片机,该器件与89C51兼容,具有2kB的可重复编程闪存,2.7V~6V的工作电压范围,128Byte的内部RAM以及两个I/O口(P1,P3)、2个16位的计数器/定时器和6个中断源,并可直接驱动LED输出,同时带有可编程的串行通讯口。另外,该单片机还具有体积小,价格低等特点。

3.4 LED显示

单个LED是由7段发光二极管构成的显示单元。有10个引脚,对应于7个段、一个小数点和两个公共端。在显示电路中,这些发光二极管有两种接法:共阳极接法和共阴极接法。本设计中需要用4个LED组成显示单元,并采用动态显示方式。由于使用4个单个LED进行显示的连线比较复杂,同时单片机的端口驱动能力也难以保证,而需要加入专门的驱动芯片。所以,笔者采用了4个LED连体的、内部已将其相应段接好的共阳极LED,它具有12个引脚,含7个段和4个公共端,为提高数码管的亮度,可在位选线上加入一个三极管驱动电路。

由AT89C2051控制的显示电路如图3所示。该显示电路需要选取合适的电阻R和Ra,才能保证LED的亮度,过大或者过小都无法让LED正常显示。设计时取R为4.7kΩ?Ra为510Ω比较理想。若考虑印制板布线的方便,可以采用贴片电阻和排阻来节省空间。另外,也可以用74LS244和74LS06构成驱动显示电路,但这样同样要加限流电阻。因为74LS06是开漏器件,需要在输出处加上拉电阻。

4 软件实现

通过以上设计,便可通过fo来计算P的大小以得到实时的气压值。硬件电路设计完成之后,可使用AEDK5196PH仿真器的仿真环境进行仿真,并可用C51语言来编写处理程序。其基本程序流程如图4所示。

程序设定:T0为定时器,基本的定时时基为50ms。T1为计数器,运用内部中断0可保证T0定时满500 ms后就读取此时计数器的值,以计算气压值。如使T1、T0均工作于方式1,并在P1口送字型码,同时可用P3.0~P3.3做位选线,那么,其相应的函数如下:

(1)定时器T0中断函数:

void timer0(void) interrupt 1 using 1

{uint x, y;

uint count_ pluse;

ET0=0; //关闭T/C0中断

Tcount++; //中断次数

if?Tcount == 10){

TR1=0; //停止计数器计数

Tcount=0;

x=TH1;

y=TL1;

count_pulse=(x*256+y)*2;

ph=(uint)(10 * ((float)(count pulse+1520)/105.9? ?? //计算气压值

TH1 = 0x00;  //重设计数初值

TL1=0x00;

}

TH0 = -50000/256; //重设50ms初值

TL0 = -50000%256;

if(TL0!= 0) TH0--;

ET0=1;

TR1=1;

return;

}

该中断函数主要用于完成脉冲的读取和气压值的计算。ph是个全局变量,可用来保存气压值。

(2)在显示函数里,将气压值先按位进行分离并保存到数组,然后送段码和相应位选就可以显示出相应的气压值了。具体程序如下:

void display(uint ph_in)

{ uchar i=0;

uchar j=0;

uchar select_bit=0; //位选

do {

cur_buf[i]=ph_in%10;

i++;

j=i;

}while(ph_in=ph_in/10);? //当高位为零时?结束循环

i=0;

select_bit=0xfe;

do

{ P1=tab[*p];

P3=select_bit;

dl_ms();?

select_bit=(select bit<<1)+1;

//从最右边一位开始显示,循环左移

p++;

i++;

}while(i<j);

p=cur_buf; //指针归位

return;}

这样,在主程序中,只要在程序第一次运行时进行初始化,然后再循环调用显示函数即可实现实时显示功能。

5 结束语

笔者曾用纯硬件电路设计过气压计。实践表明,由于受温度的影响及硬件参数的限制,实时显示时稳定性较差,并且精确度不高。而改用V/F变换信号及编程的方法实现该测量则完全克服了上述缺点。结果表明:该方法具有精度高、稳定性好、功能易于扩展等优点,可为仪器及电子产品设计提供一种新的思路。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top