標(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