【51单片机系列】proteus中的LCD12864液晶屏

文章来源:《单片机C语言编程与Proteus仿真技术》。

点阵字符型LCD显示模块只能显示英文字符和简单的汉字,要想显示较为复杂的汉字或图形,就必须采用点阵图型LCD显示模块,比如12864点阵图型LCD显示模块。

文章目录

  • 一、 LCD12864点阵图型显示模块
  • 二、12864的指令
  • 三、 12864 LCD接口应用使用示例

一、 LCD12864点阵图型显示模块

12864点阵图型LCD显示模块内部控制器采用KS0108或HD61202。其引脚排列如下图所示:

12864点阵图型LCD显示模块引脚排列

各引脚功能功能如下表:

引脚符号功能引脚符号功能
1/CS11=选择左边64x64点7RW1=数据读取,0=数据写入
2/CS21=选择右边64x64点8E使能信号,负跳变有效
3GND9~16DB0~DB7数据信号
4VCC+5V电源17/RST复位,低电平有效
5V0显示驱动电源0~5V18-VoutLCD驱动负电源
6RS1=数据输入,0=命令输入有些模块19、20引脚为空脚

12864点阵图型LCD内部存储器DDRAM与显示屏上的显示内容具有对应关系,使用时只需要将显示内容写入到1286412864内部显示存储器DDRAM中,就能正确显示。

12864点阵图型LCD屏横向有128个点,纵向有64个点,分为左半屏和右半屏。

DDRAM与显示屏的对应关系如下表:

/CS1=1(左半屏)/CS2=1(右半屏)
Y=01...626301...6263行号
X=0DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
0

7
X=1DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
8

15
....................................
X=7DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
56

63

在12864点阵图型LCD屏上显示图形或汉字时,可以利用字模提取软件获得图形或汉字的点阵代码。

二、12864的指令

12864点阵图型LCD显示模块的指令功能比较简单,共有8条指令。

  1. 读忙标志

编码格式为:

RSR/WED7D6D5D4D3D2D1D0
011BUSY0ON/OFFRESET0000

BUSY=1表示显示模块内部控制器忙,不能进行操作,只有BUSY=0时才允许操作。

ON/OFF=1表示显示关闭,ON/OFF=0表示显示打开。

RESET=1表示复位状态,RESET=0表示正常状态。

在BUSY和RESET状态下,除读忙标志指令外,其它指令均不对液晶显示模块产生作用。

  1. 写指令

编码格式为:

RSR/WED7D6D5D4D3D2D1D0
00下降沿指令
  1. 写数据

编码格式为:

RSR/WED7D6D5D4D3D2D1D0
10下降沿显示数据
  1. 显示开/关

编码格式为:

RSR/WD7D6D5D4D3D2D1D0
000011111D3E/3F

D=1表示显示RAM中的内容,D=0表示关闭显示。

  1. 显示起始行

编码格式为:

RSR/WD7D6D5D4D3D2D1D0
0011显示起始行(0~63)

该指令规定显示屏上起始行对应DDRAM的行地址,有规律地改变现实起始行,可以实现现实滚屏的效果。

  1. 页面地址

编码格式为:

RSR/WD7D6D5D4D3D2D1D0
0010111页面(0~7)

DDRAM共64行,分8页,每页8行。

  1. 列地址

编码格式为:

RSR/WD7D6D5D4D3D2D1D0
0001显示列地址(0~63)

列地址计数器在每一次读/写数据后自动加1,每次操作后明确起始列的地址。设置了页面地址和列地址,就唯一确定了DDRAM中的一个单元。这样单片机就可以用读/写指令读出该单元中的内容或向该单元写进一个字节数据。

  1. 读数据

编码格式为:

RSR/WD7D6D5D4D3D2D1D0
11显示数据

该指令将DDRAM对应单元中的内容读出,然后列地址计数器自动加1.需要注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要求单元中的数据。

