蓝桥杯单片机必备知识—–(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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vue报错:Navigation cancelled from “/userIndex“ to “/blank/login“ with a new navigati

    vue报错:Navigation cancelled from “/userIndex“ to “/blank/login“ with a new navigati最近在弄一个vue项目时碰到这么一个报错,查了下资料,记录一下:这个错误是vue-router的内部错误,是因为没有进行catch处理,导致的编程式导航跳转问题,往同一个地址跳转时,会报错。解决方法如下:在路由文件中进行配置:router/index.jsimportVuefrom’vue’importRouterfrom’vue-router’Vue.use(Router)//解决报错constoriginalPush=Router.prototype.pushco

    2022年7月26日
    24
  • java swt griddata_SWT中GridLayout 和GridData的使用

    java swt griddata_SWT中GridLayout 和GridData的使用1.[代码][Java]代码packagecn.haibin.rcp.test.layer;importorg.eclipse.jface.viewers.TableViewer;importorg.eclipse.swt.SWT;importorg.eclipse.swt.layout.GridData;importorg.eclipse.swt.layout.GridLayout;i…

    2022年5月26日
    64
  • CSDN帐号被盗尚未?

    CSDN帐号被盗尚未?

    2022年1月6日
    39
  • SSAS(2)_SSA全称

    SSAS(2)_SSA全称上1篇通过书中实验练习,开发了一个SSASCube。这里,基于这个Cube,再深入小结、试验有关SSASCube开发的扩展知识:维度属性间的关系及维度的层次结构(Hierarchies)维度与度量的关系多维数据集(Cube)KPI的实现多维数据集(Cube)行为(Action)的实现,例如:钻取多维数据集(Cube)的本地化与视图多维表达式(MDX)的应用书名:MCTSSel

    2022年10月25日
    0
  • 用Pandas 处理大数据的3种超级方法

    用Pandas 处理大数据的3种超级方法原文链接:3simplewaystohandlelargedatawithPandas作者|GeorgeSeif译者|jojoa易上手,文档丰富的Pandas已经成为时下最火的数据处理库。此外,Pandas数据处理能力也一流。其实无论你使用什么库,大量的数据处理起来往往回遇到新的挑战。数据处理时,往往会遇到没有足够内存(RAM)这个硬件问题。企业往往…

    2022年5月24日
    108
  • 利用MATLAB演奏最炫民族风[通俗易懂]

    利用MATLAB演奏最炫民族风[通俗易懂]sp=actxserver(‘SAPI.SpVoice’);sp.Speak(‘最炫民族风’);sp.Speak(‘作曲者’);sp.Speak(‘二狗子’);sp.Speak(‘演奏者’);sp.Speak(‘Matlab’);%Mostshiningnationalwind//最炫民族风onMatlab%TheModificationisfrom”can

    2022年9月22日
    0

发表回复

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

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