6位数显频率计数器,Digital frequency meter
关键字:频率计,计数器,频率计制作,频率计电路,计数器电路,89S51
1.实验任务
利用AT89S51单片机的T0、T1的定时计数器功能,来完成对输入的信号进行频率计数,计数的频率结果通过8位动态数码管显示出来。要求能够对0-250KHZ的信号频率进行准确计数,计数误差不超过±1HZ。
2.电路原理图
利用AT89S51单片机的T0、T1的定时计数器功能,来完成对输入的信号进行频率计数,计数的频率结果通过8位动态数码管显示出来。要求能够对0-250KHZ的信号频率进行准确计数,计数误差不超过±1HZ。
2.电路原理图
3.系统板上硬件连线
(1).把“单片机系统”区域中的P0.0-P0.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。
(2).把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。
(3).把“单片机系统”区域中的P3.4(T0)端子用导线连接到“频率产生器”区域中的WAVE端子上。
4.程序设计内容
(1).定时/计数器T0和T1的工作方式设置,由图可知,T0是工作在计数状态下,对输入的频率信号进行计数,但对工作在计数状态下的T0,最大计数值为fOSC/24,由于fOSC=12MHz,因此:T0的最大计数频率为250KHz。对于频率的概念就是在一秒只数脉冲的个数,即为频率值。所以T1工作在定时状态下,每定时1秒中到,就停止T0的计数,而从T0的计数单元中读取计数的数值,然后进行数据处理。送到数码管显示出来。
(2).T1工作在定时状态下,最大定时时间为65ms,达不到1秒的定时,所以采用定时50ms,共定时20次,即可完成1秒的定时功能。
5.C语言源程序
#include
unsigned char code dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
unsigned char dispbuf[8]={0,0,0,0,0,0,10,10};
unsigned char temp[8];
unsigned char dispcount;
unsigned char T0count;
unsigned char timecount;
bit flag;
unsigned long x;
void main(void)
{
unsigned char i;
TMOD=0x15;
TH0=0;
TL0=0;
TH1=(65536-4000)/256;
TL1=(65536-4000)%6;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
while(1)
{
if(flag==1)
{
flag=0;
x=T0count*65536+TH0*256+TL0;
for(i=0;i<8;i++)
{
temp[i]=0;
}
i=0;
while(x/10)
{
temp[i]=x;
x=x/10;
i++;
}
temp[i]=x;
for(i=0;i<6;i++)
{
dispbuf[i]=temp[i];
}
timecount=0;
T0count=0;
TH0=0;
TL0=0;
TR0=1;
}
}
}
void t0(void) interrupt 1 using 0
{
T0count++;
}
void t1(void) interrupt 3 using 0
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%6;
timecount++;
if(timecount==250)
{
TR0=0;
timecount=0;
flag=1;
}
P0=dispcode[dispbuf[dispcount]];
P2=dispbit[dispcount];
dispcount++;
if(dispcount==8)
{
dispcount=0;
}
}
(1).把“单片机系统”区域中的P0.0-P0.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。
(2).把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。
(3).把“单片机系统”区域中的P3.4(T0)端子用导线连接到“频率产生器”区域中的WAVE端子上。
4.程序设计内容
(1).定时/计数器T0和T1的工作方式设置,由图可知,T0是工作在计数状态下,对输入的频率信号进行计数,但对工作在计数状态下的T0,最大计数值为fOSC/24,由于fOSC=12MHz,因此:T0的最大计数频率为250KHz。对于频率的概念就是在一秒只数脉冲的个数,即为频率值。所以T1工作在定时状态下,每定时1秒中到,就停止T0的计数,而从T0的计数单元中读取计数的数值,然后进行数据处理。送到数码管显示出来。
(2).T1工作在定时状态下,最大定时时间为65ms,达不到1秒的定时,所以采用定时50ms,共定时20次,即可完成1秒的定时功能。
5.C语言源程序
#include
unsigned char code dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
unsigned char dispbuf[8]={0,0,0,0,0,0,10,10};
unsigned char temp[8];
unsigned char dispcount;
unsigned char T0count;
unsigned char timecount;
bit flag;
unsigned long x;
void main(void)
{
unsigned char i;
TMOD=0x15;
TH0=0;
TL0=0;
TH1=(65536-4000)/256;
TL1=(65536-4000)%6;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
while(1)
{
if(flag==1)
{
flag=0;
x=T0count*65536+TH0*256+TL0;
for(i=0;i<8;i++)
{
temp[i]=0;
}
i=0;
while(x/10)
{
temp[i]=x;
x=x/10;
i++;
}
temp[i]=x;
for(i=0;i<6;i++)
{
dispbuf[i]=temp[i];
}
timecount=0;
T0count=0;
TH0=0;
TL0=0;
TR0=1;
}
}
}
void t0(void) interrupt 1 using 0
{
T0count++;
}
void t1(void) interrupt 3 using 0
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%6;
timecount++;
if(timecount==250)
{
TR0=0;
timecount=0;
flag=1;
}
P0=dispcode[dispbuf[dispcount]];
P2=dispbit[dispcount];
dispcount++;
if(dispcount==8)
{
dispcount=0;
}
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
发布评论请先 登录
相关推荐
是德KEYSIGHT53200A 系列射频/通用频率计数器/定时器
是德KEYSIGHT53200A系列射频/通用频率计数器/定时器 53200A频率计数器能在研发和制造中进行快速、精确频率和时间间隔测量。 是德53200系列射频和通用
频率计数器的威廉希尔官方网站 原理和应用场景
频率计数器,又称频率计,是一种专门用于测量信号频率的电子测量仪器。以下是对其威廉希尔官方网站
原理和应用场景的详细分析:一、威廉希尔官方网站
原理频率计数器的威廉希尔官方网站
原理基于周期计
发表于 10-18 14:03
10 MHz OCXO,带40 MHz频率计数器
这个想法并不是我所有的硬件项目都有案例。几年前我买了一个,现在我记不清它的意图了。但去年我决定在这个案例中安装OCX0和频率计数器。我使用OCXO振荡器有两个原因:在我测试NTP的过程中,它是一个
频率计数器的工作原理是什么
频率计数器是一种电子测量仪器,用于测量信号的频率,即单位时间内的周期数。它广泛应用于科学、工程、通信和医疗等领域,用于测试和校准电子设备。
二进制串行计数器工作原理是什么?
的工作原理进行深入解析,帮助你更好地理解这一数字电路的核心组件。 一、二进制串行计数器的基本概念 二进制串行计数器是一种基于二进制数制的计数器,它按照二进制数的规律进行
同步计数器和异步计数器的区别
在数字电子领域中,计数器是一种用于统计脉冲信号数量的重要设备。其中,同步计数器和异步计数器是两种不同类型的计数器,它们在工作原理、特性以及应用场景等方面存在着显著的区别。本文将详细探讨
简单认识脉冲计数器
在数字电路和电子测量领域中,脉冲计数器作为一种基本而重要的工具,其应用十分广泛。脉冲计数器,也被称为脉冲频率计或脉冲数计,主要用于统计和测量输入脉冲信号的
频率计有哪些作用
频率计又称为频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器。其主要由四个部分构成:时基(T)电路、输入电路、计数显示电路以及控制电路。又称为
计数器怎么判断同步和异步 计数器异步和同步的区别
应用中的各自优势和限制。 一、计数器概述 计数器是一个数值型的变量,它能够用于存储和追踪特定事件的发生次数。在计算机系统中,计数器起到非常重要的作用,例如统计程序执行的指令数、计算循环
同步置数法和异步清零法的优缺点 异步计数器的级联方法总结
同步置数法和异步清零法是数字电路设计中常用的两种计数器设计方法。 一、同步置数法: 同步计数器是一种利用触发器来实现
如何使用时间间隔计数器/间隔计时器
频率计数器通常具有高阻抗输入。这通常为 1MΩ。可以使用 X1 示波器探头将计数器连接到被测电路的点 n。由于示波器探头具有夹子和BNC输入,因此这通常是一种非常方便的连接和探测方式。
浅谈时间间隔计数器的定时器间隔测量功能
与频率计数器一样,定时器计数器或间隔定时器也具有许多组成测试仪器的模块。它们与计数器中使用的非常相似,只需要重新配置即可提供间隔定时功能。
计数器怎么用 计数器的作用有哪些
计数器是一种被广泛应用于各个领域的实用工具,在我们的日常生活中随处可见。无论是进行时间统计,协助工作任务的完成,还是用于科学研究和编程威廉希尔官方网站
,在各个领域都起到了重要的作用。本文将详细介绍计数器
评论