1602液晶显示(上)

  事实上利用单片机实现1602显示,首先要经过HD44870芯片(视具体情况)才能控制液晶屏。我们先从液晶屏的引脚说起:

时序

  对于单片机而言,机器只能识别0与1两种,所以为了表达更多的意思,就有了高低电平+时间的表达方式——时序。

注意:使用速率比较高的芯片(ARM 32)还是需要用延时函数的

写命令/数据程序

// 写命令程序
void LcdWrCmd(uchar cmd) //利用英语单词给变量名“赋义”
{
LcdBusy(); //判断液晶屏状态是否在忙
LcdRS = 0;
LcdRW = 0;
LcdDB = cmd; //数据发送至P2口(参考本篇文章第一张图中的原理图)
LcdEN = 1; //使能引脚先拉高再拉低,将命令写入
LcdEN = 0;
}
// 写数据程序
void LcdWrDat(uchar cmd) //和“写命令程序”原理大同小异
{
LcdBusy();
LcdRS = 1; //引脚电平状态与时序图相对应
LcdRW = 0;
LcdDB = cmd;
LcdEN = 1;
LcdEN = 0;
}

LcdBusy 函数

//判断LCD屏是否处于忙状态
void LcdBusy()
{
LcdDB = 0xFF; //P2口全部置高电平,一般情况下没有这一句也可以,但是如果程序多的情况下LcdDB有可能在之前就被置为零,所以要全部设置为高电平
LcdRS = 0; //读命令
LcdRW = 1;
LcdEN = 1;
while(LcdDB&0x80); //在程序当中,P2口的最高位,如果为1则表示忙,如果为零表示闲。如果LcdDB为1时,与了0x80之后,while内为1,函数就会陷入死循环,直到while内不为零则跳出循环
LcdEN = 0;
}

LCD1602基本操作

  具体操作流程分为三步:

  1、初始化液晶屏
  2、指定显示的位置
  3、在指定位置显示

初始化液晶屏

指定显示位置

在指定位置显示