STM32_LCD1602_2_液晶屏初始化

HD44780的指令集及其设置说明

共11条指令:

  1. 清屏指令


    指令功能指令编码执行时间/ms
    RSR/WDB7DB6DB5DB4DB3DB2DB1DB0
    清屏00000000011.64
    功能:
    1. 清除液晶屏,即将DDRAM的所有内容都写为“空”的ASCII的20H;
    2. 光标归位,即将光标撤回液晶屏的左上方;
    3. 将地址计数器(AC)的值设置为0。
  2. 光标归位指令


    指令功能指令编码执行代码时间/ms
    RSR/WDB7DB6DB5DB4DB3DB2DB1DB0
    光标归位000000001X1.64

    功能:

    1. 设置光标至显示器左上方;

    2. 把地址计数器(AC)的值设置为0;

    3. 保持DDRAM的内容不变。

  3. 进入模式设置指令


    指令功能指令编码执行代码时间/us
    RSR/WDB7DB6DB5DB4DB3DB2DB1DB0
    进入模式设置00000001I/DS40

    功能:设定每次写入1为数据后光标的移动方向,并且设定每次写入的一个字符是否移动。参数设定情况如下:

    位名设置
    I/D0=写入新数据后光标左移1=写入新数据后光标右移
    S0=写入行数据后显示屏不移动1=写入新数据后显示屏整体右移1个字符
  4. 显示开关控制指令


    指令功能指令编码执行代码时间/us
    RSR/WDB7DB6DB5DB4DB3DB2DB1DB0
    显示开关控制0000001DCB40

    功能:控制显示器开/关,光标显示/关闭以及光标是否闪烁。参数设定的情况如下:

    位名设置
    D0=显示功能关1=显示功能开
    C0=无光标1=有光标
    B0=光标闪烁1=光标不闪烁
  5. 设定显示屏或光标移动方向指令


    指令功能指令编码执行代码时间/us
    RSR/WDB7DB6DB5DB4DB3DB2DB1DB0
    设定显示屏或光标移动方向000001S/C

    R/L

    XX40

    功能:使光标位移或使整个显示屏位移。参数设定的情况如下:

    S/CR/L设定情况
    00光标左移1格,且AC值减1
    01光标右移1格,且AC值加1
    10显示屏上字符全部左移一格,但光标不动
    11显示屏上字符全部右移一格,但光标不动
  6. 功能设定指令


    指令功能指令编码执行代码时间/us
    RSR/WDB7DB6DB5DB4DB3DB2DB1DB0
    功能设定00001DLNFXX40

    功能:设定数据总线位数,显示的行数及字型。参数设定的情况如下:

    位名设置
    DL0=数据总线位4位1=数据总线位8位
    N0=显示1行1=显示2行
    F0=5*7点阵/每字符1=5*10点阵/每字符
  7. 设定CGRAM地址指令


    指令功能指令编码执行代码时间/us
    RSR/WDB7DB6DB5DB4DB3DB2DB1DB0
    设定CGRAM地址0001CGRAM的地址(6位)40

    功能:设定下一个要存入数据的CGRAM的地址

                DB5,DB4,DB3为字符号,也就是要显示该字符时要用到的字符地址。(000~111)(定义8个字符)

                DB2,DB1,DB0为行号。(000~111)(定义8个行)

  8. 设定DDRAM地址指令


    指令功能指令编码执行代码时间/us
    RSR/WDB7DB6DB5DB4DB3DB2DB1DB0
    设定DDRAM地址001CGRAM的地址(7位)40

    功能:设定下一个要存入数据的DDRAM的地址。

  9. 读取忙信号或AC地址指令


    指令功能指令编码执行代码时间/us
    RSR/WDB7DB6DB5DB4DB3DB2DB1DB0
    读取忙碌信号或AC00001DLNFXX40

    功能:

    1. 读取忙碌信号BF的内容,当BF=1时,代表显示屏忙,暂时无法接收单片机送来的数据或指令;当BF=0时,显示屏可以接受单片机送来的数据或指令;

    2. 读取地址计数器(AC)的内容。

  10. 数据写入DDRAM或CGRAM指令


    指令功能指令编码执行代码时间/us
    RSR/WDB7DB6DB5DB4DB3DB2DB1DB0
    数据写入到DDRAM或CGRAM10要写入的数据D7~D040

    功能:

    1. 将字符码写入DDRAM,以使显示屏显示出相对应的字符;

    2. 将使用者自己设计的图形存入CGRAM。

      DB7,DB6,DB5可为任何数据,一般取“000”。
      DB4,DB3,DB2,DB1,DB0对应于每行5点的字模数据。
  11. 从CGRAM或DDRAM读出数据的指令


    指令功能指令编码执行代码时间/us
    RSR/WDB7DB6DB5DB4DB3DB2DB1DB0
    读取忙碌信号或AC11要读出的数据D7~D040

    功能:读取DDRAM或CGRAM中的内容。

    基本操作时序
    读状态

    输入:RS=L,RW=H,E=H

    输出:DB0~DB7=状态字

    写指令

    输入:RS=L,RW=L,E=下降沿脉冲,DB0~DB7=指令码

    输出:无

    读数据

    输入:RS=H,RW=H,E=H

    输出:DB0~DB7=数据

    写数据

    输入:RS=H,RW=L,E=下降沿脉冲,DB0~DB7=数据

    输出:无

