欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
發(fā)一個(gè)3位小數(shù)的單片機(jī)頻率計(jì)程序備忘
[打印本頁]
作者:
風(fēng)158
時(shí)間:
2022-1-13 11:31
標(biāo)題:
發(fā)一個(gè)3位小數(shù)的單片機(jī)頻率計(jì)程序備忘
利用外中斷記錄脈沖數(shù),利用T0記錄秒數(shù),f=總脈沖數(shù)/總秒數(shù),每10秒更新一次,1000秒后可以精確到3位小數(shù),用于檢測32768Hz晶振。
根據(jù)檢測結(jié)果,在晶振電路中可串并合適的電容微調(diào)頻率,提高走時(shí)精度。
單片機(jī)源程序如下:
//利用外中斷記錄脈沖數(shù),利用T0記錄秒數(shù),f=總脈沖數(shù)/總秒數(shù)
//每10秒更新一次,1000秒后可以精確到3位小數(shù),用于檢測32768Hz晶振
#define MAIN_Fosc 11059200L //定義主時(shí)鐘
#include<reg52.h>
//#include "STC90.H"
#include "INTRINS.H"
#include "Delayms.h"
#include "lcd1602.h"
#define uchar unsigned char
#define uint unsigned int
sbit COUNT_IN=P3^2;
unsigned long count=0,pul;
unsigned long f=0,t10s=0;
unsigned int ms50=0;
//bit flag;
void init()
{
IT0=1; //INT0負(fù)跳變觸發(fā)
TMOD &= 0xF0; //清定時(shí)器0
TMOD |= 0x01; //定時(shí)器0:16位定時(shí)器
TH0=0x4c; //11.0592Mhz50ms
TL0=0x00;
ET0=1;//開定時(shí)中斷
EX0=1;//開外部INTO中斷
TR0=1;//啟動(dòng)定時(shí)
// EA=1; //CPU開中斷總允許
}
void EXINT0() interrupt 0
{
count++; //脈沖數(shù)累加
}
void time0() interrupt 1
{
TH0=0x4c;
TL0=0x00; //50ms11.0592Mhz
ms50=ms50+1; //累計(jì)50毫秒數(shù)
if (ms50>=200) //設(shè)定10秒刷新時(shí)間,200*50ms=10s
{
t10s++; //10秒累加
ms50=0;
pul=count;
// flag=1; //10秒時(shí)間到標(biāo)志
}
}
void display_1602_plj(void)
{
DisplayOneChar(0,0,'P');//標(biāo)題
DisplayOneChar(1,0,'i');
DisplayOneChar(2,0,'n');
DisplayOneChar(3,0,'L');
DisplayOneChar(4,0,'v');
DisplayOneChar(5,0,'J');
DisplayOneChar(6,0,'i');
//DisplayOneChar(7,0,' ');
DisplayOneChar(8,0,'t'); //累計(jì)秒數(shù)
DisplayOneChar(9,0,':');
if(t10s>=1000)
{DisplayOneChar(11,0,t10s%10000/1000+48);}
if(t10s>=100)
{DisplayOneChar(11,0,t10s%1000/100+48);}
if(t10s>=10)
{DisplayOneChar(12,0,t10s%100/10+48);}
if(t10s>=1)
{DisplayOneChar(13,0,t10s%10+48);}
DisplayOneChar(14,0,'0');
DisplayOneChar(15,0,'S');
if(f>=100000000) //頻率
{DisplayOneChar(0,1,f%1000000000/100000000+48);}
if(f>=10000000)
{DisplayOneChar(1,1,f%100000000/10000000+48);}
if(f>=1000000)
{DisplayOneChar(2,1,f%10000000/1000000+48);}
if(f>=100000)
{DisplayOneChar(3,1,f%1000000/100000+48);}
if(f>=10000)
{DisplayOneChar(4,1,f%100000/10000+48);}
DisplayOneChar(5,1,f%10000/1000+48);
DisplayOneChar(6,1,'.');
DisplayOneChar(7,1,f%1000/100+48);
DisplayOneChar(8,1,f%100/10+48);
DisplayOneChar(9,1,f%10+48);
DisplayOneChar(10,1,'H');
DisplayOneChar(11,1,'z');
}
void main()
{
Delayms(255); //上電延時(shí)
Delayms(255); //上電延時(shí)
Delayms(255); //上電延時(shí)
Delayms(255); //上電延時(shí)
init();
Delayms(50); //上電延時(shí)
InitLcd(); //液晶初始化
display_1602_plj();
EA=1; //CPU開中斷總允許
while(1)
{
if (t10s>=1) //10秒取樣時(shí)間到
{
f=pul*100/t10s; //頻率=脈沖個(gè)數(shù)/時(shí)間,3位小數(shù)
display_1602_plj();
}
}
}
復(fù)制代碼
51hei.png
(6.95 KB, 下載次數(shù): 87)
下載附件
2022-1-14 07:37 上傳
附件內(nèi)只包含Keil代碼下載:
89c52 lcd1602頻率計(jì)3位小數(shù).rar
(48.68 KB, 下載次數(shù): 11)
2022-1-13 11:30 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1