打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
04 洋桃开发板笔记(四) 0.96OLED显示器的使用

OLED0561 显示器的使用

杜洋工作室 www.DoYoung.net

洋桃电子 www.DoYoung.net/YT

  • 在此声明一下所有代码均为 杜洋工作室 的不允许复制,转发等,本人只是在此程序上进行理解和注释。

上一次的笔记是在洋桃开发板上进行用usart通信,对小电灯的控制。对串口通信有兴趣可以去看看:
https://blog.csdn.net/qq_40546576/article/details/98308719
本次主要讲的是oled的使用。由于本次特殊,需要截取部分图片进行讲解,可能造成了观看不适,请大家谅解!谢谢。
本次的OLED0561 显示器 主控芯片为 SH1106


显示器见图


每 8 行为一页,一共有 8 页,取出一块区域看看B0~B7 代表每页的行数开始点

数据每次写入我们采用“从左到右,从上到下,纵向 8 点下高位” 假如给的数据为 0xff 二进制为 1111 1111

数据每次写入我们采用“从左到右,从上到下,纵向 8 点下高位” 假如给的数据为 str[9]={0x0E, 0x1F, 0x3F, 0x7F, 0xFE, 0x7F, 0x3F, 0x1F, 0x0E };

理解了上面的显示原理下面这个就简单了主要是把自己的想法,转换成代码问题,过后就是不断的调试, 就错问题。


我们把用自己显示的东西,转换成数组的东西为“取模”,接下来我们一个取模软件,网上软件很多。


1,2,3,4 是主要的顺序,其余的框内东西这里就不介绍了,毕竟已经入了单片机控制的行业,也需要自行研究技 能。


上面介绍了显示的基本原理和取模方法,接下来就代码问题。

OLED 的两个文件,需要大家过过眼,不需要背书一样,但是知道大概位置及内容。 原文(英文)
OLED 屏 SPEC QG-2864KSWLG01 VER A 数据手册(英文).pdf
OLED 主控芯片 SH1106 数据手册 V2.3(英文).pdf
Google 翻译(中文)
OLED 屏 SPECQG-2864KSWLG01ER 数据手册(中文).pdf OLED 主控芯片 SH1106 数据手册 V2.3(中文).pdf

上面两个文件已经翻译但是不准确,有很多错误,仅供参考!

为了这几天对 oled 学习,应该可以弄出一个自己的小功能 目标:

  • 具有时间显示功能,主要是时间,数字要大,显眼

  • 具备电池小图标,旁边有通电显示,会闪烁。

  • 秒钟为两个点,在中间每秒闪烁一次就可以了

研究最终成果为:


编写主要代码如下:

电池图标字库

#ifndef __CHS_16x16_H #define __CHS_16x16_H u8 GB_DIANCHI[] = // 数据表 {    //"电",0	0x03,0x03,0xE3,0x13,0xCB,	0xEB,0xEB,0xEB,0xEB,0x0B, 	0xEB,0xEB,0xEB,0xEB,0xEB,  	0x0B,0x00,0x00,0x0F,0x10,    0x27,0x2F,0x2F,0x2F,0x2F,     0x20,0x2F,0x2F,0x2F,0x2F,     0x2F,0x20,    //"池", 1    0xEB,0xEB,0xEB,0xCB,0x1B,     0xF3,0xC3,0xC3,0x03,0xFB,     0x63,0xC3,0x83,0x03,0xFB,     0x03,0x2F,0x2F,0x2F,0x27,     0x30,0x1F,0x07,0x07,0x00,     0x3F,0x00,0x01,0x07,0x0C,     0x3F,0x00,    //"池+充电", 2     0xEB,0xEB,0xEB,0xCB,0x1B,     0xF3,0xC3,0xC3,0x03,0x03,     0x03,0x03,0x03,0x03,0x03,     0x03,0x2F,0x2F,0x2F,0x27,     0x30,0x1F,0x07,0x07,0x00,     0x00,0x00,0x00,0x00,0x00,     0x00,0x00 };#endif

时钟数字字库

