前言
NE555是一个纯硬件的设计,旦硬件电路确定了,其功能也确定了,没有可编程的部分,也没什么好去理解的地方,如果理解不了就直接背代码,这里也不是很常考,大家了解一下就可以了,知道大概怎么写有个印象就可以了
555定时器
在NE555中,有3个5K电阻分压,故称为555定时器
555定时器的基本原理:低电平触发端TRIG和高电平触发端THR:
两者电压均小于各自的参考电压时,U0= 1,放电管截止;
两者电压均大于各自的参考电压时,U0= 0,放电管导通;
在蓝桥杯单片机上面,555定时器是一个信号发生电路,通过电位器Rb3可以改变输出信号的频率。
555定时器模块在使用测频率的时候,用跳线帽将J13中的NAL与P34短接,NE555发生的信号输入到单片机的P34引脚
代码
unsigned int count_f=0;//用于频率计数
unsigned int dat_f=0;//用于频率记录
unsigned char count_t=0;//用于定时器定时
void InitTimer()
{
TMOD=0x16; //高四位0001,低四位0110,定时器1做定时,16位不自动重装载;定时器0作计数,8位重装
TH0=0xff;
TL0=0xff;
//定时器1用作定时,时间为50ms
TH1=(65535-50000+1)/256;
TL1=(65535-50000+1)%256;
ET0=1;//使能定时器0中断
ET1=1;//使能定时器1中断
EA=1;//使能总中断
TR0=1;//开启定时器0
TR1=1;//开启定时器1
}
void ServiceT0() interrupt 1
{
count_f++;//每有一个信号,定时器0溢出进入中断,频率计数count_f加1
}
void ServiceT1() interrupt 3
{
TH1=(65535-50000+1)/256;//重载定时器1计数初始值
TL1=(65535-50000+1)%256;
count_t++;//定时器定时加1
if(count_t==20)//如果定时器1溢出20次,即50ms*20=1秒后,将count_f赋给dat_f,再将count_f,count_t清零,重新计数
{
dat_f=count_f;
count_f=0;
count_t=0;
}
}
这一个模块在蓝桥杯省赛部分中并不常考,大家可以了解一下,看看有个印象,没那么重要,根据之前省赛用到过的模块来看,基本是都已经更新完了,还有一个超声波模块,那里不是很常使用,之前在省赛里面好像只考过一次,这里的更新也就告一段落。本人水平有限,所有代码都是自己的风格书写,但是大致的应该是没有什么问题,希望对大家有帮助如果有哪里出错或者有更好的解法可以与我私信或在评论区里进行讨论
后面会更新蓝桥杯的省题的代码,尽量全部更新出来,在蓝桥杯单片机赛题里面,如果能进国赛的话,国赛的赛题也会更新,大家一起加油吧
上一节:蓝桥杯单片机基础部分——5、DS18B20温度传感器添加链接描述