C51基于51单片机的简易频率计(附代码无需外设小白简单易上手)
Posted 阿汪先生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C51基于51单片机的简易频率计(附代码无需外设小白简单易上手)相关的知识,希望对你有一定的参考价值。
基于51单片机的简易频率计(无需外设、小白简单易上手)
代码较为简单,大概思路是通过定时器单位时间内外部中断上升沿触发的次数来计算实际频率。
/基于51单片机的简易频率计
#include<reg51.h>
#include<intrins.h>
#include <math.h>
#define uchar unsigned char
#define uint unsigned int
sbit P11=P1^1;
uchar code table[]=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; //七段显示0到9
/// 0 1 2 3 4 5 6 7 8 9 //无小数点
uchar code LEDcode01[]=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; //七段显示0到9
/ 0 1 2 3 4 5 6 7 8 9 //有小数点
uchar date1=0,date2=0,date3=0,date4=0;
uint count=0,time_count=0,sum=0;
int H,L;
void aaa(void);
void delay(n);
void initial();
void delayms(uint t)
uint a;
for(;t>0;t--)
for(a=0;a<200;a++); //延时函数
void initial() //定时器初始化
TMOD |=0x12; //使用模式2,16位定时器
TH0=0x06; // 0.25ms
TL0=0x06;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
EX0 = 1;
IT0 = 1;
H=0Xfe;
L=0X14;
// TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH1=0xfe; //重新赋值,方式1是16位计数器,不能硬件重装初始值
TL1=0x14; //定时0.01ms
// EA=1; //总中断打开
ET1=1; //定时器中断打开
TR1=1; //定时器开关打开
EX1=1;
IT1=0;
// PX0=1;
// PX1=1;
void input() interrupt 0
count++;
void timer0() interrupt 1
time_count++;
if(time_count==4000)
sum=count;
time_count=0;
count=0;
void Timer0_isr(void) interrupt 3 using 1
TH1=H; //重新赋值,方式1是16位计数器,不能硬件重装初始值
TL1=L;
P11=!P11;
void Key_INT1(void) interrupt 2 using 2
delayms(800);
H=H;
L=L+10;
/* if(L<256)
H=H;
L=L+10;
else if(L>256)
H=0xff;
L=L-256+10;
else if(H=0xff && L>0x14)
H=0xfe;
L=0x14;
*/
void aaa(void) //共阳极数码管显示函数,注意小数点使用table1数组
char qian,shi,ge,bai;
qian=sum/1000;
bai=(sum%1000)/100;
shi=(sum%100)/10;
ge=(sum%10); //取百分位
P2=0x17; //片选
P0=table[ge];
delay(1);
P0=0xff; //段选
P2=0x1b;
P0=table[shi];
delay(1);
P0=0xff;
P2=0x1d;
P0=table[bai];
delay(1);
P0=0xff;
P2=0x1e;
P0=table[qian];
delay(1);
P0=0xff;
void delay(int n) //延时函数,大概1ms左右
int m,d;
for(m=92;m>0;m--)
for(d=n;d>0;d--);
main()
initial() ;
while(1)
aaa() ;
//阿汪先生的博客.ws
以上是关于C51基于51单片机的简易频率计(附代码无需外设小白简单易上手)的主要内容,如果未能解决你的问题,请参考以下文章
基于80C51单片机,编写电子时钟,要求有电路图、PCB图和代码(C语言或者VB)
我想用C51单片机的定时器0工作方式2输出一个PWM。它的频率要怎么设置???