前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >蓝桥杯单片机NE555编程

蓝桥杯单片机NE555编程

作者头像
全栈程序员站长
发布于 2021-11-15 08:11:09
发布于 2021-11-15 08:11:09
65000
代码可运行
举报
运行总次数:0
代码可运行

蓝桥杯单片机中的NE555模块的编程,其实是很简单。简单来说就是计算一秒钟之内有多少个频率响应。中间所谓的频率响应也就是计算定时器作为计数器时候溢出的个数而已。能够考察的点就是这样子了,也要稍微了解,之后进行编程,就能够熟练掌握了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include "reg52.h"
#include "intrins.h"

typedef unsigned char u8;
typedef unsigned int u16;


u8 t1_count;          // 定时一秒的计数变量

u16 t0_count;        // 存放临时得出的频率值
u16 t0_sum;          // 存放一秒的频率最终值


u8 code shuma[12] = {
   0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xbf};


// 系统初始化函数
void init_system()
{
   
    P2 = (P2 & 0x1f) | 0x80;
	P0 = 0xff;
	P2 = (P2 & 0x1f);

	P2 = (P2 & 0x1f) | 0xa0;
	P0 = 0x00;
	P2 = (P2 & 0x1f);

	P2 = (P2 & 0x1f) | 0xc0;
	P0 = 0x00;
	P2 = (P2 & 0x1f);
}

	// 外设导通选择函数
void select(u8 local)
{
   
    switch(local)
	{
   
	    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;
	}
}


void delay()
{
   
    u8 t = 200;
	while(t--);
}

void display(u8 local, u8 num)
{
   
    select(6);
	P0 = 0x80 >> (local - 1);
	P2 = P2 & 0x1f;

	select(7);
	P0 = num;
	P2 = P2 & 0x1f;

	// 数码管简单延时函数
	delay();

}

void close_display()
{
   
    // 消隐数码管
	select(6);
	P0 = 0x00;
	P2 = P2 & 0x1f;
}


void init_t1()
{
   
	TMOD = 0x16;		//定时器 T1 16位定时模式,定时器T0 计数模式

	TL0 = 0xff;
	TH0 = 0xff;

	TL1 = (65535 - 5000) % 256;		//5ms的定时
	TH1 = (65535 - 5000) / 256;		//5ms的定时

	EA = 1;

	ET1 = 1;
	TF1 = 0;		//溢出标志位
	TR1 = 1;		//T1中断开始位

	ET0 =1;
	TR0 = 1;
}

void server_t0() interrupt 1         // T0计数器的服务中断函数
{
   
    t0_count++;

}


void server_t1() interrupt 3        // 定时器T1的服务函数
{
   
    TL1 = (65535 - 5000) % 256;		//重置低八位
	TH1 = (65535 - 5000) / 256;		//重置高八位

	if(++t1_count == 200)         // 定时时间为1S
	{
   
		t0_sum = t0_count;       // 把计算到的频率数保存到t0_sum变量中
		t0_count = 0;
		t1_count = 0;
	}
}


