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

📄 lcd1602.c

📁 lcd串口显示的基础程序
💻 C
字号:
#include	<reg52.h>
 void	Lcd_WriteData(unsigned	char	TempData);
 void	Lcd_WriteCmd(unsigned	char	TempData,unsigned	char	BuysC);
 void Lcd_ReadStatus(void);
 void Lcd_Init(void); //LCM初始化
 unsigned char Lcd_ReadData(void);
 void DisplayString(unsigned char X, unsigned char Y, unsigned char  *DData);
 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
 void Delay(unsigned	int	delaytime);
sbit	Lcd_RS=P3^0;	
sbit	Lcd_RW = P3^1;
sbit	Lcd_E = P3^2; 
#define	Lcd_Data	P2

void	main()
{
  unsigned	char i;
  Lcd_Init();
  for(i=0;;i++)
  {
	DisplayString(1,0,"Welcome");//显示字符串
    DisplayOneChar(0,1,'1');//显示字符
	//动态显示
  	DisplayOneChar(5,1,i/100+0x30); 
	DisplayOneChar(6,1,i%100/10+0x30);
	DisplayOneChar(7,1,i%10+0x30);
	Delay(65535); 
  
  }
  while(1);

}





 void	Lcd_WriteData(unsigned	char	TempData)
{
	Lcd_ReadStatus(); 
	Lcd_Data = TempData;
	Lcd_RS = 1;
	Lcd_RW = 0;
	Lcd_E = 0; 
	Lcd_E = 0; 
	Lcd_E = 1;
	Lcd_E = 0;
}

//写指令
void	Lcd_WriteCmd(unsigned	char	TempData,unsigned	char	BuysC)
{
	if (BuysC) Lcd_ReadStatus(); 
	Lcd_Data = TempData;
	Lcd_RS = 0;
	Lcd_RW = 0;
	Lcd_E = 0;
	Lcd_E = 0;
	Lcd_E = 1;
	Lcd_E = 0;
	Lcd_E = 0;

}

//读数据
unsigned char Lcd_ReadData(void)
{
	Lcd_RS = 1;
	Lcd_RW = 1;
	Lcd_E = 0;
	Lcd_E = 0;
	Lcd_E = 0;
	Lcd_E = 0;
	Lcd_E = 1;
	Lcd_E = 0;
	return(Lcd_Data);
}

void Lcd_ReadStatus(void)
{
	  Delay(100);
}

void Lcd_Init(void) //LCM初始化
{
	Lcd_Data = 0;
	Lcd_WriteCmd(0x38,0); //三次显示模式设置,不检测忙信号
	Delay(6000);
	Lcd_WriteCmd(0x38,0);
	Delay(6000);
	Lcd_WriteCmd(0x38,0);
	Delay(6000);
	
	Lcd_WriteCmd(0x38,1); //显示模式设置,开始要求每次检测忙信号
	Lcd_WriteCmd(0x08,1); //关闭显示
	Lcd_WriteCmd(0x01,1); //显示清屏
	Lcd_WriteCmd(0x06,1); // 显示光标移动设置
	Lcd_WriteCmd(0x0C,1); // 显示开及光标设置
}

//按指定位置显示一个字符
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
	Y &= 0x1;
	X &= 0xF; //限制X不能大于15,Y不能大于1
	if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
	X |= 0x80; //算出指令码
	Lcd_WriteCmd(X, 0); //这里不检测忙信号,发送地址码
	Lcd_WriteData(DData);
}

//按指定位置显示一串字符
void DisplayString(unsigned char X, unsigned char Y, unsigned char  *DData)
{
	unsigned char ListLength;
	
	ListLength = 0;
	Y &= 0x1;
	X &= 0xF; //限制X不能大于15,Y不能大于1
	while (DData[ListLength]!='\0') //若到达字串尾则退出
	{
		if (X <= 0xF) //X坐标应小于0xF
		{
			DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符
			ListLength++;
			X++;
		}
	}
}

void Delay(unsigned	int	delaytime)
{
	while(delaytime--);
}

⌨️ 快捷键说明

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