chc_100funtion.h

来自「这是一段开始学单片机时写的LCD程序」· C头文件 代码 · 共 360 行

H
360
字号
#ifndef _CHC_100funtion_h_
#define _CHC_100funtion_h_


#ifndef _LED_DISPLAY_
#define _LED_DISPLAY_
uchar idata LED_DISPLAY[5]={0,0,0,0,0xfe};					  //显示数据
uchar code DISPLAY_CODE[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};  //共阳数码管段码
uchar code DISPLAY_BIT[5]={0xf7,0xef,0xdf,0xbf,0x7f};				//显示位控制数据
char code PLAY_DESIGNER[]="2007.07.23";				//显示日期数据
char code PLAY_NAME[]="15:28";				//显示时间数据
char code PLAY_TEL[]="Good afternoon";				//显示问候数据
char code PLAY_CODE_TEL[]="teacher!";			
char code PLAY_EMAIN[]="DZ04-1";				//显示班级
char code PLAY_EMAIN1[]="Li Xijiang";			//显示姓名
#endif


//******************************************************************
//函数功能:检查LCD状态
//输入变量:无
//输出变量:LCD显示的当前状态
//调用模块:无
//******************************************************************
uchar LCD_GET_FLAG(void)	   
	{
	Lcd_RS=0;		  //设置RS为0,RW为1,即读命令寄存器方式
	Lcd_RW=1;
	return(SEND_IN);	  //返回LCD状态
	}
//******************************************************************
//函数功能:等待LCD空闲
//输入变量:无
//输出变量:无
//调用模块:LCD_GET_FLAG
//******************************************************************
void LCD_WEIT(void)
	{
	uchar i;
	i=100;							//定义等待时间,可以防止由于LCD损坏而使程序死循环
	do
	  {
	    if((LCD_GET_FLAG()&0x80)==0)
		{
		break;
		}
	  }while(--i!=0);
	}
//******************************************************************
//函数功能:向LCD发送命令
//输入变量:COMMAND
//输出变量:无
//调用模块:LCD_WEIT  Lcd_SEND_COMMAND 
//******************************************************************
void LCD_SEND_COMMAND(uchar COMMAND)
	{
	LCD_WEIT();						//等待空闲
	Lcd_SEND_COMMAND(COMMAND);				//发送命令
	}
//******************************************************************
//函数功能:向LCD发送数据
//输入变量:DATA
//输出变量:无
//调用模块:LCD_WEIT  Lcd_SEND_DATA
//******************************************************************
void LCD_SEND_DATA(uchar DATA)
	{
	LCD_WEIT();						//等待空闲
	Lcd_SEND_DATA(DATA);					//发送数据
	}
//******************************************************************
//函数功能:清除LCD指定行
//输入变量:y
//输出变量:无
//调用模块:LCD_SEND_COMMAND  LCD_SEND_DATA
//******************************************************************
void LCD_CLR(uchar y)
	{
	uchar i;
	i=0;
	if(y==1)
		{
		LCD_SEND_COMMAND(LCD_LINE1);			//发送命令让LCD指向第一行
		i=16;
		}
	else if(y==2)
		{
		LCD_SEND_COMMAND(LCD_LINE2);			//发送命令让LCD指向第二行
		i=16;
		}
	if(i!=0)
		{
			do
			{
			LCD_SEND_DATA(' ');			//让LCD的相应位置显示空格
			}while(--i!=0);
		}
	}	
//******************************************************************
//函数功能:在指定位置显示字符串
//输入变量:x y *DATA
//输出变量:无
//调用模块:LCD_SEND_COMMAND  LCD_SEND_DATA
//******************************************************************
void LCD_DISPLAY_STR(uchar x,uchar y,char *DATA)
	{
	if(y==1)
		{
		if(x<(16+1))					//判断显示位置是否超出第一行
		  {
		  LCD_SEND_COMMAND(LCD_LINE1-1+x);		//发送命令
		  for(;x<(16+1)&&*DATA!='\0';x++)		
			{
			LCD_SEND_DATA(*DATA++);			//发送数据
			}
		  if(*DATA!='\0')				//判断是否发送完毕
			{
			x=1;
			y=2;					//未发送完毕转第二行显示
			}
		  }
		}
		if(y==2)					
		  {
		  LCD_SEND_COMMAND(LCD_LINE2-1+x);
		  for(;x<(16+1)&&*DATA!='\0';x++)
			{
			LCD_SEND_DATA(*DATA++);
			}
		  }
	}
//*******************************************************************
//函数功能:LCD初始化
//输入变量:无
//输出变量:无
//调用模块:LCD_SEND_COMMAND  LCD_CLR
//*******************************************************************
void LCD_INIT(void)
	{
	LCD_SEND_COMMAND(LCD_MODE);
	LCD_SEND_COMMAND(LCD_NO_FLASH);
	LCD_SEND_COMMAND(LCD_NO_SHIFT);
	LCD_SEND_COMMAND(LCD_SH);
	LCD_CLR(1);						//清除第一行
	LCD_CLR(2);						//清除第二行
	}		