LCD1602初始化代码

void LCD1602_Init(void)
{LCD1602_Write_Cmd(0x38); //2行显示,5*7点阵,8位数据线LCD1602_Write_Cmd(0x0C); //开显示,关闭光标LCD1602_Write_Cmd(0x06); //屏幕文字不动,光标向右移动LCD1602_Write_Cmd(0x01); //清屏
}

0x38:0011 1000 (功能6:功能设定指令) //2行显示,5*7点阵,8位数据线

0x0C:0000 1100 (功能4:显示开关控制指令) //开显示,关闭光标

0x06:0000 0110 (功能3:进入模式设置指令) //屏幕文字不动,光标向右移动

0x01:0000 0001 (功能1:清屏指令) //清屏

void LCD1602_Write_Cmd(unsigned char cmd)
{LCD1602_Wait_Ready();LCD1602_RS_Clr();LCD1602_RW_Clr();SET_LCD1602_D0((cmd>>0) & 0x1);SET_LCD1602_D1((cmd>>1) & 0x1);SET_LCD1602_D2((cmd>>2) & 0x1);SET_LCD1602_D3((cmd>>3) & 0x1);SET_LCD1602_D4((cmd>>4) & 0x1);SET_LCD1602_D5((cmd>>5) & 0x1);SET_LCD1602_D6((cmd>>6) & 0x1);SET_LCD1602_D7((cmd>>7) & 0x1);LCD1602_EN_Set();LCD1602_EN_Clr();
}
void LCD1602_Wait_Ready(void)
{//首先将PC13改为输入GPIOC->CRH &= 0xFF0FFFFF;GPIOC->CRH |= 4<<20;LCD1602_RS_Clr();LCD1602_RW_Set();LCD1602_EN_Set();Delay_us(5000);while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == 0x1);//LCD1602就绪后,再将PC13(DB7)改为输出GPIOC->CRH &= 0xFF0FFFFF;GPIOC->CRH |= 3<<20;LCD1602_EN_Clr();
}
#define LCD1602_RS_Set()	GPIO_SetBits(GPIOA, GPIO_Pin_5)
#define LCD1602_RS_Clr()	GPIO_ResetBits(GPIOA, GPIO_Pin_5)#define LCD1602_RW_Set()	GPIO_SetBits(GPIOB, GPIO_Pin_12)
#define LCD1602_RW_Clr()	GPIO_ResetBits(GPIOB, GPIO_Pin_12)#define LCD1602_EN_Set()	GPIO_SetBits(GPIOB, GPIO_Pin_13)
#define LCD1602_EN_Clr()	GPIO_ResetBits(GPIOB, GPIO_Pin_13)#define SET_LCD1602_D0(a)	GPIO_WriteBit(GPIOB, GPIO_Pin_14, (BitAction)(a))
#define SET_LCD1602_D1(a)	GPIO_WriteBit(GPIOB, GPIO_Pin_15, (BitAction)(a))
#define SET_LCD1602_D2(a)	GPIO_WriteBit(GPIOA, GPIO_Pin_9, (BitAction)(a))
#define SET_LCD1602_D3(a)	GPIO_WriteBit(GPIOA, GPIO_Pin_10, (BitAction)(a))
#define SET_LCD1602_D4(a)	GPIO_WriteBit(GPIOA, GPIO_Pin_11, (BitAction)(a))
#define SET_LCD1602_D5(a)	GPIO_WriteBit(GPIOA, GPIO_Pin_12, (BitAction)(a))
#define SET_LCD1602_D6(a)	GPIO_WriteBit(GPIOB, GPIO_Pin_5, (BitAction)(a))
#define SET_LCD1602_D7(a)	GPIO_WriteBit(GPIOC, GPIO_Pin_13, (BitAction)(a))

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

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

