蓝桥杯单片机必备知识—–(8)NE555测频

蓝桥杯单片机必备知识—–(8)NE555测频


蓝桥杯单片机必备知识—–(8)NE555测频


NE555测频原理

很多人不知道NE555测频怎么搞,其实很简单。

在这里插入图片描述

已经使用跳线帽将P34和NE555的输出端接在一起了,关乎NE555,有些许数电基础的都明白,NE555就是改变RB3,改变负载电阻,使其输出方波的频率发生改变,其中并不涉及任何对NE555的编程,当然你也没法对其编程。

官方的CT107D的NE555输出频率范围是50-20K赫兹(以上)。

那么我们怎么测频呢。

P34对应的是单片机的定时器0的脉冲输入口,那么我们可以把定时器0设置为计数模式,每接收到NE555的一个脉冲,定时器0计数值就加1,然后500ms读取一次定时器0的计数值,再乘以2大约就是1s内的脉冲,不就是NE555输出的方波的频率吗。

然后按键、LED、数码管等等其余需要使用定时器的就使用定时器1来完成。

主要代码:

//记500ms,乘以2就是频率
if(f_flag)							//500ms
		{
   
			f_flag = 0;
			TR0 = 0;				//关闭定时器0
			FRE = TH0 * 256 + TL0;	//二进制转十进制
			FRE *= 2;				//乘2就为频率
			TH0 = TL0 = 0;			//将计数器的高低位置0
			TR0 = 1;				//打开定时器0
		}

测试结果:

但是自己的显示结果肯定是不够的的,需要结合示波器来判断自己测量是否准确;我的测试结果之前在学校实验室校对过。
在这里插入图片描述

完整代码粘贴:

#include <stc15f2k60s2.h>

#define uchar unsigned char
#define uint unsigned int

uchar tab[] = {
   0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
uchar dspbuf[] = {
   10,10,10,10,10,10,10,10};
long int FRE;
uchar f_flag;

void load();
void display();
void cls()
{
   
	P2 = (P2 & 0x1f) | 0x80;
	P0 = 0xff;
	P2 = 0x1f;
	
	P2 = (P2 & 0x1f) | 0xa0;
	P0 = 0x00;
	P2 = 0x1f;
}

void main()
{
   
	cls();
	AUXR = 0xc0;
	TMOD = 0x04;
	
	TL1 = 0xcd;
	TH1 = 0xd4;
	TL0 = TH0 = 0;
	
	TR0 = 1;
	TR1 = 1;
	ET1 = 1;
	EA = 1;
	
	while(1)
	{
   
		if(f_flag)
		{
   
			f_flag = 0;
			TR0 = 0;
			FRE = TH0 * 256 + TL0;
			FRE *= 2;
			TH0 = TL0 = 0;
			TR0 = 1;
		}
	}
}

void time1() interrupt 3
{
   
	static unsigned int intr = 0;
	if(++intr == 500){
   intr = 0;f_flag = 1;}
	display();
}

void load()
{
   
	dspbuf[7] = FRE % 10;
	dspbuf[4] = FRE / 1000;
	dspbuf[5] = FRE / 100 - dspbuf[4] * 10;
	dspbuf[6] = FRE / 10 - dspbuf[4] * 100 - dspbuf[5] * 10;
	
}

void display()
{
   
	static unsigned char dspcom = 0;
	
	load();
	
	P2 = (P2 & 0x1f) | 0xe0;
	P0 = 0xff;
	P2 = 0x1f;
	
	P2 = (P2 & 0x1f) | 0xc0;
	P0 = 1<<dspcom;
	P2 = 0x1f;
	
	P2 = (P2 & 0x1f) | 0xe0;
	P0 = tab[dspbuf[dspcom]];
	P2 = 0x1f;
	
	if(++dspcom == 8) dspcom = 0; 
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100130.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 传奇sf架设服务器_传奇怎么架设服务器

    传奇sf架设服务器_传奇怎么架设服务器传世SF私服搭建架设教程下载!传奇世界私服搭建教程2017是传世SF私服搭建教程!提供传奇世界h5一键服务端商业版+架设教程-服务器端!传世SF私服游戏介绍传奇世界单机版,小编第一次接触传奇世界是在03年,过去这么多年,发现这款经典游戏竟然还有生命力,在这里给大家整合了网友提供的最新单机版,辅助大家回味高中时代那些青涩的回忆。此单机版很给力。根据官网提供的版本制作,拥有全部的最新地图以及技能怎…

    2022年10月5日
    5
  • Android触摸屏事件派发机制详解与源码分析三(Activity篇)

    Android触摸屏事件派发机制详解与源码分析三(Activity篇)PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN。因为CSDN也支持MarkDown语法了,牛逼啊!【工匠若水http://blog.csdn.net/yanbober】该篇承接上一篇《Android触摸屏事件派发机制详解与源码分析二(ViewGroup篇)》,阅读本篇之前建议先阅读。1背景还记得前面两篇从Android的基础最小元素控件(View)到ViewGr

    2025年10月23日
    5
  • painless数字类型转换_笔记四十五: Ingest Pipeline 与 Painless Script

    需求:修复与增强写入的数据Tags字段中,逗号分割的文本应该是数组,而不是一个字符串需求:后期需要对Tags进行Aggregation统计IngestNodeElasticsearch5.0后,引入的一种新的节点类型。默认配置下,每个节点都是IngestNode具有预处理数据的能力,可拦截Index或者BulckAPI的请求对数据进行转换,并重新返回给Index和…

    2022年4月8日
    60
  • 6hutool实战:DateUtil(时间工具类)-时间偏移量获取

    6hutool实战:DateUtil(时间工具类)-时间偏移量获取hutool 实战 包含但不限于获取年 季度 月 周 日 时 分 秒 毫秒的开始时间和结束时间 关键字 javajavaJAVA 工具类工具类工具类 DateUtilDate

    2025年10月21日
    5
  • shell脚本编程基础

    shell脚本编程基础

    2021年5月29日
    120
  • 清关报关知识详解_海关清关中是什么意思

    清关报关知识详解_海关清关中是什么意思  加工中心清关代理流程报关知识科普    进口泰国二手加工中心清关代理流程报关知识科普    机电企业产品的定义:机电技术产品是指使用进行机械、电器、电子信息设备所生产的各类农具机械、电器、电子系统性能的生产管理设备和生活用机具。一般包括机械设备、电气设备、运输工具、电子产品、电子产品、仪器仪表、金属产品及其零部件。    那么什么是二手设备?    (一)已经可以使用(不含使用前测试、调试的设备),仍具备基本信息功能和一定能够使用时间价值的;    (二)未经使用,但是超过质量保

    2022年9月21日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号