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

📄 lcd.c

📁 刚才上载了LCD的中文件数据手册。现在再上一个自己写的比较通用的LCD驱动程序模版。
💻 C
字号:
#define uint unsigned int
#define uchar unsigned char
#define E1 P1_3
#define E2 P1_2
#define RS P3_5
#define RW P3_6
#define E P3_7
#define LED_BUS P2



/************如果忙则等待****************/
void wait_E1( void )
{
	E1=0;E2=1;
 	LED_BUS=0xff;
	RW=1;                    	
	RS=0;               //d0~D7为状态输出       	
	E=1;
 	while(LED_BUS&0x80);
 	E=0;
}

void wait_E2( void )
{
	E1=1;E2=0;
 	LED_BUS=0xff;
	RW=1;                    	
	RS=0;                      	
	E=1;
 	while(LED_BUS&0x80);
 	E=0;
}

/************写指令代码数据 *********/
void write_code_E1( uchar cod )
{

	wait_E1();             	 
	LED_BUS=cod;                   	 
	RW=0;                     	
	RS=0;                     	  
	E1=0;E2=1;
	E=1;                       	
	E=0;
}

void write_code_E2( uchar cod )
{		
	wait_E2();             	 
	LED_BUS=cod;                   	 
	RW=0;                     	
	RS=0;                     	  
	E1=1;E2=0;
	E=1;                       	
	E=0;
}
/*************向DDRAM中写数据 *********/
void write_data_E1( uchar dat )
{
	wait_E1();
    LED_BUS=dat;
	RW=0;
	RS=1;                         	
	E1=0;E2=1;
	E=1;
	E=0;                         
}

void write_data_E2( uchar dat )
{
	wait_E2();
    LED_BUS=dat;
	RW=0;
	RS=1;                         	
	E1=1;E2=0;
	E=1;
	E=0;                         
}
/*******************清屏*******************/
void clear_lcd()
{
	uchar page,i;
	for(page=0xb8;page<0xc0;page++)    //x=0(10111000)  y=(10111111);
  	{
   		write_code_E1(page);      //设置页地址x=page
		write_code_E1(0x40);      //设置列地址y=0 
		for(i=0;i<64;i++)    
   		{
		write_data_E1(0x00);       //写0  每写一次y自动加1
   		}
  	}
  	for(page=0xb8;page<0xc0;page++)    //x=0(10111000)  y=(10111111);
  	{
   		write_code_E2(page);      //设置页地址x=page
		write_code_E2(0x40);      //设置列地址y=0 
		for(i=0;i<64;i++)    
   		{
		write_data_E2(0x00);       //写0  每写一次y自动加1
   		}
  	}
}

/****************初始化液晶****************/
void init_lcd()
{
 	write_code_E1(0xc0);		//(11 000000)  设置显示起始行z=0
 	write_code_E2(0xc0);		//(11 000000)  设置显示起始行z=0
	write_code_E1(0x3f);           //  ?
	write_code_E2(0x3f);           //   ?
	clear_lcd();
}

⌨️ 快捷键说明

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