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

📄 chengxu.c

📁 TCS230颜色识别传感器应用学习资料
💻 C
字号:
/********************************************************************
                            汇诚科技

实现功能:对颜色传感器输出的频率进行测量
使用芯片:AT89S52 或者 STC89C52
晶振:11.0592MHZ
编译环境:Keil
作者:zhangxinchunleo
网站:www.ourhc.cn
淘宝店:汇诚科技 http://shop36330473.taobao.com
【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!     

*********************************************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned  int	
uchar duan[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};	 //所需的段的位码
uchar wei[5]={0Xf7,0XEf,0XDf,0XBf,0X7f};                        //位的控制端
uint z,x,c,v,b,n,date;	//定义数据类型
uint dispcount=0;	//中断计数
uint lck=0;			//定时器计数
uint disp=0;		//频率值
/******************************************************************

延时函数

******************************************************************/
void delay(uchar t)
{
  uchar i,j;
   for(i=0;i<t;i++)
   {
   	 for(j=13;j>0;j--);
	 { ;
	 }
   }
}

/**********************************************************************
                数码管动态扫描
*********************************************************************/
void xianshi()
 { 
 /*****************数据转换*****************************/ 
  
  
  z=date/10000;     	 //求万位
  x=date%10000/1000;	 //求千位
  c=date%1000/100;		 //求百位
  v=date%100/10;		 //求十位
  b=date%10;			 //求个位

      P2=wei[0];
	  P0=duan[z];
	  delay(50);  
  	  P2=wei[1];
      P0=duan[x];
	  delay(50);  
   	  P2=wei[2];
      P0=duan[c];
	  delay(50);  
      P2=wei[3];
      P0=duan[v];
	  delay(50);  
      P2=wei[4];
      P0=duan[b];
	  delay(50); 			               

       }

/*************************************************************************
                                定时器初值1ms	
**************************************************************************/
void initTimer(void)
{
 TMOD=0x0;
 TH0=0xe3;
 TL0=0xc;
}

/*************************************************************************
                                定时器函数	
**************************************************************************/
void timer0(void) interrupt 1
{
 TH0=0xe3;
 TL0=0xc;
 lck++;
 if(lck==1000)
       {
        disp=dispcount;
 	    lck=0;
		dispcount=0;
       }

}

/*************************************************************************
                                中断函数	
**************************************************************************/
void int0(void) interrupt 0
{

dispcount++; //每一次中断,计数加一

}

/*************************************************************************
                                主函数	
**************************************************************************/
void main(void)
{

IT0=1;     //INT0下降沿中断
EX0=1;     //允许INT1中断
initTimer(); //装入初值
TR0=1;
ET0=1;
EA=1;
while(1)

{

date=disp;	
xianshi();
}
}

/*************************************************************************
                                结束	
**************************************************************************/									  

⌨️ 快捷键说明

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