第7章通用型1602液晶显示屏操作方法

7.1液晶概述

液晶显示屏的主要原理是以电流刺激液晶分子产生点、线、面并配合背部灯管构成画面。液晶通常是按照显示字符的行数或液晶点阵的行、列数来命名的,比如1602的意思是每行显示16个字符,一共可以显示2行,这类液晶通常都是字符型液晶,即只能显示ASCII码字符,例如数字、大小写字母、各种符号等。

本章主要讲解1602液晶,同时详细讲解并行操作方式和串行操作方式。市场上使用的1602液晶以并行操作方式居多,但也有并、串口同时具有的。

7.2常用1602液晶操作实例

1602液晶的讲解以并行操作为主,设计两个程序,一个是在液晶的任意位置显示字符,另一个是滚动显示一串字符。

1602液晶为5V电压驱动,带背光,可显示两行,每行16个字符,不能显示汉字,内置含128个字符的ASCII字符集字库,只有并行接口,无串行接口。

  • 并行口与串行口的区别是交换信息的方式不同,并行口能同时通过8条数据线传输信息,一次传输一个字节;而串行口只能用1条线传输一位数据,每次传输一个字节的一位。并行口由于同时传输更多的信息,速度明显高于串行口,但串行口可以用于比并行口更远距离的数据传输。
  1. 接口信号说明

    编号 符号 引脚说明
    1 VSS 电源接地
    2 VDD 电源正极
    3 VO 液晶显示对比度调节端
    4 RS 数据/命令选择端(H/L)
    5 R/W— 读写选择端(H/L)
    6 E 使能信号
    7—14 D0—D7 数据口
    15 BLA 背光电源正极
    16 BLK 背光电源负极

  2. 基本操作时序

    写指令 输入:RS=L,R/W=L,D0~D7=指令码,E=高脉冲 输出:D0~D7=数据

    读状态 输入:RS=L,R/W=H,E=H 输出:D0~D7=状态字

    写数据 输入:RS=H,R/W=L,D0~D7=数据,E=高脉冲 输出:无

    读数据 输入:RS=H,R/W=H,E=H 输出:无

  3. RAM地址映射图

    控制器内部带有80B的RAM缓冲区,对应关系如下图。对00~0F、40 ~4F地址中的任一处写入显示数据时,液晶都可立刻显示出来,当写入到10 ~27或50 ~67地址处时,必须通过移屏指令将他们移入可显示区域方可正常显示。

  4. 状态字说明

    原则上每次对控制器进行读/写操作之前,都必须进行读/写检测,确保STA7为0。实际上,由于单片机的操作速度慢于液晶控制器的反应速度,因此可以不进行读/写检测,或只进行简短延时即可。

  5. 数据指针设置

    控制其内部设有一个数据地址指针,用户可以通过它们访问内部的全部80b的RAM。指令码:80H+地址码(0~27H,40 ~67H),用于设置数据地址指针。

  6. 其他设置

    指令码 功能
    01H 显示清屏:1——数据指针清0;2——所有显示清0
    02H 显示回车:数据指针清0
  7. 初始化设置

    1. 显示模式设置

      功能
      0 0 1 1 1 0 0 0 设置16x2显示,5x7点阵,8位数据接口

      二进制00111000转换成16进制为0x38

    2. 显示开/关及光标设置

      功能
      0 0 0 0 1 D C B D=1开显示;D=0关显示
      C=1显示光标;C=0不显示光标
      B=1光标闪烁;B=0光标不闪烁
      0 0 0 0 0 1 N S N=1当读或写一个字符后地址指针加1,且光标加1
      N=0当读或写一个字符后地址指针减1,且光标减1
      S=1,当写一个字符时,整屏显示左移(N=1)或右移(N=0),已得到光标不移动而屏幕移动的效果
      S=0,当写一个字符时,整屏显示不移动
      0 0 0 1 0 0 0 0 光标左移
      0 0 0 1 0 1 0 0 光标右移
      0 0 0 1 1 0 0 0 整屏左移,同时光标跟随移动
      0 0 0 1 1 1 0 0 整屏右移,同时光标跟随移动
    3. 这两块指令码,在设置的时候统一转换成16进制,通过数据口送入液晶板中。

  8. 写操作时序

    1. 通过RS确定是写数据还是写指令。写指令包括使液晶的光标显示或者不显示、光标闪烁或者不闪烁、需不需要移动屏幕、在液晶的什么位置显示等。写数据是指要显示什么内容
    2. 读/写控制端设置为写模式,即低电平。
    3. 将数据或命令送达数据线上
    4. 给E引脚一个高脉冲将数据送入液晶控制器,完成写操作。
  9. 单片机与液晶引脚说明

    1. 液晶1、2引脚为电源端;15、16为背光电源;为防止直接加5V电压烧坏背光灯,在15脚串接一个10Ω的电阻,用于限流。

    2. 液晶3引脚为液晶对比度调节端。首次使用时,在液晶上电的状态下,调节至液晶上面一行显示出黑色小格为止。

    3. 液晶4引脚为想液晶控制器写数据/写命令选择端,接单片机的P3.5口。

    4. 液晶5端为读/写选择端,我们不从液晶读取任何数据,只向其写入命令和显示数据,因此此端始终选择为写状态,即低电平接地。

    5. 液晶6引脚为使能信号端,也就是那个E,是操作时必要的信号,接单片机的P3.4口。你可以把这个E想象成一个准备工作妥当后的允许发送数据的信号把。

