液晶显示技术HD44780U的使用(C语言)
液晶显示技术
HD44780U的使用(C语言)
字符型液晶显示模块的接口技术
字符型液晶显示模块的外接口信号实际上就是HD44780U与计算机接口部的信号,信号时序为M6800系列时序。当使用8080时序的AT89C51系列的计算机与其连接时,关键就是注意E信号的使用。
计算机与字符型液晶显示模块的连接方法有两种,一种为直接访问方式,另一种为间接控制方式。本书将分别详细地介绍这两种方法的接口技术。
1 直接访问方式
直接访问方式是计算机把字符型液晶显示模块作为存储器或I/O设备直接挂在计算机的总线上。
在这种方式下,控制信号由AT89C51的读操作信号RD和写操作信号WR与地址信号合成产生。本文推荐的直接访问方式的实用接口电路如图1所示。
图1 直接访问方式的接口电路
上图所示的电路,对于完成液晶显示模块的显示来说,所用的硬件是相对比较少的,但是如果计算机需要进行扩展的话,使用上图的话不是很经济(浪费了太多的地址空间)。这个时候,可以考虑使用全地址译码或者部分地址译码的方式。
在上图所示的电路中:
液晶显示技术
●8位数据总线与AT89C51的数据总线连接
●E信号由WR和RD信号逻辑与非后产生,然后由地址A15选通控制
●R/W由地址A14提供
●RS信号由地址A13提供
这样就确定了AT89C51操作字符型液晶显示模块的唯一地址选择。
图中的电位器为V0提供了可调的驱动电压,用以实现显示对比度的调节。
同时,上图所示的电路不经过任何改变就可以仿真出4位计算机对字符型液晶显示模块的接口,主要是驱动软件的改变。
以下将给出直接访问方式的8位和4位接口的驱动程序。
(1)地址定义
#include <reg51.h>
#include <intrins.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
#define nop() _nop_()
xdata uchar WC_ADD _at_ 0x8000;
xdata uchar RC_ADD _at_ 0xC000;
xdata uchar WD_ADD _at_ 0xA000;
xdata uchar RD_ADD _at_ 0xE000;
(2)读入BF与AC的值
8位接口:
uchar RdBFAC(void)
{
uchar status;
status=RC_ADD&0x80; /*屏蔽低7位*/
return status;
}
4位接口:
uchar RdBFAC(void)
液晶显示技术
{
uchar status,temp;
status=RC_ADD;
temp=RC_ADD;
status=status&0x80; /*屏蔽低7位*/
return status;
}
(3)写指令代码
8位接口:
void WRCMD(uchar CMD)
{
uchar temp;
do
{
}
while(temp>=0x80);
WC_ADD=CMD;
}
4位接口:
void WRCMD(uchar CMD)
{
uchar temp;
do
{
}
while(temp>=0x80);
WC_ADD=CMD;
CMD<<=4; temp=RdBFAC(); temp=RdBFAC();
液晶显示技术
WC_ADD=CMD;
}
(4)写显示数据
8位接口:
void WRDAT(uchar DAT)
{
uchar temp;
do
{
}
while(temp>=0x80);
WD_ADD=DAT;
}
4位接口:
void WRDAT(uchar DAT)
{
uchar temp;
do
{
}
while(temp>=0x80);
WD_ADD=DAT;
DAT<<=4;
WD_ADD=DAT;
}
(5)读显示数据
8位接口:
uchar RdDAT(void) temp=RdBFAC(); temp=RdBFAC();
液晶显示技术
{
uchar DAT,temp;
do
{
}
while(temp>=0x80);
DAT=RD_ADD;
return DAT;
}
4位接口:
uchar RdDAT(void)
{
uchar DAT,DATtemp,temp;
do
{
}
while(temp>=0x80);
DAT=RD_ADD;
DATtemp=RD_ADD;
DAT=DAT|(DATtemp>>=4);
return DAT;
}
2 间接控制方式
间接控制方式是计算机把字符型液晶显示模块作为终端与计算机的并行接口连接,计算机通过对该并行接口的操作间接的实现对字符型液晶显示模块的控制。本文以AT89C51的P1和P2接口为并行接口与字符型液晶显示模块连接,图2给出了本文推荐的实用接口电路。 temp=RdBFAC(); temp=RdBFAC();
液晶显示技术
图2 间接控制方式的接口电路
图中的电位器为V0提供了可调的驱动电压,用以实现显示对比度的调节。
在编制驱动函数的时候,要注意时序的配合,根据M6800时序的规范:
●在写操作时,使能信号E的下降沿有效,在软件设置顺序上,先设置RS、R/W状态,再设置数据,然后产生E信号的脉冲,最后复位RS和R/W状态
●在读操作时,使能信号E的高电平有效,所以在软件设置顺序上,先设置RS,R/W状态,再设置E信号为高,这时从数据口读取数据,然后将E信号置低,最后复位RS和R/W状态。
间接控制方式通过软件执行产生操作时序,所以在时间上是足够满足要求的。因此间接控制方式能够实现高速计算机与字符型液晶显示模块的连接。
同时,上图所示的电路不经过任何改变就可以实现4位计算机对字符型液晶显示模块的接口,主要是驱动软件的改变。
以下将给出间接控制方式的8位和4位接口的驱动程序。
(1)接口定义
#include <reg51.h>
#include <intrins.h>
液晶显示技术
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
#define nop() _nop_()
sbit E=P2^7;
sbit RW=P2^6;
sbit RS=P2^5;
(2)读入BF与AC的值
8位接口:
uchar RdBFAC(void)
{
uchar status;
P1=0xFF;
RS=0;
RW=1;
E=1;
status=P1;
E=0;
status=status&0x80; /*屏蔽低7位*/
return status;
}
uchar RdBFAC(void)
{
uchar status,temp;
P1=0xF0;
RS=0;
RW=1;
E=1;
status=P1;
E=0;
液晶显示技术
P1=0xF0;
E=1;
temp=P1;
E=0;
status=status&0x80; /*屏蔽低7位*/
return status;
}
(3)写指令代码
8位接口:
void WRCMD(uchar CMD)
{
uchar temp;
do
{
}
while(temp>=0x80);
RW=0;
P1=CMD;
E=1;
nop();
E=0;
}
4位接口:
void WRCMD(uchar CMD)
{
uchar temp;
do
{
temp=RdBFAC(); temp=RdBFAC();
液晶显示技术
}
while(temp>=0x80);
RW=0;
P1=CMD;
E=1;
nop();
E=0;
CMD<<=4;
P1=CMD;
E=1;
nop();
E=0;
}
(4)写显示数据
8位接口:
void WRDAT(u …… 此处隐藏:4499字,全部文档内容请下载后查看。喜欢就下载吧 ……
- 基于PLC控制的航空电镀生产线自动输送
- 中考预测课内外文言文对比阅读2
- 2018-2023年中国商业智能(BI)产业市场
- 中国金融体制改革研究2011new
- 外窗淋水试验方案
- 精益生产(Lean Production)
- 学校安全事故处置和信息报送制度
- Chapter 5 Human Resources Management
- 【小学数学】人教版小学六年级上册数学
- 初中数学解题方法与技巧
- 山东省创伤中心建设与管理指导原则(试
- 函数与数列的极限的强化练习题答案
- 10分钟淋巴按摩消脂
- 网络应急演练预案
- 服装设计入门基础知识
- 初二数学分式计算题练习
- (人教新课标)高二数学必修5第二章 数列
- 最新自主创业项目
- 北京大学 无机化学课件 4第4章 配合物
- 贸易公司业务管理制度




