|
通過霍爾元件對(duì)電機(jī)的轉(zhuǎn)速進(jìn)行監(jiān)測(cè)并用數(shù)碼管顯示轉(zhuǎn)速
同時(shí)使用定時(shí)器,計(jì)數(shù)器
其中用定時(shí)器 0.1s的定時(shí) 滿10個(gè)0.1s 也就是1s一共計(jì)數(shù)的電機(jī)在轉(zhuǎn)速顯示
單片機(jī)程序代碼如下:
- #include<reg52.h>
- xdata unsigned char OUTBIT _at_ 0x8002;
- xdata unsigned char OUTSEG _at_ 0x8004;
- unsigned char LEDBuf[6],a,b,tmp;
- unsigned char tap3,tap4,tap5;
- code unsigned char LEDMAP[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- void Delay (unsigned char CNT) //延時(shí)函數(shù)
- {
- unsigned char i;
- while(CNT--!=0)
- for(i=100;i!=0;i--);
- }
- void DisplayLED() //數(shù)碼管顯示函數(shù)
- {
- unsigned char i;
- unsigned char Pos;
- Pos=0x20;
- for(i=0;i<6;i++)
- {
- OUTBIT=0;
- OUTBIT=Pos;
- OUTSEG=LEDBuf[i];
- Pos>>=1;
- Delay(10);
- }
- }
- void main()
- {
- TMOD=0X15; //定時(shí)器和計(jì)數(shù)器設(shè)置
- TH1=0x3c;
- TL1=0XB0;
- ET0=1;
- EA=1;
- TH0=0;
- TL0=0;
- TR0=1;
- IT0=1;
- EX0=1;
- ET1=1;
- TR1=1;
- while(1)
- {
- tap3=tmp/100; //轉(zhuǎn)BCD碼
- tap4=(tmp%100)/10;
- tap5= tmp%10;
- LEDBuf[0]=LEDMAP[tap3]; //數(shù)碼管顯示
- LEDBuf[1]=LEDMAP[tap4];
- LEDBuf[2]=LEDMAP[tap5];
- LEDBuf[3]=LEDMAP[0];
- LEDBuf[4]=LEDMAP[0];
- LEDBuf[5]=LEDMAP[0];
- DisplayLED();
- }
- }
- void T0init()interrupt 3 //定時(shí)器中斷
- { a++;
- if(a==10)
- {
- tmp=TH0*256+TL0;
- TH1=0x3c;
- TL1=0XB0;
- TH0=0;
- TL0=0;
- a=0;
- }
- }
復(fù)制代碼 |
評(píng)分
-
查看全部評(píng)分
|