利用定时器测量方波频率(P3^4口)

最新更新时间:2022-08-11来源: csdn关键字:定时器  测量  方波频率 手机看文章 扫描二维码
随时随地手机看文章

代码如下:


#include"reg52.h"

 

#define uchar unsigned char

#define uint unsigned int

uchar code table [] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchar code table_SMG [] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};//位选

 

//-------------------------------变量区----------------------------------

uint date_F = 0;//承装频率变量(用于显示)

uint count_F = 0;//承装频率变量(用于计算频率)

uchar time = 0;//用于定时1S

 

//-------------------------------函数区----------------------------------

 

void Delay(uint t)//延时函数

{

while(t--);

}

 

void Init_TR_0()  interrupt 1

{

count_F++;//计算脉冲个数

}

 

void Init_TR_1()  interrupt 3

{

TH1 = (65536 - 50000)/256;  //给高八位赋初值

TL1 = (65536 - 50000)%256;  //给低八位赋初值

time++;

if(time == 20)//

{

date_F = count_F;//将脉冲个数赋值给频率变量

count_F = 0;//清零脉冲变量

time = 0;//清零计时变量

}

}

 

void Init_ET_()//定时器初始化函数 

{

TMOD = 0x16;//定时器0 工作方式 1

EA = 1;    //开总中断

ET0 = 1;   //开定时器开关

ET1 = 1;

TR1 = 1;   //启动定时器

TR0 = 1;   //启动定时器

TH0 = 0xff;//用八位重装模式(来一个脉冲直接溢出产生中断)

TL0 = 0xff;

TH1 = (65536 - 50000)/256;  //给高八位赋初值50ms

TL1 = (65536 - 50000)%256;  //给低八位赋初值50ms

}

 

void Display_SMG(uchar pos , uchar date)//单个数码管显示函数(位选,段选)

{

P2 = table_SMG [pos];//位选

P1 = date ;//段选

Delay(100);//延时一小段时间用于动态显示

}

 

void Display_Time() //时间显示函数

{

Display_SMG(0 , 0x00);//关掉多余的数码管(下面递推)

Display_SMG(1 , 0x00);//  

Display_SMG(2 , 0x00);//

Display_SMG(3 , 0x00);//

if(date_F>999)//频率达到1000以上时打开否则关闭(下同)

{

Display_SMG(4 , table [date_F/1000%10]);

}

if(date_F>99)

{

Display_SMG(5 , table [date_F/100%10]);

}

if(date_F>9)

{

Display_SMG(6 , table [date_F/10%10]);

}

Display_SMG(7 , table [date_F%10]);

}

 

 

void main()

{

Init_ET_();//定时器初始化函数 

while(1)

{

Display_Time(); //频率显示函数

}

}


仿真图如下:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5qSw5ZWK5qSw5ZOm,size_20,color_FFFFFF,t_70,g_se,x_16

关键字:定时器  测量  方波频率 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic618741.html

上一篇:关于51单片机的地址空间溢出以及解决方法的个人看法(proteus无法仿真)
下一篇:51单片机外接ADC0808制作简易电压表

推荐阅读

stm32f103——滴答定时器
滴答定时器:定时器的本质就是计数器。我们设置一个定值,然后计数器开始计数,从我们给的定值开始往下一直数,当数到0时,就做相应的动作(也可以不做什么,当把它用作延时计时的时候)。滴答定时器systick是一个内核外设(即:内核自带的)所以在《STM32F10xxx参考手册中文版.pdf》手册中没有相关描述,我们需要参考内核手册《STM32F10xxx20xxx21xxxL1xxxx Cortex-M3 programming manual.pdf》Systick是一个24bit的系统定时器(stm32F407的寄存器名字与位数都与f103一样,但是有些芯片定时器位数不同),向下计数(从定值开始数到0),当计数到0时,在下一个时钟边沿,
发表于 2022-09-29
stm32f103——滴答<font color='red'>定时器</font>
stm32f103——基本定时器定时器中断
我们前面已经学过了滴答定时器,那么定时器的原理与它一样,只不过滴答定时器是在内核中的定时器,而定时器是片上外设。定时器分为:基本定时器和通用定时器。而基本定时器所拥有的功能,通用定时器都有。所以,通用定时器内集成了基本定时器。 定时器作用:产生一个精准的定时stm32f03中基本定时器为TIM6和TIM7:16位预分频器:将输入进来的72Mhz进行预分频,但是它是16位的,所以它的分配系数范围为1~65535。16位自动重装载累加器:用来装载我们设置的计数值。当16位计数单元计数完后,它就将设置的计数值传给计数单元,让计数单元重新开始计数。16位计数单元:它的内部就是定时器计数的过程,即从计数值开始计数。其内部的数值是变化的。定
发表于 2022-09-29
stm32f103——基本<font color='red'>定时器</font>与<font color='red'>定时器</font>中断
stm32f103——通用定时器输出PWM
通用定时器 ----输出 1,输出一个PWM 2,检测脉冲宽度 1》PWM---脉冲宽度调制 占空比:高电平占整个周期的百分比 2》PWM作用:调节灯的亮度,声音的大小,速度的快慢----平均电压值 什么是PWM信号?PWM,英文名Pulse Width Modulation,是脉冲宽度调制(记住这个名词)缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比,例如方波的占空比就是50%.PWM脉冲宽度调制,实际上就是脉冲信号,但是这个
发表于 2022-09-29
stm32f103——通用<font color='red'>定时器</font>输出PWM
定时器A TIMER A 新认识|定时器A 划分几个独立时间间隔
定时器A TIMER A 新认识现在的认识:MSP430 5438 有3个时钟,分别是 TA0、TA1 和TB了解了定时器A的用法:定时器A可以分成几个独立的时间周期。这几个时钟周期共用一个计数器TA1R 或TA0R。在头文件中可以查到:TIMER0 含 TA0CCR0- TA0CCR4 五个TIMER1 含 TA1CCR0- TA1CCR2 三个TA0CCR0TA1CCR0 用于控制计数周期,也就是每当TA0RTA1R 计数到TA0CCR0TA1CCR0所设定的数值后就会清零。如:TA0CCR0 =8000; // CCR0必须最大,因为一计数到CCR0即立刻清0,用于
发表于 2022-09-28
51单片机 定时器时钟
1.main.c注:Sec,Min,Hour可不进行赋值#include <REGX52.H>#include "Delay.h"#include "LCD1602.h"#include "Timer0.h"unsigned char Sec=55,Min=59,Hour=23;void main(){ LCD_Init(); Timer0Init(); LCD_ShowString(1,1,"Clock:"); LCD_ShowString(2,1," : :"); while(1) { LCD_ShowNum(2
发表于 2022-09-28
STM32定时器中断配置
1.使能时钟 定时器时钟2.配置定时器结构体、使能3.开启定时器中断,配置中断结构体配置例子#include "tim.h"#include "stm32f10x.h"void tim_config(void){TIM_TimeBaseInitTypeDef TIMinitStructure;//定时器结构体 NVIC_InitTypeDef NVICinitStructure;//内核中断结构体 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//中断优先组函数RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM
发表于 2022-09-27
STM32<font color='red'>定时器</font>中断配置
小广播
设计资源 培训 开发板 精华推荐

何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved