51单片机学习笔记15 LCD12864(带字库)显示屏使用

51单片机学习笔记15 LCD12864(带字库)显示屏使用

  • 一、LCD12864简介
  • 二、管脚定义
  • 三、命令
    • 1. 功能能设定
    • 2. 清屏指令(0x01)
    • 3. 地址归位
    • 4. 进入设定点
    • 5. 显示状态开关
    • 6. 设定CGRAM地址
    • 7. 设定DDRAM地址
    • 8. 写资料到RAM
    • 9. 读出RAM
  • 四、DDRAM地址
  • 五、点亮实验
    • 1. 硬件连接
    • 2. 代码实现
      • (1)写命令
      • (2)写数据
      • (3)初始化
      • (4)清屏
      • (5)显示字符串
      • (6)主程序

一、LCD12864简介

LCD12864是一种128x64像素的液晶显示屏,常用于电子设备中作为显示器。它通常采用ST7920或者类似的控制器,可以通过串行或并行接口与微控制器或其他设备通信。LCD12864显示屏可以显示单色图像和文本,通常用于嵌入式系统、电子仪器、3D打印机等领域。
在这里插入图片描述
在这里插入图片描述

二、管脚定义

以下是LCD12864的管脚定义:

管脚编号功能
1VSS(地)
2VDD(电源,5V)
3V0(液晶对比度调节)
4RS(寄存器选择,1:数据;2:命令寄存器)
5R/W(读/写选择,1:读;2:写)
6E(使能信号)
7-14DB0-DB7(数据位)
15CS1,片选信号,低有效,对应左半屏64x64点
16CS2,片选信号,低有效,对应右半屏64x64点
17RST(复位,低有效)
18VOUT(液晶偏压输出)
19LED-A(LED背光阳极)
20LED-K(LED背光阴极)

三、命令

1. 功能能设定

位7位6位5位4位3位2位1位0
001DLX0/RExx

初始值: 001 DL X 100
DL 位说明 : 8/4位 接口控制位,值=1:8位接口;值=0:4位接口;
RE:指令集选择控制位,值1:扩充指令集;值0:基本指令集;

需要注意的是,同一指令的动作不能同时改变DL和RE,需要先改变DL再改变RE才能确保设置正确。

2. 清屏指令(0x01)

RSRW位7位6位5位4位3位2位1位0
0000000001

冰镇 DDRAM填充 ASCII 码的0x20(空格),并且设定DRAM的地址计数器(AC)为00H,更新设置进入设定点将I/D设为1,游标右移AC加1 。

3. 地址归位

RSRW位7位6位5位4位3位2位1位0
000000001X

设定DDRAM的地址计数器(AC)到00H,并且将游标移到开头原点位置。

4. 进入设定点

初始值: 06H

RSRW位7位6位5位4位3位2位1位0
00000001I/DS

I/D:值=1: 右移(DDRAM地址计数器AC加1);值=0;左移;
S:值=1:整体左移;值=0:整体右移;

5. 显示状态开关

RSRW位7位6位5位4位3位2位1位0
0000001DCB

初始值: 08H

D:值=1:整体显示开;值=0:整体显示关;
C:值=1:游标显示开;值=0:游标显示关;
B:值=1:游标位置显示反白打开;值=0:游标位置显示正常。

6. 设定CGRAM地址

RSRW位7位6位5位4位3位2位1位0
0001AC 5AC 4AC 3AC 2AC 1AC 0

设定CGRAM地址到地址计数器AC。

7. 设定DDRAM地址

RSRW位7位6位5位4位3位2位1位0
001AC 6AC 5AC 4AC 3AC 2AC 1AC 0

设定DRAM地址到地址计数器AC。

8. 写资料到RAM

RSRW位7位6位5位4位3位2位1位0
10D7D6D5D4D3D2D1D0
写入资料到内部的RAM。

9. 读出RAM

RSRW位7位6位5位4位3位2位1位0
11D7D6D5D4D3D2D1D0
从内部RAM读取资料。

四、DDRAM地址

图形显示坐标, 水平方向 X,以字节为单位;
垂直方向 Y,以位为单位 。

在这里插入图片描述

X坐标12345678
Line180H81H82H83H84H85H86H87H
Line290H91H92H93H94H95H96H97H
Line388H89H8AH8BH8CH8DH8EH8FH
Line498H99H9AH9BH9CH9DH9EH9FH

五、点亮实验

1. 硬件连接

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

2. 代码实现

(1)写命令

/**
* @brief  写命令
*/
void lcd12864_write_cmd(u8 cmd){LCD12864_RS = 0;LCD12864_RW = 0;LCD12864_EN = 0;LCD12864_DATAPORT = cmd;delay_ms(1);LCD12864_EN = 1;delay_ms(1);LCD12864_EN = 0;
}

(2)写数据

/**
* @brief  写数据
*/
void lcd12864_write_data(u8 dat){LCD12864_RS = 1;LCD12864_RW = 0;LCD12864_EN = 0;LCD12864_DATAPORT = dat;delay_ms(1);LCD12864_EN = 1;delay_ms(1);LCD12864_EN = 0;
}

(3)初始化

/**
* @brief  初始化
*/
void lcd12864_init(void){LCD12864_PSB = 1;// 功能设定,基本指令集,8位lcd12864_write_cmd(0x30);// 不使用光标, 不闪烁lcd12864_write_cmd(0x0c);// 不移动光标,不滚动lcd12864_write_cmd(0x06);// 清屏lcd12864_write_cmd(0x01);
}

(4)清屏

/**
* @brief  清屏
*/
void lcd12864_clear(void){lcd12864_write_cmd(0x01);
}

(5)显示字符串

/**
* @brief  显示字符串
*/
void lcd12864_write_string(u8 x, u8 y, u8 *str){if(y<0)y=0;if(x<0)x=0;if(y>3)y=3;x &= 0x0f;switch(y){case 0:x |= 0x80;break;case 1:x |= 0x90;break;case 2:x |= 0x88;break;case 3:x |= 0x98;break;}lcd12864_write_cmd(x);while(*str!='\0'){lcd12864_write_data(*str);str++;}
}

(6)主程序

#include "led_utils.h"
#include "ired_utils.h"
#include "segment_display_utils.h"
#include "uart_utils.h"
#include "lcd12864_utils.h"/**
* @brief 主函数
*/
void main()
{// 关闭所有ledled_all_off();// 速率 9600uart_init(0xfa);lcd12864_init();lcd12864_clear();lcd12864_write_string(0, 0, "你好,中国");while(1){}
}

本文代码开源地址:
https://gitee.com/xundh/learn51

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

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

相关文章

【目标检测】-入门知识

1、回归与分类问题 回归问题是指给定输入变量(特征)和一个连续的输出变量(标签),建立一个函数来预测输出变量的值。换句话说,回归问题的目标是预测一个连续的输出值,例如预测房价、股票价格、销售额等。回归问题通常使用回归分析技术,例如线性回归、多项式回归、决策树…

嵌入式学习48-单片机1

51单片机—————8位单片机 裸机驱动 无系统 linux驱动 有系统 驱动-----反映硬件变化 MCU 微控器 MPU CPU GPU 图像处理 IDE 集成开发环境 peripheral 外设 SOC&#xff1a; system on chip P0&#xff1a;8bit——8个引脚 …

【架构师】-- 浅淡架构的分类

什么是架构&#xff1f; 说到架构&#xff0c;这个概念没有很清晰的范围划分&#xff0c;也没有一个标准的定义&#xff0c;每个人的理解可能都不一样。 架构在百度百科中是这样定义的&#xff1a;架构&#xff0c;又名软件架构&#xff0c;是有关软件整体结构与组件的抽象描…

vue快速入门(十二)v-key索引标志

注释很详细&#xff0c;直接上代码 上一篇 新增内容 v-key的使用场景数组筛选器的使用 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, i…

(源码+部署+讲解)基于Spring Boot + Vue编程学习平台的设计与实现

前言 &#x1f497;博主介绍&#xff1a;✌专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2024年Java精品实战案例《100套》 &#x1f345;文末获取源码联系&#x1f345; &#x1f31f;…

基于PSO优化的CNN-GRU-Attention的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1卷积神经网络&#xff08;CNN&#xff09;在时间序列中的应用 4.2 GRU网络 4.3 注意力机制&#xff08;Attention&#xff09; 5.算法完整程序工程 1.算法运行效果图预览 优化前 优化…

番茄 abogus rpc调用

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;wx a15018601872 本文章…

STM32+ESP8266水墨屏天气时钟:文字取模和图片取模教程

项目背景 本次的水墨屏幕项目需要显示一些图片和文字&#xff0c;所以需要对图片和文字进行取模。 取模步骤 1.打开取模软件 2.选择图形模式 3.设置字模选项 注意&#xff1a;本次项目采用的是水墨屏&#xff0c;并且是局部刷新的代码&#xff0c;所以设置字模选项可能有点…

人工智能——深度学习

