你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32-Oled(IIC)的使用

[复制链接]
STMCU小助手 发布时间:2022-10-27 14:58
一.IIC协议简介

IIC通讯协议(Inter----Integrted Circuit)是由Phiips飞利浦公司开发的,由于他引脚少,硬件实现简单,可拓展性强,不需要UASRT,CAN通讯协议的外部收发设备,现在被广泛使用在系统内多个集成电路IC(芯片)间的通讯。(半双工的通讯方式)
他是一个支持多设备的总线。”总线”指多个设备共用的信号线,在一个IIC通讯总线中,可连接多个IIC通讯设备,支持多个通讯主机及多个通讯从机。
一个IIC总线只使用两条总线线路,一条双向串行数据线(SDA),一条串行时钟线(SCL)。数据线即用来表示数据,时钟线用于数据收发同步。
每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备直接的访问。
20210506232613665.png

二.IIC总线

硬件IIC:对应芯片上的IIC外设,有相对应的IIC驱动电路,其所使用的IIC管教也是专用的;
软件IIC:一般是用GPIO管教,用软件控制管脚状态以及模拟IIC通信波形;
区别:硬件IIC的效率要远高于软件的,而软件IIC不受引脚限制,接口比较灵活。
软件IIC是通过GPIO,软件模拟寄存器的工作方式,而硬件IIC是直接调用内部寄存器进行配置。如果要从具体硬件上来看,可以去看下芯片手册。因为固件IIC的端口是固定的,所以会有所区别。
如何区分?
1.硬件IIC用法复杂,模拟IIC流程更加清楚
2.硬件IIC速度比模拟快,并且可以用DMA
3.模拟IIC可以在任何管脚上,硬件IIC在固定管脚上

3.IIC 总线协议层

20210506233232602.png

20210506233319769.png

20210506233343928.png

三.IIC通信

① 空闲状态
②开始信号
③停止信号
④应答信号
⑤数据的有效性
⑥数据传输

1.空闲状态

IIC总线的SDA和SCL两条信号线同时处于高电平时,规定位总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高

2.开始信号与停止信号

起始信号:当SCL为高电平期间,SDA有高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平信号。
停止信号:当SCL为高电平期间,SDA由低到高的跳变;停止信号也是一种高电平跳变时序信号,而不是一个电平信号
起始信号和停止信号一般由主机产生

2021050623381167.png

3.应答信号

发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。应答信号为低电平时,规定为有效应答位(ACK简称应答位)
表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。
对于反馈有效应答位ACK的要求是,接收器在第九个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。
如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器数据发送,并释放SDA线,以便主控接收器发送一个停止信号P。

20210506234008880.png

4.数据的有效性

IIC总线进行数据传输时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。SDA数据线在SCL的每个时钟周期传输一位数据。
即:数据在SCL的上升沿到来之前就需准备好。并在下降沿到来之前必须稳定

20210506234126710.png

5.数据传输

在IIC总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据。数据位的传输是边沿触发

四.STM32的IIC特性及架构


①软件模拟协议:使用CPU直接控制通讯引脚的电平,产生出符合通讯协议标准的逻辑。
②硬件实现协议:由STM32的IIC片上外设专门负责实现IIC通讯协议,只要配置好该外设,它就会自动根据协议要求产生通讯信号,收发数据并缓存起来,CPU只要检测该外设的状态和访问数据寄存器,就能完成数据收发。这种由硬件外设处理IIC协议的方式减轻了CPU的工作,且使软件设计更加简单。
STM32的IIC外设可用作通讯的主机及从机,支持100Kbit/s和400Kbits/s的速率,支持7位、10位设备地址,支持DMA数据传输,并具有数据校验功能。

20210506234418466.png

1.通讯引脚

STM32芯片有多个IIC外设,它们的IIC通讯信号引出到不同的GPIO引脚上,使用时必须配置这些指定的引脚。

20210506234601145.png

2.时钟控制