相关文章

多态与代码屎山

到底什么是多态呢?多态是面向未来的,比如企业采购为例: 一般分为线上合线下两种, 我们设计一个父类叫做"采购", 里面做一些共通的处理: 申请, 承认, 支付, 购买方式. 然后让各自的子类(线上,线下)实现自己的方法.实际调用过程中传入不同的对象就可以.到此为止项目开…

在线程调用的函数中使用pthread_exit同样会将线程退出

如上图所示&#xff0c;在func()函数中调用pthread_exit&#xff0c;同样可以退出当前线程&#xff1b; 类似的&#xff0c;如果func&#xff08;&#xff09;函数中调用exit&#xff0c;可以直接退出整个进程。 return 是返回到函数调用处&#xff1b; pthread_exit是退出…

KTV点歌系统vue+springboot音乐歌曲播放器系统

目前现有的KTV点歌系统对于用户而言其在线点歌流程仍然过于繁琐&#xff0c;对于歌曲而言其系统安全性并不能保障。同时整套系统所使用的技术相对较为落后&#xff0c;界面不能动态化展示。相比较于其它同类型网站而言不能体现技术先进性。 1.2 项目目标 KTV点歌系统的后台开发…

wpf 3d 后台加载模型和调整参数

下载了一个代码&#xff0c;加载obj模型&#xff1b;它的参数在xaml里&#xff0c;模型加载出来刚好&#xff1b; 然后加载另一个obj模型&#xff1b;加载出来之后大&#xff0c;偏到很高和左的位置&#xff1b; 它之前的摄像机位置&#xff0c; Position"9.94759830064…

Apache celeborn 安装及使用教程

1.下载安装包 https://celeborn.apache.org/download/ 测0.4.0时出现https://github.com/apache/incubator-celeborn/issues/835 2.解压 tar -xzvf apache-celeborn-0.3.2-incubating-bin.tgz 3.修改配置文件 cp celeborn-env.sh.template celeborn-env.shcp log4j2.xml.…

前后端分离Vue+nodejs校园论坛bbs系统x450z

开发语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode本论文拟采用计算机技术设计并开发的论坛bbs系统&#xff0c;主要是为用户提供服务。使得用户可以在系统上查看帖子信息、签到积分等…

jQuery中的事件与DOM操作

jQuery事件 jQuery事件是对JavaScript事件的封装,常用事件分类 基础事件 鼠标事件键盘事件window事件表单事件绑定事件与移除事件复合事件 鼠标光标悬停鼠标连续点击jQuery基础事件 鼠标事件 鼠标事件是当用户在文档上移动或单击鼠标时而产生的事件 下面是一个使用 Markdow…

大厂嵌入式公司面试真题

面试题&#xff1a; 基础知识题 请解释C语言中的指针是什么以及它们如何工作&#xff1f;描述C语言中的动态内存分配。malloc、calloc、realloc和free这些函数有何区别&#xff1f;C语言中的宏&#xff08;macro&#xff09;和函数之间有什么不同&#xff1f;代码理解题 #incl…

详解Megatron中的数据混合算法(BlendableDataset)

&#x1f9d1;‍&#x1f4bb; 本文主要讲解Megatron早期版本中的数据混合算法。 目录 1. 数据混合2. 源码解析3. 证明部分&讨论4. 进一步优化 1. 数据混合 在谈源码之前&#xff0c;我们有必要先了解一下Megatron中的数据混合思想。 给定 n n n 个数据集 D 1 , D 2 , …

给定一个边与边可能相交的多边形,求它的轮廓线