三、 12864 LCD接口应用使用示例

单片机与12864图型LCD模块之间可以采用直接方式接口,也可以采用间接方式接口。

如下图,在proteus仿真电路图中采用间接方式实现51单片机与12864图型LCD模块的接口电路。LCD模块的/CS1、/CS2、RS、R/W和E信号分别由单片机的P2.0、P2.1、P2.2、P2.3和P2.4来控制,数据信号连接到单片机的P0口。由于间接控制方式需要通过单片机的端口引脚来操作液晶模块,在编写驱动程序时要特别注意时序的配合。

实现51单片机与12864图型LCD模块的接口电路

软件设计,判断12864是否忙,根据读忙标志指令判断,代码如下:

// 判断是否忙
void IsBusy()
{do{EN=0; RW=1;  // 读操作RS=0;  // 0表示命令输入EN=1;  // 产生一个负跳变EN=0;}while(BUSY);  // BUSY=1时表示显示模块内部控制器忙
}

其中定义全局变量:

#define PORT	P0
sbit CS1=P2^0;
sbit CS2=P2^1;
sbit RS=P2^2;
sbit RW=P2^3;
sbit EN=P2^4;
sbit BUSY=P0^7;  // 忙标志

其它指令按照类似的方式编写。编写清屏函数,为显示做准备,首先清左半屏,打开显示;清右半屏,关闭显示。设置每个点不显示字符,即写显示数据为0x00。代码如下:

// 清屏,为显示做准备
void Ready()
{uint i,j;ClearLeft();  // 清左半屏WriteCom(0x3F);  // 显示开ClearRight();  // 清右半屏WriteCom(0x3F);  // 显示开ClearLeft();for(i=0;i<8;i++){SetPage(i);  // 设置显示起始页SetCol(0x00);  // 设置显示起始列为第一列for(j=0;j<64;j++){WriteDat(0x00);  // 设置每行的数据为00}}ClearRight();for(i=0;i<8;i++){SetPage(i);SetCol(0x00);for(j=0;j<64;j++){WriteDat(0x00);  // 设置每行的数据为00}}
}

每个汉字设置为16*16点阵大小,代码如下:

// 显示16*16的汉字,纵向取模,字节倒序
void Display(uchar *s, uchar page, uchar line)
{uchar i;SetPage(page);SetCol(line);for(i=0;i<16;i++){WriteDat(*s);s++;}SetPage(page+1);SetCol(line);for(i=0;i<16;i++){WriteDat(*s);s++;}
}

主函数中声明字符点阵数据,比如汉字“单片机”,点阵数据如下:

// 字符点阵数据
uchar code Disp[]=
{//单(0) 片(1) 机(2)
0x00,0x00,0xF8,0x49,0x4A,0x4C,0x48,0xF8,0x48,0x4C,0x4A,0x49,0xF8,0x00,0x00,0x00,
0x10,0x10,0x13,0x12,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x13,0x10,0x10,0x00,/*"单",0*/0x00,0x00,0x00,0xFE,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x00,0x00,
0x00,0x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,/*"片",1*/0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,
0x04,0x03,0x00,0xFF,0x00,0x83,0x60,0x1F,0x00,0x00,0x00,0x3F,0x40,0x40,0x78,0x00/*"机",2*/
};

主函数中调用函数Display,如下:

void main()
{uchar page=0x03;Ready();ClearLeft();Display(Disp, page, 0);Display(Disp+32, page, 16);Display(Disp+32*2, page, 16*2);while(1);
}

仿真结果:

LCD12864显示汉字仿真结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/646581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

The Sandbox 2024 Game Jam 进行中|游戏创作比赛!冲!

The Sandbox Game Jam 是面向所有游戏制作爱好者的创作比赛&#xff01;我们诚邀您加入 The Sandbox 的生态系统&#xff0c;这里充满活力&#xff0c;游戏与文化相融&#xff0c;创作者彼此切磋&#xff0c;共同实现梦想。请尽情发挥你的想象力&#xff01;The Sandbox 游戏由…

深度学习与大数据在自然语言处理中的应用与进展

引言 在当今社会&#xff0c;深度学习和大数据技术的快速发展为自然语言处理&#xff08;NLP&#xff09;领域带来了显著的进步。这种技术能够使计算机更好地理解和生成人类语言&#xff0c;从而推动了搜索引擎、语音助手、机器翻译等领域的创新和改进。 NLP的发展与技术进步…

使用Robot Framework实现多平台自动化测试

基于Robot Framework、Jenkins、Appium、Selenium、Requests、AutoIt等开源框架和技术&#xff0c;成功打造了通用自动化测试持续集成管理平台&#xff08;以下简称“平台”&#xff09;&#xff0c;显著提高了测试质量和测试用例的执行效率。 01、设计目标 平台通用且支持不…

Linux操作系统——进程间通信简单介绍

1.进程间通信的介绍 我们之前所谈的进程很多都是通过一个进程来进行理解的&#xff0c;可是很多情况下有一些任务呢&#xff0c;他是有很多的进程通过协作完成&#xff0c;比如说我们之前谈到的命令行&#xff0c;一条命令也是用一个进程去执行的。 像这样&#xff0c;我们是通…

一套令我获益颇多的生活模式

你有没有过这样的感受&#xff1a; 有时候&#xff0c;会觉得自己不够好&#xff0c;于是下定决心&#xff0c;做好计划&#xff0c;打算作出一些改变。 但坚持了两天&#xff0c;却又故态复萌&#xff0c;回到旧的模式里。仿佛有一种力量把你往回拉扯&#xff0c;强迫你重复着…

用这个烟感监测技术!同事下巴都惊掉了!

在当今社会&#xff0c;火灾作为一种极具破坏性的灾害&#xff0c;对人们的生命和财产安全构成着严峻的威胁。 为了更好地预防和管理火灾风险&#xff0c;烟感监控系统成为一项不可或缺的技术创新。为各行各业提供了全方位、高效的火灾预警和防范手段。 客户案例 商业办公楼 …

提升效率,节省时间:如何利用享搭低代码平台快速开发应用

在当今快节奏的商业环境中&#xff0c;企业需要以高效的方式开发应用程序&#xff0c;以迅速满足市场需求并保持竞争优势。而传统的软件开发往往需要耗费大量的时间和资源&#xff0c;限制了企业的创新能力和快速响应能力。然而&#xff0c;现在有一种强大的工具可以帮助企业解…

SecureCRT的安装

SecureCRT的安装 加强版的串口调试助手 全部默认安装&#xff0c;默认安装在c盘 SecureCRT收费&#xff0c;可以下载Putty安装 后续完善

【学网攻】 第(4)节 -- 交换机划分Vlan

文章目录 【学网攻】 第(1)节 -- 认识网络 【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口 前言 网络已经成为了我们生活中不可或缺的一部分&#xff0c;它连接了世界各地的人们&#xff0c;让信息和资源得以自由流动。随着互联网的发展&am…

C# 实现 Word 加盖骑缝章效果

目录 实现效果 范例运行环境 Office DCOM 配置 设计实现 创建stamp图章类 电子章图片的计算与定位 旋转图片方法 总结 实现效果 在OA的自动化处理系统中&#xff0c;通过审批的最终节点&#xff0c;可能会对WORD文件加盖电子章&#xff0c;比如定位带有指定文字的Ra…

【操作系统】实验八 proc文件系统

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

ASUS华硕无畏Pro15笔记本电脑(M6500QB,M6500QH)工厂模式原厂OEM预装Windows11.22H2系统 含Recovery恢复

原装出厂Windows11系统适用于华硕无畏15笔记本电脑型号&#xff1a;M6500QB和M6500QH 链接&#xff1a;https://pan.baidu.com/s/1AVGLN6-ILIRogOMj48Mk1w?pwdmi7d 提取码&#xff1a;mi7d 带有ASUS RECOVERY恢复功能、自带所有驱动、出厂主题专用壁纸、系统属性联机支持…

Linkedin领英账号被封是为什么?如何反封控?2024外贸拓客必看攻略

大家都知道&#xff0c;领英作为全球最大的职场社交平台&#xff0c;拥有非常精准的领域人脉&#xff0c;有着大量的高质客户资源&#xff0c;对于外贸等跨境业务来说&#xff0c;他是一个精准开发客户的最好渠道。 但是许多外贸小伙伴也经常遇到一个难题&#xff0c;那就是领…

司铭宇老师:汽车销售培训:汽车销售员培训:汽车销售技巧培训:汽车销售技巧和话术

汽车销售培训&#xff1a;汽车销售员培训&#xff1a;汽车销售技巧培训&#xff1a;汽车销售技巧和话术 汽车销售是一项充满挑战性的工作&#xff0c;它需要销售人员具备良好的沟通技巧、谈判技巧以及产品讲解能力。在这篇文章中&#xff0c;我们将详细探讨汽车销售中的技巧和话…

关于爬虫爬取网页时遇到的乱码问题的解决方案。

目录 前言解决措施 前言 最近&#xff0c;我像爬取一下三国演义这本书籍的全部内容。 网站的网址为&#xff1a;https://www.shicimingju.com/book/sanguoyanyi.html 但是我爬取出来的结果是这样的 会遇到乱码。 经过我多方面的调试发现&#xff0c;就是网页的编码和我pycha…

C++ STL之deque的理解及使用

文章目录 1. 介绍2. 实现原理&#xff08;简单理解&#xff09;3. deque的优缺点4. deque类的使用4.1 deque类对象的构造函数4.2 deque类对象的容量操作4.3 deque类对象的修改操作4.4 deque类对象的访问及遍历操作 1. 介绍 deque(双端队列)&#xff1a;是一种双开口的连续空间的…

MATLAB curve fitting toolbox没有怎么办?

版本&#xff1a;MATLAB R2023b 如果在安装MATLAB时仅仅选择了安装MATLAB&#xff0c;而并未选择其他选项&#xff0c;则在进入MATLAB后会发现顶部的APP栏中无法找到曲线拟合工具箱。 本人跟随MATLAB中的教程进行下载时&#xff0c;出现了如下报错&#xff1a; 最终解决方案&a…

【SVD生成视频+可本地部署】ComfyUI使用(二)——使用Stable Video Diffusion生成视频 (2023.11开源)

SVD官方主页 &#xff1a; Huggingface | | Stability.ai || 论文地址 huggingface在线运行demo : https://huggingface.co/spaces/multimodalart/stable-video-diffusion SVD开源代码&#xff1a;Github&#xff08;含其他项目&#xff09; || Huggingface 在Comfyui使用&…

MIT_线性代数笔记:线性代数常用概念及术语总结

目录 1.系数矩阵2.高斯消元法3.置换矩阵 Permutation4.逆矩阵 Inverse 1.系数矩阵 线性代数的基本问题就是解 n 元一次方程组。例如&#xff1a;二元一次方程组 2 x − y 0 − x 2 y 3 \begin{align*} & 2x - y 0\\ & -x2y 3 \end{align*} ​2x−y0−x2y3​ 写成…

谷歌公布一个可以让 AI 进行自我判断输出内容正确性的模型训练框架 ASPIRE

谷歌开发了一款名为 ASPIRE 的训练框架&#xff0c;旨在增强人工智能&#xff08;AI&#xff09;模型的选择性预测能力。这款框架为模型引入了 “可信度” 机制&#xff0c;即模型会输出一系列答案&#xff0c;并为每个答案赋予一个正确概率评分。通过这种方式&#xff0c;ASPI…