标题:
红外人流量计数程序(数码管显示)
[打印本页]
作者:
CJ_Z
时间:
2019-1-6 17:07
标题:
红外人流量计数程序(数码管显示)
做课设可以用的红外人流计数
单片机源程序如下:
#include<AT89x51.H>
sbit led1 =P2^0;
sbit led2 =P2^1;
sbit led3 =P2^2;
sbit led4 =P2^3;
unsigned code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管断码
unsigned code dis[] ={0xfe,0xfd,0xfb,0xf7}; //扫描数码管客值
unsigned char disbuff[5]={0}; //显示缓存
unsigned char i =0; //定义扫描数码管字数
unsigned int count1=0; //计左电机码盘脉冲值
/************************************************************************/
//显示数码管字程序
void Display_SMG(void)
{
if(++i>=4)i=0;
P0=table[disbuff[i]];
if(i==0)
{P2_0=0;P2_1=1;P2_2=1;P2_3=1;}
if(i==1)
{P2_0=1;P2_1=0;P2_2=1;P2_3=1;}
if(i==2)
{P2_0=1;P2_1=1;P2_2=0;P2_3=1;}
if(i==3)
{P2_0=1;P2_1=1;P2_2=1;P2_3=0;}
}
/***************************************************/
///*TIMER0中断服务子函数产生PWM信号*/
void timer0()interrupt 1 using 2
{
TH0=0XF8; //1Ms定时
TL0=0X30;
Display_SMG(); //中断服务子程序扫描数码管
}
/***************************************************/
void main(void)
{
TMOD=0X01;
TH0= 0XF8; //1ms定时
TL0= 0X30;
TR0= 1;
ET0= 1;
EA = 1;
count1=0; //初始化人数为1
disbuff[0]=count1/1000;
disbuff[1]=count1%1000/100;
disbuff[2]=count1%1000%100/10;
disbuff[3]=count1%1000%100%10;
while(1) /*无限循环*/
{
if(P2_7==0)
{
while(!P2_7);
count1++;
if(count1>=9999) //计到99归零
count1=0;
disbuff[0]=count1/1000;
disbuff[1]=count1%1000/100;
disbuff[2]=count1%1000%100/10;
disbuff[3]=count1%1000%100%10;
}
}
}
复制代码
所有资料51hei提供下载:
53.红外人流量计数(数码管显示).rar
(11.34 KB, 下载次数: 32)
2019-1-6 17:06 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2019-1-13 00:38
补全原理图或者详细说明一下电路连接即可获得100+黑币
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1