发 帖  
原厂入驻New
[diy求助]

传感器的应用

2014-6-11 16:01:43  1713
分享
单片机传感器一个10ms的脉冲波(低电平0.32ms) 传感器接受到脉冲波后开始检测PM2.5,输出的模拟电压给ADC0809 ,经ADC0809 转换后通过数码管显示
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
uchar code seg7code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};   //段码
uchar wei[4]={0Xfe,0Xfd,0Xfb,0Xf7};   //位码
sbit out=P3^7;                //输出波形 端口
sbit CLK=P1^4;
sbit OE =P1^5;
sbit EOC=P1^6;
sbit START=P1^7;               
uint counter=0;
uchar ADC0809,dat=0;
void delay(uchar t)
{
uchar i;
while(t--)
for(i=10;i>0;i--);
}
void Init_t0()       //定时器初始化
{
TMOD |=0X01;
TH0   =(65536-320)/256;
TL0   =(65536-320)%256;
EA    = 1;
ET0   = 1;
TR0   = 1;
}
void xianshi()        //显示函数
{
uchar x,y,z,v;
  z=dat/1000;
   y=dat%1000/100;
    x=dat%100/10;
   v=dat%10;
   P1=wei[0];
  P0=seg7code[z];
  delay(50);  
    P1=wei[1];
     P0=seg7code[y];
  delay(50);  
     P1=wei[2];
     P0=seg7code[x];
  delay(50);  
     P1=wei[3];
     P0=seg7code[v];
  delay(50);  
}  
void main()
{
uchar dat;
Init_t0();
while(1)
{
  IF(counter<1)
   out=0;
  else
   out=1;
  if(counter>31)
  {
   out=0;
   counter=0;         
  }
  START = 0;        //ad转换
  START = 1;
  START = 0;
  while(!EOC)
  OE = 1;
  ADC0809 = P2;
  OE = 0;
  dat = ADC0809*20;
  xianshi();

}
}                     
void  interrupt_t0() interrupt 1       //定时函数
{
counter++;
TH0   =(65536-320)/256;
TL0   =(65536-320)%256;
}
QQ图片20140611155858.jpg
求大神支招
0
2014-6-11 16:01:43   评论 分享淘帖

只有小组成员才能发言,加入小组>>

105个成员聚集在这个小组

加入小组

创建小组步骤

快速回复 返回顶部 返回列表