蓝桥杯单片机必备知识—–(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; 
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • anaconda+pycharm的安装与配置教程

    anaconda+pycharm的安装与配置教程注:anaconda是自带Python解释器和Python编辑器于一身的,但是Python编辑器中pycharm更好用,所以本教程是写给自己的,每次重新安装anaconda和pycharm的时候有的要注意的地方都记不住了1.安装anaconda1.1.去官网下载anaconda的安装包(官网:https://www.anaconda.com/products/individual)在官网下载很忙的话可以去这里https://mirrors.tuna.tsinghua.edu.cn/下1.2.安装过

  • java.lang.Math中的基本方法

    java.lang.Math中的基本方法java.lang.Math类提供的方法都是static的,“静态引入”使得不必每次在调用类方法时都在方法前写上类名:importstaticjava.lang.Math.*;这样在调用Math

  • Using MSAgent to Scan the Start Menu 选择自 wm_ni 的 Blog

    Using MSAgent to Scan the Start Menu 选择自 wm_ni 的 BlogNotethiscodewillignoreduplicateshortcuts.ForexampleIhave4or5shortcutsinmyStartMenuthatarenamed”Readme.txt.”Onlythefirstinstanceofthesewillgetaddedtothecommandsallot

  • Qt面试笔试题问答经验总结

    Qt面试笔试题问答经验总结相信很多人和我一样,虽然经常用qt做些东西,但其实对qt理解并不是很深,尤其在岗位有相关需要的时候也会遇到很多坑。感觉网上也比较少,所以根据个人的面试经验,总结了一些面试qt的问题。答案为我自己的理解总结,有问题还请大佬指出。1.为什么要用qt来做界面Qt的跨平台性很强,比如同样一套代码写好pro文件可以在windows/linux/Android等直接编译。2.信号槽机制在事件的处理方面…

  • discuz php接口文档,Discuz二次开发技术文档[通俗易懂]

    discuz php接口文档,Discuz二次开发技术文档[通俗易懂]点评:Discuz二次开发基本知识总结,需要对discuz进行二次开发的朋友可以参考下。一)Discuz!的文件系统目录注:想搞DZ开发,就得弄懂DZ中每个文件的功能。a)Admin:后台管理功能模块b)Api:DZ系统与其它系统之间接口程序c)Archiver:DZ中,用以搜索引擎优化的无图版d)Attachments:DZ中,用户上传附件的存放目录e)Customavatars…

  • 自己动手写游戏:Flappy Bird

    一、关于FlappyBird《FlappyBird》是由来自越南的独立游戏开发者DongNguyen所开发的作品,游戏中玩家必须控制一只小鸟,跨越由各种不同长度水管所组成的障碍,而这只鸟其实是

    2021年12月19日

发表回复

您的电子邮箱地址不会被公开。

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