基于STC12C5A60S2系列1T 8051单片机的IIC通信的0.96寸4针OLED12864显示中文的功能

本文详细介绍了如何使用STC12C5A60S2系列1T 8051单片机通过IIC协议与0.96寸4针OLED12864显示器进行通信,展示中文内容。涵盖了单片机的I/O口配置、OLED显示器的工作原理、显示方式及滚屏命令等,并提供了相关的源代码文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)//主循环
 {
   
   OLED12864DisplayChinese(0,0,0);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第0大列(即16小列为一大列)显示ChineseCharacterArrayOf16Row16Column[][16]变量中的第0个汉字"欢"
//   OLED12864DisplayChinese(1,0,2);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第1大列(即16小列为一大列)显示ChineseCharacterArrayOf16Row16Column[][16]变量中的第1个汉字"迎"
//   OLED12864DisplayChinese(2,0,4);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第2大列(即16小列为一大列)显示ChineseCharacterArrayOf16Row16Column[][16]变量中的第2个汉字"来"
//   OLED12864DisplayChinese(3,0,6);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第3大列(即16小列为一大列)显示ChineseCharacterArrayOf16Row16Column[][16]变量中的第3个汉字"到"
//   OLED12864DisplayChinese(4,0,8);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第4大列(即16小列为一大列)显示ChineseCharacterArrayOf16Row16Column[][16]变量中的第4个汉字"广"
//   OLED12864DisplayChinese(5,0,10);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第5大列(即16小列为一大列)显示ChineseCharacterArrayOf16Row16Column[][16]变量中的第5个汉字"东"
//   OLED12864DisplayChinese(6,0,12);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第6大列(即16小列为一大列)显示ChineseCharacterArrayOf16Row16Column[][16]变量中的第6个汉字"安"
//   OLED12864DisplayChinese(7,0,14);//从第0小页(即8小行为一小页)开始到第1小页(即8小行为一小页)的第7大列(即16小列为一大列)显示ChineseCharacterArrayOf16Row16Column[][16]变量中的第7个汉字"胜"

//   OLED12864DisplayChinese(0,2,16);//从第2小页(即8小行为一小页)开始到第3小页(即8小行为一小页)的第0大列(即16小列为一大列)显示ChineseCharacterArrayOf16Row16Column[][16]变量中的第8个汉字"仪"
//   OLED12864DisplayChinese(1,2,18);//从第2小页(即8小行为一小页)开始到第3小页(即8小行为一小页)的第0大列(即16小列为一大列)显示ChineseCharacterArrayOf16Row16Column[][16]变量中的第9个汉字"器"
//   OLED12864DisplayChinese(2,2,20);//从第2小页(即8小行为一小页)开始到第3小页(即8小行为一小页)的第0大列(即16小列为一大列)显示ChineseCharacterArrayOf16Row16Column[][16]变量中的第10个汉字"有"
//   OLED12864DisplayChinese(3,2,22);//从第2小页(即8小行为一小页)开始到第3小页(即8小行为一小页)的第0大列(即16小列为一大列)显示ChineseCharacterArrayOf16Row16Column[][16]变量中的第11个汉字"限"
//   OLED12864DisplayChinese(4,2,24);//从第2小页(即8小行为一小页)开始到第3小页(即8小行为一小页)的第0大列(即16小列为一大列)显示ChineseCharacterArrayOf16Row16Column[][16]变量中的第12个汉字"公"
//   OLED12864DisplayChinese(5,2,26);//从第2小页(即8小行为一小页)开始到第3小页(即8小行为一小页)的第0大列(即16小列为一大列)显示ChineseCharacterArrayOf16Row16Column[][16]变量中的第13个汉字"司"
//   OLED12864DisplayChinese(6,2,28);//从第2小页(即8小行为一小页)开始到第3小页(即8小行为一小页)的第0大列(即16小列为一大列)显示ChineseCharacterArrayOf16Row16Column[][16]变量中的第14个汉字"做"
//   OLED12864DisplayChinese(7,2,30);//从第2小页(即8小行为一小页)开始到第3小页(即8小行为一小页)的第0大列(即16小列为一大列)显示ChineseCharacterArrayOf16Row16Column[][16]变量中的第15个汉字"客"
	 
//	 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//自定义无符号整数型为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大列(即16小列为一大列)地址 取值为0到7 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 OLED12864DisplayChinese
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值