lcd.c

来自「本程序可以实现温度测量」· C语言 代码 · 共 122 行

C
122
字号
#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 + =
减小字号Ctrl + -
显示快捷键?