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

📄 lcd.c

📁 单片机计算器,可计算多位小数点的+-*/.可在lcd上显示
💻 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 ( y == 16 )
	    	{	x ^= 1; y= 0;
	        }
	   }
  }
extern void ePutStr(unsigned char x,unsigned char y, unsigned char *ptr) 
{
    unsigned char i,l=0;
	while (ptr[l] >31){l++;};     //如果数组中的数为字符,计算字符的个数
	for (i=0;i<l;i++) 
	   {
	    	DispOneChar(x,y++,ptr[i]);

			
	    	if ( y == 16 )
	    	{    x^=1; y=0;
	        }
        }
}
/*=======================================================
 显示光标定位4行
=======================================================*/
extern void LocateXY( char posx,char posy) 

{unsigned char temp;

	temp=0x00;
//	posy &= 0x03;
   switch ( posx)
   {
    case 0:;
	break;
    case 1:temp |= 0x40;
	break;
    default:;
   }
  
   
   
   temp |=posy;
   
    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 )
 { Delay5Ms();
    Delay5Ms();
     Delay5Ms();
 LcdWriteCommand( 0x38, 0);			// 显示模式设置(不检测忙信号)
 Delay5Ms();	
 LcdWriteCommand( 0x38, 0);			// 共三次
 Delay5Ms();	
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 + -