资讯详情

NE555频率测量模块

#include<stc15f2k60s2.h>#define  uchar unsigned char#define  uint unsigned intchar  tab[]={     0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0xFF};uchar one,two,three,four,five,six,seven,eight;int  fre,di,gao,di_now,gao_now;int  time,i;bit flag;void  Timer0Init(void)  ;void  Timer1Init(void);void  Allinit();void  Delayms(uint ms);void  Display1(uchar one,two);void  Display2(uchar three,four);void  Display3(uchar five,six);void  Display4(uchar seven,eight);void  Key_Scan();void  Key_Scan16();void main(){
     	Allinit();	Timer0Init();  Timer1Init();	while(1)	{
     	  one=fre/10000;two=fre/1000%10;three=fre/100%10;four=fre/10%10;five=fre%10;		Display1(one,two);		Display2(three,four);		Display3(five,six);		Display4(seven,eight);	}	}void Allinit(){
     	P2=0XA0;//蜂鸣器继电器存器	P0=0X00;//关闭	P2=0XC0;//数码管位选锁存器	P0=0XFF;//选中所有数码管	P2=0XFF;//数码管段选锁存器 可以操作数码管	P0=0XFF;//关闭	P2=0X80;//LED锁存器	P0=0XFF;//关闭}void Delayms(uint ms){
     	uint i,j;	for(i=0;i<ms;i++)	for(j=845;j>0;j--);}void Display1(uchar one,two){
     	P2=0XC0;	P0=0X01;//0000 0001选中左边第一个数码管	P2=0XFF;	P0=tab[one];	Delayms(1);		P2=0XC0;	P0=0X02;//0000 0010	P2=0XFF;	P0=tab[two];	Delayms(1);}void Display2(uchar three,four){
     	P2=0XC0;	P0=0X04;//0000 0100	P2=0XFF;	P0=tab[three];	Delayms(1);		P2=0XC0;	P0=0X08;//0000 1000	P2=0XFF;	P0=tab[four];	Delayms(1);}void Display3(uchar five,six){
     	P2=0XC0;	P0=0X10;//0001 0000	P2=0XFF;	P0=tab[five];	Delayms(1);		P2=0XC0;	P0=0X20;//0010 0000	P2=0XFF;	P0=tab[six];	Delayms(1);}void Display4(uchar seven,eight){
     	P2=0XC0;	P0=0X40;//0100 0000	P2=0XFF;	P0=tab[seven];	Delayms(1);		P2=0XC0;	P0=0X80;//1000 0000	P2=0XFF;	P0=tab[eight];	Delayms(1);}void Timer0Init(void)		//5微秒@12.000MHz{
     	AUXR |= 0x80;		//定时器时钟1T模式	TMOD &= 0xF0;		//设置定时器模式	TL0 = 0xC4;		//设置定时初值	TH0 = 0xFF;		//设置定时初值	TF0 = 0;		//清除TF0标志	//TR0 = 1; //定时器0开始计时}void Timer1Init(void)		//1毫秒@12.000MHz{
     	AUXR |= 0x40;		//定时器时钟1T模式	TMOD &= 0x0F;		//设置定时器模式	TL1 = 0x20;		//设置定时初值	TH1 = 0xD1;		//设置定时初值	TF1 = 0;		//清除TF1标志	TR1 = 1;		//定时器1开始计时	EA=1;ET1=1;}void Time0() interrupt 1{
       if(P34==0)	{
        di++;	 if(flag==0) 	 {
     		 flag=1;		 gao_now=gao;		 gao=0;	 }	}	else if(P34==1)	{
     	gao++;	if(flag==1) 	{
     	 di_now=di;	 flag=0;	 di=0;	}	}}	void Time1() interrupt 3{
      i++; if(i==960) {
     	TR0=1;ET0=1;  } else if(i==990) {
       TR0=0;ET0=0;	i=0;	time=(di_now+gao_now)*5;	fre=1000000/time; }	 			}

标签: 介电常数电阻

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台