555定时器与频率测量

文章介绍了蓝桥杯竞赛中555定时器作为频率发生装置的使用,强调了555定时器的硬件特性,不可编程。代码段展示了如何利用定时器进行频率测量,并通过中断服务函数进行计数和数据显示。
摘要由CSDN通过智能技术生成

蓝桥杯中的555定时器用做了频率发生装置,在19年的题目中虽然出现了555定时器,但却被用作为考察频率测量的一个媒介。在涉及555定时器的蓝桥杯中,尤其注意,555是纯硬件电路,不能再对它编程,只需用跳帽将NAL与P34短接,板子就能获取来自555的信号。

题目如下

代码如下

#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();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值