#ifndef __ASCIIBIG_H #define __ASCIIBIG_H u8 AscIIBIG[] = // ASCII { 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80, // -0- 0xC0,0x40,0x40,0x40,0x80,0x80,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF8, 0xFE,0x3F,0x03,0x01,0x00,0x00,0x00,0x00, 0x00,0x03,0x1F,0xFE,0xF8,0xC0,0x00,0x00, 0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0xFF,0x00,0x00,0x00,0x00,0x01,0x0F, 0x3F,0x7E,0xE0,0x80,0x80,0x00,0x00,0x00, 0x80,0xE0,0x7C,0x3F,0x0F,0x01,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -1- 0x00,0x00,0x80,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x02,0x02,0x02,0x02,0xFF,0xFF,0xFF, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF, 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x40, // -2-  0x40,0x40,0x40,0xC0,0xC0,0x80,0x80,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x7F,  0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x03,0xFF,0xFF,0x7C,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x80,0xC0,0x60,0x38,0x1C,0x0F,0x07,0x01,  0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,  0xB0,0x9C,0x8E,0x83,0x81,0x80,0x80,0x80,0x80,0x80,0xC0,0xE0,0x38,0x00,0x00,0x00, 0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0x80,0x40,0x40, // -3- 0x40,0x40,0xC0,0xC0,0x80,0x80,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x3F, 0x39,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x83,0xFF,0xFF,0x7C,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04, 0x04,0x04,0x06,0x0E,0x1B,0x39,0xF0,0xE0, 0x80,0x00,0x00,0x00,0x00,0x00,0x3C,0x7E, 0xDE,0x80,0x00,0x00,0x00,0x00,0x00,0x80, 0xC0,0xE0,0x7F,0x3F,0x0F,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01, 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -4- 0x00,0x00,0x00,0x00,0x80,0xC0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x60,0x30,0x0C,0x07, 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x80,0x60,0x30,0x0C,0x03,0x01, 0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0xFF,0xFF,0x81,0x01,0x01,0x01,0x01,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x00,0x00, 0x00,0x00,0x00,0x00,0xC0,0xC0,0xC0,0xC0, // -5- 0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,  0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,  0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x1F,0x18,0x04,0x06,0x03,  0x03,0x03,0x03,0x03,0x07,0x1E,0xFC,0xF8,   0xE0,0x00,0x00,0x00,0x00,0x00,0x1C,0x7E, 0x8E,0x80,0x00,0x00,0x00,0x00,0x00,0x80,  0xC0,0xF0,0x7F,0x3F,0x0F,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01, 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, // -6- 0x80,0x40,0x40,0x40,0x40,0x40,0xC0,0x80, 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xF0, 0xFC,0x1E,0x03,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x07,0x07,0x07,0x00,0x00,0x00, 0x00,0x00,0xFF,0xFF,0xFF,0x18,0x0C,0x06, 0x03,0x03,0x03,0x03,0x07,0x07,0x1E,0xFE, 0xF8,0xE0,0x00,0x00,0x00,0x00,0x03,0x1F, 0x3F,0x78,0xE0,0x80,0x80,0x00,0x00,0x00, 0x00,0x80,0xE0,0x7F,0x3F,0x0F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xC0,0xC0,0xC0,0xC0, // -7- 0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0, 0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x0E, 0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0xC0,0x30,0x1C,0x07,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xC0,0xF0,0x3C,0x07,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xFC,0xFF,0xFF,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0, // -8- 0x40,0x40,0x40,0x40,0x40,0xC0,0x80,0x80, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C, 0xFF,0xFF,0xC3,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x83,0xFF,0xFF,0x7C,0x00,0x00, 0x00,0x00,0x80,0xC0,0xE1,0x73,0x1B,0x0F, 0x07,0x0E,0x1E,0x1C,0x3C,0x7E,0xF3,0xF1, 0xC0,0x80,0x00,0x00,0x00,0x00,0x1F,0x3F, 0x7F,0xE0,0x80,0x80,0x00,0x00,0x00,0x00, 0x00,0x80,0xE0,0x7F,0x3F,0x1F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, 0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0, // -9- 0x40,0x40,0x40,0x40,0xC0,0x80,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFE, 0xFF,0x07,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x01,0x07,0xFE,0xFC,0xE0,0x00,0x00, 0x00,0x00,0x07,0x1F,0x3F,0x3C,0x70,0x70, 0x60,0x60,0x60,0x20,0x30,0x18,0x0E,0xFF, 0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x70, 0xF0,0xF0,0x00,0x00,0x00,0x00,0x80,0x80, 0xE0,0x70,0x3F,0x1F,0x07,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01, 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -:- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x07,0x0F,0x0F,0x0F,0x07,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xE0,0xF0,0xF0,0xF0, 0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // - - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00 };#endif

OLED0561.h 头文件

