|
基于單片機(jī)的轉(zhuǎn)速測(cè)量系統(tǒng)設(shè)計(jì) 介紹了一種基于AT89C51單片機(jī)平臺(tái),采用光電傳感器實(shí)施電機(jī)轉(zhuǎn)速測(cè)量的方法,硬件系統(tǒng)包括脈沖信號(hào)產(chǎn)生、脈沖信號(hào)處理和顯示模塊,并采用C語(yǔ)言編程,結(jié)果表明該方法具有簡(jiǎn)單、精度高、穩(wěn)定性好的優(yōu)點(diǎn)。介紹了該測(cè)速法的基本原理、實(shí)現(xiàn)步驟和軟硬件設(shè)計(jì)。
原代碼: - #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- uint mm=1234;
- uchar code table[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};
- delay(uint m)
- { uint i,j;
- for(i=m;i>0;i--)
- for(j=60;j>0;j--);
- }
- xian_shi()
- { uchar qian,bei,shi,ge;
- uint jj;
- jj=mm;
- jj*=20;
- //jj+=1;
- qian=jj/1000;
- bei=jj%1000/100;
- shi=jj%100/10;
- ge=jj%10;
- P2=0x10;
- P0=table[qian];
- delay(1);
- //P2=0;
- P2=0x20;
- P0=table[bei];
- delay(1);
- //P2=0;
- P2=0x40;
- P0=table[shi];
- delay(1);
- //P2=0;
- P2=0x80;
- P0=table[ge];
- delay(1);
- //P2=0;
-
- }
- timer_init() //定時(shí)器計(jì)數(shù)器初始化函數(shù)
- { EA=1;
- ET0=1;
- ET1=1;
- TMOD=0X51;
- TH0=(65535-50000)/256;
- TL0=(65535-50000)%256;
- TH1=0;
- TL1=0;
- TR0=1;
- TR1=1;
- }
- main()
- {
- timer_init();
- P0=0; //開(kāi)始數(shù)碼管不顯示
- while(1)
- {
- xian_shi();
- delay(2); //數(shù)碼管刷新時(shí)間單位毫秒
- }
- }
- void timer0() interrupt 1
- { TR0=0;
- TR1=0;
- TH0=(65535-50000)/256;
- TL0=(65535-50000)%256;
- mm=0;
- mm|=TH1;
- mm=(mm<<8)|TL1;
- // mm-=55536;
- TH1=0;
- TL1=0;
- TR0=1;
- TR1=1;
- }
- void timer1() interrupt 3 //顯示0000說(shuō)明出錯(cuò)
- { TR1=0;
- TR0=0;
- mm=0;
- // TH1=0;
- // TL1=0;
- // TR1=1;
- }
復(fù)制代碼
全部資料(壓縮包)下載:
測(cè)速.rar
(333.16 KB, 下載次數(shù): 52)
2016-6-4 19:32 上傳
點(diǎn)擊文件名下載附件
|
|