基于STC12C5A60S2系列1T 8051单片机的IIC通信的0.96寸4针OLED12864显示大小写英文的应用

news2025/1/5 8:51:32

基于STC12C5A60S2系列1T 8051单片机的IIC通信的0.96寸4针OLED12864显示大小写英文的应用

  • 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显示大小写英文的功能

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显示大小写英文的功能

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

#include "STC12C5A60S2.h"  
#include "OLED12864.h"
#include "OLED12864OfI2C.h"
//#include "ChineseCharacterLibrary.h"
#define uchar unsigned char//自定义无符号字符型为uchar
#define uint unsigned int//自定义无符号整数型为uint
 void main()//主函数
{
   
  OLED12864Init();//OLED12864初始化函数
  while(1)//主循环
 {
   
   OLED12864DisplayEnglish(0,0,0);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第0大列(即8小列为一大列)显示EnglishCharacterArrayOf16Row8Column[][8]变量中的第0个大写字母"A"
   OLED12864DisplayEnglish(1,0,2);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第1大列(即8小列为一大列)显示EnglishCharacterArrayOf16Row8Column[][8]变量中的第1个小写字母"a"
//   OLED12864DisplayEnglish(2,0,4);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第2大列(即8小列为一大列)显示EnglishCharacterArrayOf16Row8Column[][8]变量中的第2个大写字母"B"
//   OLED12864DisplayEnglish(3,0,6);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第3大列(即8小列为一大列)显示EnglishCharacterArrayOf16Row8Column[][8]变量中的第3个小写字母"b"
//   OLED12864DisplayEnglish(4,0,8);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第4大列(即8小列为一大列)显示EnglishCharacterArrayOf16Row8Column[][8]变量中的第4个大写字母"C"
//   OLED12864DisplayEnglish(5,0,10);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第5大列(即8小列为一大列)显示EnglishCharacterArrayOf16Row8Column[][8]变量中的第5个小写字母"c"
//   OLED12864DisplayEnglish(6,0,12);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第6大列(即8小列为一大列)显示EnglishCharacterArrayOf16Row8Column[][8]变量中的第6个大写字母"D"
//   OLED12864DisplayEnglish(7,0,14);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第7大列(即8小列为一大列)显示EnglishCharacterArrayOf16Row8Column[][8]变量中的第7个小写字母"d"
//   OLED12864DisplayEnglish(8,0,16);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第8大列(即8小列为一大列)显示EnglishCharacterArrayOf16Row8Column[][8]变量中的第8个大写字母"E"
//   OLED12864DisplayEnglish(9,0,18);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第9大列(即8小列为一大列)显示EnglishCharacterArrayOf16Row8Column[][8]变量中的第9个小写字母"e"
//   OLED12864DisplayEnglish(10,0,20);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第10大列(即8小列为一大列)显示EnglishCharacterArrayOf16Row8Column[][8]变量中的第10个大写字母"F"
//   OLED12864DisplayEnglish(11,0,22);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第11大列(即8小列为一大列)显示EnglishCharacterArrayOf16Row8Column[][8]变量中的第11个小写字母"f"
//   OLED12864DisplayEnglish(12,0,24);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第12大列(即8小列为一大列)显示EnglishCharacterArrayOf16Row8Column[][8]变量中的第12个大写字母"G"
//   OLED12864DisplayEnglish(13,0,26);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第13大列(即8小列为一大列)显示EnglishCharacterArrayOf16Row8Column[][8]变量中的第13个小写字母"g"
//   OLED12864DisplayEnglish(14,0,28);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第14大列(即8小列为一大列)显示EnglishCharacterArrayOf16Row8Column[][8]变量中的第14个大写字母"H"
//   OLED12864DisplayEnglish(15,0,30);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第15大列(即8小列为一大列)显示EnglishCharacterArrayOf16Row8Column[][8]变量中的第15个小写字母"h"
  
  }
 }

OLED12864.c

