蓝桥杯单片机NE555编程

7 篇文章 4 订阅
1 篇文章 0 订阅

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

#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(); 
	}
}
蓝桥杯是中国最大的IT技能竞赛之一,其中单片机部分常用的教程是关于NE555定时器的。NE555是一种常用的集成电路,广泛应用于电子电路中的定时和脉冲生成等功能。以下是关于NE555的教程内容: 1. NE555的基本原理:NE555是一种8引脚的集成电路,包含比较器、RS触发器和输出驱动器等功能。它可以通过外部元件连接来实现不同的定时和脉冲生成功能。 2. NE555的引脚功能: - 引脚1(GND):接地引脚,连接到电路的地线。 - 引脚2(TRIG):触发引脚,用于接收外部触发信号。 - 引脚3(OUT):输出引脚,输出NE555产生的脉冲信号。 - 引脚4(RESET):复位引脚,用于复位NE555。 - 引脚5(CTRL):控制引脚,用于控制NE555的工作模式。 - 引脚6(THR):比较器阈值引脚,用于设置比较器的阈值电平。 - 引脚7(DISCH):放电引脚,用于控制输出引脚的放电过程。 - 引脚8(VCC):电源引脚,连接到正电源。 3. NE555的工作模式: - 单稳态模式:NE555在接收到触发信号后,输出一个固定时间的脉冲信号。 - 双稳态模式:NE555在接收到触发信号后,输出一个持续时间取决于外部元件的脉冲信号。 - 震荡模式:NE555通过外部元件的连接,产生一定频率和占空比的方波信号。 4. NE555的应用: - 时钟电路:NE555可以用作时钟电路的计时元件,实现定时功能。 - 脉冲生成器:NE555可以用作脉冲信号的生成器,用于控制其他电路的工作。 - 呼吸灯效果:NE555可以通过改变占空比来实现呼吸灯效果。 - 频率测量NE555可以通过测量输出信号的频率来实现频率测量功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员吴同学

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值