void main()
{
   

	init_system();
	init_t1();
    while(1)
	{
   
	   display(8,0x8e);           // 最高位显示一个大写C
	   display(1, shuma[t0_sum%10]);
	   if(t0_sum > 9){
   display(2, shuma[t0_sum/10%10]);}  // 判断频率是否大于二位数,大于才显示,不大于不显示,后面类似
	   if(t0_sum > 99){
   display(3, shuma[t0_sum/100%10]);}
	   if(t0_sum > 999){
   display(4, shuma[t0_sum/1000%10]);}
	   if(t0_sum > 9999){
   display(2, shuma[t0_sum/10000%10]);}
	   close_display(); 
	}
}

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
蓝桥杯单片机定时器1的编码以及数码管的动态显示
简单使用蓝桥杯单片机上面的定时器,进行设置一个简单的秒表吧,用于练手,同时熟练操作定时器的操作以及熟练数码管的动态显示,虽然简单,但是也两个知识点都是常考的,也是必须掌握的模块喔。
全栈程序员站长
2021/11/15
4170
蓝桥杯单片机PCF8591数据读取——湿度检测
蓝桥杯单片机PCF8591数据读取进行转换为湿度检测,因为在蓝桥杯提供的单片机上面并没有湿度检测的芯片,所以考察的时候使用的就是PCF8591芯片读取到的数据进行替换,具体的数据格式一般的考察形式有两种,一种是0-255整数形式;另外一种就是0-5浮点型形式的数据。但是其实也就是一个数据的转换而已。
全栈程序员站长
2021/11/15
7300
蓝桥杯单片机AT24C02芯片上电自启动编程「建议收藏」
蓝桥杯单片机AT24C02芯片上电自启动读取数据,写入数据的实现也是挺重要的一个模块,往年的考试就有考到过,下面就来解说一下具体的分析过程吧。
全栈程序员站长
2022/07/11
4710
蓝桥杯单片机DS18B02温度测量(小数点显示)
DS18B02芯片可以说是在蓝桥杯中是极为常考的一个芯片模块了,熟练掌握是必须的。 简单说明一下吧:温度读取时候呢?首先读出的是温度的低八位,其次读出的是温度的高八位,组成一个16位的二进制值就是DS18B20测量到的温度值。16位中的高5位代表着温度值的正负,一般环境下就没有必要考虑了,因为我们身边的环境温度都是高于零度的啦。最低的4位呢是小数位,需要显示小数位的时候就需要进行处理,没有这方面的要求时候可以直接忽略了。
全栈程序员站长
2021/12/23
9400
蓝桥杯单片机必备知识—–(8)NE555测频
已经使用跳线帽将P34和NE555的输出端接在一起了,关乎NE555,有些许数电基础的都明白,NE555就是改变RB3,改变负载电阻,使其输出方波的频率发生改变,其中并不涉及任何对NE555的编程,当然你也没法对其编程。
全栈程序员站长
2021/04/15
1.3K0
蓝桥杯单片机—-NE555频率测量
NE555 (Timer IC)为8脚时基集成电路,NE555是属于555系列的计时IC的其中的一种型号,555系列IC的接脚功能及运用都是相容的,只是型号不同的因其价格不同其稳定度、省电、可产生的振荡频率也不大相同;而555是一个用途很广且相当普遍的计时IC,只需少数的电阻和电容,便可产生数位电路所需的各种不同频率之脉波讯号。
全栈程序员站长
2022/07/28
1.3K0
蓝桥杯单片机—-NE555频率测量
蓝桥杯单片机DS1302实时时间设计(时间暂停、启动设置)
蓝桥杯单片机DS1302时间设计,这也是蓝桥杯中常考的一个模块。对于DS1302的操作也是非常简单的,只需要简单记住控制写入以及读出的地址位便可,其余都是在调用官方提供的底层驱动代码,只要会调用就能够轻松编写出一个实时时钟了。
全栈程序员站长
2021/11/15
1.6K0
蓝桥杯单片机必备知识—–(9)超声波测距
超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2 。这就是所谓的时间差测距法。 超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。由此可见,超声波测距原理与雷达原理是一样的。 测距的公式表示为:L=C×T 式中L为测量的距离长度;C为超声波在空气中的传播速度;T为测量距离传播的时间差(T为发射到接收时间数值的一半)。 超声波测距主要应用于倒车提醒、建筑工地、工业现场等的距离测量,虽然目前的测距量程上能达到百米,但测量的精度往往只能达到厘米数量级。 由于超声波易于定向发射、方向性好、强度易控制、与被测量物体不需要直接接触的优点,是作为液体高度测量的理想手段。在精密的液位测量中需要达到毫米级的测量精度,但是目前国内的超声波测距专用集成电路都是只有厘米级的测量精度。
全栈程序员站长
2021/04/16
8110
蓝桥杯单片机必备知识—–(9)超声波测距
蓝桥杯单片机必备知识—–(12)串口通讯
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100133.html原文链接:
全栈程序员站长
2021/04/15
8860
蓝桥杯单片机必备知识—–(1)显示函数
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100132.html原文链接:
全栈程序员站长
2021/04/15
5740
蓝桥杯单片机必备知识—–(5)独立按键
1.放在while(1)一直扫描按键是否按下 2.放在中断中 中断一次扫描按键是否按下 注:大型项目会放在中断中进行,一直扫描会占用过多资源,如果参加比赛则可以在while中一直使用循环
全栈程序员站长
2021/04/15
5360
计算机控制技术实验说明
AD转换是所有嵌入式系统或机器人获取外部信息的一种重要方式,将温度、角度和位置等转换为对应的数字量,供处理器处理。
zhangrelay
2019/01/23
5530
蓝桥杯单片机必备知识—–(11)EEPROM
由于EPROM操作的不便,后来出的主板上BIOS ROM芯片大部分都采用EEPROM(Electrically Erasable Programmable ROM,电可擦除可编程ROM)。EEPROM的擦除不需要借助于其它设备,它是以电子信号来修改其内容的,而且是以Byte为最小修改单位,不必将资料全部洗掉才能写入,彻底摆脱了EPROM Eraser和编程器的束缚。EEPROM在写入数据时,仍要利用一定的编程电压,此时,只需用厂商提供的专用刷新程序就可以轻而易举地改写内容,所以,它属于双电压芯片。借助于EEPROM芯片的双电压特性,可以使BIOS具有良好的防毒功能,在升级时,把跳线开关打至“on”的位置,即给芯片加上相应的编程电压,就可以方便地升级;平时使用时,则把跳线开关打至“off”的位置,防止CIH类的病毒对BIOS芯片的非法修改。所以,仍有不少主板采用EEPROM作为BIOS芯片并作为自己主板的一大特色。 IIC.H添加
全栈程序员站长
2021/04/16
6620
蓝桥杯单片机必备知识—–(11)EEPROM
蓝桥杯单片机必备知识—–(4)pcf8591–DAC
注:该ADC模块只能通过0~255来输出最大4.85V,显示时应该需要适当的转换
全栈程序员站长
2021/04/15
6850
水流量霍尔传感器工作原理_51单片机温度传感器
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/11
1.2K0
水流量霍尔传感器工作原理_51单片机温度传感器
蓝桥杯单片机必备知识—–(3)pcf8591–ADC
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100131.html原文链接:
全栈程序员站长
2021/04/15
6330
蓝桥杯单片机必备知识—–(10)DS1302时钟
extern time[]; //标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义
全栈程序员站长
2022/06/29
3850
蓝桥杯单片机必备知识—–(10)DS1302时钟
4.10 51单片机-使用计数器测量NE555脉冲频率
STC90C51RC/RD+系列单片机内部设置的两个16位定时器/计数器T0和T1都具有计数方式和定时方式两种工作方式。对每个定时器/计数器(T0和T1),在特殊功能寄存器TMOD中都有一控制-C/T来选择T0或者T1为定时器还是计数器。定时器/计数器的核心部件是一个加法计数器,其本质是对脉冲进行计数。只是计数脉冲来源不同:如果计数脉冲来自系统时钟,则为定时方式,此时定时器/计数器每12个时钟或者每6个时钟得到一个计数脉冲,计数值加1;如果计数脉冲来自单片机外部引脚(T0为P3.3,T1为P3.3),则为计数方式,每来一个脉冲加1。
DS小龙哥
2022/01/10
1.8K0
4.10 51单片机-使用计数器测量NE555脉冲频率
51单片机的中断及其使用方法
比如说我正在厨房用煤气烧一壶水,这样就只能守在厨房里,苦苦等着水开——如果水溢出来浇灭了煤气,有可能就要发生一场灾难了。
緣來
2020/01/02
2.1K0
单片机DA转换实现正弦波
使用的是查表法: 1.c文件: #include "reg52.h" #include <intrins.h> #include <i2c.h> #define PCF8591 0x90 #define uint unsigned int #define uchar unsigned char #define arr_length 720 //正弦波数组长度 code unsigned char sin1[720]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x
用户1749219
2018/05/16
1.3K0
推荐阅读
相关推荐
蓝桥杯单片机定时器1的编码以及数码管的动态显示
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档