4. 深度学习 4.1. 概念 深度学习是一种机器学习的分支&#xff0c;旨在通过构建和训练多层神经网络模型来实现数据的高级特征表达和复杂模式识别。与传统机器学习算法相比&#xff0c;深度学习具有以下特点&#xff1a; 多层表示学习&#xff1a;深度学习使用深层神经网络&a…

linux 迁移home目录以及修改conda中pip的目录,修改pip安装路径

1&#xff09;sudo rsync -av /home/lrf /data/home/lrf 将/home目录下的文件进行复制&#xff08;假设机械硬盘挂载在/data目录下&#xff09;** 2&#xff09;usermod -d /data/home/lrf -m lrf 修改用户$HOME变量** 3&#xff09;vi /etc/passwd 查看对应用户的$HOME变量是…

环境监测站升级选择ARM网关驱动精准数据采集

物联网技术的深入发展和环保需求的不断攀升&#xff0c;API调用网关在环境监测领域的应用正成为科技创新的重要推手。其中&#xff0c;集成了API调用功能的ARM工控机/网关&#xff0c;以其出色的计算性能、节能特性及高度稳定性&#xff0c;成功搭建起连接物理世界与数字世界的…

hive管理之ctl方式

hive管理之ctl方式 hivehive --service clictl命令行的命令 #清屏 Ctrl L #或者 &#xff01; clear #查看数据仓库中的表 show tabls; #查看数据仓库中的内置函数 show functions;#查看表的结构 desc表名 #查看hdfs上的文件 dfs -ls 目录 #执行操作系统的命令 &#xff01;命令…

【堡垒机】堡垒机的介绍

目前&#xff0c;常用的堡垒机有收费和开源两类。 收费的有行云管家、纽盾堡垒机&#xff1b; 开源的有jumpserver&#xff1b; 这几种各有各的优缺点&#xff0c;如何选择&#xff0c;大家可以根据实际场景来判断 什么是堡垒机 堡垒机&#xff0c;即在一个特定的网络环境下&…

计算机网络 网络命令的使用

一、实验内容 1.PING网络命令的实验 ping 127.0.0.1(内部回环测试)ping 本主机的IP地址ping 默认网关地址ping远端目的地的IP地址ping localhostping域名 2.其他网络命令实验 命令用途ipconfig/all 显示当前系统网络配置&#xff0c;包括IP地址、子网掩码、默认网关等trace…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之七 简单指定视频某片段快放效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之七 简单指定视频某片段快放效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之七 简单指定视频某片段快放效果 一、简单介绍 二、简单指定视频某片段快放效果实现原理…

回归预测 | Matlab实现SSA-GRNN麻雀算法优化广义回归神经网络多变量回归预测(含优化前后预测可视化)

回归预测 | Matlab实现SSA-GRNN麻雀算法优化广义回归神经网络多变量回归预测(含优化前后预测可视化) 目录 回归预测 | Matlab实现SSA-GRNN麻雀算法优化广义回归神经网络多变量回归预测(含优化前后预测可视化)预测效果基本介绍程序设计参考资料预测效果

VBA 实现outlook 当邮件设置category: red 即触发自动创建jira issue

1. 打开: Outlook VBA&#xff08;Visual Basic for Applications&#xff09; 方法一: 在邮件直接搜索:Visual Basic editor 方法二: File -> Options -> Customize Ribbon-> 打钩 如下图: 2.设置运行VBA 脚本: File -> Options -> Trust center -> Trus…

【数据结构】:顺序表专题

前言&#xff1a;今天我们开始介绍数据结构有关内容&#xff0c;那么数据结构是什么呢&#xff1f; 数据结构是计算机存储、组织数据的方式。在工作中&#xff0c;我们通常会直接使用已经封装好的集合API(应用程序编程接口)&#xff0c;这样可以更高效地完成任务。但是作为一名…

R+VIC模型融合实践技术应用及未来气候变化模型预测

在气候变化问题日益严重的今天&#xff0c;水文模型在防洪规划&#xff0c;未来预测等方面发挥着不可替代的重要作用。目前&#xff0c;无论是工程实践或是科学研究中都存在很多著名的水文模型如SWAT/HSPF/HEC-HMS等。虽然&#xff0c;这些软件有各自的优点&#xff1b;但是&am…

【QT入门】 Qt自定义控件与样式设计之QPushButton实现鼠标悬浮按钮弹出对话框

往期回顾&#xff1a; 【QT入门】 Qt自定义控件与样式设计之qss选择器-CSDN博客 【QT入门】 Qt自定义控件与样式设计之QLineEdit的qss使用-CSDN博客 【QT入门】Qt自定义控件与样式设计之QPushButton常用qss-CSDN博客 【QT入门】 Qt自定义控件与样式设计之QPushButton实现鼠标悬…