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

📄 1602.txt

📁 用C语言进行的1602驱动
💻 TXT
字号:
/*************************************************
  File name:      // 1602DRriver.h 
  Author: 文qinyong       Version:Uv2        Date:2007-03-15
  Description:    //字符型液晶1602驱动头文件,
 *************************************************/


#include"1602Driver.h"
/*******************************************/
/*******************************************/
/**********		函数功能:延时5ms	********/
/**********		输入参数:无		********/
/**********		返回值 :无		********/
/*******************************************/
/*******************************************/

void delay_5ms(void)   //短延时5ms
{
 unsigned int i=5552;
 while(i--);
}

/*******************************************/
/*******************************************/
/**********		函数功能:延时400ms	********/
/**********		输入参数:x			********/
/**********		返回值 :无		********/
/*******************************************/
/*******************************************/
void delay_400ms(void)               //长延时400ms   
{
 unsigned char i = 5;
 unsigned int j;
 while(i--){
  j=7269;
  while(j--);
 };  
}


/**********************************************/
/**********************************************/
/*******	函数功能:写命令			*******/
/*******	输入参数:command,BusyC		*******/
/*******	返回值 :无			    *******/
/**********************************************/
/**********************************************/

void LCD_command(unsigned char command,unsigned char BusyC)
{
 if (BusyC) ReadStatus(); //Test it busy or not

 LCDIO=command;

 LCD1602_RS=0;   
 LCD1602_RW=0;
 LCD1602_EN=0;
 LCD1602_EN=0;
 LCD1602_EN=1;
}

/***********************************************/
/***********************************************/
/*******	函数功能:写数据	****************/
/*******	输入参数:dat,BusyC ****************/
/*******	返回值 :无		****************/
/***********************************************/
/***********************************************/

void LCD_data(unsigned char dat,unsigned char BusyC) //置显示值
{
 if (BusyC) ReadStatus(); //Test it busy or not

 LCDIO=dat;

 LCD1602_RS=1;
 LCD1602_RW=0;
 LCD1602_EN=0;
 LCD1602_EN=0;
 LCD1602_EN=1;
}


/********************************************/
/********************************************/
/*******		函数功能:写地址		*****/
/*******		输入参数:x,y			*****/
/*******		返回值 :无			*****/
/********************************************/
/********************************************/
/****************** x为列,y为行**************************/

void LCD_set_xy( unsigned char x, unsigned char y )
{
 unsigned char address;

 if (y == LINE1) 			//第一行
  address = LINE1_HEAD + x;

 else 						//第二行	
     address = LINE2_HEAD + x;

 LCD_command(address,1); //送显示首地址
}


/*********************************************/
/*********************************************/
/**********		函数功能:显示单字符	******/
/**********		输入参数:X,Y,s			******/
/**********		返回值 :无			******/
/*********************************************/
/*********************************************/

void LCD_write_char( unsigned x,unsigned char y,unsigned char dat)
{
 LCD_set_xy( x, y ); 	//设地址
 LCD_data(dat,1);       //写数据
}


/*********************************************/
/*********************************************/
/**********		函数功能:显示字符串	******/
/**********		输入参数:X,Y,s			******/
/**********		返回值 :无			******/
/*********************************************/
/*********************************************/

void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
{
    LCD_set_xy( X, Y ); //set address 

    while (*s)  		// write character
    {
     	LCDIO=*s;
        LCD_data(*s,1);   
		s ++;
    }
}


/********************************************/
/**********  功    能:显示数组数据 *********/
/**********	 输入参数:X,Y,*p,longstr *******/
/**********  返回值  :无			 ********/
/********************************************/
//void LCD_write_Array(unsigned char X,unsigned char Y,unsigned char *p, unsigned char longstr)
//{
//	unsigned char i=0;
//	LCD_set_xy( X, Y ); //set address 
//	while(i<longstr)
//	{
//		LCD_data(p[i],1);       //写数据	
//		i++;
//	}
//}


/**********************************************/
/**********************************************/
/*******       函数功能:初始化	      *********/
/*******       输入参数:无      *********/
/*******	   返回值 :无			 *********/
/**********************************************/
/**********************************************/

void LCD_init(void)
{
 delay_400ms(); 
 LCD_command(CLR,0);				//清屏
 LCD_command(DATA_MODE,1);			//set 8 bit data transmission mode 8位2行5*7点阵
 LCD_command(OPEN_SCREEN,1);		//open display (enable lcd display)	显示开,无光标,不闪烁
 LCD_command(DISPLAY_ADDRESS,1);	//set lcd first display address 	送显示首地址
 LCD_command(CLR,1);				//clear screen			 清屏
}


/**********************************************/
/**********************************************/
/*********	函数功能:忙判断位	***************/
/*********  输入参数:无		***************/
/*********	返回值 :LCDIO	***************/
/**********************************************/
/**********************************************/
unsigned char ReadStatus(void)
{
 LCDIO = 0xFF; 

 LCD1602_RS = 0;
 LCD1602_RW = 1;
 LCD1602_EN = 0;
 LCD1602_EN = 0;
 LCD1602_EN = 1;

 while (LCDIO & BUSY); //Test Busy State

 return(LCDIO);
}
/*************************************************/
/*********************main*********************/
/***********************************************/
unsigned char SR1[]="Hello girl! ";
#define L 12		//SR1的长度

 void main(void)
{  
  unsigned char i,j;
  LCD_init(); 
  LCD_command(CLR,0);
  while(1)
  {
  	for(j=0;j<L;j++)
  	{

    		for(i=0;i<L-j;i++)
  		{		
  			LCD_write_char(i,0,SR1[i+j]);  	//字符串左移消失 第一遍从第一个数开始显示,
  		}      								//第二遍从第二个开始,以此类推
  		LCD_write_string(0,1,"   2007-09-2  ");	//字符串居中
  		delay_400ms();
		delay_400ms();
		delay_400ms();
  	}
  }
}  

⌨️ 快捷键说明

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