学习笔记单片机的40个经典实验之27:6 位数显频率计数器
一、 实验任务
利用 AT89S51 单片机的 T0、T1 的定时计数器功能,来完成对输入的信号进行频率计数,计数的频率结果通过 8 位动态数码管显示出来。要求能够对0-250KHZ 的信号频率进行准确计数,计数误差不超过±1HZ。
二、电路原理图
图 4.31.1
三、系统板上硬件连线
(1). 把“单片机系统”区域中的 P0.0-P0.7 与“动态数码显示”区域中的ABCDEFGH 端口用 8 芯排线连接。
(2). 把“单片机系统”区域中的 P2.0-P2.7 与“动态数码显示”区域中的S1S2S3S4S5S6S7S8 端口用 8 芯排线连接。
(3). 把“单片机系统”区域中的 P3.4(T0)端子用导线连接到“频率产生器”区域中的 WAVE 端子上。
四、程序设计内容
(1). 定时/计数器 T0 和 T1 的工作方式设置,由图可知,T0 是工作在计数状态下,对输入的频率信号进行计数,但对工作在计数状态下的 T0,最大计数值为 fOSC/24,由于 fOSC=12MHz,因此:T0 的最大计数频率为250KHz。对于频率的概念就是在一秒只数脉冲的个数,即为频率值。所以 T1 工作在定时状态下,每定时 1 秒中到,就停止 T0 的计数,而从 T0 的计数单元中读取计数的数值,然后进行数据处理。送到数码管显示出来。
(2). T1 工作在定时状态下,最大定时时间为 65ms,达不到 1 秒的定时,所以采用定时 50ms,共定时 20 次,即可完成 1 秒的定时功能。
五、C 语言源程序
#include <AT89X52.H>
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)%256;
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%10;
x=x/10;
i++;
}
temp[i]=x;
for(i=0;i<6;i++)
{
dispbuf[i]=temp[i];
}
timecount=0;
T0count=0;
void t0(void) interrupt 1 using 0
{
T0count++;
}
void t1(void) interrupt 3 using 0
timecount++;
if(timecount==250)
{
TR0=0;
timecount=0;
flag=1;
}
P0=dispcode[dispbuf[dispcount]];
P2=dispbit[dispcount];
dispcount++;
if(dispcount==8)
{
dispcount=0;
单片机计数器工作原理及讲解
常用的单片机中大多数都配备了计数器,随着科技水平的提升,人们对于计数产品的功能需求越来越高,计数器也经过不断的更新升级,现如今已经可以达到精准计数的程度了。计数器给人们工作计数工作带来了很大的便利,大大提高了工作效率,今天这篇文章就为大家讲解一下 单片机计数器的工作原理。
单片机计数器
一、单片机计数器定义
计数是一种简单的基本运算,单片机计数器就是通过单片机实现这种运算的逻辑电路,计数器在数字系统中主要是针对脉冲的个数进行计数,可以实现测量、计数和控制等功能,同时兼有分频功能。计数器用来计数并指示在任意间隔内输入信号(事件)的个数,用来指示经历的时间计数器可以用来显示产品的工作状态,一般来说主要是用来表示产品已经完成了多少份的折页配页工作。它主要的指标在于计数器的位数,常见的有3位和4位的。
二、单片机计数器的结构极工作原理
1、单片机计数器结构图
在上图中,我们设有两个可编程的16位的定时/计数器:T0和T1,它们既可以用于定时,也可以用来对外部脉冲计数。
定时功能:对机器周期进行加1计数即机器周期X计数值。
计数功能:对外部事件产生的脉冲进行加1计数。
从结构图中,可以看出T0与T1分别由高8位和低8位两个特殊功能寄存器组成,即T0由TH0和TL0组成,T1由TH1和TL1组成。定时/计数器的控制是通过两个特殊功能寄存器来实现的,其中,TMOD是定时/计数器的工作方式寄存器.由它确定定时/计数器的工作方式和功能,TCON是定时/计数器的控制寄存器,用于管理T0和T1的启停,溢出和中断。
引用:单片机计数器工作原理及讲解-深圳宇凡微
相关问答
【 单片机 计数值问题,注意不是计数初值.已知晶振频率为12MHz,...[最佳回答]可以采用方式1公式为:定时时间=(65536-X)微妙可以计算1毫妙=1000微妙=65536-X则X=645362如果是1微妙可以采用方式2公式为:定时时间=(256-X)...
单片机 的 计数器 ,每计数一次是多少时间-ZOL问答定时器/计数器做为定时器来用的时候,是数的单片机时钟的脉冲个数,也就是说,单片机的时钟做为定时器/计数器的时钟源,因为单片机的时钟一般比较固定,因此,我们就...
51 单片机计数器 计数一个机器周期为一次吗?是一个机器周期吗?...[回答]单片机计数器计的是外部输入脉冲的个数,脉冲的周期至少应该是机器周期的两倍,否则,不能正常计数.
51 单片机计数器 怎么用?首1、先将定时器设置为计数器模式。2、其次,将外部脉冲接入到相应定时器的输入端。3、这样就可以使用计数器了。4、可以通过外部引脚对外部的脉冲信号进行...
单片机计数器 原理是什么?_土巴兔装修问答首先分清一个概念,其实定时器和单片计数器的原理都是一样的,都是“数”脉冲,有些人强行的认为,定时器是定时的,单片计数器是计数的,那就不对了。一...
MCS-51系列 单片机 定时/ 计数器 的定时功能和计数功能分别应用于什么场合?定时器和计数器本质上讲都是计数器,定时器使用机器时钟做计数源,因为机器时钟是稳定性好,时钟数就是时间,所以叫定时器。当计数器用时,使用的是外部输入的脉...
求51 单片机 定时时间与计数初值关系式的推导过程?不要去记什么公式,知道原理就行了。以16位方式计数为例,51单片机的计数方式是向上计数,16位计数器如果计数初值为0,则计数器从0计到65535,每计一个1微秒,...
单片机 计数输入端最高脉冲频率是多少? - 婷小猫_5763E181 的...外部脉冲的变化必须要比51单片机采样的速度慢才行,否则会丢失计数脉冲的个数。1分析:51单片机在每个机器周期的S5P2对计数端点脉冲进行采样,需...
单片机 定时 计数器 应如何选用?在选择单片机定时计数器时,需要考虑以下几个因素。首先,根据实际需求确定计数器的精度和范围,例如需要计算毫秒级别的定时器还是微秒级别的定时器。其次,考...
单片机 中, 计数器 tcon中tf0,tro是什么意思?他们的值对 计数器 有什么影响?TF0是定时/计数器0的溢出指示,平时为0,溢出时为1.TR0是定时/计数器0的运行控制位,只有当TR0置1时,定时/计数器0才会工作。TF0是定时/计数器0的溢出指示,平时...