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

📄 lcd.c

📁 键盘扫描子程序.lcd1602液晶显示子程序.ad子程序
💻 C
字号:
/*+++++++++++++++++++++++++++++++++++++++++++++++++++/
 程序名 :lcd.c液晶显示子程序
 入口:坐标X,Y和所显示的字符
 出口:显示
+++++++++++++++++++++++++++++++++++++++++++++++++++*/
#include "CPLD.h"
char xdata Lcd1602CmdPort     _at_ 0xf1fc;		//E=1  RS=0 RW=0
char xdata Lcd1602WdataPort   _at_ 0xf1fd;   	//E=1  RS=1 RW=0
char xdata Lcd1602StatusPort  _at_ 0xf1fe;  	//E=1 RS=0 RW=1

 extern void Putstr(unsigned char x,unsigned char y,unsigned char code *ptr) 
  {
   unsigned char i,l=0;
	while (ptr[l] >31){l++;};
	for (i=0;i<l;i++) 
	   {
	    	DispOneChar(x++,y,ptr[i]);
	    	if ( x == 16 )
	    	{	x = 0; y ^= 1;
	        }
	   }
  }

/*=======================================================
 显示光标定位4行
=======================================================*/

 extern void LocateXY( char posx,char posy) {

unsigned char temp;

	temp = posx & 0xf;
	posy &= 0x03;
   switch ( posy)
   {
    case 0:;
	break;
    case 1:temp |= 0x40;
	break;
    default:;
   }
    temp |= 0x80;
	LcdWriteCommand(temp,0);
}
/*=======================================================
 按指定位置显示数出一个字符
=======================================================*/
 extern void DispOneChar(unsigned char x,unsigned char y,unsigned char Wdata)
 {
	LocateXY( x, y );				// 定位显示地址
	LcdWriteData( Wdata );			// 写字符
}

/*=======================================================
 初始化程序, 必须按照产品资料介绍的初始化过程进行
=======================================================*/
 extern void LcdReset( void )
 {  LcdWriteCommand( 0x38, 0);			// 显示模式设置(不检测忙信号)
	LcdWriteCommand( 0x38, 0);			// 共三次
	LcdWriteCommand( 0x38, 0);
	//=============================
	LcdWriteCommand( 0x38, 1);			// 显示模式设置(以后均检测忙信号 参数--"1")
    LcdWriteCommand( 0x08, 1);			// 显示关闭
   	LcdWriteCommand( 0x01, 1);			// 显示清屏
   	LcdWriteCommand( 0x06, 1);			// 显示光标移动设置
  	LcdWriteCommand( 0x0c, 1);			// 显示开及光标设置
}

/*=======================================================
 写控制字符子程序: E=1 RS=0 RW=0
=======================================================*/
 extern void LcdWriteCommand(unsigned char CMD,unsigned char AttribC ) {

	if (AttribC) 
	{
		P0=0xff;
		while( Lcd1602StatusPort & Busy );		// 检测忙信号?
	}
	Lcd1602CmdPort = CMD;
}
	
/*=======================================================
 当前位置写字符子程序: E =1 RS=1 RW=0
=======================================================*/
 extern void LcdWriteData( char dataW ) {

	while( Lcd1602StatusPort & Busy );					// 检测忙信号

	Lcd1602WdataPort = dataW;
}



//-------------------------------------显示清屏------------------------------------------------------------------------
 extern void cls(void)
   {             LcdWriteCommand( 0x01, 1);			// 显示清屏
    }
//------------------------------------------------------------------------------------------------------------





⌨️ 快捷键说明

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