#include
unsigned char const dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0123456789
unsigned char code seg[]={0,1};//分别对应相应的数码管点亮
////////////////////////////////////////////////////////
void delay(unsigned int cnt)
{
while(--cnt);
}
///////////////////////////////////////////////////////
void xianshi(int n)
{int i,j;
if(n<=9)
{P0=dofly[n];//取显示数据
P2=seg[0]; //取段码
}
else
{ i=n/10;j=n%10;
P0=dofly;//取显示数据
P2=seg[0]; //取段码
delay(200);
P0=dofly[j];//取显示数据
P2=seg[1]; //取段码
}
}
sbit LED=P3^3;//红外发射
sbit LED1=P1^2;
sbit IR=P3^2;//红外一体化接收
bit Flag;
void Init_Timer0(void)
{
TMOD |= 0x01;
TH0=0xf0; /* Init value */
TL0=0x00;
EA=1; /* interupt enable */
ET0=1; /* enable timer0 interrupt */
TR0=1;
}
void Timer0_isr(void) interrupt 1 using 1
{
TH0=0x0f; /* Init value */
TL0=0x00;
Flag=!Flag;
}
main()
{
int n=1;
unsigned int j;
Init_Timer0();
while(1)
{
if(LED1==1)
{
if(Flag)
{
for(j=0;j<27;j++)//大约38KHz
led="!LED;//发射管输出
" }
if(LED1==0) n++;
}
xianshi(n);
led1="IR;//读取一体化接收头数值
"
if(Flag)
{
for(j=0;j<27;j++)//大约38KHz
led="!LED;//发射管输出
"
}
}
}
用两个数码管记录车流量,但是当当着接收器的时候还是无法计数,请高手帮忙!~ |