SCL线的时钟信号,由IIC接口根据时钟控制寄存器(CCR)控制,控制的参数主要位时钟频率。 可选择IIC通讯的“标准/快速”模式,这两个模式分别对应100/400Kbits/s的通讯速率。
在快速模式下可选择SCL时钟的占空比,可选T(low)/T(high) = 2或T(low)/T(high)=16/9模式。
CCR寄存器中12位的配置因子CCR,它与IIC外设的输入时钟源共用作用,产生SCL时钟。STM32的IIC外设输入时钟源位PCKL1

  1. 计算时钟频率
  2.     标准模式
  3.     T high = CCR *T pckl1  T low= CCR*Tpclk1
  4.     快速模式中 Tlow/Tlow =2时:
  5.     Thigh = CCR*Tpckl1    T low = 2*low*Tpckl1  
  6.     快速模式中 Tlow/Tlow =16/9时:
  7.     Thigh = 9*CCR*Tpckl1    T low = 16*low*Tpckl1
  8. PCLK1 = 36MHz,想要配置400Kbits/s 方法:
  9. PCLK时钟周期: TPCLK1 = 1/36 000 000
  10. 目标SCL时钟周期:  TSCL = 1/400 000
  11. SCL时钟周期内的高电平时间: Thigh = TSCL/3
  12. SCL时钟周期内的低电平时间: Tlow  = 2*TSCL/3
  13. 计算CCR的值 :   CCR = THIGH/TPCLK1 = 30
  14. 计算出来的值写入到寄存器即可  
复制代码

3.数据控制

IC的SDA信号主要连接到数据移位寄存器上,数据移位寄存器的数据来源及目标是数据寄存器(DR)、地址寄存器(OAR)、PEC寄存器以及SDA数据线。
当向外发送数据的时候,数据移位寄存器以“数据寄存器”为数据源,把数据一位一位地通过SDA信号线发送出去。
当从外部接收数据的时候,数据移位寄存器把SDA信号线采样到的数据一位一位地存储到”数据寄存器”中。

五.使用IIC的通讯过程

使用IIC外设通讯时,在通讯的不同阶段它会对”状态寄存器(SR1和SR2)”的不同数据位写入参数,通过读取这些寄存器标志来了解通讯状态。

20210506235049454.png

控制产生起始信号(S),当发生起始信号后,它产生事件”EV5”,并会对SR1寄存器的 SB 位置1,表示起始信号已经发生。
发生设备地址并等待应答信号,若有从机应答,则产生时间 EV6 及 EV8 ,这时SR1寄存器的 ADDR位及 TXE位被置1,ADDR位1 表示地址已经发送,TEX表示数据寄存器为空。
往IIC的数据寄存器DR写入要发送的数据,这时TXE位会被充值0,表示数据寄存器非空,IIC外设通过SDA信号线一位位把数据发送出去后,又会产生EV8事件,即TXE被置1,重复这个过程,可发送多个字节。
发送数据完成后,控制IIC设备产生一个停止信号P,这个时候产生EV2事件,SR1的TEX位及BTF位被置1,表示通讯结束

IIC结构体

  1. typedef struct
  2. {
  3.   uint32_t I2C_ClockSpeed;     //设置SCL时钟频率,此值要低于400 000                                             
  4.   uint16_t I2C_Mode;             //指定工作模式,可选IIC模式及SMBUS模式
  5.   uint16_t I2C_DutyCycle;       //时钟占空比,可选low/high = 2:0或16:9
  6.   uint16_t I2C_OwnAddress1;  //自身的IIC设备地址   
  7.   uint16_t I2C_Ack;                //使能或者关闭响应,一般是使能
  8.   uint16_t I2C_AcknowledgedAddress; //指定地址长度,可为7或10
  9. }I2C_InitTypeDef;
复制代码

一、I2C_ClockSpeed
设置IIC的传输速率,在调用初始化函数时,函数会根据我们输入的数值经过运算后把时钟因子写入到IIC的时钟控制寄存器CCR。而我们写入的这个参数值不得高于400Khz.
实际上由于CCR寄存器不能写入小数类型的时钟因子,影响到SCL的实际频率可能会低于本成员设置的参数值,这时除了通讯会稍微慢点以外,不会对IIC的标准通讯造成其他影响
二、 I2C_DutyCycle
设置IIC的SCL线时钟的占空比。该配置有两个选择,分别为低电平时间比高电平时间为2:1(IIC_DutyCycle_2)和16:9
(IIC_DutyCycle_16_9)其实这两个模式的比例差别并不大,一般要求都不会如此严格,这里随便选就可以了。
三、I2C_OwnAddress1
配置STM32的IIC设备自己的地址,每个连接到IIC总线上的设备都有一个自己的地址,作为主机也不例外。地址可以设置为7位或10位(受下面IIC_AcknowledgeAddress成员决定),只要该地址是IIC总线上唯一的即可。
STM32的IIC外设可同时使用两个地址,即同时对两个地址作出响应,这个结构体成员IIC_OwnAddress1配置的是默认的,OAR1寄存器存储的地址,若需要设置第二个地址寄存器OAR2,可使用
IIC_OwmAddress2Conig函数来配置,OAR2不支持10位地址。
四、I2C_Ack
配置IIC应答是否使能,设置位使能则可以发送响应信号,一般配置位允许应答(IIC_Ack_Enable),这是绝大多数遵循IIC标准的设备的通讯要求,改为禁止应答(IIC_Ack_Disable)往往会导致通讯错误。
五、I2C_OwnAddress1
配置STM32的IIC设备自己的地址,每个连接到IIC总线上的设备都有一个自己的地址,作为主机也不例外。地址可以设置为7位或10位(受下面IIC_AcknowledgeAddress成员决定),只要该地址是IIC总线上唯一的即可。
STM32的IIC外设可同时使用两个地址,即同时对两个地址作出响应,这个结构体成员IIC_OwnAddress1配置的是默认的,OAR1寄存器存储的地址,若需要设置第二个地址寄存器OAR2,可使用
IIC_OwmAddress2Conig函数来配置,OAR2不支持10位地址。

到这里关于IIC的配置和认识就将完了,下面在来了解一下Oled屏幕

六.Oled屏幕

OLED即有机发光管(Organic Light-Emitting Diode,OLED)。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低功耗、极高反应速度、可用于绕曲性面板、使用温度范围广、构造及制程简单等有点,被认为是下一代的平面显示屏新兴应用技术。
· OLED显示和传统的LCD显示不同,其可以自发光,所以不需要背光灯,这使得OLED显示屏相对于LCD显示屏尺寸更薄,同时显示效果更优。
常用的OLED屏幕有蓝色、黄色、白色等几种。屏的大小为0.96寸,像素点为
128*64,所以我们称为0.96oled屏或者12864屏。

  1. 1.oled特点
  2. 1.模块尺寸:23.7 *23.8mm
  3. 2.电源电压:3.3-5.5V
  4. 3.驱动芯片:SSD1306
  5. 4.测试平台:提供 k60/k10,9s12XS128,51,stm32,stm8等单片机
复制代码

20210507000305556.png

2.oled屏幕显存

20210507000340713.png

OLED本身是没有显存的,他的现存是依赖SSD1306提供的,而SSD1306提供一块显存。
SSD1306显存总共为128*64bit大小,SSD1306将这些显存分成了8页。每页包含了128个字节。

3.oled原理

STM32内部建立一个缓存(共128*8个字节),每次修改的时候,只是修改STM32上的缓存(实际上就是SRAM),修改完后一次性把STM32上的缓存数据写入到OLED的GRAM。

  这个方法也有坏处,对于SRAM很小的单片机(51系列)就比较麻烦。

4.常用指令

20210507000528688.png

命令0X81: 设置对比度。包含两个字节,第一个0X81为命令,随后方法是的一个字节要设置这个对比度,值越大屏幕越亮。
命令0XAE/0XAF: 0XAE为关闭显示命令,0XAF为开启显示命令
0X8D: 包含两个字节,第一个为命令字,第二个为设置值,第二个字节的BIT2表示电荷泵的开关状态,该位为1开启电荷泵,为0则关闭。模块初始化的时候,这个必须要开启,否则看不到屏幕显示。
命令0XB0~B7:用于设置页地址,其低三位的值对应GRAM页地址。
命令0X00~0X0F:用于设置显示时的起始列地址低四位。
命令0X10~0X1F: 用于设置显示时的起始列地址高四位

七.oled屏幕字模使用

OLED点阵的点亮方式,举个显示”P”的例子,最左边位最高位P7

20210507000828540.png

1.可以看出,要想显示”P”,首先写入0x1f,则显示一个竖杠,之后控制器自动水平移动到下一列。
2.再写入0X05,则出现两个小横杆,这个两个横杆就是0X05中0000 0101中两个1所处的位置,写完第二列后,控制器自动跳到第三列.
3.再写入0X07,第四列写入0X00后,P就显示出来了。这也说明,即使你只想再一列的最上端显示一个小点,即写入0X01.
4.即你不能一次性控制一个点阵,只能一次性控制八位点阵,即一列点阵。这也决定了字模选择的取模方式为“列行式“。

八、关于取模说明

取模主要有三种一是图片、字符、汉字三种,取的原理是一样的

图片取模
打开 PCtoLCD2002.exe 软件

20210507130628738.png

20210507130650294.png

20210507130710525.png

20210507130726728.png

