基于STC12C5A60S2系列1T 8051单片机的IIC通信的0.96寸4针OLED12864显示16行点x16列点字模的功能

基于STC12C5A60S2系列1T 8051单片机的IIC通信的0.96寸4针OLED12864显示16行点x16列点字模的功能

  • STC12C5A60S2系列1T 8051单片机管脚图
  • STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置
  • STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍
  • 液晶显示器OLED12864简单介绍
    • 一、OLED12864点阵型液晶显示器介绍
    • 二、OLED12864点阵型液晶显示器IIC协议介绍
    • 三、OLED12864点阵型液晶字节排列方式介绍
    • 四、OLED12864点阵型液晶图像显示位置寻址寄存器介绍
    • 五、OLED12864点阵型液晶硬件配置寄存器介绍
    • 五、OLED12864点阵型液晶显示方式介绍
    • 六、OLED12864点阵型液晶滚屏命令介绍
    • 七、OLED12864点阵型液晶字模提取介绍
  • 基于STC12C5A60S2系列1T 8051单片机的IIC通信的0.96寸4针OLED12864显示16行点x16列点字模的功能

STC12C5A60S2系列1T 8051单片机管脚图

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

STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置

在这里插入图片描述

STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍

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

液晶显示器OLED12864简单介绍

一、OLED12864点阵型液晶显示器介绍

在这里插入图片描述

二、OLED12864点阵型液晶显示器IIC协议介绍

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

三、OLED12864点阵型液晶字节排列方式介绍

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

四、OLED12864点阵型液晶图像显示位置寻址寄存器介绍

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

五、OLED12864点阵型液晶硬件配置寄存器介绍

在这里插入图片描述

五、OLED12864点阵型液晶显示方式介绍

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

六、OLED12864点阵型液晶滚屏命令介绍

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

七、OLED12864点阵型液晶字模提取介绍

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

基于STC12C5A60S2系列1T 8051单片机的IIC通信的0.96寸4针OLED12864显示16行点x16列点字模的功能

在这里插入图片描述
main.c

