📄 频率计.c
字号:
/*******************************************************
频率计,可测量1HZ~65KHZ的频率,晶振频率为11.0592MHZ
********************************************************/
#include<reg52.h>
unsigned int n=0;
unsigned int pinlv=0;
unsigned int a1=0;//万位
unsigned int a2=0;//千位
unsigned int a3=0;//百位
unsigned int a4=0;//十位
unsigned int a5=0;//个位
unsigned int b;
unsigned char c; //定义一个无符号字符型c
unsigned char char1[10]={0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9};//char1[10]={10110000,10110001,...,10111001}
unsigned char char2[10]={0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9};//char2[10]={11000000,11000001,...,11001001}
unsigned char char3[10]={0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9};
unsigned char char4[10]={0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9};
unsigned char char5[10]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9};
void time0() interrupt 1//中断源1 “interrupt 1”:定时器0溢出中断
{
TH0=0xdc;//TH0=220=1101 1100
TL0=0x00;//TL0=0=0000 0000
n++;
if(n==100)//判断n=100则计算频率值
{
n=0;
pinlv=TH1*256+TL1;//计算频率值
TH1=0;
TL1=0;
a5=pinlv%10;//个位
b=pinlv/10;
a4=b%10;//十位
b=b/10;
a3=b%10;//百位
b=b/10;
a2=b%10;//千位
a1=b/10;//万位
}
}
void main()
{
TMOD=0x51;//TMOD=0101 0001设置定时计数器,T1计数,T0定时
EA=1;//开总中断
ET0=1;//T0允许中断
TH0=0xdc;//TH0=220=1101 1100
TL0=0x00;//TL0=0=0000 0000
TH1=0;
TL1=0;
TR0=1;//启动定时器T0
TR1=1;//启动定时器T1
while(1)//条件为真,一直执行while语句
{
c=char1[a1];
P0=c;//P0口输出(万位)
c=char2[a2];
P0=c;
c=char3[a3];
P0=c;
c=char4[a4];
P0=c;
c=char5[a5];
P0=c;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -