|
給你一個(gè)。用89C51單片機(jī)制作了一個(gè)頻率計(jì)
用計(jì)數(shù)器1對(duì)外部頻率信號(hào)進(jìn)行計(jì)數(shù)1.jpg (147 KB, 下載次數(shù): 37)
下載附件
2022-12-17 15:48 上傳
- /****************************************************
- 名稱:頻率計(jì),用8位數(shù)碼管顯示
- 說明:用計(jì)數(shù)器1對(duì)外部頻率信號(hào)進(jìn)行計(jì)數(shù),用定時(shí)器0每隔
- 一秒查詢計(jì)數(shù)器1的累計(jì)值,就是信號(hào)頻率。
- 89c52 主頻11.0592M 在開發(fā)板上測(cè)試通過
- ****************************************************/
- #include <REGX52.H>
- #include "SMG.h"
- unsigned long num; // 儲(chǔ)存計(jì)算頻率值
- unsigned char T1_count; //計(jì)數(shù)器1計(jì)滿65536的次數(shù)
- void init()
- {
- TMOD = 0x51;// 0101 0001
- TH0 = 0x4c;// 初值=65536 - 11.0592/12*50000;定時(shí)50ms
- TL0 = 0x00;
- PT0 = 1;
- EA = ET1 = ET0 =1;
- TR0 = TR1 = 1;
- TI = 1;
- }
- void main()
- {
- init();
- while(1)
- {
- smgxs8w(num); //數(shù)碼管顯示8位數(shù)
- }
- }
- void T1_int() interrupt 3 //計(jì)數(shù)65536次觸發(fā)一次
- {
- T1_count++;
- }
- void T0_int() interrupt 1 //50ms觸發(fā)一次
- {
- static unsigned char T0_count;
- TR1 = 0;
- TH0 = 0x4c;//定時(shí)50ms
- TL0 = 0x13; //理論值0x00,實(shí)測(cè)0x13最準(zhǔn)
- if(++T0_count == 20) //達(dá)到1秒
- {
- num = T1_count *65536 + TH1*256+TL1;
- TH1 = TL1 = 0;
- T1_count = 0;
- T0_count = 0;
- }
- TR1 = 1;
- }
復(fù)制代碼
|
|