单片机蓝桥杯——NE555频率测量

article/2025/10/12 14:37:14

原理:

对蓝桥杯单片机板子上NE555电路进行频率测量时,不需要任何的配置,整个单片机测量频率的过程中,跟NE555芯片没什么关系,归根结底考察的还是定时/计数器。但需要注意:
(1)当用到NE555时,需要用跳线帽将J3的SIGNAL与P34短接,将NE555发生的信号输入到单片机的P34引脚。
(2)NE555电路是一个信号发生电路,其信号输出接到单片机的P34引脚,即单片机的T0引脚。
(3) 该信号的频率大小可以通过Rb3可调电位器改变。

题目:

单片机测量信号频率,并显示在数码管中,频率数据显示用6位数码管,单位是Hz,当显示长度不足6位时,未使用到的数码管熄灭(第十届省赛的一个要求)。
难点:TOMD的配置,设置定时器模式
设置T0为计数器,工作在方式3,为不可屏蔽的16位自动重装
设置T1为定时器,工作在方式0,为可屏蔽的16位自动重装
此时TMOD=0x07

代码实现:

#include "STC15F2K60S2.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned intuchar segCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,       //0~9的段码(不带小数点)0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xff}; //0.~9.的段码(带小数点) 以及0xff全灭
uchar segVal[]={20,20,20,20,20,20,20,20};  //数码管初始化全灭void SelectHC573(uchar val) 
{switch(val){case 4 : P2 = (P2 & 0x1f) | 0x80; break;case 5 : P2 = (P2 & 0x1f) | 0xa0; break;case 6 : P2 = (P2 & 0x1f) | 0xc0; break;case 7 : P2 = (P2 & 0x1f) | 0xe0; break;default: P2 = (P2 & 0x1f); break;		}
}
void InitSystem()//系统初始化关闭蜂鸣器、继电器、LED
{SelectHC573(5);P0 = 0xbf;      //由于不同板子的引脚接法不同,此时的初始值也不同SelectHC573(4);	P0 = 0xff;     //LED全灭
}
void TimerInit(void)		//1毫秒@12.000MHz
{TMOD = 0x07;	//设置定时器模式TL0 = 0xff;		//设置定时初值TH0 = 0xff;		//设置定时初值	TL1 = 0x18;		//设置定时初值TH1 = 0xFC;		//设置定时初值	TF0 = 0;		//清除TF0标志TF1 = 0;		//清除TF1标志ET1 = 1;    ET0 = 1;TR0 = 1;		//计数器0开始工作TR1 = 1;		//定时器1开始计时	EA = 1;	
}
uint count_f=0;  //T0计数值
uint dat_f;      //所测频率值
uchar segFlag=0;  
uint count1s=0;		//定时1s标志位
void ServiceTimer0() interrupt 1
{count_f++;
}
void ServiceTimer1() interrupt 3
{uchar pushp0,pushp2;pushp0 = P0;pushp2 = P2;//入栈
//数码管显示	SelectHC573(6);	P0=(0x01<<segFlag);SelectHC573(7);	P0=segCode[segVal[segFlag]];segFlag++;if(segFlag==8) segFlag=0;
//频率测量	count1s++;if(count1s==1000)	//1s定时到了,刷新频率{count1s=0; dat_f=count_f;  //将count_f计数赋值给dat_f,dat_f值即为频率值count_f=0;			//计数器重新计数}P2 = pushp2;//出栈P0 = pushp0;
}
void main()
{InitSystem();TimerInit();while(1){if(dat_f>9999){segVal[3] = dat_f/10000;segVal[4] = dat_f%10000/1000;segVal[5] = dat_f%1000/100;segVal[6] = dat_f%100/10;segVal[7] = dat_f%10;	}else if(dat_f>999){segVal[3] = 20;segVal[4] = dat_f/1000;segVal[5] = dat_f%1000/100;segVal[6] = dat_f%100/10;segVal[7] = dat_f%10;	}else if(dat_f>99){segVal[3] = 20;segVal[4] = 20;segVal[5] = dat_f/100;segVal[6] = dat_f%100/10;segVal[7] = dat_f%10;	}else if(dat_f>9){segVal[3] = 20;segVal[4] = 20;segVal[5] = 20;segVal[6] = dat_f/10;segVal[7] = dat_f%10;	}else {segVal[3] = 20;segVal[4] = 20;segVal[5] = 20;segVal[6] = 20;segVal[7] = dat_f;	}		}
}

