|
轉(zhuǎn)速測量,在仿真中等價于測量外部脈沖頻率
修改輸入脈沖的頻率,在數(shù)碼管上可實時顯示當(dāng)前頻率!
單片機(jī)計數(shù)測速仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (20.9 KB, 下載次數(shù): 81)
下載附件
2017-12-19 20:17 上傳
0.png (14.34 KB, 下載次數(shù): 58)
下載附件
2017-12-19 20:17 上傳
單片機(jī)源程序如下:
- /*********************************************************************
- 功能:霍爾傳感器測速,霍爾傳感器的信號輸出腳接T1(P3.5)引腳
- 測量范圍;假設(shè)轉(zhuǎn)盤只有一個磁鋼,轉(zhuǎn)速低于10r/S則顯示0,高于655360r/s則計數(shù)溢出(一般應(yīng)用不會超出此限)
- *******************************************************************/
- #include <reg51.h>
- #define N 1//轉(zhuǎn)盤上所安裝的磁鋼個數(shù)
- sbit DLed1=P2^0;//定義第一位數(shù)碼管"位選"控制線的別名
- sbit DLed2=P2^1;//定義第二位數(shù)碼管"位選"控制線的別名
- sbit DLed3=P2^2;
- sbit DLed4=P2^3;
- unsigned int speed=0;//最后的轉(zhuǎn)速值
- unsigned int count=0;//在指定時間內(nèi)記到的外部脈沖數(shù)
- unsigned char k=0;
- unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- void disp(unsigned char x1,unsigned char x2,unsigned char x3,unsigned char x4);//子函數(shù)前向聲明
- /*********************************
- 函數(shù)名稱:void delay1ms(unsigned int k)
- 功能:延時子函數(shù)
- 入口參數(shù):延時時長
- 返回值:無
- **********************************/
- void delay1ms(unsigned int k)
- {
- unsigned char n,m;
- for(m=0;m<k;m++)
- {for(n=0;n<115;n++);}
- }
- //===================主函數(shù)
- void main()
- {
- unsigned char n;
- //EA=0;
- TMOD=0x51;//0101 0001,T1純軟件啟動,計數(shù)模式,工作方式1;T0純軟件啟動,定時模式,工作方式1
- TH0=0x3c;//12M晶振,定時50ms
- TL0=0xb0;
- ET0=1;//開啟定時0中斷
- EA=1;//開啟總中斷
- TR0=1;//同時啟動定時與計數(shù)
- TR1=1;
- while(1)
- {
- speed=count/N;//結(jié)果為:x轉(zhuǎn)/s,注意防止其越界
- for(n=20;n>0;n--)//穩(wěn)定顯示一陣
- {
- disp(speed/1000,speed%1000/100,speed%100/10,speed%10);
-
-
- }
- TR0=1;//再次啟動定時和計數(shù)功能,為下一次的測量作準(zhǔn)備
- TR1=1;
- }
-
- }
- /*********************************
- 函數(shù)名稱:
- 功能:T0中斷處理函數(shù)
- 說明:定時時間到,則關(guān)閉定時器,取出計數(shù)值
- 入口參數(shù):
- 返回值:
- **********************************/
- void int0_fun() interrupt 1
- {
- k++;
- TH0=0x3c;//重載定時器T0初值
- TL0=0xb0;
- if(k>=20)//100ms的定時時間到
- {
- TR0=0;
- TR1=0;
- count=TH1*256+TL1;
- TH1=0x00;//清除計數(shù)值
- TL1=0x00;
- k=0; //清除標(biāo)志變量
- }
- }
- /********************************
- 功能:顯示函數(shù)
- 四位數(shù)碼管的顯示函數(shù)
- 段選:P1
- 位選:P20-P23
- 注意:采用的共陽數(shù)碼管
- ***************************/
- void disp(unsigned char x1,unsigned char x2,unsigned char x3,unsigned char x4)
- {
- DLed1=1;DLed2=0;DLed3=0;DLed4=0;//送位碼,只讓第一位數(shù)碼管顯示
- P1=tab[x1];//送段碼
- delay1ms(10);//延時
- P1=0xff;//關(guān)閉
-
- //----掃描顯示第二位數(shù)碼管------
- DLed1=0;DLed2=1;DLed3=0;DLed4=0;
- P1=tab[x2];
- delay1ms(10);
- P1=0xff;
- //----掃描顯示第三位數(shù)碼管------
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
計數(shù)測速.rar
(57.92 KB, 下載次數(shù): 397)
2017-12-19 15:09 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|