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、在指定位置显示
初始化液晶屏
指定显示位置
在指定位置显示