实例:用C语言,实现在1602液晶的第一行显示“I LOVE MCU”,第二行显示“WWW.TXMCU.COM”

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="I LOVE YOU!";
uchar code table1[]="WWW.TXMCU.COM";
sbit lcden=P3^4;//液晶使能端
sbit lcdrs=P3^5;//液晶数据命令选择端
sbit dula=P2^6;//锁存器
sbit wela=P2^7;//同上
uchar num;
void delay(uint z)
{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);
}
void write_com(uchar com)//这个是写命令函数
{lcdrs=0;//选择数据寄存器P0=com;delay(5);//延时大约5毫秒lcden=1;//打开使能端delay(5);lcden=0;
}
void write_data(uchar date)//这个是写数据函数
{lcdrs=1;P0=date;//所有的字符,都是依照ASCII码送过去的,这就是为什么正好数据端是8位的原因,并且不能送汉字的原因delay(5);lcden=1;delay(5);lcden=0;
}
void init()//这个是最开始设置液晶板的函数
{dula=0;wela=0;lcden=0;write_com(0x38);//这四个是对液晶初始化的设定,由P0口接数据段送入液晶板.设置16x2显示,5x7点阵,8位数据接口write_com(0x0c);//开显示,不显示光标write_com(0x06);//写一个字符后,地址指针自动加1write_com(0x01);//显示清0,数据指针清0
}
void main()
{init();write_com(0x80);//这个是让指针,也就是光标定位到第一行第一个。详情看前面的第5小点。0x80准确来说是0x80+0for(num=0;num<11;num++){write_data(table[num]);delay(5);}write_com(0x80+0x40);//这里是让指针,也就是光标定位到第二行第一个,0x40表示的就是第二行第一个for(num=0;num<13;num++){write_data(table[num]);delay(5);}while(1);
}

实例2:实现第一行从右侧移入“Hello everyone!”,同时从第二行右侧移入“Welcome to here!”,移入速度自定,最后停留在屏幕上

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="Hello everyone!";
uchar code table1[]="welcome to here!";
sbit lcden=P3^4;//液晶使能端
sbit lcdrs=P3^5;//液晶数据命令选择端
sbit dula=P2^6;//锁存器
sbit wela=P2^7;//同上
uchar num;
void delay(uint z)
{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);
}
void write_com(uchar com)//这个是写命令函数
{lcdrs=0;//选择数据寄存器P0=com;delay(5);//延时大约5毫秒lcden=1;//打开使能端delay(5);lcden=0;
}
void write_data(uchar date)//这个是写数据函数
{lcdrs=1;P0=date;//所有的字符,都是依照ASCII码送过去的,这就是为什么正好数据端是8位的原因,并且不能送汉字的原因delay(5);lcden=1;delay(5);lcden=0;
}
void init()//这个是最开始设置液晶板的函数
{dula=0;wela=0;lcden=0;write_com(0x38);//这四个是对液晶初始化的设定,由P0口接数据段送入液晶板.设置16x2显示,5x7点阵,8位数据接口write_com(0x0c);//开显示,不显示光标write_com(0x06);//写一个字符后,地址指针自动加1write_com(0x01);//显示清0,数据指针清0
}
void main()
{init();write_com(0x80+0x10);//for(num=0;num<15;num++){write_data(table[num]);delay(5);}write_com(0x80+0x50);//这里是让指针,也就是光标定位到第二行第一个,0x40表示的就是第二行第一个for(num=0;num<13;num++){write_data(table[num]);delay(5);}for(num=0;num<16;num++){write_com(0x18);delay(200);}while(1);
}

这个实例和实例1其实差不多的,就是先把各个字符的ASCII码送到液晶板的指定位置,然后控制液晶板移屏就可以了