结果显示:

频率范围大致从80到20000多Hz。
请添加图片描述


http://chatgpt.dhexx.cn/article/5H2cSaJ6.shtml

相关文章

蓝桥杯单片机-NE555模块

一、简介 1、NE555在开发板中用于输出频率可变&#xff0c;占空比不变的方波。 2、NE555是纯硬件的设计&#xff0c;通过电位器RB3可改变其信号输出频率。不需要编程实现其功能。 考点&#xff1a;使用定时器的计数模式测量NE555输出的频率 3、开发板上电路 NET SIG即接P34&…

NE555产生方波

NE555详解 上图是芯片的引脚图 上图是芯片的内部结构图&#xff0c;脚号与第一张图的引脚相对应 从结构图可以得出下表&#xff1a; 接下来看应用图; 这是从CSDN上得到的一个方波发生器的原理图&#xff0c;对齐进行分析&#xff1a; 原理图将6和2脚连在一起&#xff0c; 所…

如何使用NE555产生方波

NE555在很多电路设计中都会用到&#xff0c;常用来实现施密特触发器&#xff0c;单稳态触发器和多谐振荡器 常用的NE555是这种八脚的&#xff0c;大家可以看下引脚定义 首先我们来看下NE555的内部构造&#xff1a; C1和C2是两个运放比较器&#xff0c;内部的这三个电阻阻值都是…

NE555

555定时器是电子工程领域中广泛使用的一种中规模集成电路&#xff0c;它将模拟与逻辑功能巧妙地组合在一起&#xff0c;具有结构简单、使用电压范围宽、工作速度快、定时精度高、驱动能力强等优点。555定时器配以外部元件&#xff0c;可以构成多种实际应用电路。广泛应用于产生…

NE555振荡电路

NE555振荡电路 简介 NE555是属于555系列的计时IC的其中的一种型号&#xff0c;555系列IC的接脚功能及运用都是相容的&#xff0c;只是型号不同的因其价格不同其稳定度、省电、可产生的振荡频率也不大相同&#xff1b;而555是一个用途很广且相当普遍的计时IC&#xff0c;只需少…

蓝桥杯单片机(七)NE555

上一章讲了蓝桥杯单片机如何输出PWM波 蓝桥杯单片机(六)PWM 这一章讲解蓝桥杯单片机开发板上的NE555方波发射器的频率测量&#xff0c;这也是近几年的考点。 首先看原理图&#xff1a; 由数电的知识&#xff1a; NE555的周期T0.7(RaRb)C 频率f1/T图中R8为定值电阻&#xff0c…

NE555方波发生器

基础知识 NE555不需要进行编程&#xff0c;或者与单片机进行通信&#xff0c;它本身就能产生方波。方波的频率可以调节&#xff0c;只要改变电阻电容的值就可以了。 电路原理 方波产生在排针J3的15&#xff08;SIGNA&#xff09;脚上&#xff0c;方波的频率通过Rb3电位器进行调…

NE555 工作模式介绍

&#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是泽奀。全栈领域新星创作者&#x1f3c6; 作者周榜:78 &#x1f451; &#x1f4dd; 个人主页&#xff1a;weixin_52632755的博客_泽奀_CSDN博客 &#x1f4ac; 本系列&#xff1a;【电子】系列_泽奀的博客-CSDN博…

NE555定时器

基本原理&#xff1a; 低电平触发端&#xff1a;TRIG 高电平触发端&#xff1a;THR 两者的电压值小于参考电压时&#xff0c;即U。1 放电管截止 两者的电压值大于参考电压时&#xff0c;即U。1 放电管导通 蓝桥杯板子上是一个信号发生电路 通过继电器RB3来改变输入信号的频…

使用NE555实现的延时开关电路

