蓝桥555定时器进行频率测量

蓝桥板子可以直接用

#include<STC15F2K60S2.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code  tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
void  display_all(uchar yi,er,san,si,wu,liu,qi,ba);
uchar yi,er,san,si,wu,liu,qi,ba;       
void allinit(void);
void Timer0Init(void);
void zd_t1();       
void Timer1Init(void);
void delayms(uint ms);
uint time,fre;
void main()
{
        Timer1Init();
        Timer0Init();
		allinit();
        EA=1;
        ET1=1;
        while(1)
        {
            yi=11;er=11;san=11;
            si=fre/10000;
            wu=(fre%10000)/1000;
            liu=(fre%1000)/100;
            qi=(fre%100)/10;
            ba=(fre%100)%10;
           display_all(yi,er,san,si,wu,liu,qi,ba);               
        }
}



void timer1_service(void)  interrupt 3
{
        time++;
        if(time==1000)
        {
                TR0=0;       
                time=0;
                fre=(TH0*256+TL0);
                TH0=0;
                TL0=0;
                TR0=1;
        }       
}



void Timer1Init(void)                //1毫秒@11.0592MHz
{
    	AUXR &= 0xBF;                //定时器时钟12T模式
        TMOD &= 0x0F;                //设置定时器为定时模式
        TL1 = 0x66;                    //设置定时初值
        TH1 = 0xFC;                    //设置定时初值
        TF1 = 0;                    //清除TF1标志
        TR1 = 1        ;                //定时器1开始计时
}


void Timer0Init(void)       
{
    	AUXR &= 0x7F;                //定时器时钟12T模式
        TMOD |= 0x05;                //设置定时器为计数模式
        TL0 = 0x00;                    //设置定时初值
        TH0 = 0x00;                    //设置定时初值
        TF0 = 0;                    //清除TF0标志
        TR0 = 1;                    //定时器0开始计时
}
       
void allinit(void)
{
	P2=(P2&0x1f)|0xa0;
	P0=0x00;
	P2=(P2&0x1f)|0x80;
	P0=0xFF;
	P2=(P2&0x1f)|0xc0;
	P0=0xFF;
	P2=(P2&0x1f)|0xe0;
	P0=0xFF;
	P2=P2&0x1f;
}               
void  display_all(uchar yi,er,san,si,wu,liu,qi,ba)
{
	P2=0xc0;
    P0=0x01;
    P2=0xe0;
    P0=tab[yi];
    delayms(5);
   
	P2=0xc0;
    P0=0x02;
    P2=0xe0;
    P0=tab[er];
    delayms(5);
   
    P2=0xc0;
    P0=0x04;
    P2=0xe0;
    P0=tab[san];
    delayms(5);
   
    P2=0xc0;
    P0=0x08;
    P2=0xe0;
    P0=tab[si];
    delayms(5);
   
    P2=0xc0;
    P0=0x10;
    P2=0xe0;
    P0=tab[wu];
    delayms(5);       
   
    P2=0xc0;
    P0=0x20;
    P2=0xe0;
    P0=tab[liu];
    delayms(5);
   
    P2=0xc0;
    P0=0x40;
    P2=0xe0;
    P0=tab[qi];
    delayms(5);
   
    P2=0xc0;
    P0=0x80;
    P2=0xe0;
    P0=tab[ba];
    delayms(5);
	P2=(P2&0x1f)|0xc0;
	P0=0xFF;
	P2=(P2&0x1f)|0xe0;
	P0=0xFF;   
	P2=P2&0x1f;    
}
void delayms(uint ms)
{
	uint i,j;
	for(i=ms;i>0;i--)
	 for(j=835;j>0;j--);
}

发布了69 篇原创文章 · 获赞 28 · 访问量 9847

猜你喜欢

转载自blog.csdn.net/weixin_44146373/article/details/104953870