標(biāo)題:
小弟想用51檢測方波的頻率,這個程序運行起來沒錯誤,可是檢測不出來
[打印本頁]
作者:
15764219299
時間:
2014-8-4 09:59
標(biāo)題:
小弟想用51檢測方波的頻率,這個程序運行起來沒錯誤,可是檢測不出來
//用51單片機檢測方波的頻率
#include<reg51.h>
#include"lcd.h"
void TimerConfiguration();
void LcdDisplay();
void IntConfiguration();
unsigned char Time;
unsigned char count;
unsigned char shu[4];
/*******************************************************************************
* 函 數(shù) 名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void main(void)
{
LcdInit();
TimerConfiguration();
count=0;
IntConfiguration();
while(1)
{
if(Time==20)
{
LcdDisplay();
count=0;
Time=0;
}
}
}
void TimerConfiguration()
{
TMOD = 0x01; //選擇工作方式1
TH0 = 0x3C; //設(shè)置初始值,定時50MS
TL0 = 0xB0;
EA = 1; //打開總中斷
ET0 = 1; //打開定時器0中斷
TR0 = 1; //啟動定時器0
}
void Timer0() interrupt 1
{
TH0 = 0x3C; //設(shè)置初始值
TL0 = 0xB0;
Time++;
}
void IntConfiguration()
{
EX0 = 1; /* 開外部中斷0 */
IT0 = 1; /* 脈沖觸發(fā) */
EA = 1; /* 開總中斷 */
}
void Int0() interrupt 0
{
count++;
}
void LcdDisplay()
{
unsigned char a,b,c;
shu[0]=count/1000;
a=count%1000;
shu[1]=a/100;
b=a%100;
shu[2]=b/10;
c=b%10;
shu[3]=c;
LcdWriteCom(0x80);
LcdWriteData('0'+shu[0]&0x0f);
LcdWriteData('0'+shu[1]&0x0f);
LcdWriteData('0'+shu[2]&0x0f);
LcdWriteData('0'+shu[3]&0x0f);
}
作者:
xiaojuan
時間:
2014-8-4 16:36
開發(fā)版的光盤里面有現(xiàn)成的程序。而且有兩個,一個是用中斷測量的,一個是用計數(shù)器來測的
作者:
15764219299
時間:
2014-8-5 18:35
xiaojuan 發(fā)表于 2014-8-4 16:36
開發(fā)版的光盤里面有現(xiàn)成的程序。而且有兩個,一個是用中斷測量的,一個是用計數(shù)器來測的
找到了。。。。謝謝!
作者:
xiaojuan
時間:
2014-8-5 20:18
是數(shù)碼管顯示的
作者:
a110
時間:
2014-8-21 22:32
用中斷和定時器測量頻率的話 ,應(yīng)該不能測量很高的吧!,不過這個方法很簡單 還是不錯的
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1