//******************************************************************
//函数功能:向移位寄存器发送一个字节的数据
//输入变量:sdata
//输出变量:无
//调用模块:无
//******************************************************************
//void LED_SEND_DATA(uchar sdata)
//	{
//	uchar i;
//	i=8;
//	do
//	{
//	Seri_CLK_IN=1;
//	sdata=sdata<<1;
//	Seri_DATA_IN=CY;
//	Seri_CLK_IN=0;
//	}while(--i!=0);
//	Seri_CLK_IN=1;
//	}
//******************************************************************
//函数功能:键盘检测,返回键号,没键按下时返回0
//输入变量:无
//输出变量:键号
//调用模块:LED_SEND_DATA
//******************************************************************
//uchar KEY_NUM_CHK(void)
//	{
//	uchar i,j;
//	i=8;
//	j=0x01;
//	do
//	{
//	LED_SEND_DATA(~j);
//	Key_CHK=1;
//	if(Key_CHK==0)
//		{
//		return(8-i+1);
//		}
//	j=j<<1;
//	}while(--i!=0);
//	return(0);
//	}
//******************************************************************
//函数功能:一号按键功能函数,使LED个位显示加一
//输入变量:无
//输出变量:无
//调用模块:无
//******************************************************************
//void KEY_FUN1(void)
//	{
//	LED_DISPLAY[0]+=1;
//	if(LED_DISPLAY[0]==10)
//		{
//		LED_DISPLAY[0]=0;
//		LED_DISPLAY[1]+=1;
//		if(LED_DISPLAY[1]==10)
//			{
//			LED_DISPLAY[1]=0;
//			LED_DISPLAY[2]+=1;
//			if(LED_DISPLAY[2]==10)
//				{
//				LED_DISPLAY[2]=0;
//				LED_DISPLAY[3]+=1;
//				if(LED_DISPLAY[3]==10)
//					{
//					LED_DISPLAY[3]=0;
//					}
//				}
//			}
//		}
//	}
//******************************************************************
//函数功能:二号按键功能函数,使LED十位显示加一
//输入变量:无
//输出变量:无
//调用模块:无
//******************************************************************
//void KEY_FUN2(void)
//	{
//	LED_DISPLAY[1]+=1;
//	if(LED_DISPLAY[1]==10)
//		{
//		LED_DISPLAY[1]=0;
//		LED_DISPLAY[2]+=1;
//		if(LED_DISPLAY[2]==10)
//			{
//			LED_DISPLAY[2]=0;
//			LED_DISPLAY[3]+=1;
//			if(LED_DISPLAY[3]==10)
//				{
//				LED_DISPLAY[3]=0;
//				}
//		  	}
//		}
//	}
//******************************************************************
//函数功能:三号按键功能函数,使LED百位显示加一
//输入变量:无
//输出变量:无
//调用模块:无
//******************************************************************
//void KEY_FUN3(void)
//	{
//	LED_DISPLAY[2]+=1;
//	if(LED_DISPLAY[2]==10)
//		{
//		LED_DISPLAY[2]=0;
//		LED_DISPLAY[3]+=1;
//		if(LED_DISPLAY[3]==10)
//			{
//			LED_DISPLAY[3]=0;
//			}
//		}
//	}
//******************************************************************
//函数功能:四号按键功能函数,使LED千位显示加一
//输入变量:无
//输出变量:无
//调用模块:无
//******************************************************************
//void KEY_FUN4(void)
//	{
//	LED_DISPLAY[3]+=1;
//	if(LED_DISPLAY[3]==10)
//		{
//		LED_DISPLAY[3]=0;
//		}
//	}
//******************************************************************
//函数功能:五号按键功能函数,使LCD显示电话号码
//输入变量:无
//输出变量:无
//调用模块:LCD_CLR  LCD_DISPLAY_STR
//******************************************************************
//void KEY_FUN5(void)
//	{
//	LCD_CLR(1);
//	LCD_CLR(2);
//	LCD_DISPLAY_STR(1,1,PLAY_TEL);
//	LCD_DISPLAY_STR(1,2,PLAY_CODE_TEL);
//	}
//******************************************************************
//函数功能:六号按键功能函数,使LCD显示EMAIN地址
//输入变量:无
//输出变量:无
//调用模块:LCD_CLR  LCD_DISPLAY_STR
//******************************************************************
//void KEY_FUN6(void)
//	{
//	LCD_CLR(1);
//	LCD_CLR(2);
//	LCD_DISPLAY_STR(1,1,PLAY_EMAIN);
//	LCD_DISPLAY_STR(1,2,PLAY_EMAIN1);
//	}
//******************************************************************
//函数功能:七号键功能函数,使LCD显示设计者的姓名
//输入变量:无
//输出变量:无
//调用模块:LCD_CLR  LCD_DISPLAY_STR
//******************************************************************
//void KEY_FUN7(void)
//	{
//	LCD_CLR(1);
//	LCD_CLR(2);
//	LCD_DISPLAY_STR(1,1,PLAY_DESIGNER);
//	LCD_DISPLAY_STR(1,2,PLAY_NAME);
//	}
//******************************************************************
//函数功能:八号键功能函数,
//输入变量:无
//输出变量:无
//调用模块:无
//******************************************************************
//void KEY_FUN8(void)
//	{
//	;
//	}
//******************************************************************
//函数功能:延时10MS
//输入变量:无
//输出变量:无
//调用模块:无
//******************************************************************
//void DELAY(uchar time)
//	{
//	uchar i;
//	for(i=50;i>0;i--)
//		{
//		while(--time!=0);
//		}
//	}




#endif














⌨️ 快捷键说明

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