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

📄 lcd.c

📁 LCD显示控制 2*16LCD显示器 C51编程
💻 C
字号:
#include<reg51.h>
#define uchar unsigned char
sbit LCD_EN=P2^5;
sbit LCD_RW=P2^6;
sbit LCD_RS=P2^7;
sbit bflag=P1^7;

void WaitLcd(void)       // 检查忙信号
{
  P1=0xff;
  LCD_RS=0;
  LCD_RW=1;              // 读BF
  LCD_EN=1;              // EN的置位必须在RS和RW之后
  while(bflag==1) ;
  LCD_EN=0;
}

void WR_INST(uchar a)
{                        // 写控制字
  WaitLcd();
  LCD_RS=0;
  LCD_RW=0;
  LCD_EN=1;
  P1=a;
  LCD_EN=0;
}

void WR_DATA(uchar a)
{                        // 写显示字符
  WaitLcd();
  LCD_RS=1;
  LCD_RW=0;
  LCD_EN=1;
  P1=a;
  LCD_EN=0;
}

void WR_String(uchar *s)
{                        // 写显示串
  while(*s!=0x00)
  {
    WR_DATA(*s);
    s++;
  }
}

void Init_Lcd(void)      // 初始化
{
  WR_INST(0x38);         // 2行 5*7 字符
  WR_INST(0x08);         // 关显示屏
  WR_INST(0x01);         // 清显示
  WR_INST(0x0c);         // 显示开,显示光标,闪烁
  WR_INST(0x06);         // 输入模式 地址增量,显示屏不移动
}

void Delay(uchar MS)
{
  uchar us,usn;
  while(MS!=0)
  {
    usn = 2;                   //for 12M
    while(usn!=0)
    {
      us=0xf6;
      while (us!=0){us--;};
      usn--;
    }
    MS--;
  }
}

void main(void)
{
  uchar i=0;
  Init_Lcd();
  WR_INST(0x00);
  WR_String("GOOD");
  WR_INST(2|0xc0);
  WR_String("good");

  while(1)
  {
    for(i=0;i<10;i++)
    {
      WR_INST(0x1c);
      Delay(250);
    }
    for(i=0;i<10;i++)
    {
      WR_INST(0x18);
      Delay(250);
    }
  }
}

⌨️ 快捷键说明

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