基于51单片机的频率计设计

一、用单片机的定时器设计一个频率计,并用发光二极管以二进制形式显示所测频率,单片机振荡频率为6MHZ。

二、硬件电路

三、C51程序

   #include <reg51.h>
     #define uchar unsigned char
     uchar Counter;
     void Time01_Init( void); //T0和T1初始化函数
    
     void Time01_Init( )
     {
         TMOD=0X16; //T0计数状态、方式2,T1定时状态,方式1
         TL0=0;     //T0计数初值为0
         TH0=0;
         TH1=0X0B;  //fosc=6MHZ,定时125ms溢出
         TL1=0XDC;
         EA=1;
         ET1=1;
       TCON|=0X50;   //同时启动T0和T1
     }
    
         void main( )
         {
            uchar a;
            Counter=8;   //计数器初值为8
            P1=0; 
            Time01_Init( );
             while(1)
       {
         if(Counter==0)  //1s定时到
         {
           TCON&=0X0F;   //同时关闭T0和T1
           a=TL0;    
           P1=~a;             //频率值每位取反输出(二极管为共阳极接法)             
           Counter=8;
           TL0=0;
           TH0=0;
           TH1=0X0B;
           TL1=0XDC;
           TCON|=0X50;
               }
             }
        }
         
  void Time1_ISR( ) interrupt 3  //T1中断服务函数
    {
    Counter--;
    TH1=0X0B;
    TL1=0XDC;    
    }

四、仿真

P3.4引脚输入的待测频率为50HZ,结果显示为50HZ,表示程序正确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值