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;
}
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
发布评论请先 登录
相关推荐
Keysight(原Agilent) 53210A频率计数器技术指标
Keysight(原Agilent) 53131A计数器在高达225MHz频率上提供每秒10位的频率分辨率。单次时间间隔分辨率指标规定为500ps,通过平均可进一步降低。测量包括

KEYSIGHT是德科技53220A台式频率计计数器原安捷伦
KEYSIGHT TECHNOLOGIES 53220A 频率计数器/定时器, 350MHz 12位 100PS 53220A 350MHz通用频率计数器/计时

AGILENT 53230A通用频率计6 GHz技术指标
Agilent53230A通用频率计数器/计时器可满足所有的频率和时间间隔测量需求。除了典型的频率和时间间隔测量,它还可执行连续/无间隙测量,以进行基本调制域分析。53230A配有可选

是德KEYSIGHT53200A 系列射频/通用频率计数器/定时器
是德KEYSIGHT53200A系列射频/通用频率计数器/定时器 53200A频率计数器能在研发和制造中进行快速、精确频率和时间间隔测量。 是德53200系列射频和通用
频率计数器的技术原理和应用场景
频率计数器,又称频率计,是一种专门用于测量信号频率的电子测量仪器。以下是对其技术原理和应用场景的详细分析:一、技术原理频率计数器的技术原理基于周期计
发表于 10-18 14:03
74ls163是几进制同步计数器
74LS163 是一个十进制同步计数器,它是一个集成电路(IC),用于数字电路中进行计数操作。它是一个4位二进制计数器,但由于其设计,它可以很容易地被配置为一个十进制
计数器的特点和参数
计数器作为一种常用的电子元件,在电子设备和系统中扮演着至关重要的角色。它们不仅用于存储和增减数字值,还广泛应用于时序和频率测量、事件计数、控制步进电机和伺服系统、错误检测和纠正以及计算机数据存储和操作等领域。以下将详细阐述
10 MHz OCXO,带40 MHz频率计数器
这个想法并不是我所有的硬件项目都有案例。几年前我买了一个,现在我记不清它的意图了。但去年我决定在这个案例中安装OCX0和频率计数器。我使用OCXO振荡器有两个原因:在我测试NTP的过程中,它是一个

频率计数器的工作原理是什么
频率计数器是一种电子测量仪器,用于测量信号的频率,即单位时间内的周期数。它广泛应用于科学、工程、通信和医疗等领域,用于测试和校准电子设备。
二进制串行计数器工作原理是什么?
的工作原理进行深入解析,帮助你更好地理解这一数字电路的核心组件。 一、二进制串行计数器的基本概念 二进制串行计数器是一种基于二进制数制的计数器,它按照二进制数的规律进行
同步计数器和异步计数器的区别
在数字电子领域中,计数器是一种用于统计脉冲信号数量的重要设备。其中,同步计数器和异步计数器是两种不同类型的计数器,它们在工作原理、特性以及应用场景等方面存在着显著的区别。本文将详细探讨
简单认识脉冲计数器
在数字电路和电子测量领域中,脉冲计数器作为一种基本而重要的工具,其应用十分广泛。脉冲计数器,也被称为脉冲频率计或脉冲数计,主要用于统计和测量输入脉冲信号的
频率计有哪些作用
频率计又称为频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器。其主要由四个部分构成:时基(T)电路、输入电路、计数显示电路以及控制电路。又称为
评论