1602/2002/2004液晶模块驱动

一.概述

点阵式液晶显示模块(LCD)广泛应用于单片机控制系统,比数码管、段式液晶能模块显示更多、更直观的信息,如汉字、曲线、图片等。点阵液晶显示模块集成度很高,一般都内置控制芯片、行驱动芯片和列驱动芯片,点阵数量较大的LCD还配置RAM芯片,带汉字库的LCD还内嵌汉字库芯片,有负压输出的LCD还设有负压驱动电路等。单片机读写LCD实际上就是对LCD的控制芯片进行读写命令和数据。编程驱动LCD时,不需要对LCD的结构和点阵行列驱动原理深入了解,只要理解LCD接口的定义和LCD的控制芯片的读写时序和命令就可以了。

1602/2002/2004 LCD属于点阵字符液晶模块,控制芯片一般使用HD44780U或者KS0066U芯片,只能显示数字和西文字符,不能显示汉字和图片。1602可以显示2行每行16个字符;2002可以显示2行每行20个字符;2004可以显示4行每行20个字符,它们的接口定义、读写时序、命令均相同,所以驱动程序可以直接互相套用。

二.电路设计

一般情况下,1602/2002/2004 LCD对比度调节的电位器从10K-20K欧姆选择,背光的限流电阻从10-20欧姆选择。如果说明书有明确要求的,请使用说明书规定的参数。

三.软件设计

/*****************************************************************

*程序名称:1602/2002/21004液晶显示模块驱动

*程序功能:显示字符

*开发工具:WSF-51DB开发板

* MCU型号:AT89S52-24PU

*时钟频率:12MHZ

*程序作者:吴师傅

*版权说明:吴师傅版权所有。转载请注明来源和作者。

*****************************************************************/

#i nclude<reg52.h>

sbit E=P3^4;//脉冲使能

sbit RW=P3^3;//读写选择

sbit RS=P3^2;//数据命令选择

// 延时ms函数:

void Delayms(unsigned int t)

{

unsigned int i,j;

for(i=t;i>0;i--)

for(j=0;j<120;j++);

}

// 1602检查状态函数:

void Check1602State(void)

{

P2=0xff;//赋P2口初始值

E=0;//读状态前三控制线的状态

RS=0;

RW=1;

E=1;//拉高,读状态

while((P2&0x80)==0x80);//判断是否繁忙,等待空闲

E=0;//读状态后三控制线的状态

RS=1;

RW=0;

}

// 1602写命令函数:

void Write1602Command( unsigned char com)

{

Check1602State();//检查状态

P2=com;//赋值

E=0;//写命令前三控制线的状态

RS=0;

RW=0;

E=1;//拉高,写命令

E=0;//写命令后三控制线的状态

RS=1;

RW=1;

}

//1602写数据函数:

void Write1602Data( unsigned char dat)

{

Check1602State();//检查状态

P2=dat;//赋值

E=0;//写数据前三控制线的状态

RS=1;

RW=0;

E=1;//拉高,写数据

E=0;//写数据后三控制线的状态

RS=0;

RW=1;

}

//在指定的位置显示一个数字(0-9)函数(用来显示变量的值):

void LCD1602DisplayOneNumber( unsigned char y,unsigned char x,unsigned char v)

//y-行数值0-3,x-列数值0-19,v-变量的一位数字0-9

{

unsigned char lineaddr;

switch(y)//根据行号选择行地址(对于1602,2002液晶只有两行)

{

case 0:lineaddr=0x80;break;//第一行首地址

case 1:lineaddr=0xc0;break;//第二行首地址

//case 2:lineaddr=0x94;break;//第三行首地址 (2004LCD才有)

//case 3:lineaddr=0xd4;break;//第四行首地址 (2004LCD才有)

default:;

}

Write1602Command(lineaddr+x);//写地址

Write1602Data(0x30+v);//先将数字化成ASCII码,再写入

}

//在指定的位置显示字符串函数:

void LCD1602DisplayString( unsigned char y,unsigned char x, unsigned char *pstr)

//y-行数值0-3,x-列数值0-19,pstr-字符串指针

{      unsigned char lineaddr,n=0;

switch(y)//根据行号选择行地址(对于1602,2002液晶只有两行)

{

case 0:lineaddr=0x80;break;//第一行首地址

case 1:lineaddr=0xc0;break;//第二行首地址

//case 2:lineaddr=0x94;break;//第三行首地址 (2004LCD才有)

//case 3:lineaddr=0xd4;break;//第四行首地址 (2004LCD才有)

default:;

}

Write1602Command(lineaddr+x);//写地址

while(*pstr!=‘\0‘)//判断字符串是否写完

{

Write1602Data(*pstr++);//写字符

n++;

if((n+x)==16)//如果第一行写满,写第二行(对于1602液晶)

Write1602Command(0xc0);//写第二行地址

}

}

/1602初始化函数:

void Initialize1602()

{

Delayms(20);

Write1602Command(0x38);//显示模式设置:5*7点阵,8位数据接口

Write1602Command(0x08);//显示关

Write1602Command(0x01);//清屏

Write1602Command(0x06);//写一个字符地址指针加一、光标加一

Write1602Command(0x0c);//显示开

}