21.通用型1602液晶显示屏操作方法相关推荐

  1. STC51入门笔记(郭天祥C语言)---第八节:通用型1602,12232,12864液晶操作方法

    声明:本篇文章只是个人知识盲区.知识弱点.重点部分的归纳总结,望各位大佬不喜勿喷.梳理顺序是按照书籍的实际顺序梳理,转载请注明出处. 作者:sumjess 一.液晶概述: 液晶(LiquidCryst ...

  2. 精美底部营销通用型插件(客服+电话+微信)按钮

    因为做企业营销型站,需要底部加营销内容,包括客服,电话按钮,一键添加微信按钮,所以写了这个通用型插件 使用方法,把以下代码复制到网站底部即可运行: <style> @media only ...

  3. 计算机应用领域划分为桌面通用型,计算机操作与使用.ppt

    计算机操作与使用.ppt (28页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 计算机操作与使用左权职中 赵翠萍Date1计算机基础知识 ...

  4. 实例规格 ECS (共享计算型)和 (通用型-原独享)性能上有什么区别?...

    实例规格 ECS (共享计算型)和 (通用型-原独享)性能上有什么区别? 实例规格  共享计算型    和  通用型(原独享),  如果同样是2核4G   或者4核8G ;  性能上有什么差异/差距大 ...

  5. C++内存管理变革(6):通用型垃圾回收器 - ScopeAlloc

    本文已经迁移到:http://cpp.winxgui.com/cn:a-general-gc-allocator-scopealloc C++内存管理变革(6):通用型垃圾回收器 - ScopeAll ...

  6. 8Manage:企业管理软件要通用型还是定制开发?

    如今,在市场竞争的持续加剧下,越来越多的企业把信息化建设提上日程,寻求更进一步突破.随着信息技术的迭代更新,各类企业管理软件也层出不穷,成为企业信息化建设的重要工具.目前市面上的企业管理软件主要有ER ...

  7. 通用型硬件只是个传说

    [TechTarget中国原创]世界上并不存在什么通用型存储硬件(Commodity Storage Hardware).当然你可以选择去相信那些软件定义存储厂商的一面之词,但即使他们承认确实有这样的 ...

  8. 通用型CRM还是行业型CRM?-定制为王

    大数据时代,怎样利用工具摆脱繁杂的数据管理之苦,洞察有价值的销售信息,是每一个管理者的迫切须要.Zoho  CRM问世10年来,见证了一个个行业客户怎样在CRM帮助下实现了效率和业绩提升.相同,广泛的 ...

  9. 阿里云服务器共享型、计算型和通用型有什么区别?

    阿里云服务器的CPU种类有很多,当阿里云搞活动的时候,往往会有共享型.计算型.通用型这几款,那么他们之间有什么区别呢? 共享型: 共享型目前常见的型号是共享标准型s6和共享计算型n4. 共享型产品采用 ...

  10. 1602液晶显示屏显示字符

    本次实验的效果为实现特定字符在1602液晶显示屏上流动显示 所用开发板为普中科技开发板,电路图如下: 代码如下: #include<reg51.h> #define uchar unsig ...

最新文章

  1. 在Windows 7下面IIS7的安装和 配置ASP的正确方法
  2. pandas python csv_python:pandas合并csv文件的方法(图书数据集成)
  3. QT开发的程序的发布
  4. php文件怎么阅读器,Vue文件阅读器组件FileReader API
  5. hive选择mariadb还是mysql_Hive MariaDb的安装
  6. 如何安装 Angular CLI 并且检查 CLI 的版本
  7. 想做出让老板眼前一亮的可视化报告,这几个“心机”千万要有
  8. PocketSphinx语音识别系统的编程
  9. (Object detection)目标检测从入门到精通——第一部分
  10. vue-计算属性不能直接修改
  11. 成都程序员俱乐部通知
  12. 张俊芳电机学14章计算题以及答案
  13. IDEA 获取破解码(注册码)简单破解IDEA
  14. Web—信息收集(非常全)
  15. 利用 echarts 绘制江苏省的地图之三
  16. Tikhonov regularization 吉洪诺夫 正则化
  17. 邮箱地址是什么?什么是邮箱地址?电子邮箱地址大全
  18. php加密的是什么,看看下面这个php代码是使用什么加密的?
  19. CAD制图初学入门:如何在CAD图纸中插入图框?
  20. js跳转新页面,指定div加载新页面

热门文章

  1. 计算机无法连接因特网络,有网但是无法连接到internet
  2. 计算机基础作业2答案,《计算机基础》作业答案 (2)
  3. 5 实战1—利用Python获取新闻网页源代码
  4. P4684 [IOI2008]Fish(组合数学)
  5. app提现至微信(微信企业付款到个人微信号)
  6. pwn unlink
  7. linux配置web页面登录密码,在Linux下通过WEB认证方式上网
  8. linux sqlserver命令,sqlserver的命令行
  9. Android之sdcard保存数据
  10. 服务器加什么网站才打开快,如何优化让网站打开速度更快些呢?