常用显示屏学习——LCD12864(含高级驱动程序)

news/发布时间2024/5/14 15:23:43

LCD12864液晶显示屏

屏幕介绍

① 可显示四行字符,每行可显示8个汉字或者16个数字和字母;
②可串行通信和并行通信;
③ 串口接口管脚信号
在这里插入图片描述

在这里插入图片描述

通信方法

(一)八位并行通信方法

在这里插入图片描述
在这里插入图片描述

(二)串行通信方法

在这里插入图片描述

用户指令集

一般常用的指令有:
扩充功能设定指令集(当需要自定义图案,可以把绘图模式打开)
清除显示指令(这个指令只能清除DDRAM里的数据,不能清除绘图模式GDRAM的数据)
显示状态指令(打开后才能显示数据)
进入点设定指令(具体操作看说明一般为0x06)

注意:在切换指令集写入数据时,会导致闪屏现象,因此不要在程序中频繁的切换指令集

在这里插入图片描述
在这里插入图片描述

驱动程序

12864带字库驱动程序

LcdWrods_Printf()类似prinf使用方法,用起来超级方便!

#include <stdio.h>
#include <stdarg.h>
#define WRITE_CMD	0xF8//写命令  
#define WRITE_DAT	0xFA//写数据
void SendByte(uint8_t byte)
{uint8_t i; for(i = 0;i < 8;i++){if((byte << i) & 0x80)  //0x80(1000 0000)  只会保留最高位{SID = 1;           // 引脚输出高电平,代表发送1}else{SID = 0;         // 引脚输出低电平,代表发送0}/*或		SID =	(Dbyte << i) & 0x80;	上面那样为了方便理解*/SCLK = 0;   //时钟线置低  允许SID变化Delay_us(5); //延时使数据写入SCLK = 1;    //拉高时钟,让从机读SID}   
}
void Lcd_WriteData(uint8_t Dat )
{Delay_ms(1);     SendByte(WRITE_DAT);            //11111,RW(0),RS(1),0SendByte(0xf0&Dat);      //高四位SendByte(Dat<<4);   //低四位(先执行<<)
}
int fputc(int ch, FILE *f)
{Lcd_WriteData(ch);			//将printf的底层重定向到自己的发送字节函数return ch;
}void Display_Words(uint8_t x,uint8_t y,char *str)
{ Lcd_WriteCmd(LCD_addr[x][y]); //写初始光标位置while(*str>0){ Lcd_WriteData(*str);    //写数据str++;     }
}void LcdWrods_Printf(int row, int col, char *format, ...) 
{char String[100];				//定义字符数组va_list arg;					//定义可变参数列表数据类型的变量argva_start(arg, format);			//从format开始,接收参数列表到arg变量vsprintf(String, format, arg);	//使用vsprintf打印格式化字符串和参数列表到字符数组中va_end(arg);					//结束变量argDisplay_Words(row,col,String);		//串口发送字符数组(字符串)
}
12864绘图模式驱动程序
#define WRITE_CMD	0xF8//写命令  
#define WRITE_DAT	0xFA//写数据
void Lcd_WriteCmd(uint8_t Cmd )
{Delay_ms(1);     //由于我们没有写LCD正忙的检测,所以直接延时1ms,使每次写入数据或指令间隔大于1ms 便可不用写忙状态检测SendByte(WRITE_CMD);            //11111,RW(0),RS(0),0   SendByte(0xf0&Cmd);      //高四位SendByte(Cmd<<4);   //低四位(先执行<<)
}
void Lcd_WriteData(uint8_t Dat )
{Delay_ms(1);     SendByte(WRITE_DAT);            //11111,RW(0),RS(1),0SendByte(0xf0&Dat);      //高四位SendByte(Dat<<4);   //低四位(先执行<<)
}
void LCD_Display_Picture(const uint8_t *img,uint8_t num)
{uint8_t x,y,i;for(i = 0; i < 1; i++)   //上下屏写入{for(y=0;y<32;y++)   //垂直Y写32次{  for(x=0;x<1;x++)   //横向X写1次{Lcd_WriteCmd(0x80 + y);		//行地址Lcd_WriteCmd(0x80+num + x+i);		//列地址Lcd_WriteData(*img ++);		//写高位字节数据 D15-D8   Lcd_WriteData(*img ++);		//写低位字节数据 D7-D0}}}
}	

创作不易,麻烦点赞收藏+关注,感谢各位亲们!!!!


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

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

相关文章

​LeetCode解法汇总2583. 二叉树中的第 K 大层和

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一棵二叉树的根节点 root 和一个正整…

JSON(javaScript Object Notation,Js对象标记)—我耀学IT

Json是一种轻量级的数据交换格式&#xff0c;目前使用非常广泛&#xff0c;是一种轻量级的数据交换格式。易于人阅读和编写&#xff0c;可以在多种语言之间进行数据交换 。同时也易于机器解析和生成 1.1json的值: 值可以是对象、数组、数字、字符串或者三个字面值(false、nul…

acwing算法学习笔记 ------ 双链表

1、定义 这里可以做一个投机取巧&#xff0c;我们不再像单链表去用head去存头和尾&#xff0c;直接让r[0] 1,l[1] 0; idx 2.进行初始化&#xff0c; 解释一下l[N] 和 r[N] l[N]:是表示指向左面下一个节点下标&#xff0c; r[N]:表示指向下一个节点的下标。大家不用担心i…

如何利用AI产品写作高质量SEO文章

在搜索引擎优化&#xff08;SEO&#xff09;的过程中&#xff0c;我们的目标非常明确&#xff0c;即增加网站的流量并实现有效的转化。那么&#xff0c;如何才能吸引更多的用户访问网站呢&#xff1f;这时候&#xff0c;文章就成为了一个非常好的工具。用户可以通过阅读文章来了…

08 Redis之集群的搭建和复制原理+哨兵机制+CAP定理+Raft算法

5 Redis 集群 2.8版本之前, Redis采用主从集群模式. 实现了数据备份和读写分离 2.8版本之后, Redis采用Sentinel哨兵集群模式 , 实现了集群的高可用 5.1 主从集群搭建 首先, 基本所有系统 , “读” 的压力都大于 “写” 的压力 Redis 的主从集群是一个“一主多从”的读写分…

协议的概念+本质+作用+最终表现形式,网络问题(技术+应用+解决的协议+存在原因),主机的对称性

目录 协议 概念 示例 -- 摩斯密码 本质 作用 网络问题 引入 技术问题 应用问题 主机的对称性 问题对应的协议 问题出现的原因 理解协议(代码层面) 举例 -- 快递单 协议的最终表现形式 协议被双方主机认知的基础 协议 概念 协议是在计算机通信和数据传输中规定通…

飞天使-k8s知识点23-kubernetes实操8-数据存储1

文章目录 持久化存储的必要EmptyDirHostPathNFS 持久化存储的必要 Volume是Pod中能够被多个容器访问的共享目录&#xff0c;它被定义在Pod上&#xff0c;然后被一个Pod里的多个容器挂载到具体的文件目录下&#xff0c;kubernetes通过Volume实现同一个Pod中不同容器之间的数据共…

韩国突发:将批准比特币ETF

作者&#xff1a;秦晋 韩国两党宣布将批准比特币ETF。比特币也再次成为竞选的宠儿。 4月10日&#xff0c;韩国将迎来每隔4年而进行的一次立法大选。在大选之前&#xff0c;现执政党与反对党都承诺将批准比特币ETF。 我们知道&#xff0c;比特币的主要受众群体以年轻人居多。此前…

零基础C++开发上位机--基于QT5.15的串口助手(一)

嵌入式开发的过程中&#xff0c;大部分我们的代码是无法一次成功的。这时候我们大部分的工程师可能最熟练的调试方法是printf函数&#xff0c;打印随意一个数据&#xff0c;来观察当前运行的函数是否执行正确。我们连接的工具有各个大神做的串口助手。另外&#xff0c;在做一般…

Git基本操作(2)

Git基本操作&#xff08;2&#xff09; 上交文件之后&#xff0c;git文件的变化git cat-file HEAD指针里面有啥文件被修改git statusgit diff 文件名 版本回退&#xff08;git reset&#xff09;撤销回退git reflog 撤销的三种情况还没有addgit checkout -- [file] 已经add还没…

聊聊分库分表

文章导读 背景介绍 随着互联网技术的发展&#xff0c;数据量呈爆炸性增长。大数据量的业务场景中&#xff0c;数据库成为系统性能瓶颈的一个主要因素。当单个数据库包含了太多数据或过高的访问量时&#xff0c;会出现查询缓慢、响应时间长等问题&#xff0c;严重影响用户体验。…

如何在Linux部署OpenGauss数据管理系统并实现公网访问内网数据

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试 前言 openGauss是一款开源关系型数据库管理系统&#xff0c;采用木兰宽松许可证v2发行。openGauss内核深度融合…

学习JAVA的第二天(基础)

目录 基本概念 关键字 class关键字 字面量 练习 变量 定义格式 变量使用 数据类型 基本数据类型 标识符 命名规则 键盘录入 1.导包 2.创建对象 3.接受数据 运算符 算术运算符 练习 隐式转换&#xff08;自动类型提升&#xff09; 强制转换 自增自减运算符 …

【前端素材】推荐优质后台管理系统Jampack平台模板(附源码)

一、需求分析 后台管理系统&#xff08;或称作管理后台、管理系统、后台管理平台&#xff09;是一种专门用于管理网站、应用程序或系统后台运营的软件系统。它通常由一系列功能模块组成&#xff0c;为管理员提供了管理、监控和控制网站或应用程序的各个方面的工具和界面。以下…

[论文解读]ALOHA 2:用于双手遥控操作的增强型低成本硬件

多样化的演示数据集推动了机器人学习的重大进步&#xff0c;但此类数据的灵活性和规模可能受到硬件成本、硬件鲁棒性和远程操作难易程度的限制。我们推出ALOHA 2&#xff0c;这是ALOHA的增强版本&#xff0c;与原始设计相比&#xff0c;它具有更高的性能、人体工程学和稳健性。…

Spring 容器、核心容器总结

目录 创建容器获取 bean容器类层次结构图核心容器总结容器相关bean 相关依赖注入相关 创建容器 方式一&#xff1a; 类路径加载配置文件 ApplicationContext ctx new ClassPathXmlApplicationContext("applicationContext.xml");方式二&#xff1a; 文件路径加载配…

TCP Keepalive 和 HTTP Keep-Alive

HTTP 的Keep-Alive 在 HTTP 1.0 中默认是关闭的&#xff0c;如果浏览器要开启 Keep-Alive&#xff0c;它必须在请求的包头中添加&#xff1a; Connection: Keep-Alive然后当服务器收到请求&#xff0c;作出回应的时候&#xff0c;它也添加一个头在响应中&#xff1a; Connec…

基于java+springboot+vue实现的美食信息推荐系统(文末源码+Lw)23-170

1 摘 要 使用旧方法对美食信息推荐系统的信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在美食信息推荐系统的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。这次开发…

Elasticsearch:创建自定义 ES Rally tracks 的分步指南

作者&#xff1a;Alejandro Snchez 按照这个综合教程学习如何制作个性化的 Rally tracks ES Rally 是什么&#xff1f;它的用途是什么&#xff1f; ES Rally 是一个用于在 Elasticsearch 上测试性能的工具&#xff0c;允许你运行和记录比较测试。 做出决策可能很困难&#x…

【kubernetes】二进制部署k8s集群之master节点和etcd数据库集群(上)

目录 前言&#xff1a;关于整个k8s集群的主机规划以及本文部署架构 步骤一&#xff1a;完成操作系统初始化配置 步骤二&#xff1a;完成etcd集群部署 关于etcd集群 ①准备签发证书环境 ②先完成单独一个节点的部署 ③通过部署好的etcd01节点 完成另外两个节点的部署 拓展…
推荐文章