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

📄 lcd.c

📁 本程序可以实现温度测量
💻 C
字号:
#include <reg51.h>

sbit LCD_RS=P0^5;
sbit LCD_RW=P0^6;
sbit LCD_E=P0^7;
#define LCD_Data  P2
#define Busy 0x80

void delay_ms(unsigned char n)      
{
    unsigned int i=0,j=0;
    for (i=n;i>0;i--)
     for (j=498;j>0;j--);  
}


/****************************************************************************
* 名称:ChkBusy()
* 功能:检查总线是否忙
****************************************************************************/
void ChkBusy()
{
	LCD_Data = 0xFF;
	while(1)
	{
		LCD_RS=0;
		LCD_RW=1;
		LCD_E=1;
		if(!(LCD_Data & Busy))break;
		LCD_E=0;
	}
}

/****************************************************************************
* 名称:WriteCommandLCD()
* 功能:写命令函数
****************************************************************************/
void WriteCommandLCD(unsigned char dat)
{
	ChkBusy();
	LCD_RS=0;		//全部清零
	LCD_RW=0;
	LCD_E=1;
	LCD_Data=dat;		//再送数
	LCD_E=0;
}
/****************************************************************************
* 名称:WriteDataLCD()
* 功能:写数据函数
****************************************************************************/
void WriteDataLCD(unsigned char dat)	
{
	ChkBusy();
	LCD_RS=1;
	LCD_RW=0;
	LCD_E=1;
	LCD_Data=dat;		//再送数
	LCD_E=0;
}
/****************************************************************************
* 名称:lcd_init()
* 功能:lcd初始化函数
****************************************************************************/
void lcd_init(void)
{
	WriteCommandLCD(0x38);			
	WriteCommandLCD(0x0c);			//开显示
        WriteCommandLCD(0x80);
        WriteCommandLCD(0x01);
        delay_ms(100);
}





/****************************************************************************
* //按指定位置显示一个字符
****************************************************************************/

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;                //算出指令码
  WriteCommandLCD(X);       //发送地址码
  WriteDataLCD(DData);
}

/****************************************************************************
* 名称:DisText()
* 功能:显示文本函数
****************************************************************************/
void DisText(unsigned char X, unsigned char Y,unsigned char *p)
{
  Y &= 0x1;
  X &= 0xF;                 //限制X不能大于15,Y不能大于1
  if (Y) X |= 0x40;         //当要显示第二行时地址码+0x40;
  X |= 0x80;                //算出指令码
  WriteCommandLCD(X);       //发送地址码
   while(*p)  
	{
		LCD_Data = *p;
		WriteDataLCD(*p);   
		p++;
	}	
}


void main(viod)
{
	  lcd_init();
	  
	  
      DisplayOneChar( 0,1,0x31)	;
	  DisplayOneChar( 1,1,0x32)	;
	  DisplayOneChar( 2,1,0x33)	;
	  DisText( 0,0,"zhangxiaoxu")   ;
	  
	  while(1) ;
}

⌨️ 快捷键说明

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