202105071307433.png

其他两种取模形式和图片相同,大家都可以尝试一下

开始写代码吧
oled.c
  1. #include "stm32f10x.h"
  2. #include "oled.h"
  3. #include "OLED_Codetab.h"
  4. #include "delay.h"

  5. void I2C_Configuration(void)
  6. {
  7.         I2C_InitTypeDef   I2C_InitStructure;   //I2C结构体配置
  8.         GPIO_InitTypeDef  GPIO_InitStructure;  //GPIO结构体配置
  9.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //时钟使能
  10.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);
  11.         
  12.         //PB6 SCL PB7 DAT
  13.         GPIO_InitStructure.GPIO_Mode   =  GPIO_Mode_AF_OD;
  14.         GPIO_InitStructure.GPIO_Pin    =  GPIO_Pin_7 | GPIO_Pin_6;
  15.         GPIO_InitStructure.GPIO_Speed  =  GPIO_Speed_50MHz;
  16.     GPIO_Init(GPIOB,&GPIO_InitStructure);
  17.         
  18.         
  19.         //I2C
  20.     I2C_DeInit(I2C1);
  21.         I2C_InitStructure.I2C_Ack                   =  I2C_Ack_Enable;
  22.         I2C_InitStructure.I2C_AcknowledgedAddress   =  I2C_AcknowledgedAddress_7bit;
  23.         I2C_InitStructure.I2C_ClockSpeed            =  400000;
  24.         I2C_InitStructure.I2C_DutyCycle             =  I2C_DutyCycle_2;
  25.         I2C_InitStructure.I2C_Mode                  =  I2C_Mode_I2C;
  26.         I2C_InitStructure.I2C_OwnAddress1           =  0X10;
  27.     I2C_Init( I2C1, &I2C_InitStructure);
  28.     I2C_Cmd( I2C1,  ENABLE); //使能I2C1

  29. }


  30. void I2C_WriteByte(uint8_t addr , uint8_t data)
  31. {
  32.         while(I2C_GetFlagStatus(I2C1,  I2C_FLAG_BUSY)  //检测I2C总线是否繁忙
  33.     I2C_GenerateSTART(I2C1,  ENABLE);               //开启I2C
  34.     while(!I2C_CheckEvent(I2C1,  I2C_EVENT_MASTER_MODE_SELECT)); //EV5 主模式
  35.     I2C_Send7bitAddress(I2C1, OLED_ADDRESS,  I2C_Direction_Transmitter);  //发生器地址
  36.         while(!I2C_CheckEvent(I2C1 ,I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));  //EV6
  37.         
  38.     I2C_SendData( I2C1,  addr); //寄存器地址
  39.         while(!I2C_CheckEvent(I2C1,  I2C_EVENT_MASTER_BYTE_TRANSMITTING)); //EV8 主模式
  40.     I2C_SendData( I2C1 , data);  //发送数据
  41.         while(!I2C_CheckEvent(I2C1,  I2C_EVENT_MASTER_BYTE_TRANSMITTING)); //EV8 Ö÷ģʽ
  42.         
  43.     I2C_GenerateSTOP(I2C1,ENABLE  );  //关闭I2C总线
  44.         
  45. }


  46. //写命令
  47. void WriteCmd(unsigned char I2C_Cmd)
  48. {        
  49.         I2C_WriteByte(0X00,I2C_Cmd);
  50. }


  51. //写数据
  52. void  WriteData(unsigned char I2C_Data)
  53. {        
  54.         I2C_WriteByte(0X40 , I2C_Data);
  55. }


  56.         
  57. //OELD初始化
  58. void OLED_Init(void)
  59. {
  60.     delay_ms(100);
  61.         WriteCmd(0xAE); //display off
  62.         WriteCmd(0x20);        //Set Memory Addressing Mode        
  63.         WriteCmd(0x10);        //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
  64.         WriteCmd(0xb0);        //Set Page Start Address for Page Addressing Mode,0-7
  65.         WriteCmd(0xc8);        //Set COM Output Scan Direction
  66.         WriteCmd(0x00); //---set low column address
  67.         WriteCmd(0x10); //---set high column address
  68.         WriteCmd(0x40); //--set start line address
  69.         WriteCmd(0x81); //--set contrast control register
  70.         WriteCmd(0xff); //ÁÁ¶Èµ÷½Ú 0x00~0xff
  71.         WriteCmd(0xa1); //--set segment re-map 0 to 127
  72.         WriteCmd(0xa6); //--set normal display
  73.         WriteCmd(0xa8); //--set multiplex ratio(1 to 64)
  74.         WriteCmd(0x3F); //
  75.         WriteCmd(0xa4); //0xa4,Output follows RAM content;0xa5,Output ignores RAM content
  76.         WriteCmd(0xd3); //-set display offset
  77.         WriteCmd(0x00); //-not offset
  78.         WriteCmd(0xd5); //--set display clock divide ratio/oscillator frequency
  79.         WriteCmd(0xf0); //--set divide ratio
  80.         WriteCmd(0xd9); //--set pre-charge period
  81.         WriteCmd(0x22); //
  82.         WriteCmd(0xda); //--set com pins hardware configuration
  83.         WriteCmd(0x12);
  84.         WriteCmd(0xdb); //--set vcomh
  85.         WriteCmd(0x20); //0x20,0.77xVcc
  86.         WriteCmd(0x8d); //--set DC-DC enable
  87.         WriteCmd(0x14); //
  88.         WriteCmd(0xaf); //--turn on oled panel
  89. }

  90.         



  91. //设置起点坐标
  92. void OLED_SetPos(unsigned char x, unsigned char y)
  93. {
  94.         WriteCmd(0xb0 + y);  
  95.         WriteCmd((x & 0xf0) >> 4 | 0x10);
  96.         WriteCmd((x & 0x0f ) | 0x01);
  97. }



  98. //全屏填充
  99. void OLED_Full(unsigned char Full_Data)
  100. {
  101.         unsigned char n, m ;
  102.         for( m = 0 ; m < 8 ; m++)
  103.                 {
  104.                         WriteCmd(0xb0 + m);
  105.                         WriteCmd(0x00);
  106.                         WriteCmd(0x10);
  107.                         for( n = 0 ; n < 128 ; n++)
  108.                         {
  109.                                 WriteData(Full_Data);
  110.                         }
  111.                 }
  112. }


  113. //清屏函数
  114. void OLED_Clear(void)
  115. {
  116.         OLED_Full(0x00);
  117. }



  118. //oled打开
  119. void OLED_Open(void)
  120. {
  121.         WriteCmd(0x8D); //设置电荷泵
  122.         WriteCmd(0x14);  //开启电荷泵
  123.         WriteCmd(0xaf);  //OLED唤醒
  124.         
  125. }



  126. //oled关闭
  127. void OLED_Close(void)
  128. {
  129.         WriteCmd(0x8D);
  130.         WriteCmd(0x10);  //关闭电荷泵
  131.         WriteCmd(0xAE);  //关闭oled
  132. }

  133. //显示字符串
  134. void OLED_ShowStr(unsigned char x, unsigned char y , unsigned char ch[] , unsigned TestSize)
  135. {
  136.         unsigned char c = 0 , i = 0, j = 0;
  137.         switch(TestSize)
  138.         {
  139.                 case 1:
  140.                 {
  141.                         while(ch[j] != '\0')
  142.                         {
  143.                                 c = ch[j] - 32;
  144.                                 if(x > 126)
  145.                                 {
  146.                                         x = 0 ;
  147.                                         y ++;
  148.                                 }
  149.                                 OLED_SetPos(x , y);
  150.                                 for( i = 0 ; i< 6 ; i++)                                
  151.                                         WriteData(F6X8[c]<i>);
  152.                                         x+= 6;
  153.                                         j++;
  154.                         }
  155.                 }break;
  156.                 case 2:
  157.                 {
  158.                                 while(ch[j] != '\0')
  159.                                         {c = ch[j] - 32;
  160.                                         if( x > 120)
  161.                                         {
  162.                                                 x = 0;
  163.                                                 y++;
  164.                                         }
  165.                                         OLED_SetPos(x , y);
  166.                                         for( i = 0 ; i < 8 ; i++)
  167.                                         WriteData(F8X16[c*16 + i]);
  168.                                         OLED_SetPos(x , y+1);
  169.                                         for( i = 0 ; i < 8 ; i++)
  170.                                         WriteData(F8X16[c*16+i+8]);
  171.                                         x+=8;
  172.                                         j++;
  173.                                 }
  174.                         }break;
  175.         }
  176. }



  177. //显示文字
  178. void OLED_ShowCn(unsigned char x, unsigned char y , unsigned char N)
  179. {
  180.         unsigned char wn = 0;
  181.         unsigned  int addr = 32*N;
  182.         OLED_SetPos(x , y);
  183.         for( wn = 0 ; wn < 16 ; wn++)
  184.         {
  185.                 WriteData(F16X16[addr]);
  186.                 addr+= 1;
  187.         }
  188.         OLED_SetPos(x , y+1);
  189.         for( wn = 0 ; wn < 16 ; wn++)
  190.         {
  191.                 WriteData(F16X16[addr]);
  192.                 addr+= 1;
  193.         }
  194.         
  195. }


  196. //显示图像
  197. void OLED_ShowBMP(unsigned char x0 , unsigned char y0 , unsigned char x1 , unsigned char y1 , unsigned char BMP[])
  198. {
  199.         unsigned int j = 0;
  200.         unsigned char x , y;
  201.         if(y1 % 8 == 0)
  202.         {
  203.                 y = y1/8;
  204.         }
  205.         else
  206.         {
  207.                 y = y1/8 +1;
  208.         }
  209.         for(y = y0 ; y< y1 ; y++)
  210.         {
  211.                 OLED_SetPos(x0 ,y);
  212.                 for( x= x0 ; x < x1 ; x++)
  213.                 {
  214.                         WriteData(BMP[j++]);
  215.                 }
  216.         }
  217. }        </i>
复制代码

oled.h

  1. #ifndef _OLED_H_
  2. #define _OLED_H_
  3. #include "stm32f10x.h"
  4. #define  OLED_ADDRESS 0x78
  5. void I2C_Configuration(void);
  6. void I2C_WriteByte(uint8_t addr , uint8_t data);
  7. void WriteCmd(unsigned char I2C_Cmd);
  8. void  WriteData(unsigned char I2C_Data);
  9. void OLED_Init(void);
  10. void OLED_SetPos(unsigned char x, unsigned char y);
  11. void OLED_Full(unsigned char Full_Data);
  12. void OLED_Clear(void);
  13. void OLED_Open(void);
  14. void OLED_Close(void);
  15. void OLED_ShowStr(unsigned char x, unsigned char y , unsigned char ch[] , unsigned TestSize);
  16. void OLED_ShowCn(unsigned char x, unsigned char y , unsigned char N);

  17. #endif
复制代码

OLED_Codetab.h

  1. //字符头文件
  2. const unsigned char F16X16[] =
  3. {
  4.         0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x20,0x40,0x80,0x00,0x00,
  5.         0x08,0x04,0x03,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x01,0x0E,0x00,小",0*/
  6.         0x00,0x00,0xFE,0xAA,0xAA,0xA9,0xF9,0x00,0xA0,0x9E,0x82,0x82,0x9E,0xA0,0x20,0x00,
  7.         0x40,0x30,0x0F,0x02,0x22,0x42,0x3E,0x80,0x80,0x43,0x2C,0x10,0x2C,0x43,0x80,0x00,/*殷",1*/
  8.         0x00,0x00,0xFE,0x02,0x12,0x92,0x92,0x92,0x92,0x92,0x92,0x12,0x02,0xFE,0x00,0x00,
  9.         0x00,0x00,0xFF,0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x1F,0x40,0x80,0x7F,0x00,0x00,/*"同",2*/
  10.         0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,
  11.         0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,0x06,0x05,0x04,0x04,0x04,0x04,0x04,0x00,/*"学",3*/

  12. };

  13. //这个汉字的代码根据字模软件来看就好了

  14. /*
  15. const unsigned char BMP[] =
  16. {
  17.         
  18.         
  19.         
  20. };

  21. */

  22. //图像代码


  23. const unsigned char F6X8[][6] =
  24. {
  25.         0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// sp
  26.         0x00, 0x00, 0x00, 0x2f, 0x00, 0x00,// !
  27.         0x00, 0x00, 0x07, 0x00, 0x07, 0x00,// "
  28.         0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14,// #
  29.         0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12,// $
  30.         0x00, 0x62, 0x64, 0x08, 0x13, 0x23,// %
  31.         0x00, 0x36, 0x49, 0x55, 0x22, 0x50,// &
  32.         0x00, 0x00, 0x05, 0x03, 0x00, 0x00,// '
  33.         0x00, 0x00, 0x1c, 0x22, 0x41, 0x00,// (
  34.         0x00, 0x00, 0x41, 0x22, 0x1c, 0x00,// )
  35.         0x00, 0x14, 0x08, 0x3E, 0x08, 0x14,// *
  36.         0x00, 0x08, 0x08, 0x3E, 0x08, 0x08,// +
  37.         0x00, 0x00, 0x00, 0xA0, 0x60, 0x00,// ,
  38.         0x00, 0x08, 0x08, 0x08, 0x08, 0x08,// -
  39.         0x00, 0x00, 0x60, 0x60, 0x00, 0x00,// .
  40.         0x00, 0x20, 0x10, 0x08, 0x04, 0x02,// /
  41.         0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
  42.         0x00, 0x00, 0x42, 0x7F, 0x40, 0x00,// 1
  43.         0x00, 0x42, 0x61, 0x51, 0x49, 0x46,// 2
  44.         0x00, 0x21, 0x41, 0x45, 0x4B, 0x31,// 3
  45.         0x00, 0x18, 0x14, 0x12, 0x7F, 0x10,// 4
  46.         0x00, 0x27, 0x45, 0x45, 0x45, 0x39,// 5
  47.         0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
  48.         0x00, 0x01, 0x71, 0x09, 0x05, 0x03,// 7
  49.         0x00, 0x36, 0x49, 0x49, 0x49, 0x36,// 8
  50.         0x00, 0x06, 0x49, 0x49, 0x29, 0x1E,// 9
  51.         0x00, 0x00, 0x36, 0x36, 0x00, 0x00,// :
  52.         0x00, 0x00, 0x56, 0x36, 0x00, 0x00,// ;
  53.         0x00, 0x08, 0x14, 0x22, 0x41, 0x00,// <
  54.         0x00, 0x14, 0x14, 0x14, 0x14, 0x14,// =
  55.         0x00, 0x00, 0x41, 0x22, 0x14, 0x08,// >
  56.         0x00, 0x02, 0x01, 0x51, 0x09, 0x06,// ?
  57.         0x00, 0x32, 0x49, 0x59, 0x51, 0x3E,// @
  58.         0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C,// A
  59.         0x00, 0x7F, 0x49, 0x49, 0x49, 0x36,// B
  60.         0x00, 0x3E, 0x41, 0x41, 0x41, 0x22,// C
  61.         0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C,// D
  62.         0x00, 0x7F, 0x49, 0x49, 0x49, 0x41,// E
  63.         0x00, 0x7F, 0x09, 0x09, 0x09, 0x01,// F
  64.         0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A,// G
  65.         0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F,// H
  66.         0x00, 0x00, 0x41, 0x7F, 0x41, 0x00,// I
  67.         0x00, 0x20, 0x40, 0x41, 0x3F, 0x01,// J
  68.         0x00, 0x7F, 0x08, 0x14, 0x22, 0x41,// K
  69.         0x00, 0x7F, 0x40, 0x40, 0x40, 0x40,// L
  70.         0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F,// M
  71.         0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F,// N
  72.         0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E,// O
  73.         0x00, 0x7F, 0x09, 0x09, 0x09, 0x06,// P
  74.         0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
  75.         0x00, 0x7F, 0x09, 0x19, 0x29, 0x46,// R
  76.         0x00, 0x46, 0x49, 0x49, 0x49, 0x31,// S
  77.         0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,// T
  78.         0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F,// U
  79.         0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F,// V
  80.         0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F,// W
  81.         0x00, 0x63, 0x14, 0x08, 0x14, 0x63,// X
  82.         0x00, 0x07, 0x08, 0x70, 0x08, 0x07,// Y
  83.         0x00, 0x61, 0x51, 0x49, 0x45, 0x43,// Z
  84.         0x00, 0x00, 0x7F, 0x41, 0x41, 0x00,// [
  85.         0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55,// 55
  86.         0x00, 0x00, 0x41, 0x41, 0x7F, 0x00,// ]
  87.         0x00, 0x04, 0x02, 0x01, 0x02, 0x04,// ^
  88.         0x00, 0x40, 0x40, 0x40, 0x40, 0x40,// _
  89.         0x00, 0x00, 0x01, 0x02, 0x04, 0x00,// '
  90.         0x00, 0x20, 0x54, 0x54, 0x54, 0x78,// a
  91.         0x00, 0x7F, 0x48, 0x44, 0x44, 0x38,// b
  92.         0x00, 0x38, 0x44, 0x44, 0x44, 0x20,// c
  93.         0x00, 0x38, 0x44, 0x44, 0x48, 0x7F,// d
  94.         0x00, 0x38, 0x54, 0x54, 0x54, 0x18,// e
  95.         0x00, 0x08, 0x7E, 0x09, 0x01, 0x02,// f
  96.         0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C,// g
  97.         0x00, 0x7F, 0x08, 0x04, 0x04, 0x78,// h
  98.         0x00, 0x00, 0x44, 0x7D, 0x40, 0x00,// i
  99.         0x00, 0x40, 0x80, 0x84, 0x7D, 0x00,// j
  100.         0x00, 0x7F, 0x10, 0x28, 0x44, 0x00,// k
  101.         0x00, 0x00, 0x41, 0x7F, 0x40, 0x00,// l
  102.         0x00, 0x7C, 0x04, 0x18, 0x04, 0x78,// m
  103.         0x00, 0x7C, 0x08, 0x04, 0x04, 0x78,// n
  104.         0x00, 0x38, 0x44, 0x44, 0x44, 0x38,// o
  105.         0x00, 0xFC, 0x24, 0x24, 0x24, 0x18,// p
  106.         0x00, 0x18, 0x24, 0x24, 0x18, 0xFC,// q
  107.         0x00, 0x7C, 0x08, 0x04, 0x04, 0x08,// r
  108.         0x00, 0x48, 0x54, 0x54, 0x54, 0x20,// s
  109.         0x00, 0x04, 0x3F, 0x44, 0x40, 0x20,// t
  110.         0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C,// u
  111.         0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C,// v
  112.         0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C,// w
  113.         0x00, 0x44, 0x28, 0x10, 0x28, 0x44,// x
  114.         0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C,// y
  115.         0x00, 0x44, 0x64, 0x54, 0x4C, 0x44,// z
  116.         0x14, 0x14, 0x14, 0x14, 0x14, 0x14,// horiz lines
  117. };
  118. const unsigned char F8X16[]=         
  119. {
  120.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0
  121.   0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 1
  122.   0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 2
  123.   0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3
  124.   0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4
  125.   0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5
  126.   0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6
  127.   0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 7
  128.   0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 8
  129.   0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 9
  130.   0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 10
  131.   0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11
  132.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12
  133.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13
  134.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14
  135.   0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15
  136.   0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16
  137.   0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17
  138.   0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18
  139.   0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19
  140.   0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 20
  141.   0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 21
  142.   0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 22
  143.   0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 23
  144.   0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 24
  145.   0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 25
  146.   0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 26
  147.   0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 27
  148.   0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 28
  149.   0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 29
  150.   0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 30
  151.   0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31
  152.   0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 32
  153.   0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33
  154.   0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34
  155.   0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35
  156.   0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36
  157.   0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37
  158.   0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38
  159.   0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39
  160.   0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40
  161.   0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41
  162.   0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42
  163.   0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43
  164.   0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44
  165.   0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45
  166.   0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46
  167.   0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47
  168.   0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48
  169.   0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49
  170.   0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50
  171.   0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51
  172.   0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52
  173.   0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53
  174.   0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54
  175.   0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55
  176.   0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56
  177.   0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57
  178.   0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58
  179.   0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 59
  180.   0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 60
  181.   0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 61
  182.   0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 62
  183.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 63
  184.   0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 64
  185.   0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65
  186.   0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 66
  187.   0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 67
  188.   0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68
  189.   0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69
  190.   0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 70
  191.   0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 71
  192.   0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 72
  193.   0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 73
  194.   0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 74
  195.   0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75
  196.   0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 76
  197.   0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 77
  198.   0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 78
  199.   0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 79
  200.   0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80
  201.   0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 81
  202.   0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 82
  203.   0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 83
  204.   0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 84
  205.   0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 85
  206.   0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86
  207.   0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87
  208.   0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88
  209.   0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 89
  210.   0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 90
  211.   0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91
  212.   0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92
  213.   0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93
  214.   0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94
  215. };
复制代码

main.c

  1. #include "stm32f10x.h"
  2. #include "SysTick.h"
  3. #include "oled.h"


  4. int main(void)
  5. {
  6.         ms_delay(1500);
  7.     I2C_Configuration();
  8.         OLED_Init();
  9.         ms_delay(2000);
  10.         OLED_Full(0XFF);
  11.         ms_delay(2000);
  12.         OLED_Full(0X00);
  13.         ms_delay(2000);
  14.         OLED_ShowStr(0,3,"        Hello world",1);
  15.         OLED_ShowStr(0,4,"Hello world",2);
  16.         while(1)
  17.         {
  18.                
  19.         }
  20. }
复制代码

20210507003551962.png

————————————————
版权声明:@slow-walker


收藏 评论0 发布时间:2022-10-27 14:58

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版