#ifndef __OLED_H#define __OLED_H	 #include "sys.h"#include "i2c.h"#define OLED0561_ADD	0x78  // OLED的I2C地址(禁止修改)#define COM				0x00  // OLED 指令(禁止修改)#define DAT 			0x40  // OLED 数据(禁止修改)void OLED0561_Init(void);//初始化void OLED_DISPLAY_ON (void);//OLED屏开显示void OLED_DISPLAY_OFF (void);//OLED屏关显示void OLED_DISPLAY_LIT (u8 x);//OLED屏亮度设置(0~255)void OLED_DISPLAY_CLEAR(void);//清屏操作//void OLED_DISPLAY_8x16(u8 x,u8 y,u16 w);//显示8x16的单个字符 //void OLED_DISPLAY_8x16_BUFFER(u8 row,u8 *str);//显示8x16的字符串//void OLED_DISPLAY_16x16(u8 x,u8 y,u16 w); //汉字显示//void OLED_DISPLAY_PIC1(void);//图片显示void OLED_DISPLAY_KUANG(void);//外框void OLED_DISPLAY_DIANCHI(u8 x,u8 y,u16 w); //电池显示void OLED_DISPLAYBIG1(u8 x,u16 w);//时钟十位void OLED_DISPLAYBIG2(u8 x,u16 w);//时钟个位void OLED_DISPLAYBIG3(u8 x,u16 w);//秒钟void OLED_DISPLAYBIG4(u8 x,u16 w);//分钟十位void OLED_DISPLAYBIG5(u8 x,u16 w);//分钟个位#endif

OLED0561.c初始化程序