//主函数:

int main(void)

{

Initialize1602();//初始化1602

LCD1602DisplayString(0,2,"http://wushifuc51.21ic.org");

//在第一行第二个位置开始写字符串

LCD1602DisplayOneNumber(1,15,8);//在第二行最后一个位置显示数字8

while(1);

return 0;

}

时间: 2024-11-05 06:08:24

1602/2002/2004液晶模块驱动的相关文章

Arduino下LCD1602综合探究(中)——如何减少1602的连线,LiquidCrystal库,LiquidCrystal库中bug的解决方法

一.前言: 上文中,笔者系统的阐述了1602的两种驱动方式,并简单的提到了Arduino的LiquidCrystal库.本文紧接上文,对以下两个问题进行更加深入的探讨:如何能够使1602对Arduino的端口占用降到最少?LiquidCrystal库到底应该如何学习?在Arduino下LCD1602综合探究(下)中,笔者拟介绍一个1602的综合性实验,以期对前文的内容加以综合应用和总结.闲话少说,下面开始进入正文. 二.减少1602对Arduino的端口占用 <1>不使用I2C 在上文中,笔者

[转载]javaEE规范和SSH三大框架到底有什么关系

转载自: http://blog.csdn.net/bingjing12345/article/details/20641891 1994-2000 年是互联网的大航海时代. 请注意,下面的时间点及其重要. 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版.这是历史上第一个比较成熟的网络浏览器,轰动一时.但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力.网景公司急需一种网页脚本语言,使得浏览器可以与网页互动. 1995年Sun公司将Oak语言改名为Jav

精品软件3

QQ:365543212 ..................................... MAGMASOFT产品: MAGMASOFT v4.4 Windows & Linux & HPux & Solaris-ISO 1DVD(完全解密版本,无网格数量限制,可以计算的铸造仿真软件) MagmaSoft.v4.4.SP3.4-ISO 1DVD MAGMASOFT v4.4 P28-ISO 1CD Magmasoft 中文教程 MAGNA POWERTRAIN产品: AE

JavaEE 规范和 SSH 三大框架的关系

转载自 : http://blog.csdn.net/bingjing12345/article/details/20641891 2014年发布的 1994-2000 年是互联网的大航海时代. 请注意,下面的时间点及其重要. 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版.这是历史上第一个比较成熟的网络浏览器,轰动一时.但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力.网景公司急需一种网页脚本语言,使得浏览器可以与网页互动. 1995年Sun公司将O

多年收集的一些稀有软件2

QQ:365543212 Fuel Economy Calculator v1.1 B.001(汽车工程软件,用于预测车辆燃油消耗率,是目前此类软件中最为全面的,能接收从最新的发动机分析程序Engine Analyzer自动发送来的强大的游标和发动机规格) Psat v5.1 1CD ProScan.v5.1 1CD PowerFlow v3.3p3a for Linux 1CD(Exa公司的汽车外气流计算软件) Rotating Inertia Calculator v1.1 A.000(一款

Intergraph CADWorx (Plant, P&amp;ID, Equipment, IP, SpecEditor) 2019 v19.0.0 Win32_64 1DVD

化学.化工类软件: AspenTech产品: Aspen Suite v7-ISO 1DVD(最新完全解密版) Aspen Suite v7 Documentation-ISO(原版教程) Aspen Suite 2006.5-ISO 1DVD(完全解密版) Aspen ONE 2006 Documentation-ISO 1DVD(原版教程) Aspen Engineering Suite v7-ISO 1DVD Aspen Engineering Suite 2006 Documentati

计算两点间的距离

计算两点间的距离 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 208295    Accepted Submission(s): 72641 Problem Description 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离. Input 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y

全功能HTRI 7.0换热器计算软件

全功能HTRI 7.0换热器计算软件 HTRI.Xchanger.suite.V6.00换热器计算    能够对圆筒炉和方箱炉的性能进行模拟计算. Xfh 使用Hottel的区域法来计算加热炉各部位的热辐射和工艺侧的性能.与内含的燃烧室和对流室模型一起能够对燃烧式加热炉进行全面的性能评价.能够对板框式换热器进行设计, 核算和模拟计算, 可以使用自定义板型或者内置的制造厂数据库内的板型:Xist 支持包括所有的标准TEMA类型的计算,并且集成了流动导致的震动计算, 管子排布工具等等.进行空冷器和经

Coade CADWorx DataSheets v2008 1CD(设备模型设计)

■□■□■□■□■□四方行业软件□■□■□■□■□■□■□专业行业软件,值得信赖!为您提供完整版好用软件!竭诚为您服务!联系电话TEL 139 766 33785 联系人 wang 电话:188 76789633联系QQ:1970578528 添加扣-扣:①⑥②③①0①⑥⑤① 查询更多软件请百度:四方行业,十全行业. 请使用Ctrl+F 键来查询您所需软件,找到后联系我们QQ或是邮件,我们会第一时间为您回复■□■□■□■□本廣告長期有效■□■□■□■□■□■□■□■ Coade CADWorx