蓝桥杯中的555定时器用做了频率发生装置,在19年的题目中虽然出现了555定时器,但却被用作为考察频率测量的一个媒介。在涉及555定时器的蓝桥杯中,尤其注意,555是纯硬件电路,不能再对它编程,只需用跳帽将NAL与P34短接,板子就能获取来自555的信号。
题目如下
![](https://img-blog.csdnimg.cn/img_convert/03f460c5d8691dbbf8304c4f4d46382c.png)
代码如下
#include"reg52.h"
#include"smg.h"
unsigned char count_t=0;
unsigned int count_f=0;
unsigned int dat_f=0;
void Init_Timer()
{
TH1 = (65535 - 50000)/256;//TMOD 0001
TL1 = (65535 - 50000)%256;
TH0 = 0xff;//8位自动重装,适合计数 TMOD 0110(TR0启动 计数模式 8位自动重装)
TL0 = 0xff;
TMOD = 0X16;
EA = 1;
ET1 = 1;
ET0 = 1;
TR0 = 1;
TR1 = 1;
}
void Service_T0() interrupt 1
{
count_f++;
}
void Service_T1() interrupt 3
{
TH1 = (65535 - 50000)/256;
TL1 = (65535 - 50000)%256;
count_t++;
if(count_t==20)
{
dat_f = count_f;
count_t=0;
count_f=0;
}
}
void SMG_XS()
{
DisPlaySMG_Bit(0,SMGNoDot_CA[16]);
DelaySMG(100);
DisPlaySMG_Bit(1,0xff);
DelaySMG(100);
DisPlaySMG_Bit(2,0xff);
DelaySMG(100);
if(dat_f > 9999)
{
DisPlaySMG_Bit(3,SMGNoDot_CA[dat_f/10000]);
DelaySMG(100);
}
if(dat_f > 999)
{
DisPlaySMG_Bit(4,SMGNoDot_CA[(dat_f/1000)%10]);
DelaySMG(100);
}
if(dat_f > 99)
{
DisPlaySMG_Bit(5,SMGNoDot_CA[(dat_f/100)%10]);
DelaySMG(100);
}
if(dat_f > 9)
{
DisPlaySMG_Bit(6,SMGNoDot_CA[(dat_f/10)%10]);
DelaySMG(100);
}
DisPlaySMG_Bit(7,SMGNoDot_CA[(dat_f/1)%10]);//提取末位数字方法:%10
DelaySMG(100);
All_SMG();
}
void main()
{
Init_Timer();
while(1)
{
SMG_XS();
}
}