大家好&#xff0c;我是前端西瓜哥。 最近遇到一个需求&#xff0c;给定一个多边形&#xff08;边与边可能相交&#xff09;&#xff0c;求这个多边形的轮廓线。 需要注意的是&#xff0c;轮廓线多边形内不能有空洞&#xff0c;使用的不是常见的非零绕数规则&#xff08;nonze…

Java+SpringBoot,打造极致申报体验

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

2024全国水科技大会暨流域水环境治理与水生态修复论坛(六)

论坛召集人 冯慧娟 中国环境科学研究院流域中心研究员 刘 春 河北科技大学环境与工程学院院长、教授 一、会议背景 为深入贯彻“山水林田湖是一个生命共同体”的重要指示精神&#xff0c;大力实施生态优先绿色发展战略&#xff0c;积极践行人、水、自然和谐共生理念&…

VOL_常用记录!!-----后端

目录 1.后台配置appsettings.json说明2.service.cs扩展 表/明细表(CRUD导入导出)前后做一些操作 数据(CRUD导入导出)前后的处理参数或数据2.编辑3.新建4.查询5.导出6.导入 注意事项&#xff1a;后台扩展必须写在代码生成的Partial部分类里面 防止代码生成后覆盖你的扩展的代码 …

opencascade在vs和qt下改变视图方向和设置线框模式

一.改变视图方向&#xff08;以顶部视图为例&#xff09; 1.在qt的界面代码中设置好 2.在view.h中设置好槽函数 3.在lzzcad.cpp中设置槽与信号的连接&#xff0c;并在工具栏上显示 4.在view.cpp中给出函数实现 5.给出快捷键实现方式 二.设置线框模式 同上&#xff0c;加入函数…

力扣:93. 复原 IP 地址

回溯&#xff1a; 1.先定义一个接收的集合&#xff0c;之后再定义一个记录小数点的变量。之后编写回溯函数&#xff0c;终止条件为小数点的个数为3时&#xff0c;同时要判断最后一段的组合的值是否属于ip地址的范围。之后再用for循环来遍历ip地址的组合&#xff0c;先判断组合…

【软件设计模式之模板方法模式】

文章目录 前言一、什么是模板方法模式&#xff1f;二、模板方法模式的结构1. 抽象类定义2. 具体实现 三、模板方法模式的应用场景1. 算法重用2. 操作中的固定步骤3. 扩展框架的功能4. 提供回调方法5. 遵循开闭原则 四、模板方法模式的优缺点1. 优点代码复用扩展性好符合开闭原则…

[深度学习]yolov9+deepsort+pyqt5实现目标追踪

【YOLOv9DeepSORTPyQt5追踪介绍】 随着人工智能技术的飞速发展&#xff0c;目标追踪在视频监控、自动驾驶等领域的应用日益广泛。其中&#xff0c;YOLOv9作为先进的目标检测算法&#xff0c;结合DeepSORT多目标追踪算法和PyQt5图形界面库&#xff0c;能够为用户提供高效、直观…

Linux fdisk命令教程:硬盘分区的利器(附实例详解和注意事项)

Linux fdisk命令介绍 fdisk&#xff08;format disk&#xff09;是一个在Linux中用于创建和操作磁盘分区表的对话驱动命令。它是最常用的创建分区的工具之一。fdisk允许你在硬盘上创建和操作分区表。需要注意的是&#xff0c;fdisk是一个危险的工具&#xff0c;应该谨慎使用。…

前端笔记——var let const 之间的区别

Var&#xff1a; 关键字来声明变量。它有以下特点&#xff1a; var声明的变量作用域是函数级的&#xff0c;即在函数内部声明的变量在整个函数范围内可见。 var变量可以被重复声明&#xff0c;而不会引发错误。 var变量会存在变量提升&#xff08;hoisting&#xff09;现象&…

python-可视化篇-简单-条形图输出主要省份GDP排名情况

条形图输出主要省份GDP排名情况 代码 gdp广东:97277.77:107671.07 江苏:92595.40:99631.52 山东:76469.70:71067.5 浙江:56197.00:62353 河南:48055.90:54259.2 四川:40678.10:46615.82 湖北:39366.60:45828.31 湖南:36425.78:39752.12 河北:36010.30:35104.5 福建:35804.04:…