NE555 的电气特性 555系列有几种不同的规格 NE555是民用版本, 推荐的工作温度是 0 - 70 NA555, SA555, SE555 是工业版本, 推荐工作温度为 -40 - 100 电压: 最高18V, 推荐工作电压15V以内 电流: Pin3 输出电流支持 225 mA, 推荐的工作电流区间是 200 mA. 注意: 支持反向的电…

Android NE问题分析方法介绍

文章目录 简介Native内存布局NE问题常见类型常用调试工具tombstone抓取流程实例分析tombstone文件内容举例 简介 NE&#xff0c;全称Native Exception&#xff0c;在Android中主要指在用户空间运行的native程序或者natvie库发生异常。NE问题通常带来程序奔溃现象&#xff0c;导…

认真学习设计模式之适配器模式(Adapter Pattern)/包装器模式

【1】适配器模式 ① 介绍 适配器模式是将一个类的接口&#xff0c;转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 适配器的作用可以简单通过下图得知&#xff0c;OO适配器就是将一个接口转换成另一个接口&#xff0c;以符合客户的期望。 实际场景应…

学习:java设计模式—Adapter模式

1、核心意图&#xff1a; 将一个类的接口转换成客户希望的另外一个接口&#xff0c;从而使得原本由于接口不兼容而不能一起工作的类可以一起工作。 该模式的目标是通过一个代理&#xff08;这里是Adapter&#xff09;&#xff0c;在原来的类&#xff08;Adaptee&#xff09;和客…

23种设计模式之适配器模式(Adapter模式)

转载地址 https://sscloud.net/solution/jsp/article.jsp?articleId10090 模式的定义与特点 23种设计模式demo下载 适配器模式&#xff08;Adapter&#xff09;的定义如下&#xff1a;将一个类的接口转换成客户希望的另外一个接口&#xff0c;使得原本由于接口不兼容而不能一…

安卓设计模式のAdapter模式

1. 模式介绍 模式的定义 适配器模式把一个类的接口变换成客户端所期待的另一种接口&#xff0c;从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 使用场景 用电源接口做例子&#xff0c;笔记本电脑的电源一般都是接受5V的电压&#xff0c;但是我们生活中的…

设计模式2--Adapter(适配器模式)

1.Adapter模式 在程序中&#xff0c;经常会出现有的程序无法直接使用的情况&#xff0c;需要进行适当的变换之后才能使用的情况。这种用于填补现有程序和所需程序之间差异的设计模式就是Adapter模式 Adapter模式也被称为Wrapper模式&#xff0c;有以下两种 &#xff08;1&am…

设计模式02——Adapter模式

定义 适配器设计模式&#xff0c;顾名思义就是将适配器的作用总结抽象成为一种代码的组织方式&#xff0c;将现有的代码通过适配器进行适配&#xff0c;以满足项目对另外一个类或者接口的要求。换句话说就是将一个类的接口适配&#xff08;包装/转换&#xff09;成客户&#x…

图解设计模式 - Adapter 模式

读书笔记 仅供参考 Adapter 模式 Adapter 即为是适配器,用来填补两者之间的差异。就想充电器的装换器,要把 220v 的电压转换为低电压才能对手机或电脑充电。 Adapter 模式也称为 Wrapper(包装器)模式。 两种 Adapter 模式: 类适配器模式(使用继承的适配器)对象适配器…

适配器模式(Adapter模式)

在现实生活中&#xff0c;经常出现两个对象因接口不兼容而不能在一起工作的实例&#xff0c;这时需要第三者进行适配。例如&#xff0c;讲中文的人同讲英文的人对话时需要一个翻译&#xff0c;用直流电的笔记本电脑接交流电源时需要一个电源适配器&#xff0c;用计算机访问照相…

设计模式学习(三):Adapter适配器模式

一、什么是Adapter模式 我们先举个例子&#xff1a;如果想让额定工作电压是直流12V的笔记本电脑在交流220V的电源下工作&#xff0c;应该怎么做呢?通常&#xff0c;我们会使用适配器&#xff0c;将家庭用的交流220V电压转换成我们所需要的直流12V电压。这就是适配器的工作&…