|
做課設(shè)可以用的紅外人流計(jì)數(shù)
單片機(jī)源程序如下:
- #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}; //數(shù)碼管斷碼
- unsigned code dis[] ={0xfe,0xfd,0xfb,0xf7}; //掃描數(shù)碼管客值
- unsigned char disbuff[5]={0}; //顯示緩存
- unsigned char i =0; //定義掃描數(shù)碼管字?jǐn)?shù)
- unsigned int count1=0; //計(jì)左電機(jī)碼盤脈沖值
- /************************************************************************/
- //顯示數(shù)碼管字程序
- 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中斷服務(wù)子函數(shù)產(chǎn)生PWM信號(hào)*/
- void timer0()interrupt 1 using 2
- {
- TH0=0XF8; //1Ms定時(shí)
- TL0=0X30;
- Display_SMG(); //中斷服務(wù)子程序掃描數(shù)碼管
- }
- /***************************************************/
- void main(void)
- {
- TMOD=0X01;
- TH0= 0XF8; //1ms定時(shí)
- TL0= 0X30;
- TR0= 1;
- ET0= 1;
- EA = 1;
- count1=0; //初始化人數(shù)為1
- disbuff[0]=count1/1000;
- disbuff[1]=count1%1000/100;
- disbuff[2]=count1%1000%100/10;
- disbuff[3]=count1%1000%100%10;
- while(1) /*無限循環(huán)*/
- {
- if(P2_7==0)
- {
- while(!P2_7);
- count1++;
- if(count1>=9999) //計(jì)到99歸零
- count1=0;
- disbuff[0]=count1/1000;
- disbuff[1]=count1%1000/100;
- disbuff[2]=count1%1000%100/10;
- disbuff[3]=count1%1000%100%10;
- }
- }
- }
-
復(fù)制代碼
所有資料51hei提供下載:
53.紅外人流量計(jì)數(shù)(數(shù)碼管顯示).rar
(11.34 KB, 下載次數(shù): 32)
2019-1-6 17:06 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|