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

📄 lcd.c

📁 标准的16*2lcd的驱动程序
💻 C
字号:
/*----------------使能脉冲--------------*/
void En(void)                  
{ E_H;  Delay_us(1000);
  E_L;  Delay_us(1000);
}
/*-----------------写指令-----------*/
void Write_Cmd(char Cmd)      
   
{   DDRC=0xFF;
	E_L;
	RS_L;
	RW_L;
	Delay_us(20);
	PORTC =Cmd;
	E_H;
	Delay_us(20);
	E_L;	
}
/*----------lcd初始化------------------*/
void Lcd_Init(void)    
{   Uchar i ;
    DDRC=0xFF;
    for(i=0;i<3;i++)
    {
	Delay_ms(300);
    Write_Cmd(0x38);    //功能设置 8位数据位 两行显示 5*7点阵  
	Delay_ms(100);
    } 
 Write_Cmd(0x0E);      //显示开.光标、闪烁关
 Delay_us(100);    
 Write_Cmd(0x01);      //显示清屏
 Delay_us(100);
 Write_Cmd(0x02);      //归位
 Delay_us(100);
 Write_Cmd(0x06);     //输入方式设置 
 Delay_us(100); 

}
/*----------清屏-------------------*/

void ClrLCD()
{
	Write_Cmd(0x01);      // Clear display
	Delay_us(50);
}
/*-----------写数据----------------*/
void LcdWriteData(char data)
{	while (!(Lcd_Busy()));
	E_L;
	RS_H;
	RW_L;
	Delay_us(20);	
	PORTC = data;
	E_H;
	Delay_us(20);
	E_L;
	Delay_us(20);
}

/*-----------读忙标志--------------------*/
Uchar Lcd_Busy()
{
	Uchar BF;
	DDRC=0x00;   //端口c设为输入方式
	E_L;
	RS_L;
	RW_H;
	Delay_us(20);
	E_H;
	Delay_us(20);
	BF=PINC;
	Delay_us(2);
	BF= BF&0x80;
	E_L;
	DDRC = 0xFF;  //端口c设为输出方式
	return BF;
} 
/*-------------设定写入的地址---------------*/
void Write_Location(char row ,char column)  
//void Write_Location(Uchar x, Uchar y)  
{ 
char p;
if(row==0)
     { p=0x80+column-1;}
else { p=0xc0+column-1;}
     Write_Cmd(p);
		
	 
}
/*--------------写入一个字符(ASCII码)-------------*/
void Write_Char(char Char)      
{RW_L;
 RS_H;
 DDRC=0xFF;
 PORTC=Char;
 En();
 Delay_us(100);        //wait for 20us after one Char displayed
}

/*---------------------显示字符串-------------------------*/
void Write_String(char *s)                
{ 
 for(;*s!='\0';s++)  
 Write_Char(*s);
}
////////////////////////////////////////////////////////////
/*---------------------lcd初始显示-----------------------*/
void lcd_start(void)
{
 Delay_ms(100);
 Write_Location(0,1);
 Write_String("welcome to use");
 Write_Location(1,1);
 Write_String("motortest system");

 }
///////////////////////////////////////////////////////////////
//-----------------------------------------------------------//
/*-------------------延时子程序----------------------------*/
void Delay_us(Uint time)					//delay microsecods
{	
	Uint i;
	for (i=0;i<time;i++)
	{
		asm("nop");
	}	
}
void Delay_ms(Uint time)				//delay milliseconds
{
	Uint i;
	for (i=0;i<time;i++)
	{
		Delay_us(1000);
	}
}

void delay(void)
{
 Uchar i,j;
 for(i=0;i<20;i++){
  for(j=0;j<250;j++){
  }
 }
} 

⌨️ 快捷键说明

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