标题:
基于51单片机的数字频率计源码 最大能测60KHz
[打印本页]
作者:
Obligation
时间:
2018-3-23 17:59
标题:
基于51单片机的数字频率计源码 最大能测60KHz
基于51单片机的数字频率计
本程序是一个数字频率计,最大能测60KHz
单片机源程序如下:
#include<reg52.h>
#include<intrins.h>
#include"lcd.h"
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
unsigned char code ASCII[15] = {'0','1','2','3','4','5','6','7','8','9','H','Z',};
uint time_count,count,sum;
uint dis[6];
void initial(void);
void display(); //LCD显示程序
void main()
{
InitLcd1602(); //LCD1602初始化
initial(); //定时器初始化
while(1)
{
display();
}
}
void initial() //定时器初始化
{
count=0;
time_count=0;
sum=0;
TMOD=0x02; //定时器0工作方式2
TH0=0x06; //定时器初值250US
TL0=0x06;
IT0=1; //外部中断0,下降沿有效
EA=1;
ET0=1;
EX0=1;
TR0=1;//开中断
}
void int0() interrupt 0 //外部中断0,每个下降沿计数一次就是一个信号周期
{
count++;
}
void timer0() interrupt 1
{
time_count++;
if(time_count==3690) //计数一秒,因为11.0592MHZ晶振,所以值不为4000,而是3690
{
sum=count; //一秒的下降沿的次数和即为频率
time_count=0; // 250us的次数清零
count=0; //下降沿次数清零
//display();
}
}
void display()
{
dis[0]=sum/10000;//万位
dis[5]=sum%10000;
dis[1]=dis[5]/1000; //千位
dis[5]=dis[5]%1000;
dis[2]=dis[5]/100; // 百位
dis[5]=dis[5]%100;
dis[3]=dis[5]/10; // 十位
dis[4]=dis[5]%10; // 个位
DisplayOneChar(0, 1, ASCII[dis[0]]); //显示万位
DisplayOneChar(1, 1, ASCII[dis[1]]); //千位
DisplayOneChar(2, 1, ASCII[dis[2]]); //百位
DisplayOneChar(3, 1, ASCII[dis[3]]); //十位
DisplayOneChar(4, 1, ASCII[dis[4]]); //个位
DisplayOneChar(8, 1, ASCII[10]); //显示H
DisplayOneChar(9, 1, ASCII[11]); //显示 Z
}
复制代码
所有资料51hei提供下载:
频率.rar
(33.09 KB, 下载次数: 36)
2018-3-23 17:56 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2018-5-2 01:01
能分享个原理图吗?
作者:
1508104726
时间:
2018-5-21 10:00
能分享个原理图吗
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1