液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。
这里介绍的字符型液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等,这里以常用的2行16个字的1602液晶模块来介绍它的编程方法。
1602采用标准的14脚接口,其中:
第1脚:VSS为地电源
第2脚:VDD接5V正电源
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A” [page]
1602液晶模块内部的控制器共有11条控制指令,如表2所示,
它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)
指令1:清显示,指令码01H,光标复位到地址00H位置
指令2:光标复位,光标返回到地址00H
指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效
指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁
指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标
指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符
指令7:字符发生器RAM地址设置
指令8:DDRAM地址设置
指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:写数据
指令11:读数据
DM-162液晶显示模块可以和单片机AT89C51直接接口,电路如图1所示。
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表3是DM-162的内部显示地址.[page]
比如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)
以下是在液晶模块的第二行第一个字符的位置显示字母“A”的程序: ORG 0000H
RS EQU P3.7;确定具体硬件的连接方式
RW EQU P3.6 ;确定具体硬件的连接方式
E EQU P3.5 ;确定具体硬件的连接方式
MOV P1,#00000001B ;清屏并光标复位
ACALL ENABLE;调用写入命令子程序
MOV P1,#00111000B ;设置显示模式:8位2行5x7点阵
ACALL ENABLE ;调用写入命令子程序
MOV P1,#00001111B ;显示器开、光标开、光标允许闪烁
ACALL ENABLE ;调用写入命令子程序
MOV P1,#00000110B ;文字不动,光标自动右移
ACALL ENABLE ;调用写入命令子程序
MOV P1,#0C0H ;写入显示起始地址(第二行第一个位置)
ACALL ENABLE ;调用写入命令子程序
MOV P1,#01000001B ;字母A的代码
SETB RS ;RS=1
CLR RW ;RW=0 ;准备写入数据
CLR E ;E=0 ;执行显示命令
ACALL DELAY ;判断液晶模块是否忙?
SETB E ;E=1 ;显示完成,程序停车
AJMP $
ENABLE:
CLR RS ;写入控制命令的子程序
CLR RW
CLR E
ACALL DELAY
SETB E
RET
DELAY:
MOV P1,#0FFH ;判断液晶显示器是否忙的子程序
CLR RS
SETB RW
CLR E
NOP
SETB E
JB P1.7,DELAY ;如果P1.7为高电平表示忙就循环等待
RET
END
程序在开始时对液晶模块功能进行了初始化设置,约定了显示格式。注意显示字符时光标是自动右移的,无需人工干预,每次输入指令都先调用判断液晶模块是否忙的子程序DELAY,然后输入显示位置的地址0C0H,最后输入要显示的字符A的代码41H。
关键字:字符型液晶 显示模块 AT89C51
引用地址:
16X2字符型液晶显示模块的驱动
推荐阅读最新更新时间:2024-03-16 13:02
STM32F103单片机驱动TM1637数码管显示模块
最近项目中需要用到数码管显示,于是买了一个TM1637芯片驱动的四位数码显示模块,现将调试过程记录一下,方便以后参考。 使用的单片机是STM32F103C8T6最小系统 使用的数码管模块是TM1637四位数码管显示模块 实际运行效果 下面先看一下TM1637和数码管连接的具体线路图 实际使用的模块没有带按键,只用了4个数码管,模块和单片机连接只需要4根线VCC、GND、CLK、DIO。芯片和单片机通信使用的是I2C总线,下面就来说一下如何通过I2C总线驱动这个数码管模块。 为了方便移植,这里使用 IO口模拟I2C总线,所以首先要将延时函数准备好,延时函数使用任何一种方式都可以,可以根据自己的习惯使用自己的
[单片机]
浅谈单片机最小系统
我们已经大概知道了单片机是一个什么东西,那么接下来我们就正式开始单片机的学习吧。 单片机是一门实践性很强的课程,假如单纯的去学习理论知识,而不实践,是很难完全把握单片机的。 单片机虽然是一个只能化的集成芯片,其本质上还是一个电子元件的。既然是电子元件,那么,就必须在一定的电路中才能运行起来,才能实现它的功能。这就像电阻一样,如果把一个电阻独立的放着,是没有任何意义的,只有将电阻接在电路中,才能实现它的功能,毕竟是分压,分流,还是限流,还得看详细电路。 单片机里虽然集成了很多电路,但仍旧不能独立运行,必须要外连一些电路,才能使单片机运行起来。这种能使单片机工作的最简电路,我们叫做单片机最小系统。图2-1中,有40个引脚的就是
[单片机]
丰田普锐斯的仪表盘显示系统和防滑控制模块剖析
普锐斯(Prius)是日本丰田汽车推出的一款混合动力汽车。本文将对这款混合动力汽车的车身电子部分的仪表盘显示系统和防滑控制模块进行拆解分析。
虽然许多车辆状态信息和车辆控制功能是通过中央触摸屏面板显示和实施的,但关键信息是由放在方向盘后面一眼就可看到的专用显示系统提供的。仪表盘模块 (DM)通过数字方式和一款基于图标的真空荧光显示(VFD)面板提供大多数只读信息,如速度、油位、档位、里程表/公里数等。VFD技术的出现已有些年头了,普锐斯的VFD也许来自双叶电子(Futaba)或伊势电子(Noritake)。丰田更欣赏数字读数方式,它没用前些年普遍采用最近又重新流行起来的模拟指针表。
对于VFD而言,在汽车应用中,刺眼的外界
[嵌入式]
基于AT89C51单片机的电动车无线遥控系统
摘要: 采用AT 89C51 单片机作为控制核心, 通过红外遥控方式实现无线遥控。系统主要包括红外遥控收发电路、信号处理电路和电机控制电路等, 由控制软件实现对小车电机的快速启动、制动和反转等自动遥控功能。 本系统以单片机AT89C51 为电动车的控制核心, 利用红外遥控器配以红外接收头及直流电机的正反转控制电路来实现电动车的运动控制。系统由红外线遥控器, 红外线接收模块, 电动机驱动模块, 显示及声光指示模块, 方向控制模块等几部分组成。系统流程如图1, 原理框图如图2. 图1 原理流程图 图2 系统框图 1 红外遥控系统 通用红外遥控系统由发射和接收两大部分组成, 应用编/ 解码专用集
[汽车电子]
基于单片机的课堂签到系统设计与实现
目前大多数高校里,大都采用大班(合班)上课,统计学生出勤成了教师的一大难题。针对这一问题,设计了一个课堂签到系统,以减轻教师的负担,提高上课效率。 1 系统设计思想 课堂签到系统采用插卡的方法,系统的组成结构图如图1 所示。其中卡可以采用一些废旧的电话卡或其它卡来制作。根据学生的学号在卡上打上与其对应的二进制的孔,利用光电传感器,将卡号转化为学号,送入单片机进行识别、存储和显示,完成学生的签到。另外,系统中还设置了显示未到学生学号的功能。 2 系统硬件设计 课堂签到系统的硬件部分可分为三大部分,即插卡部分、存储部分和显示部分。其中,插卡部分通过自制光电传感器来实现卡号的采集
[单片机]
基于AT89C51单片机和传感器实现家庭安全报警系统的设计
家庭安全报警系统家庭安防报警功能是智能家居系统的重要功能,同家庭的各种传感器、功能键、探测器及执行器共同构成家庭的安防体系,是家庭安防体系的“大脑”。报警功能包括防火、防盗、煤气泄露报警及紧急求助等功能,报警系统采用先进智能型控制网络技术、由微机管理控制,实现对匪情、盗窃、火灾、煤气、紧急求助等意外事故的自动报警。然而市场上出现的各类家庭安全报警系统功能虽较齐全,但并不完善,明显的不足之处就是报警号码都是预先存入,而且没有提供人机交互功能,用户如因特殊情况需更换报警电话号码时往往无能为力,其设计显然不够人性化,也给用户带来了诸多不便。明显的不足之处就是报警号码都是预先存入,而且没有提供人机交互功能,用户如因特殊情况需更换报警电话号
[单片机]
单片机PWM波(AT89C51、ADC0808)
一、简介 此电路由AT89C51最小系统和ADC0808组成。 二、运行效果 三、代码 /*想要更多项目私wo!!!*/ #include reg52.h #define uint unsigned int #define uchar unsigned char sbit CLK = P2^4; sbit ST = P2^5; sbit EOC = P2^6; sbit OE = P2^7; sbit PWM = P3^0; void DelayMS(uint ms) { uchar i; while(ms--) { for(i=0;i 120;i++); } } voi
[单片机]
采用AT89C51+ADC0832+LCD1602的电子称设计
电子称设计,主要用于菜市场的电子称,可以设置价格,根据价格和重量计算出金额,该设计采用了Proteus仿真软件,采用AT89C51为主控,采用ADC0832芯片来进行ADC的转换,采用LCD1602显示屏显示,同时设计了矩阵键盘用于输入价格。设计难度3颗星(满星为5颗)。 首先设计电路图,由于模块不多,所以接口可以随意分配,电路仿真图如下图1。 设计时需要一步一步进行设计,一般设计开始尽量将人机交互的模块优先级调高。这里呢就优先对LCD1602进行设计,驱动程序如下: void wrc(uint8 c) { delay(1); rs=0; rw=0; e=0; P0=c; e=1; del
[单片机]