LCD字符型液晶显示器控制
- 格式:docx
- 大小:798.40 KB
- 文档页数:14
在日常生活中,我们对液晶显示器并不陌生。
液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用(zhuānyòng)符号和图形。
在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。
发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。
在单片机系统中应用晶液显示器作为输出器件有以下几个(jǐ ɡè)优点:显示(xiǎnshì)质量高由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。
因此(yīncǐ),液晶显示器画质高且不会闪烁。
数字式接口(jiē kǒu)液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。
体积小、重量轻液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。
功耗低相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。
10.8.1 液晶显示简介①液晶显示原理液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
②液晶显示器的分类液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。
除了黑白显示外,液晶显示器还有多灰度有彩色显示等。
如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。
③液晶显示器各种图形的显示原理:线段的显示点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。
3.4.1LCD显示模块LCD显示器分为字段显示和字符显示两种。
其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。
字符显示是根据需要显示基本字符。
本设计采用的是字符型显示。
系统中采用LCD1602作为显示器件输出信息。
与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。
LCD1602可以显示2行16个汉字。
3.4.2LCD1602的引脚功能LCD1602模块的引脚如图3-8所示,其引脚功能如下:RS:数据和指令选择控制端,RS=0命令状态;RS=1数据R/W:读写控制线,R/W=0写操作;R/W=1读操作A:背光控制正电源K:背光控制地E:数据读写操作控制位,E线向LCD模块发送一个脉冲,LCD模块与单片机间将进行一次数据交换DB0~DB7:数据线,可以用8位连接,也可以只用高4位连接,节约单片机资源。
VDD:电源端VEE:亮度控制端(1-5V)VSS:接地端图3-8LCD1602模块3.4.3LCD1602的显示操作1.四种基本操作LCD有四种基本操作,具体如表3-1所示。
表3-1LCD与单片机之间有四种基本操作(1)读状态字执行读状态字操作,如表3-1满足RS=0,R/W=1。
根据管脚功能,当为有效电平时,状态命令字可从LCD模块传输到数据总线。
同时可以保持一段时间,从而实现读状态字的功能。
读状态字流程如图3-9所示。
图3-9读入状态字流程图(2)命令字表3-2所示为命令字,其主要介绍了指令名称、控制信号及控制代码。
其指令名称是指要实现的功能;控制代号是采用的十六进制的数值表示的。
1)清零操作是指输入某命令字后即能将整个屏幕显示的内容全部清除;2)归home位:将光标送到初始位;其中的*号为任意,高低电平均可;3)输入方式:设光标移动方向并指定整体显示,是否移动。
1602字符液晶所谓1602是指显示的内容为16*2,即可以显示两行,每行16个字符。
目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
1602液晶的正面(绿色背光,黑色字体)1602液晶背面(绿色背光,黑色字体)另一种1602液晶模块,显示屏是蓝色背光白色字体字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,引脚定义如下表所示:HD44780内置了DDRAM、CGROM和CGRAM。
DDRAM就是显示数据RAM,用来寄存待显示的字符代码。
共80个字节,其地址和屏幕的对应关系如下表:也就是说想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM 的00H地址写入“A”字的代码就行了。
但具体的写入是要按LCD模块的指令格式来进行的,后面我会说到的。
那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。
第二行也一样用前16个地址。
对应如下:DDRAM地址与显示位置的对应关系(事实上我们往DDRAM里的00H地址处送一个数据,譬如0x31(数字1的代码)并不能显示1出来。
这是一个令初学者很容易出错的地方,原因就是如果你要想在DDRAM的00H地址处显示数据,则必须将00H加上80H,即80H,若要在DDRAM的01H处显示数据,则必须将01H加上80H即81H。
依次类推。
大家看一下控制指令的的8条:DDRAM地址的设定,即可以明白是怎么样的一回事了)1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下表所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B (41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”上表中的字符代码与我们PC中的字符代码是基本一致的。
液晶L C D1602(中文资料)目录1.………………………………………………指令介绍2.………………………………………………显示字符3.………………………………………显示自定义字符4.……………………………………使用4线数据传输1.指令介绍LCD1602已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,定义如下表所示:字符型LCD的引脚定义HD44780内置了DDRAM、CGROM和CGRAM。
这里的RAM与ROM不懂得话,可以看看我整理的另一篇/ball648500361/blog/item/4332fdf8bf505fd2b48f3 150.htmlDDRAM就是显示数据RAM,用来寄存待显示的字符代码。
共80个字节,其地址和屏幕的对应关系如下表:也就是说想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM 的00H地址写入“A”字的代码就行了。
但具体的写入是要按LCD模块的指令格式来进行的,后面我会说到的。
那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。
第二行也一样用前16个地址。
对应如下:DDRAM地址与显示位置的对应关系我们知道文本文件中每一个字符都是用一个字节的代码记录的。
一个汉字是用两个字节的代码记录。
在PC上我们只要打开文本文件就能在屏幕上看到对应的字符是因为在操作系统里和BIOS里都固化有字符字模。
什么是字模?就代表了是在点阵屏幕上点亮和熄灭的信息数据。
例如“A”字的字模:01110 ○■■■○10001 ■○○○■10001 ■○○○■10001 ■○○○■11111 ■■■■■10001 ■○○○■10001 ■○○○■上图左边的数据就是字模数据,右边就是将左边数据用“○”代表0,用“■”代表1。
在日常生活中,我们对液晶显示器并不陌生。
液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。
在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。
发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。
在单片机系统中应用晶液显示器作为输出器件有以下几个优点:显示质量高由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。
因此,液晶显示器画质高且不会闪烁。
数字式接口液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。
体积小、重量轻液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。
功耗低相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。
10.8.1 液晶显示简介①液晶显示原理液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
②液晶显示器的分类液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。
除了黑白显示外,液晶显示器还有多灰度有彩色显示等。
如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。
③液晶显示器各种图形的显示原理:线段的显示点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。
1602液晶1602液晶是一种常用的液晶显示模块,它是基于蓝色背光的字符型液晶显示器。
该显示模块由一块16列2行的液晶和一个控制芯片组成,能够显示32个字符。
它广泛应用于各种电子设备,如数字电子秤、温湿度计、计时器等。
1602液晶具有显示效果清晰、功耗低、驱动方式简单等特点。
它采用了反射式的LCD技术,配合背光源进行光学调节,能够在不同的环境光照条件下显示清晰。
同时,1602液晶还具有较低的功耗,适用于需要长时间显示文字内容的应用。
它的驱动方式也相对简单,只需通过控制芯片发送指令和数据即可实现文字的显示。
在1602液晶的控制芯片中,有一个上升沿触发的自动读写功能,可以简化控制电路,减少外接元件。
另外,该芯片还具备多种显示模式和字符设置的功能,可以满足不同需求。
1602液晶模块的引脚布局合理,使用起来比较方便。
一般来说,其中的15个数字引脚分别是:VSS、VDD、VO、RS、R/W、E、D0~D7。
通过这些引脚,可以与单片机等设备进行连接,并实现对液晶的控制。
为了方便使用,一些供应商还会在1602液晶模块中加入一个IIC 接口转换电路,使得其可以通过IIC总线与其他设备通信。
这样一来,就不需要繁琐的接线,只需通过串行通信即可实现与其他设备的数据交互。
这样的设计更加灵活,适用于一些对数据传输速度要求较高的场景。
然而,需要注意的是,1602液晶模块本身不具备自动换行和滚屏的功能,因此在使用时需要通过程序控制来实现。
另外,虽然1602液晶模块可以显示字符,但对于图形等更复杂的显示内容则无能为力。
因此,在一些需要显示更丰富信息的应用中,可能需要其他类型的显示模块来替代。
总之,1602液晶是一种常见的液晶显示模块,具备显示效果清晰、功耗低、驱动方式简单等优点。
它能够满足一些基本的显示需求,适用于各种电子设备。
但需要注意的是,它在一些功能方面还存在一定的限制。
随着技术的不断发展,未来可能会出现更先进、功能更完善的显示模块。
HS162-5字符型液晶显示模块使用说明书感谢您关注和使用我们的液晶产品。
如果您在使用中有任何疑问,请拨打我们的客户服务热线*************-8072寻求技术支持和获取相关资料,我们竭诚为您服务。
您可以登录我们的网站了解最新产品信息。
或者您可以在我公司网站的留言簿栏目留下您宝贵的意见。
深圳汉昇实业有限公司SHENZHEN HANSHENG INDUSTRIAL CO.,LTD地址:深圳市南山区西丽镇官龙工业村东区18栋5楼邮编:518055公司主页:业务联系:*************/13/15技术支持:*************-8072传真:*************一、 概述HS162-5是一种字符型液晶显示模块。
共可以显示2行×16个字符,每个字符是由5×8点阵组成的字符块集。
字符型液晶显示模块由字符型液晶显示屏(LCD),控制驱动主芯片SPLC780(或者兼容的芯片)及其扩展驱动芯片SPLC100(或者兼容的芯片),配以少量阻、容元件,结构件等装配在PCB板上而成。
HS162-5采用COB工艺制作,结构稳固,使用寿命长。
HS162-5已广泛应用于智能仪表、通讯、办公自动化及军工领域。
HS162-5主要特性如下:z8位并行数据接口,适配M6800系列时序。
z可选4位并行数据方式z具有内部字符发生器ROM,含192种字符(包括160个5×7点阵字符和32个5×10 点阵字符)z具有64字节的自定义字符RAM,可自定义8个5×8点阵字符和4个5×11点阵字符z拥有80字节的显示存储器,存储当前所要的字符的字符代码。
z低功耗、高可靠性说明: HS162-5有STN黄绿膜,蓝膜以及FSTN产品可选。
背光有LED背光可选。
用户可以根据需要自己选定常温、宽温或者超宽温产品。
162-5默认的是5V供电配置。
如有需要,用户可以选择低电压产品,可以使用3.3V直流电源供电二、 外形结构1. 外形图88.5082.5671.30(V.A)64.50(A.A)55.45a .a 10.75v .a 13.8026.8023.3029.30 1.60max8max1311315.243.008.6012.001.253.006.707.750.550.60 2.953.505.150.600.655.604-?3.309.27161522.502. 外形参数表项 目 标 准 尺 寸 单 位 模 块 体 积 88.5×29.3×8.0maxmm 定 位 尺 寸 82.5×23.3 mm 视 域 64.5×13.8 mm 字符点阵 16×2 位 点 距 离 0.6×0.65 mm 点 大 小0.55×0.60mm三、 模块硬件说明1. 接口说明 管脚 符号电平 功能介绍1 VDD 5.0V电源电压 2 VSS 0V 电源地3 V0- 液晶显示器驱动调节电压4 RS H/LRS=“H”,表示DB7~DB0为显示数据RS=“L”,表示DB7~DB0为指令5 R/W H/LR/W=“H”,数据被读到DB7~DB0 ;R/W=“H”,数据被写到DB7~DB06 E H,H->L使能信号:R/W=“L”,E 信号下降沿锁存DB7~DB0R/W=“H”,E=“H” DRAM 数据读到DB7~DB07 ~ 14 DB0~ DB7H/L 数据线 15 BLA 5.0V 背光正极 16BLK 0V 背光负极2. 原理简图VDD VSS V0RS E R/W3. 最大工作范围(1) 逻辑工作电压(Vdd): 4.5~5.5V (2) 电源地(VSS): 0V(3) LCD 驱动电压(Vop): -12.0V~+0.3V (4) 输入电压: 0~Vdd(5) 工作温度(Ta): 0~50℃(常温),-20~+70℃(宽温) (6)储存温度(Tstg): -20~+70℃(常温),-30~+80℃(宽温)4. 电气特性 (测试条件 Ta=25,Vdd=5.0+/-0.5V)(1)输入高电平(Vih): 2.0~Vdd(2)输入低电平(Vil): -0.3~0.6V(3)输出高电平(Voh): 2.4V~Vdd(4)输出低电平(Vol): 0.4V max(5)模块工作电流: 大约3mA(6)白侧光工作电流: 30mA max(7)底黄绿光工作电流: 120mA max四、 控制器SPLC780说明1. 显示数据存储器(DDRAM)DDRAM(80×8 bits)是用于存储当前所要显示的字符的字符代码。
LCD字符型液晶显示器控制 实现功能: 在实验平台上扩展一块LCD点阵字符型液晶显示器,要求:设计接口电路并编程使液晶显示器显示“当前时间”;并用按键输入与或修改时间。 工作原理及设计思路: 点阵字符型液晶显示器是专门用于显示数字、字母图形符号及少量自定义字符的显示器。在zks-03实验仪上有一标准的LCD液晶显示器接口J4,标注为DS1602。它与P87C52X2单片机以总线方式连接,其硬件连接如图1所示。
图1 由此可以看出LCD的命令寄存器的地址为:0xf800而数据寄存器的地址是:0xf801。 实验箱上的J4接口如图4所示: J4 J5 DS1602(SIP16) LCD_L
从左到右对应的管脚分别为: 1:GND 2:VCC 3:V0——接0~5V电压,调节LCD的对比度(实验箱上让它接地,使对比度达到最大) 4:RS——寄存器选择:“0”选指令寄存器;“1”选数据寄存器 5:R/W——“1”读操作;“0”写操作 6:EN——使能信号 7~14:DB0~DB7——八位双向数据信号线 15~16:LCD背光电源 将液晶显示器与J4接口对应连接好,编写读写程序,便对液晶显示器进行控制。 电路仿真
程序 #include #define uint unsigned int #define uchar unsigned char uchar a,miao,shi,fen,ri,yue,nian,week,flag,temp,key1n; #define yh 0x80 //第一行的初始位置 #define er 0x80+0x40 //第二行初始位置 //sbit cs1=P3^7; //sbit ledk=P2^5; sbit dula=P2^6; sbit wela=P2^7; sbit wr=P1^1; sbit rs=P1^0; sbit en=P2^5; sbit SCLK=P2^1; // 6 P1.1 sbit IO=P2^0; // 7 P1.0 sbit RST=P2^4; //时钟 5 P1.2 sbit ACC0=ACC^0; sbit ACC7=ACC^7; sbit key=P3^7; sbit key1=P3^0; sbit key2=P3^1; sbit key3=P3^2; uchar code tab1[]={"2009- - THU"}; uchar code tab2[]={" : : "}; void delay(uint xms)//延时函数 { uint x,y; for(x=xms;x>0;x--) for(y=110;y>0;y--); } /******************液晶写入************************/ write_1602com(uchar com)//液晶写入指令函数 { rs=0;//置为写入命令 P0=com;//送入数据 delay(1); en=1;//拉高使能端 delay(1); en=0;//完成高脉冲 } write_1602dat(uchar dat) { rs=1;//置为写入数据 P0=dat;//送入数据 delay(1); en=1; delay(1); en=0; } /*********************over***********************/ /********************ds1302****************************/ void write_byte(uchar dat) { ACC=dat; RST=1; for(a=8;a>0;a--) { IO=ACC0; SCLK=0; SCLK=1; ACC=ACC>>1; } } uchar read_byte() { RST=1; for(a=8;a>0;a--) { ACC7=IO; SCLK=1; SCLK=0; ACC=ACC>>1;
} return (ACC); } void write_1302(uchar add,uchar dat) {
RST=0; SCLK=0; RST=1; write_byte(add); write_byte(dat); SCLK=1; RST=0; } uchar read_1302(uchar add) { uchar temp; RST=0; SCLK=0; RST=1; write_byte(add); temp=read_byte(); SCLK=1; RST=0; return(temp); } uchar BCD_Decimal(uchar bcd) { uchar Decimal; Decimal=bcd>>4; return(Decimal=Decimal*10+(bcd&=0x0F)); } void ds1302_init() { RST=0; SCLK=0; write_1302(0x80,miao|0x00);//允许写 } void write_sfm(uchar add,uchar dat)//写时分秒 { uchar gw,sw; gw=dat%10; sw=dat/10; write_1602com(er+add); write_1602dat(0x30+sw); write_1602dat(0x30+gw);
} void write_nyr(uchar add,uchar dat) { uchar gw,sw; gw=dat%10; sw=dat/10; write_1602com(yh+add); write_1602dat(0x30+sw); write_1602dat(0x30+gw);
} void write_week(uchar week)//写星期函数 { write_1602com(yh+0x0d); switch(week) { case 1:write_1602dat('M');//delay(5); write_1602dat('O');//delay(5); write_1602dat('N'); break;
case 2:write_1602dat('T');//delay(5); write_1602dat('U');//delay(5); write_1602dat('E'); break;
case 3:write_1602dat('W');//delay(5); write_1602dat('E');//delay(5); write_1602dat('D'); break; case 4:write_1602dat('T');//delay(5); write_1602dat('H');//delay(5); write_1602dat('U'); break;
case 5:write_1602dat('F');//delay(5); write_1602dat('R');//delay(5); write_1602dat('I'); break;
case 6:write_1602dat('S');//delay(5); write_1602dat('T');//delay(5); write_1602dat('A'); break;
case 7:write_1602dat('S');//delay(5); write_1602dat('U');//delay(5); write_1602dat('N'); break;
}
} lcd_init()//液晶初始化函数 { wr=0; write_1602com(0x38);//设置液晶工作模式 write_1602com(0x0c);//开显示不显示光标 write_1602com(0x06);//整屏不移动,指针加一 write_1602com(0x01); write_1602com(yh+2);//字符写入的位置 for(a=0;a<14;a++) { write_1602dat(tab1[a]); //delay(3); } write_1602com(er+4); for(a=0;a<8;a++) { write_1602dat(tab2[a]); //delay(3); } } void keyscan() { key=0; if(key1==0)//key1为功能键 { delay(5); if(key1==0) { while(!key1); key1n++; if(key1n==9) key1n=1; switch(key1n) {
case 1: TR0=0;//关闭定时器 //TR1=0; write_1602com(er+0x0b);//写入光标位置 write_1602com(0x0f);//设置光标为闪烁 temp=(miao)/10*16+(miao)%10; write_1302(0x8e,0x00); write_1302(0x80,0x80|temp);//miao write_1302(0x8e,0x80); break; case 2: write_1602com(er+8);//fen
//write_1602com(0x0f); break; case 3: write_1602com(er+5);//shi //write_1602com(0x0f); break; case 4: write_1602com(yh+0x0f);//week //write_1602com(0x0f); break; case 5: write_1602com(yh+0x0b);//ri //write_1602com(0x0f); break; case 6: write_1602com(yh+0x08);//yue //write_1602com(0x0f); break; case 7: write_1602com(yh+0x05);//nian