#include "OLED12864.h" 
#include "OLED12864OfI2C.h" 
//#include "ChineseCharacterLibrary.h"
#include "CapitalLowerCaseLetter.h"
#define uchar unsigned char//自定义无符号字符型为uchar
#define uint unsigned int//自定义无符号整数型为uint

 void WriteCommandToOLED12864(uchar Command)//写命令给OLED12864函数
{
   
  I2CStar();//I2C启动函数
  I2CWriteByte(0x78);//I2C写字节函数 写OLED12864硬件地址	
  WaitAck();//等待应答
  I2CWriteByte(0x00);//I2C写字节函数 启动写命令控制
  WaitAck();//等待应答
  I2CWriteByte(Command);//I2C写字节函数 写命令给OLED12864
  WaitAck();//等待应答
  I2CStop();//I2C停止函数
 }

 void WriteDataToOLED12864(uchar Data)//写数据给OLED12864函数 
{
   
  I2CStar();//I2C启动函数
  I2CWriteByte(0x78);//I2C写字节函数 写OLED12864硬件地址
  WaitAck();//等待应答	
  I2CWriteByte(0x40);//I2C写字节函数 启动写数据控制
  WaitAck();//等待应答
  I2CWriteByte(Data);//I2C写字节函数 写数据给OLED12864
  WaitAck();//等待应答
  I2CStop();//I2C停止函数
 }

 void SetOLED12864DisplayPostion(uchar Column,uchar Page)//设置OLED12864显示位置函数 Column为OLED12864大列(即8小列为一大列)地址 取值为0到15 Page为OLED12864的8小行或小页(即8小行为一小页)地址 取值为0到7
{
   
  WriteCommandToOLED12864(0xb0 + Page);//OLED12864的8小行或小页(即8小行为一小页)地址选择 0xb0为OLED12864第0小页(即8小行为一小页)地址 也是OLED12864的小页开始地址 取值为0到7
  WriteCommandToOLED12864(((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 OLED12864DisplayEnglish(uchar Column,uchar Page,uchar EnglishCharacterSerialNumber)//OLED12864显示英文函数 Column为OLED12864大列(即8小列为一大列)地址 取值为0到15 Page为OLED12864的8小行或小页(即8小行为一小页)地址 取值为0到7 EnglishCharacterSerialNumber为显示EnglishCharacterArrayOf16Row8Column[][8]变量中哪个汉字的16个字节所在序号变量
{
   	 
  uint i;//声明循环变量
	//字母上半部分显示	
  SetOLED12864DisplayPostion(Column * 8,Page);//Column为OLED12864大列(即8小列为一大列)地址 取值为0到15 x * 8表示这个大列有8小列 y为OLED12864的8小行或小页(即8小行为一小页)地址 取值为0到7
  for(i = 0;i < 8;i++)//循环EnglishCharacterArrayOf16Row8Column[][8]变量中某个数据上半部分8个数据
 {
   
   WriteDataToOLED12864(EnglishCharacterArrayOf16Row8Column[EnglishCharacterSerialNumber][i]);//字母上半部分显示
  }	
  //字母下半部分显示	
  SetOLED12864DisplayPostion(Column * 8,Page + 1);//Column为OLED12864大列(即8小列为一大列)地址 取值为0到15 x * 8表示这个大列有8小列 y为OLED12864的8小行或小页(即8小行为一小页)地址 取值为0到7
  for(i = 0;i < 8;i++)//循环EnglishCharacterArrayOf16Row8Column[][8]变量中某个数据上半部分8个数据
 {
   
   WriteDataToOLED12864(EnglishCharacterArrayOf16Row8Column[EnglishCharacterSerialNumber + 1][i]);//字母上半部分显示
  }
 }
 
 void OLED12864Init()//OLED12864初始化函数第一个8是8小页(即8小行为一小页) 第二个8是8大列(即16小列为一大列)16是16小列
{
   
  WriteCommandToOLED12864(0xAE);//关OLED12864显示
  WriteCommandToOLED12864(0x00);//设置OLED12864列地址的低4位 对应OLED12864第0大列(即16小列为一大列)中的第0小列地址	
  WriteCommandToOLED12864(0x10);//设置OLED12864列地址的高4位 对应OLED12864第0大列(即16小列为一大列)地址
  WriteCommandToOLED12864(0x40);//设置OLED12864第0小行开始显示
  WriteCommandToOLED12864(0x81)

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

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

相关文章

leetcode295. 数据流的中位数

class MedianFinder {//A为小根堆&#xff0c;B为大根堆List<Integer> A,B;public MedianFinder() {A new ArrayList<Integer>();B new ArrayList<Integer>();}public void addNum(int num) {int m A.size(),n B.size();if(m n){insert(B,num);int top …

2024年第十三届工程与创新材料国际会议(ICEIM 2024)即将召开!

2024年第十三届工程与创新材料国际会议&#xff08;ICEIM 2024&#xff09;将于2024年9月6-8日在日本东京举行。ICEIM 2024由东京电机大学主办&#xff0c;会议旨在材料科学与工程、材料特性、测量方法和应用等相关领域进行学术交流与合作&#xff0c;在材料的微观世界里&#…

大坝安全监测站

TH-WY1 GNSS位移监测站在大坝安全监测中的应用具有重要意义。通过实时监测、高精度测量、高度自动化和多种数据融合等技术手段&#xff0c;GNSS位移监测站为大坝安全监测提供了强有力的支持。下面为大家介绍GNSS位移监测的作用&#xff1a; 实时监测&#xff1a;GNSS位移监测站…

Vitis HLS 学习笔记--AXI_STREAM_TO_MASTER

目录 1. 简介 2. 示例 2.1 示例功能介绍 2.2 示例代码 2.3 顶层函数解释 2.4 综合报告&#xff08;HW Interfaces&#xff09; 2.5 关于TKEEP和TSTRB 2.6 综合报告&#xff08;SW I/O Information&#xff09; 3. 总结 1. 简介 本文通过“<Examples>/Interface…

Vue 插槽

Vue插槽是一种特殊的语法&#xff0c;用于在组件中定义可复用的模板部分。它允许开发者在组件的标记中声明一个或多个插槽&#xff0c;然后在使用该组件时&#xff0c;可以根据自己的需求将内容插入到这些插槽中。 Vue插槽分为默认插槽和具名插槽两种。 默认插槽 语法 组件…

PON网络和HFC网络

目录 1.概念 2.分类 3.重点 1.概念 PON PON是一种典型的无源光纤网络&#xff0c;是一种点到多点的无源光纤接入技术。 是指 (光配线网中) 不含有任何电子器件及电子电源&#xff0c;ODN全部由光分路器 (Splitter) 等无源器件组成&#xff0c;不需要贵重的有源电子设备。一个…

pyqt标签常用qss格式设置

pyqt标签常用qss格式设置 QSS介绍标签常用的QSS设置效果代码 QSS介绍 Qt Style Sheets (QSS) 是 Qt 框架中用于定制应用程序界面样式的一种语言。它类似于网页开发中的 CSS&#xff08;Cascading Style Sheets&#xff09;&#xff0c;但专门为 Qt 应用程序设计。使用 QSS&…

iPhone查看本机号码只需要这3招,不再为号码忘记犯愁!

在日常生活中&#xff0c;我们经常需要使用手机号码进行各种通讯活动&#xff0c;但有时候会忘记自己的手机号码&#xff0c;让人感到非常尴尬。不过&#xff0c;如果您是iPhone用户&#xff0c;那么您可以放心了&#xff01;因为在iphone查看本机号码只需要简单的几个步骤&…

44 网络基础

本章重点 了解网络发展背景&#xff0c;对局域网/广域网的概念有基本认识 了解网络协议的意义&#xff0c;重点理解TCP/IP五层结构模型 学习网络传输的基本流程&#xff0c;理解封装和分用 目录 1.网络发展 2.协议 3.OSI七层模型 4.TCP/IP五层模型 5.网络传输流程图 6.网络中…

一跨8 双跨9的电机讲解

前面讲解的都是一路串联的电机&#xff0c;下面讲解的是一个 &#xff0c;里面有一组线圈和2组线圈同时存在的一个电机。 1.有多少组线圈 ------- 12组 2.每组线圈有几把线 -------- 1 2 1 2 1 2 1 2 1 2 1 2 共12把。 3.跨距 单个线圈跨8 双组线圈 跨 9 4.匝数…

聚观早报 | vivo X100S外观公布;蔚来乐道L60曝光

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 5月7日消息 vivo X100S外观公布 蔚来乐道L60曝光 iPhone17将推Slim机型 2024年五一档电影票房 索尼Xperia 1 VI…

Redis 实战之事务的实现

事务的实现 事务开始命令入队事务队列执行事务总结 一个事务从开始到结束通常会经历以下三个阶段&#xff1a; 1、 事务开始&#xff1b; 2、 命令入队&#xff1b; 3、事务执行。 本节接下来的内容将对这三个阶段进行介绍&#xff0c; 说明一个事务从开始到结束的整个过程。 …

uniapp使用iconfont

1、把这两个文件在项目的静态资源目录下 2、修改iconfont.css文件 3、最后在app.vue中引入

一起深度学习(AlexNet网络)

AlexNet神经网络 代码实现&#xff1a; 代码实现&#xff1a; import torch from torch import nn from d2l import torch as d2lnet nn.Sequential(# 采用了11*11的卷积核来捕捉对象&#xff0c;因为原始输入数据比较大#步幅为4 &#xff0c;可减少输出的高度核宽度。#输出通…

今日刷三题(day11):不同路径的数目(一)+短距离最小路径和+把数字翻译成字符串

题目一&#xff1a;不同路径的数目&#xff08;一&#xff09; 题目描述&#xff1a; 一个机器人在mn大小的地图的左上角&#xff08;起点&#xff09;。机器人每次可以向下或向右移动。机器人要到达地图的右下角&#xff08;终点&#xff09;。可以有多少种不同的路径从起点…

【Java】第二讲:字符串相关类

个人主页&#xff1a;深情秋刀鱼-CSDN博客 Java专栏&#xff1a;Java程序设计 目录 一、String 1.Java中的数据类型 2.字符串概述 3.字符串构造方法 4.字符串构造内存原理 5.字符串比较 6.字符串常见方法 二、StringBuilder 1.定义 2.常用方法 3.StringBuilder内存分…

vue 金额组件,输入提示单位:‘千’、‘万’、‘十万’...并用‘,’三个格式化

近期项目中遇到一个需求&#xff0c;金额输入框&#xff0c;输入过程中自动提示‘千’、‘万’、‘十万’、‘百万’......等单位提示&#xff0c;鼠标失去焦点后&#xff0c;并用‘,’三位隔开计数。 例如&#xff1a; 输入&#xff1a;12345.99 失去焦点&#xff1a;12,34…

小满OKKICRM与金蝶云星空对接集成客户列表查询(更新列表)打通客户新增

小满OKKICRM与金蝶云星空对接集成客户列表查询(更新列表)打通客户新增 接通系统&#xff1a;小满OKKICRM 深圳市小满科技有限公司&#xff08;简称&#xff1a;小满科技&#xff09;成立于2013年3月&#xff0c;公司位于深圳市南山区高新园区&#xff0c;是一家国家级高新技术企…

BetterMouse for Mac激活版:鼠标增强软件

BetterMouse for Mac是一款鼠标增强软件&#xff0c;旨在取代笨重的、侵入性的和耗费资源的鼠标驱动程序&#xff0c;如罗技选项。它功能丰富&#xff0c;重量轻&#xff0c;效率优化&#xff0c;而且完全隐私安全&#xff0c;试图满足你在MacOS上使用第三方鼠标的所有需求。 B…

cmake进阶:文件操作之写文件

一. 简介 cmake 提供了 file() 命令可对文件进行一系列操作&#xff0c;譬如读写文件、删除文件、文件重命名、拷贝文件、创建目录等等。 接下来 学习这个功能强大的 file() 命令。 本文学习 CMakeLists.txt语法中写文件操作。 二. cmake进阶&#xff1a;文件操作之写文件…