#include "oled0561.h"#include "ASCII_8x16.h" //引入字体 ASCII#include "ASCIIBIG.h" //引入字体 ASCII#include "delay.h"#include "CHS_16x16.h" //引入汉字字体 #include "PIC1.h" //引入图片/**	****    启动初始化屏幕的程序	  **************************************************************/void OLED0561_Init (void){//OLED屏开显示初始化	OLED_DISPLAY_OFF(); //OLED关显示	OLED_DISPLAY_CLEAR(); //清空屏幕内容	OLED_DISPLAY_ON(); //OLED屏初始值设置并开显示}/**	****    开启显示的程序	  **************************************************************/void OLED_DISPLAY_ON (void){//OLED屏初始值设置并开显示	u8 buf[28]={	0xae,//0xae:关显示,0xaf:开显示    0x00,0x10,//开始地址(双字节)       	0xd5,0x80,//显示时钟频率?	0xa8,0x3f,//复用率?	0xd3,0x00,//显示偏移?	0XB0,//写入页位置(0xB0~7)	0x40,//显示开始线	0x8d,0x14,//VCC电源	0xa1,//设置段重新映射?	0xc8,//COM输出方式?	0xda,0x12,//COM输出方式?	0x81,0xff,//对比度,指令:0x81,数据:0~255(255最高)	0xd9,0xf1,//充电周期?	0xdb,0x30,//VCC电压输出	0x20,0x00,//水平寻址设置	0xa4,//0xa4:正常显示,0xa5:整体点亮	0xa6,//0xa6:正常显示,0xa7:反色显示	0xaf//0xae:关显示,0xaf:开显示	}; //	I2C_SAND_BUFFER(OLED0561_ADD,COM,buf,28);}/**	****    关屏幕	  **************************************************************/void OLED_DISPLAY_OFF (void){//OLED屏关显示	u8 buf[3]={		0xae,//0xae:关显示,0xaf:开显示		0x8d,0x10,//VCC电源	}; //	I2C_SAND_BUFFER(OLED0561_ADD,COM,buf,3);}/**	****    调节屏幕亮度	  **************************************************************/void OLED_DISPLAY_LIT (u8 x){//OLED屏亮度设置(0~255)	I2C_SAND_BYTE(OLED0561_ADD,COM,0x81);	I2C_SAND_BYTE(OLED0561_ADD,COM,x);//亮度值}/**	****    清空屏幕	  **************************************************************/void OLED_DISPLAY_CLEAR(void){//清屏操作	u8 j,t;	for(t=0xB0;t<0xB8;t++){	//设置起始页地址为0xB0		I2C_SAND_BYTE(OLED0561_ADD,COM,t); 	//页地址(从0xB0到0xB7)		I2C_SAND_BYTE(OLED0561_ADD,COM,0x10); //起始列地址的高4位		I2C_SAND_BYTE(OLED0561_ADD,COM,0x00);	//起始列地址的低4位		for(j=0;j<132;j++){	//整页内容填充 			I2C_SAND_BYTE(OLED0561_ADD,DAT,0x00); 		}	}}void OLED_DISPLAY_KUANG(void){	u8 i,t,b;	//最上面的行	t=0xB0;//页地址,其实也是行地址,但是一页是8行。	I2C_SAND_BYTE(OLED0561_ADD,COM,t); 	//页地址(从0xB0到0xB7)	I2C_SAND_BYTE(OLED0561_ADD,COM,0x10); //起始列地址的高4位	I2C_SAND_BYTE(OLED0561_ADD,COM,0x02);	//起始列地址的低4位	for(i=0;i<128;i++)	{			if(i==0||i==1||i==127||i==126)		{ 			I2C_SAND_BYTE(OLED0561_ADD,DAT,0xfF);		}else{ 			I2C_SAND_BYTE(OLED0561_ADD,DAT,0x03);		}	}	//最下面的行	t=0xb7;	I2C_SAND_BYTE(OLED0561_ADD,COM,t); 	//页地址(从0xB0到0xB7)	I2C_SAND_BYTE(OLED0561_ADD,COM,0x10); //起始列地址的高4位	I2C_SAND_BYTE(OLED0561_ADD,COM,0x02);	//起始列地址的低4位	for(i=0;i<128;i++)	{	//		if(i==0||i==1||i==127||i==126)		{ 			I2C_SAND_BYTE(OLED0561_ADD,DAT,0xFf);		}else{ 			I2C_SAND_BYTE(OLED0561_ADD,DAT,0xC0);		} 	}	//左右两列	b=0xb1;	for(t=b;t<0xb7;t++)	{	//设置起始页地址为0xB0		I2C_SAND_BYTE(OLED0561_ADD,COM,t); 	//页地址(从0xB0到0xB7)		I2C_SAND_BYTE(OLED0561_ADD,COM,0x10); //起始列地址的高4位		I2C_SAND_BYTE(OLED0561_ADD,COM,0x02);	//起始列地址的低4位		I2C_SAND_BYTE(OLED0561_ADD,DAT,0xff); 		I2C_SAND_BYTE(OLED0561_ADD,COM,0x10); //起始列地址的高4位		I2C_SAND_BYTE(OLED0561_ADD,COM,0x03);	//起始列地址的低4位		I2C_SAND_BYTE(OLED0561_ADD,DAT,0xff); 		I2C_SAND_BYTE(OLED0561_ADD,COM,0x18); //起始列地址的高4位		I2C_SAND_BYTE(OLED0561_ADD,COM,0x00);	//起始列地址的低4位		I2C_SAND_BYTE(OLED0561_ADD,DAT,0xff);		I2C_SAND_BYTE(OLED0561_ADD,COM,0x18); //起始列地址的高4位		I2C_SAND_BYTE(OLED0561_ADD,COM,0x01);	//起始列地址的低4位		I2C_SAND_BYTE(OLED0561_ADD,DAT,0xff);	}}/******************电池程序************************************/ void OLED_DISPLAY_DIANCHI(u8 x,u8 y,u16 w){			 										 				u8 j,t,c=0;	for(t=0;t<2;t++){		I2C_SAND_BYTE(OLED0561_ADD,COM,0xb0+x); //页地址(从0xB0到0xB7)		I2C_SAND_BYTE(OLED0561_ADD,COM,y/16+0x10); //起始列地址的高4位		I2C_SAND_BYTE(OLED0561_ADD,COM,y%16);	//起始列地址的低4位		for(j=0;j<16;j++){ 			I2C_SAND_BYTE(OLED0561_ADD,DAT,GB_DIANCHI[(w*32)+c]);			c++;}x++; //页地址加1	}	I2C_SAND_BYTE(OLED0561_ADD,COM,0xAF); //开显示 }/**	*****************************时间数值显示*******************************************///时钟十位void OLED_DISPLAYBIG1(u8 x,u16 w){	u8 j,t,c=0;	for(t=0;t<5;t++){		I2C_SAND_BYTE(OLED0561_ADD,COM,0xb0+x);		I2C_SAND_BYTE(OLED0561_ADD,COM,0x11); 		I2C_SAND_BYTE(OLED0561_ADD,COM,0x01);			for(j=0;j<20;j++){  			I2C_SAND_BYTE(OLED0561_ADD,DAT,AscIIBIG[(w*100)+c]);			c++;}x++;}}//时钟个位void OLED_DISPLAYBIG2(u8 x,u16 w){	u8 j,t,c=0;	for(t=0;t<5;t++){		I2C_SAND_BYTE(OLED0561_ADD,COM,0xb0+x);		I2C_SAND_BYTE(OLED0561_ADD,COM,0x12); 		I2C_SAND_BYTE(OLED0561_ADD,COM,0x05);			for(j=0;j<20;j++){  			I2C_SAND_BYTE(OLED0561_ADD,DAT,AscIIBIG[(w*100)+c]);			c++;}x++;}}//秒钟void OLED_DISPLAYBIG3(u8 x,u16 w){	u8 j,t,c=0;	for(t=0;t<5;t++){		I2C_SAND_BYTE(OLED0561_ADD,COM,0xb0+x);		I2C_SAND_BYTE(OLED0561_ADD,COM,0x13); 		I2C_SAND_BYTE(OLED0561_ADD,COM,0x09);			for(j=0;j<20;j++){  			I2C_SAND_BYTE(OLED0561_ADD,DAT,AscIIBIG[(w*100)+c]);			c++;}x++;}}//分钟十位void OLED_DISPLAYBIG4(u8 x,u16 w){	u8 j,t,c=0;	for(t=0;t<5;t++){		I2C_SAND_BYTE(OLED0561_ADD,COM,0xb0+x);		I2C_SAND_BYTE(OLED0561_ADD,COM,0x14); 		I2C_SAND_BYTE(OLED0561_ADD,COM,0x0D);			for(j=0;j<20;j++){  			I2C_SAND_BYTE(OLED0561_ADD,DAT,AscIIBIG[(w*100)+c]);			c++;}x++;}}//分钟个位void OLED_DISPLAYBIG5(u8 x,u16 w){	u8 j,t,c=0;	for(t=0;t<5;t++){		I2C_SAND_BYTE(OLED0561_ADD,COM,0xb0+x);		I2C_SAND_BYTE(OLED0561_ADD,COM,0x16); 		I2C_SAND_BYTE(OLED0561_ADD,COM,0x01);			for(j=0;j<20;j++){  			I2C_SAND_BYTE(OLED0561_ADD,DAT,AscIIBIG[(w*100)+c]);			c++;}x++;}}

