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

📄 lcd_txt.c

📁 关键字:LCD液晶显示屏 串行 并行 ST7920 RT12864
💻 C
字号:
/***********************************************************************************************
** 文件名称:_LCD_C
** 功能说明:ST7920驱动LCD显示软件包
** 使用说明:软件包用到LPC213x的二个引脚,默认为P1.24,P1.25,如需修改,请修改头文件中的宏定义数据即可
			 (接触一天,时间不足,理解不深,代码有待优化,鉴谅)
***********************************************************************************************/
//#include "config.h"
#include <REG52.H>                /* special function register declarations   */
                    
#include  "LCD.h"



/***********************************************************************************************
** 函数名称:LCD_Init()
** 函数功能:LCD初始化
** 入口参数:无
** 出口参数:无
***********************************************************************************************/
void LCD_Init(void)	
{
	  //PIN_INITI;
      PSB = 0;
      RST = 0;
	  LCD_Dly(50); 
      RST=1;

	  LCD_Dly(50); 								//启动等待,等LCM讲入工作状态    	 								
	  LCD_Write(0,0x30);  						//8 位介面,基本指令集
	  LCD_Write(0,0x0c);  						//显示打开,光标关,反白关
	  LCD_Write(0,0x01);  						//清屏,将DDRAM的地址计数器归零  
	 
}

void LCD_InitG(void)	
{
	  //PIN_INITI;
      PSB = 0;
      RST = 0;
	  LCD_Dly(2); 
      RST=1;

	  LCD_Dly(2); 								//启动等待,等LCM讲入工作状态    	 								
	  LCD_Write(0,0x36);  						//8 位介面,基本指令集
	//  LCD_Write(0,0x0c);  						//显示打开,光标关,反白关
	  //LCD_Write(0,0x01);  						//清屏,将DDRAM的地址计数器归零  
	 
}



/***********************************************************************************************
** 函数名称:LCD_WStr()
** 函数功能:显示字符串
** 入口参数:addr	显示的地址
**			 ptr	要显示的字符串的首地址
** 出口参数:无
***********************************************************************************************/
void LCD_WStr(uint8 addr,const char *ptr)
{
	LCD_Write(WIR,addr);
	//LCD_Dly(1);
	while(*ptr!=0)
	{
		LCD_Write(WDATA,*ptr++);
	//	LCD_Dly(1);
	}
}
/***********************************************************************************************
** 函数名称:LCD_Write()
** 函数功能:LCD写指令或数据
** 入口参数:control_flow		数据控制流,0 为写指令 1 为写数据
			 ddata				数据
** 出口参数:无
***********************************************************************************************/
void LCD_Write(unsigned char control_flow, unsigned char ddata) 
{
	  unsigned char start_data,Hdata,Ldata;
	  if(0==control_flow) start_data=0xf8;	//写指令
	    else       start_data=0xfa;  		//写数据
	  
	  CS=1;
	  Hdata=ddata&0xf0;		 				//取高四位
	  Ldata=(ddata<<4)&0xf0;  				//取低四位
	  LCD_SendByte(start_data);	  			//发送起始信号
	  LCD_Dly(2); 							//延时是必须的
	  LCD_SendByte(Hdata);	      			//发送高四位
	  LCD_Dly(2);  						//延时是必须的
	  LCD_SendByte(Ldata);		  			//发送低四位
	  LCD_Dly(2);  						//延时是必须的
	  CS=0;
}

/***********************************************************************************************
** 函数名称:LCD_SendByte()
** 函数功能:发送一个字节
** 入口参数:bbyte		字节数据
** 出口参数:无
***********************************************************************************************/
void LCD_SendByte(unsigned char bbyte) 
{
	 unsigned char i;
	 
	 for(i=0;i<8;i++)
	 {
		if( (bbyte&0x80)!=0 )	SID_1;
    	else 
    	{
    		SID_0 ;					//SID=bbyte&0x80;取出最高位
    	}
		SCKL_1;								//SCLK=1;
	    i=i;
	 	SCKL_0;								//SCLK=0;
	 	bbyte<<=1; 							//左移
	 }  
}
/***********************************************************************************************
** 函数名称:LCD_Dly()
** 函数功能://延时
** 入口参数:dly	延时参数,值越大,延时时间越长
** 出口参数:无
***********************************************************************************************/
void LCD_Dly(unsigned int dly) 
{
 	unsigned int i,j;
 	for(i=dly;i>0;i--)
   		for(j=5;j>0;j--);
}

/***********************************************************************************************
** 函数名称:LCD_Test()
** 函数功能:图形方式下屏幕全黑
** 入口参数:无
** 出口参数:无
***********************************************************************************************/
void LCD_Test(void)	
{ 
	unsigned char i,j;
	for(i=0;i<32;i++)
	{ 
		LCD_Write(0,0x80+i);
			LCD_Write(0,0x80);
	    for(j=0;j<16;j++) 
	    	LCD_Write(1,0xff);
	 }

	 for(i=0;i<32;i++)
	 { 
	 	LCD_Write(0,0x80+i);
	 	LCD_Write(0,0x88);
	    for(j=0;j<16;j++) 
	    	LCD_Write(1,0xff);
	 }
}

/***********************************************************************************************
** 函数名称:LCD_GPCLS()
** 函数功能:图形方式下清屏
** 入口参数:无
** 出口参数:无
***********************************************************************************************/
void LCD_GPCLS(void)  
{ 
	unsigned char i,j;
     LCD_Write(0,0x36);
   //  LCD_Dly(2);  
	for(i=0;i<32;i++)
	{ 
	  	LCD_Write(0,0x80+i);
		//	LCD_Dly(1);
	  	LCD_Write(0,0x80);
		//	LCD_Dly(1);
	    for(j=0;j<16;j++) 
		{	//LCD_Dly(2);
	    	LCD_Write(1,0x00);
		}
	}

	for(i=0;i<32;i++)
	{ 
		LCD_Write(0,0x80+i);
		//	LCD_Dly(1);
		LCD_Write(0,0x88);
		//	LCD_Dly(1);
	    for(j=0;j<16;j++) 
		{//	LCD_Dly(2);
	    	LCD_Write(1,0x00);
		}
	}
}




void LCD_GPR()  
{ 
	unsigned char i,j;
    LCD_Write(0,0x36);
   //  LCD_Dly(2);  

	  	LCD_Write(0,0x88);
		//	LCD_Dly(1);
	  	LCD_Write(0,0x80);
		//	LCD_Dly(1);
	    
	   	LCD_Write(1,0x80);

	      //  LCD_Write(1,0xb0);


}


















⌨️ 快捷键说明

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