⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cepin.c

📁 用单片控制来测量外部的脉冲个数
💻 C
字号:

/*************定时1s对外部脉冲计数*********************************/
//定时1秒 T1 定时,T0 计数
// T0--P3.4 输入信号
/**********************************************/

#include<reg51.h>
unsigned int number;  //计数值
unsigned int count;	  //常规参数

/************************************************************************************************************/
unsigned char d[4];	  //显示的数值
unsigned char code digit[4]={0xf8,0xf4,0xf2,0xf1};  //数码显示选择
unsigned char code tab[10]={0x3f,6,0x5b,0x4f,0x66,0x6d, 0x7d,7,0x7f,0x6f};
                            //数码管0-----9;						
							
/********延时子程序***********/
 void delay(unsigned char dy)
 {
 while(--dy);
 }

 /********十进制到BCD码的转换*************/
 void hextobcd(unsigned int hexs)
{
d[0]=hexs/1000;
hexs=hexs%1000;
d[1]=hexs/100;
hexs=hexs%100;
d[2]=hexs/10;
hexs=hexs%10;
d[3]=hexs;
}

/*******非中断的显示子程序***********/
void display0()
{
 unsigned char m;
 for(m=0;m<4;m++)
   {
    P2=digit[m]; P0=tab[d[m]];  
	delay(250);
    P0=0;
   }
}

/************************************************************************************************************/

/**************main函数******************/
main()
{
unsigned char k2;  //延时参数
unsigned int temp;
TMOD=0x15;			//定时器的方式控制字
TH0=0;TL0=0;		//TH0为定时器/记数器0高字节,TL0为定时器/记数器0低字节
TH1=0x4a;TL1=0x00;			  // T1 定时50ms
ET1=1;ET0=1;
EA=1;
TR0=1;
TR1=1;
count=1;

while(1)
	{
	
	  while(!TF1) {display0();}
	  count--;
	  if(count==0)
	  	{
		TR0=0;
		TR1=0;
		count=2; 
		temp=(TH0<<8|TL0); 
		number=temp/100;   
		hextobcd(number);
		display0();
		for(k2=0;k2<50;k2++)       {delay(200); display0();}

		TH0=0;
		TL0=0;
		TH1=0x4a;
		TL1=0;
		TF1=0;
		TR0=1;
		TR1=1;
		}
	  else
	    {TF1=0;TH1=0x4a;TL1=0;TR1=1;}
    
	  if(number<=24 && number>=0)  P3=0x01;
	  else if(number>24 && number<48) P3=0x02;
	  else if(number>48 && number<98) P3=0x04;
	  else if(number>98) P3=0x80;

	} 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -