保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

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


上设计,便可通过fo来计算P的大小以得到实时的气压值。硬件电路设计完成之后,可使用AEDK5196PH仿真器的仿真环境进行仿真,并可用C51语言来编写处理程序。其基本程序流程如图4所示。
  
  程序设定:T0为定时器,基本的定时时基为50ms。T1为计数器,运用内部中断0可保证T0定时满500ms后就读取此时计数器的值,以计算气压值。如使T1、T0均工作于方式1,并在P1口送字型码,同时可用P3.0~P3.3做位选线,那么,其相应的函数如下:
  
  (1)定时器T0中断函数:
  
  voidtimer0(void)interrupt1using1
  
  {uintx,y;
  
  uintcount_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)(countpulse+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)在显示函数里,将气压值先按位进行分离并保存到数组,然后送段码和相应位选就可以显示出相应的气压值了。具体程序如下:
  
  voiddisplay(uintph_in)
  
  {uchari=0;
  
  ucharj=0;
  
  ucharselect_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=(selectbit<<1)+1;
  
  //从最右边一位开始显示,循环左移
  
  p++;
  
  i++;
  
  }while(i<j);
  
  p=cur_buf;//

《基于单片机控制的数字气压计设计与实现(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/175848.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。