51单片机定时器及其应用(3)(测量脉冲频率)
51单片机定时器及其应用(3)(测量脉冲频率)
前面介绍了定时器的一般应用以及定时器GATE位的应用,还有一个位没有介绍,那就是定时器C/TˉC/\bar{T}C/Tˉ位。前面讲解定时器时总是写作定时器/计数器。这一位便是控制单片机这一功能是作为定时器还是计数器,其实本质都是计数器,作为定时器时候,对内部的1us脉冲进行计数,作为计数器的时候,对外部的脉冲进行计数,也就是来自T1引脚的脉冲,我们只要测量1s中之内有多少个脉冲,也就可以得到输入信号的频率了。
给定一个门限时间T,在这段时间里面对脉冲进行计数,如上图,恰好有N个脉冲,那么可以得到NTsignalT_{signal}Tsignal=T,假设门限时间为1s,则信号频率fsignalf_{signal}fsignal=N。这便是简单频率测量的原理。注意上面分析是恰好,加入当T开始的时候,先来的是脉冲的下降沿,那么也就可能少记了一个脉冲,这也是频率测量误差的来源之一。下面附上代码:
/***
作者:邓家增
时间:2021年8月12日
程序功能:测量T1引脚脉冲频率,当频率较高时会产生一定误差,误差来源为+-1误差,比较常见,可以通过增大闸门时间减小
**/
#include <reg52.h>
unsigned int count_1s=0;//用于1s计数
unsigned long Frequency=0;//频率
unsigned long Count=0;//脉冲计数
unsigned char Flag=0;//1s标志位
/***用于工作显示***/
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit LED3=P1^2;sfr16 DPTR=0x82;//声明一个16位寄存器,用于存放计数值
/***数码管显示部分***/
sbit Wei_Select=P2^6;
sbit Duan_Select=P2^5;
char Display_Code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
char Wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void delay_ms(unsigned int Xms)
{unsigned int i=0,j=0;for(i=Xms;i>0;i--)for(j=110;j>0;j--);
}
void display(unsigned int position,unsigned long number)
{Duan_Select=0;Wei_Select=1;P0=Wei[position-1];Wei_Select=0;Duan_Select=1;P0=Display_Code[number];delay_ms(3);
}
//定时器0初始化,作为1s的闸门,定时器1用于计数
void InitTimer(void)
{TMOD = 0x51;//方式1TH0 = 0xDC;//定时10msTL0 = 0;EA = 1;ET0 = 1;TR0=1;TH1=0;TL1=0;ET1=1;TR1=1;
}
void Timer0() interrupt 1
{TH0 = 0xDC;TL0 = 0;count_1s++;if(count_1s==100)//定时到1s钟{LED1=~LED1;count_1s=0;EA=0;//关闭中断,进行数据处理Flag=1;}
}
void Timer1() interrupt 3
{TH1=0;TL1=0;LED2=~LED2;Count++;
}
void Show_Frequency(unsigned long X)
{unsigned int ge=0,shi=0,bai=0,qian=0,wan=0;ge=X%10;shi=X/10%10;bai=X/100%10;qian=X/1000%10;wan=X/10000%10;display(8,ge);display(7,shi);display(6,bai);display(5,qian);display(4,wan);
}
void main()
{InitTimer();while(1){if(Flag==1){DPL=TL1;DPH=TH1;Frequency=Count*65535+DPTR;TH1=0;TL1=0;Flag=0;Count=0;EA=1;}Show_Frequency(Frequency);}
}
51单片机定时器及其应用(3)(测量脉冲频率)相关推荐
- 51单片机定时器及其应用(2)(测量脉冲宽度)
51单片机定时器及其应用(2)(测量脉冲宽度) 上一篇文章讲了如何使用51单片机的定时器功能制作一个简易的数字钟,上次有一个GATE位没有涉及到,因此这次来介绍一下定时器的这个GATE位的应用,也就是 ...
- 基于51单片机的简易电容值测量仪proteus仿真设计
51单片机简易电感测量仪仿真设计( proteus仿真+程序+讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0039 51单片机简 ...
- C语言课设项目-51单片机-定时器和计数器
(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 一.定时器的原理 1.CPU时序的有关知识 2.在学习定时器之前需要明白的 3.定时/计数器的工作原理 ...
- 51单片机定时器及其应用(1)(时钟功能)
51单片机定时器及其应用(1)(时钟功能) STC89C51单片机有2个定时器,叫做定时器0和定时器1,可以用作普通定时器,计数器.普通定时器可以用来进行中断定时,波特率发生等,计数器可以用来对脉 ...
- c语言单片机定时器的应用程序,51单片机定时器中断程序(C语言)
51c程序 51单片机定时器中断程序(C语言) 用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12/n(n指晶 ...
- 基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间
基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间 Proteus仿真 实例代码 #include "at89x52.h" /**74hc595引脚定义 ...
- 51单片机定时器(T0/T1)的使用与配置流程
第一步:配置工作方式寄存器-TMOD TMOD寄存器的字节地址为89H,不能位寻址.一般采用整体赋值的方式进行配置:如:TMOD=0x01 // 0000 0001 GATE=0,定时器仅受TCON寄 ...
- 51单片机定时器的查询和进入中断处理
51单片机定时器可用两种方式处理:查询和进入中断处理. 1.查询方式 void Init_T0 (void) 定时器初始化 { TMOD = 0x01;//计时器模式 TH0 = (65535-650 ...
- 51单片机定时器秒计数时钟+Proteus仿真
51单片机定时器秒计数时钟+Proteus仿真 Proteus仿真 实例代码 本实例采用的是普中开发板Proteus模板 功能:电子钟,从左到右,1.2位为秒,3.4位为分,5.6位为时,7.8位为天 ...
最新文章
- Java面试参考指南(二)
- 信号与系统2021春季课程小论文批改
- yolov5和yolov5-face nms比较
- idea中配置个人注解代码模板
- Python 那些永远用不到的对象,我们称之为「垃圾」
- mybatis-一对一的关联查询有两种配置方式
- export mysql home_mysql的Linux下安装笔记
- 网络爬虫--8.编码趣闻
- 鹤岗一中2021年高考成绩查询,2021鹤岗市地区高考成绩排名查询,鹤岗市高考各高中成绩喜报榜单...
- SpringFramework核心技术一(IOC:命名bean)
- android滑动基础篇 TouchView
- linux 源代码安装mysql5.5_linux下通过源码包安装MySql5.5
- 面向对象程序设计方法学
- QGraphicsView制作绘制图元工具资料整理(鼠标、平移、缩放)
- android应用程序设计答案,Android移动应用程序设计智慧职教MOOC答案
- 富文本样式文字图片处理
- 网线线序及网线转RS232—— DB9线序
- 木子-前端-方法标签属性小记(普通jsp/html篇)2018
- jdbc快速入坑(二)
- HDU 还是畅通工程
热门文章
- OV10635 color HDR sensor module for Automotive - www.deltavision.io
- Mysql sleep线程过多解决方案
- JAVA入门算法题(六)
- Copley驱动器控制永磁同步电机设置步骤
- 计算机辅助英语听说考试系统,英语听说训练平台
- 激活层是每一层都有吗_我心目中最值得栽种的10种藤本月季,每一种都很优秀,你喜欢吗...
- 恋与制作人元旦服务器,恋与制作人2018元旦活动有什么_恋与制作人2018元旦活动介绍_游戏堡...
- gflags 调试内存_gflags工具使用——用于监控内存分配、检查内存泄露
- php 判断键值重复合并,php数组实现根据某个键值将相同键值合并生成新二维数组的方法...
- 计算机网络应用答题卡,网上阅卷系统中答题卡模板自动生成技术研究