蓝桥杯单片机速成8-NE555频率测量

一、原理图

NOTE:使用NE555测量频率之前,需要将J3-15(SIGNAL)与J3-16(P34短接)

在使用矩阵键盘的时候也记得把跳冒拔下,因为有公共引脚P34

又是因为他的输出引脚是P34,所以只能用定时器0来作为计数器进行频率测量了

二、代码实现

把定时器0作为计数器来测量频率,一秒的计数值就是频率值

用定时器1作为系统进程控制器

cs 复制代码
#include <STC15F2K60S2.H>
#include <intrins.h>

void NE555_Init()//把定时器0当作计数器
{
	AUXR &= 0x7F;		//定时器时钟12T模式,但是计数器不分12T还是1T,所以这里可以没有
	TMOD |= 0x05;		//设置16位可重装值的计数器模式
	TL0 = 0;		//设置定时初值
	TH0 = 0;		//设置定时初值都为0
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
	ET0 = 0;		//不需要中断
}

//把定时器1当作系统进程管理定时器
void Timer1Init(void)		//1毫秒@11.0592MHz
{
	AUXR &= 0xBF;		//定时器时钟12T模式
	TMOD &= 0x0F;		//设置定时器模式
	TL1 = 0x66;		//设置定时初值
	TH1 = 0xFC;		//设置定时初值
	TF1 = 0;		//清除TF1标志
	TR1 = 1;		//定时器1开始计时
	ET1 = 1;
	EA  = 1;
}

这里12T还是1T我觉得是分频系数

12T和1T模式设置的是定时器 计数脉冲 的分频系数,即计数脉冲 周期是系统时钟的12倍(慢12T模式);计数脉冲为系统时钟脉冲,计数脉冲 周期等于系统时钟周期,即无分频(快,1T模式)。

举个例子:

12T模式:12秒计次一次,在定时器上就是TH0每加12,才会计次一次,则总计数时间就是定时器时钟周期的12倍

1T模式:1秒计次一次,在定时器上就是TH0每加1,就会计次一次,则总计数时间就是定时器时钟周期

但是计数器就只是用到了TH0和TL0,分频系数和他没关系

cs 复制代码
#include <STC15F2K60S2.H>
#include <intrins.h>
#include <ALL_INIT.h>

#define wan(x)    		x/10000
#define qian(x)    		x/1000%10
#define bai(x)    		x/100%10
#define shi(x)    		x/10%10
#define ge(x)    		x%10

void main()
{
	All_Init();
	NE555_Init();
	Timer1Init();	//1毫秒@11.0592MHz
	while(1)
	{
        if(freq_f)
		{
			freq_f = 0;
			TR0 = 0;
			freq = (TH0*256+TL0);
			TR0 = 1;
			TH0 = TL0 = 0;
			if(freq<10)
				seg_set(16,16,16,16,16,16,16,ge(freq));
			else if(freq<100)
				seg_set(16,16,16,16,16,16,shi(freq),ge(freq));
			else if(freq<1000)
				seg_set(16,16,16,16,16,bai(freq),shi(freq),ge(freq));
			else if(freq<10000)
				seg_set(16,16,16,16,qian(freq),bai(freq),shi(freq),ge(freq));
			else 
				seg_set(16,16,16,wan(freq),qian(freq),bai(freq),shi(freq),ge(freq));
        }



void Timer1() interrupt 3
{
	TL1 = 0x18;		
	TH1 = 0xFC;			
	count++;
	if(count % 1000 ==0){freq_f = 1;}
	seg_loop();
	count %= 1000;
}

计数器T0位16位,可计数65536个,参考其他博客实测蓝桥杯555定时器的方波频率范围位:57Hz~24kHz。

我测出来的是最大30KHZ,最低27HZ

相关推荐
fengfuyao9859 小时前
利用 STM32 和 ADS1256 进行高精度数据采集
stm32·单片机·嵌入式硬件
黑白园10 小时前
ADC读取XY二轴操纵杆数据通过I2C_GPIO模拟 控制0.96寸OLED显示
stm32·单片机·嵌入式硬件
一个平凡而乐于分享的小比特11 小时前
还在手动挡写单片机?MicroPython 一脚油门踩进 Python 硬件世界
单片机·嵌入式硬件·micropython
FreakStudio11 小时前
WIZnet-EVB-Pico2开始,用MicroPython玩转以太网开发
python·单片机·嵌入式·大学生·面向对象·技术栈·并行计算·电子diy·电子计算机
LCG元12 小时前
STM32实战:基于STM32F103的工业仪表数据采集(多路ADC)
stm32·单片机·嵌入式硬件
BT-BOX12 小时前
Stm32CubeMX+Proteus仿真--STM32外部中断
stm32·单片机·proteus
森利威尔电子-13 小时前
森利威尔SL8700 降压型大功率 LED 恒流驱动器:5A/95%效率,支持 PWM/模拟调光
单片机·嵌入式硬件·集成电路·芯片·电源芯片
三佛科技-1873661339713 小时前
GP8892SEH贴片SOP7省外围5V2A隔离型原边反馈芯片直接替代MT3723
单片机·嵌入式硬件
Quinn2714 小时前
正点原子 STM32MP257 修复异核 FreeRTOS 例程 osDelay() 函数比 HAL_Delay() 延时快的问题
stm32·单片机·嵌入式硬件
周周记笔记14 小时前
【元器件专题】三极管性能
单片机·嵌入式硬件