基于单片机控制的数字气压计设计与实现
[09-12 17:47:56] 来源:http://www.88dzw.com 单片机学习 阅读:8116次
文章摘要: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_
基于单片机控制的数字气压计设计与实现,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com4 软件实现
通过以上设计,便可通过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++; //中断次数
ifTcount == 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变换信号及编程的方法实现该测量则完全克服了上述缺点。结果表明:该方法具有精度高、稳定性好、功能易于扩展等优点,可为仪器及电子产品设计提供一种新的思路。
《基于单片机控制的数字气压计设计与实现》相关文章
- › 基于单片机的直接数字频率合成器的设计
- › 基于单片机P89C61X2的FPGA配置
- › 基于单片机的直流调速系统设计
- › 基于单片机仿真器的设计
- › 基于单片机和DSP的被动声目标探测平台设计
- › 基于单片机的电子导游系统设计
- 在百度中搜索相关文章:基于单片机控制的数字气压计设计与实现
- 在谷歌中搜索相关文章:基于单片机控制的数字气压计设计与实现
- 在soso中搜索相关文章:基于单片机控制的数字气压计设计与实现
- 在搜狗中搜索相关文章:基于单片机控制的数字气压计设计与实现