#include "STC12C5A60S2.h"  
#include "OLED12864.h"
#include "OLED12864OfI2C.h"
//#include "ChineseCharacterLibrary.h"
#define uchar unsigned char//自定义无符号字符型为uchar
#define uint unsigned int//自定义无符号整数型为uintvoid main()//主函数
{OLED12864Init();//OLED12864初始化函数
//  OLED12864DisplayChinese(0,0,0);//在OLED12864第0小页(即8小行为一小页)到第1小页(即8小行为一小页)的第0大列(即16小列为一大列)显示ChineseCharacterArray[]变量中的第0个汉字 while(1)//主循环{OLED12864Display16Bitx16BitFontMolds(0,0,1);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第0大列(即16小列为一大列)显示ChineseCharacterArray[]变量中的第0个汉字"欢" OLED12864Display16Bitx16BitFontMolds(1,0,2);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第1大列(即16小列为一大列)显示ChineseCharacterArray[]变量中的第1个汉字"迎" OLED12864Display16Bitx16BitFontMolds(2,0,3);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第2大列(即16小列为一大列)显示ChineseCharacterArray[]变量中的第2个汉字"来" OLED12864Display16Bitx16BitFontMolds(3,0,4);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第3大列(即16小列为一大列)显示ChineseCharacterArray[]变量中的第3个汉字"到" OLED12864Display16Bitx16BitFontMolds(4,0,5);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第4大列(即16小列为一大列)显示ChineseCharacterArray[]变量中的第4个汉字"广" OLED12864Display16Bitx16BitFontMolds(5,0,6);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第5大列(即16小列为一大列)显示ChineseCharacterArray[]变量中的第5个汉字"东" OLED12864Display16Bitx16BitFontMolds(6,0,7);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第6大列(即16小列为一大列)显示ChineseCharacterArray[]变量中的第6个汉字"安" OLED12864Display16Bitx16BitFontMolds(7,0,8);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第7大列(即16小列为一大列)显示ChineseCharacterArray[]变量中的第7个汉字"胜" OLED12864Display16Bitx16BitFontMolds(0,2,9);//从第2小页(即8小行为一小页)开始到第3小页(即8小行为一小页)的第0大列(即16小列为一大列)显示ChineseCharacterArray[]变量中的第8个汉字"仪" OLED12864Display16Bitx16BitFontMolds(1,2,10);//从第2小页(即8小行为一小页)开始到第3小页(即8小行为一小页)的第1大列(即16小列为一大列)显示ChineseCharacterArray[]变量中的第9个汉字"器" OLED12864Display16Bitx16BitFontMolds(2,2,11);//从第2小页(即8小行为一小页)开始到第3小页(即8小行为一小页)的第2大列(即16小列为一大列)显示ChineseCharacterArray[]变量中的第10个汉字"有" OLED12864Display16Bitx16BitFontMolds(3,2,12);//从第2小页(即8小行为一小页)开始到第3小页(即8小行为一小页)的第3大列(即16小列为一大列)显示ChineseCharacterArray[]变量中的第11个汉字"限" OLED12864Display16Bitx16BitFontMolds(4,2,13);//从第2小页(即8小行为一小页)开始到第3小页(即8小行为一小页)的第4大列(即16小列为一大列)显示ChineseCharacterArray[]变量中的第12个汉字"公" OLED12864Display16Bitx16BitFontMolds(5,2,14);//从第2小页(即8小行为一小页)开始到第3小页(即8小行为一小页)的第5大列(即16小列为一大列)显示ChineseCharacterArray[]变量中的第13个汉字"司" OLED12864Display16Bitx16BitFontMolds(6,2,15);//从第2小页(即8小行为一小页)开始到第3小页(即8小行为一小页)的第6大列(即16小列为一大列)显示ChineseCharacterArray[]变量中的第14个汉字"做" OLED12864Display16Bitx16BitFontMolds(7,2,16);//从第2小页(即8小行为一小页)开始到第3小页(即8小行为一小页)的第7大列(即16小列为一大列)显示ChineseCharacterArray[]变量中的第15个汉字"客" }}

OLED12864.c

#include "OLED12864.h" 
#include "OLED12864OfI2C.h" 
#include "ChineseCharacterLibrary.h"
#define uchar unsigned char//自定义无符号字符型为uchar
#define uint unsigned int//自定义无符号整数型为uintvoid WriteCommandToOLED12864(uchar Command)//写命令给OLED12864函数
{I2CStar();//I2C启动函数I2CWriteByte(0x78);//I2C写字节函数 写OLED12864硬件地址	WaitAck();//等待应答I2CWriteByte(0x00);//I2C写字节函数 启动写命令控制WaitAck();//等待应答I2CWriteByte(Command);//I2C写字节函数 写命令给OLED12864WaitAck();//等待应答I2CStop();//I2C停止函数}void WriteDataToOLED12864(uchar Data)//写数据给OLED12864函数 
{I2CStar();//I2C启动函数I2CWriteByte(0x78);//I2C写字节函数 写OLED12864硬件地址WaitAck();//等待应答	I2CWriteByte(0x40);//I2C写字节函数 启动写数据控制WaitAck();//等待应答I2CWriteByte(Data);//I2C写字节函数 写数据给OLED12864WaitAck();//等待应答I2CStop();//I2C停止函数}void SetOLED12864DisplayPostion(uchar Column,uchar Page)//设置OLED12864显示位置函数 Column为OLED12864大列(即16小列为一大列)地址 取值为0到7 Page为OLED12864的8小行或小页(即8小行为一小页)地址 取值为0到7
{WriteCommandToOLED12864(0xb0 + Page);//OLED12864的8小行或小页(即8小行为一小页)地址选择 0xb0为OLED12864第0小页(即8小行为一小页)地址 也是OLED12864的小页开始地址 取值为0到7WriteCommandToOLED12864(((Column & 0xf0) >> 4) | 0x10);//0001 A7A6A5A4 OLED12864列地址的高4位WriteCommandToOLED12864(Column & 0x0f);//0000 A3A2A1A0 OLED12864列地址的低4位}void OLED12864ClearScreen()//OLED12864清屏显示函数
{uchar Column,Page;//声明Column为OLED12864小列地址 取值为0到127  Page为OLED12864的8小行或小页(即8小行为一小页)地址for(Page = 0;Page < 8;Page++)//循环OLED12864的8小页(即8小行为一小页)地址 共64小行	{WriteCommandToOLED12864(0xb0 + Page);//OLED12864的8小行或小页(即8小行为一小页)地址选择 0xb0为OLED12864第0小页(即8小行为一小页)地址 也是OLED12864的小页开始地址WriteCommandToOLED12864(0x00);//0000 A3A2A1A0 OLED12864列地址的低4位WriteCommandToOLED12864(0x10);//0001 A7A6A5A4 OLED12864列地址的高4位for(Column = 0;Column < 128;Column++)//循环OLED12864的128小列地址{WriteDataToOLED12864(0x00);//关OLED12864显示}}}	void OLED12864Display16Bitx16BitFontMolds(uchar Column,uchar Page,uchar z)//OLED12864显示16行点x16列点字模函数 Column为OLED12864大列(即16小列为一大列)地址 取值为0到7 取值为0到7 Page为OLED12864的8小行或小页(即8小行为一小页)地址 取值为0到7 z为显示ChineseCharacterArrayOf16Row16Column[]变量中哪个汉字的32个字节所在序号变量
{uint i,j;//声明循环变量j = 16;//定义ChineseCharacterArrayOf16Row16Column[]变量中某个数据的16个字节变量switch(z)//z为显示ChineseCharacterArrayOf16Row16Column[]变量中哪个汉字的32个字节所在序号变量{	case 1:  SetOLED12864DisplayPostion(Column * 16,Page);//Column为OLED12864大列(即16小列为一大列)地址 Column * 16表示这个大列有16小列 Page为OLED12864的8小行或小页(即8小行为一小页)地址 取值为0到7for(i = (0 * j);i < (1 * j);i++)//循环ChineseCharacterArrayOf16Row16Column[]变量中某个数据上半部分16个数据{WriteDataToOLED12864(ChineseCharacterArrayOf16Row16Column[i]);//汉字上半部分显示	}	SetOLED12864DisplayPostion(Column * 16,Page + 1);//Column为OLED12864大列(即16小列为一大列)地址 Column * 16表示这个大列有16小列 Page为OLED12864的8小行或小页(即8小行为一小页)地址 取值为0到7for(i = (1 * j);i < (2 * j);i++)//循环ChineseCharacterArrayOf16Row16Column[]变量中某个数据下半部分16个数据{WriteDataToOLED12864(ChineseCharacterArrayOf16Row16Column[i]);//汉字下半部分显示}		z = 0;//清0				 break;//跳出case 2:  SetOLED12864DisplayPostion(Column * 16,Page);//Column为OLED12864大列(即16小列为一大列)地址 Column * 16表示这个大列有16小列 Page为OLED12864的8小行或小页(即8小行为一小页)地址 取值为0到7for(i = (2 * j);i < (3 * j);i++)//循环ChineseCharacterArrayOf16Row16Column[]变量中某个数据上半部分16个数据{WriteDataToOLED12864

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

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

相关文章

抖音直播间小风车怎么挂?直播间小风车跳转微信怎么开通!

抖音直播已经成为了一个非常受欢迎的直播平台&#xff0c;而在直播间引流也是用户非常关注的一个话题。而针对这个问题&#xff0c;抖音也提供了一种非常好用的小工具——小风车&#xff0c;可以帮助用户在直播间进行引流。那么&#xff0c;抖音直播间小风车怎么挂&#xff1f;…

记录几种排序算法

十种常见排序算法可以分类两大类别&#xff1a;比较类排序和非比较类排序。 常见的快速排序、归并排序、堆排序以及冒泡排序等都属于比较类排序算法。比较类排序是通过比较来决定元素间的相对次序&#xff0c;其时间复杂度不能突破 O(nlogn)。在冒泡排序之类的排序中&…

扩展学习|本体研究进展

文献来源&#xff1a; 王向前,张宝隆,李慧宗.本体研究综述[J].情报杂志,2016,35(06):163-170. 一、本体的定义 本体概念被引入人工智能、知识工程等领域后被赋予了新的含义。然而不同的专家学者对本体的理解不同,所给出的定义也有所差异。 人工智能领域的学者Neches(1991)等人对…

Docker Compose 部署若依前后端分离版

准备一台服务器 本次使用虚拟机&#xff0c;虚拟机系统 Ubuntu20.04&#xff0c;内存 4G&#xff0c;4核。 确保虚拟机能连接互联网。 Ubuntu20.04 安装 Docker 添加 Docker 的官方 GPG key&#xff1a; sudo apt-get update sudo apt-get install ca-certificates curl su…

初始面相对象

初始面向对象 类和对象的关系 类&#xff1a;对对象向上抽取出像的部分、公共的部分以此形成类&#xff0c;类就相当于一个模版。 对象&#xff1a;在某个模版下的具体的产物可以理解为对象&#xff0c;对象就是一个一个具体的实例&#xff0c;就相当于这个模版下具体的产品&…

RabbitMQ之生产批量发送

为什么要用生产批量发送&#xff1f; 批量发送消息&#xff0c;可以提高MQ发送性能。但是 RabbitMQ 并没有提供了批量发送消息的 API 接口,使用 spring-amqp 的 BatchingRabbitTemplate 实现批量能力。 SimpleBatchingStrategy 发送策略满足以下规则会进行发送&#xff1a; ba…

梅大(龙)高速周边地形

最近广东高速的事故很受关注&#xff0c;我下载了这个高速的地形数据。查看了一下高速周围的地形情况。确实地形很险要&#xff0c;开车还是不要太快&#xff01;尤其南方的路基不稳&#xff01;这样险要的地形很危险&#xff01; 高速周围的地形情况 梅大&#xff08;龙&…

eNSP-动态路由(ospf协议)

一、拓扑结构搭建 二、主机配置 pc1 pc2 三、路由器配置 1.AR2配置 <Huawei>sys #进入系统视图 [Huawei]int g0/0/0 #进入接口 [Huawei-GigabitEthernet0/0/0]ip address 192.168.0.2 24 #设置ip地址 [Huawei-GigabitEthernet0/0/0]q #返回上一级 [Huawei]int g0/0/1 …

关于 Vue.js 双向数据绑定基本实现认知

写在前面 很早的一篇博客&#xff0c;整理了部分&#xff0c;蹭假期整理完博文内容涉及:双向数据绑定 实现方式简单介绍基于发布订阅、数据劫持的双向数据绑定两种不同实现(ES5/ES6) Demo&#xff0c;以及代码简单分析Object.defineProperty && Proxy API 介绍以及特性…

Libcity笔记:原子文件

1 介绍 Libcity中的数据以原子文件的形式存在 2 原子文件类别 对于不同的交通预测任务&#xff0c;可能用到不同的原子文件&#xff0c;同一个数据集不一定包含全部六种原子文件 网格数据需要按照先行后列的顺序遍历OD数据需要按照先起点后终点的顺序遍历 2.1 geo 存储地理…

opengauss概述-基础知识篇-备考华为高斯

目录 &#x1f9e8;考前准备: &#x1f3a1;数据库操作语言 ✨OLTP和OLAP &#x1f3af;常用函数 &#x1f9f2;字符处理函数 关于 left 和 right 特别重点的字符串函数 &#x1f9f2;数字操作函数 关于 ceil 和 floor &#x1f9f2;时间和日期处理函数 &#x1f9f…

专项技能训练五《云计算网络技术与应用》实训7-1:安装mininet

文章目录 mininet安装1. 按6-1教程安装opendaylight控制器。2. 按6-2教程安装RYU控制器。3. 按5-1教程安装openvswitch虚拟交换机并开启服务。4. 将老师所给mininet安装包试用winSCP传送至电脑端。5. 安装net-tools。6. 安装mininet7. 安装完成后&#xff0c;使用命令建立拓扑&…

【网络安全产品】---应用防火墙(WAF)

what Web应用防火墙&#xff08;Web Application Firewall) WAF可对网站或者App的业务流量进行恶意特征识别及防护&#xff0c;在对流量清洗和过滤后&#xff0c;将正常、安全的流量返回给服务器&#xff0c;避免网站服务器被恶意入侵导致性能异常等问题&#xff0c;从而保障…

快速了解Django:核心概念解析与实践指南

title: 快速了解Django&#xff1a;核心概念解析与实践指南 date: 2024/5/1 20:31:41 updated: 2024/5/1 20:31:41 categories: 后端开发 tags: Django核心路由系统视图系统ORM管理中间件Web框架登录装饰器 第一章&#xff1a;Django简介 背景和发展历程&#xff1a; Djan…

计算机毕业设计springboot基于vue电商抢购限时秒杀系统ch0h8

技术栈 ide工具&#xff1a;IDEA 或者eclipse 编程语言: java 数据库: mysql5.7以上版本 可选框架&#xff1a;ssmspringboot都有的 前端&#xff1a;vue.jsElementUI 详细技术&#xff1a;springbootSSMvueMYSQLMAVEN 数据库工具&#xff1a;Navicat/SQLyog都可以 开发工具 Ec…

【算法设计与分析】六、动态规划:(二)上机-1、地牢逃生【理论到程序】

文章目录 一、题目1、问题2、输入输出要求3、样例说明4、数据范围 二、思路1、GPT4 - fail算法解释C 实现 2、Claude3 - fail问题分析算法实现 3、个人拙见 - succeed 三、代码实现 一、题目 1、问题 用一个 nn 的矩阵表示一座地牢&#xff0c;矩阵中第 i 行第 j 列的方格的值…

力扣每日一题106:从中序与后序遍历序列构造二叉树

题目 中等 相关标签 相关企业 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7], postorder …

OpenCV(五) —— 人脸识别模型训练与 Windows 下的人脸识别

本文主要内容&#xff1a; 如何训练 OpenCV 的人脸识别模型如何在 Windows 下利用 OpenCV 进行人脸识别 1、概述 人脸识别需要人脸模型&#xff08;特征集合&#xff09;的支持&#xff0c;人脸定位的速度与准确度取决于模型。 OpenCV 提供了已经训练好的模型&#xff0c;无…

KAN网络认识

首先&#xff0c;这是一个基于柯尔莫哥洛夫-阿诺德表示定理的网络。这个定理指出如果函数f是定义在有界域上的多变量连续函数&#xff08;即最终要拟合的非线性函数是连续的&#xff09;&#xff0c;那么该函数就可以表示为多个单变量、加法连续函数的有线组合。 对于机器学习…

大数据BI可视化(Echarts组件)项目开发-熟悉交互API5.0

全局echarts对象 init初始化 registerTheme注册主题 var mCharts echarts.init(document.querySelector("div"), itcast)registerMap地图图表 connect 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&qu…