主函数

#include "stm32f10x.h" //STM32头文件#include "sys.h"#include "delay.h"#include "oled0561.h"#include "rtc.h"int main (void){//主程序	delay_ms(100);//稍稍等待OLED屏幕上电	RCC_Configuration();//时钟设置	I2C_Configuration();//I2C初始化	OLED0561_Init();//屏幕初始化程序	OLED_DISPLAY_LIT(10);//亮度设置 	OLED_DISPLAY_KUANG();//框程序	OLED_DISPLAY_DIANCHI(0,6*16,0);//电池程序	OLED_DISPLAY_DIANCHI(0,7*16,1);//电池程序 加 充电图标	RTC_Config(); //实时时钟初始化	while(1) //	OLED研究	{		RTC_Get();//实时时钟获取			OLED_DISPLAYBIG1(2,rhour/10);//获取时钟十位		OLED_DISPLAYBIG2(2,rhour%10);//获取时钟个位		if(rsec%2==0)		{			OLED_DISPLAYBIG3(2,11);////获取秒奇数偶数			OLED_DISPLAY_DIANCHI(0,7*16,1);//充电图标无		}else		{			OLED_DISPLAYBIG3(2,10);//获取秒奇数偶数			OLED_DISPLAY_DIANCHI(0,7*16,2);//充电图标有		}		OLED_DISPLAYBIG4(2,rmin/10);//获取分钟十位		OLED_DISPLAYBIG5(2,rmin%10);//获取分钟个位		delay_ms(5); //延时5毫秒 ,减轻系统负担	,可有可无	}}

由于程序太大,不能仔细解释程序,需要自行研究,谢谢!

程序在洋桃开发板程序上面,进行了许多修改。需要大家注意。


参考来源:


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ms06040 download and reverse shellcode mika 修改版
几种求CRC
立体旋转LED制作
30天自制操作系统day02:将二进制操作系统映像用汇编/C重写
shellcode xor编码/解码[2]
这是一段4位共阳极数码管”从0到9循环显示数字“的程序,不知道是什么意思望前辈们来看看~~
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服