[开发资料] 【CW32L031CxTx StartKit评估板测评】03-SPI驱动0.96寸OLED

[复制链接]
 楼主| 怀揣少年梦 发表于 2023-11-11 22:48 | 显示全部楼层 |阅读模式
一、硬件
材料:中景园的0.96寸黄蓝OLED显示屏,驱动芯片是SSD1306。
OLED介绍
OLED引脚,是7针SPI模式。
1). GND 电源地
2). VCC 电源正(3~5.5V)
3). D0 OLED 的 D0 脚,在 SPI 和 IIC 通信中为时钟管脚
4). D1 OLED 的 D1 脚,在 SPI 和 IIC 通信中为数据管脚
5). RES OLED 的 RES#脚,用来复位(低电平复位)
6). DC OLED 的 D/C#E 脚,数据和命令控制管脚.
本次实验中,使用CW32L031U8T6进行驱动OLED显示屏。
OLED与SPI引脚连接顺序为:
D0---PB03;
D1---PB05;
RES-PA06;
DC---PB00;
CS---PA15;
注意:CE32L031U8只有一个SPI接口;
二、软件设计
1、OLED驱动程序编写
在这里需要注意打开SPI相应IO口的复用功能。
  1. #include "OLED.h"
  2. //#include "OLED_Font.h"
  3. #include "font.h"
  4. /*OLED段码分布
  5. 128*64;每个COM对应8个点
  6. 正常
  7. (page0)      SEG0-SEG128
  8.                                         COM0
  9.                                          |
  10.                                         COM7

  11. 反置
  12. (page0)       SEG128-SEG0
  13.                                         COM63
  14.                                          |
  15.                                         COM56
  16.                                        
  17. 写命令,其实是写寄存器
  18. */


  19. /****************************************************************************
  20. * 名        称:void OLED_Config(void)
  21. * 功        能:配置OLED相关配置
  22. * 入口参数:无
  23. * 出口参数:无
  24. * 说        明:
  25. ****************************************************************************/
  26. void OLED_Config(void)
  27. {
  28.         OLED_GPIO_Init();
  29.         OLED_SPI_Init();
  30.         OLED_Init();
  31. }
  32. /****************************************************************************
  33. * 名        称:void OLED_GPIO_Init(void)
  34. * 功        能:配置在OLED与stm32间spi通信的引脚及控制OLED的引脚
  35. * 入口参数:无
  36. * 出口参数:无
  37. * 说        明:
  38. ****************************************************************************/
  39. void OLED_GPIO_Init(void)
  40. {
  41.         GPIO_InitTypeDef GPIO_InitStructure;
  42.        
  43.         RCC_AHBPeriphClk_Enable(OLED_SPI_SCK_GPIO_CLK | OLED_SPI_MOSI_GPIO_CLK, ENABLE);

  44.         RCC_APBPeriphClk_Enable2(RCC_APB2_PERIPH_SPI1, ENABLE);
  45.        
  46.         PB03_AFx_SPI1SCK(); //打开SPI时钟引脚复用功能;芯源在这里直接封装了接口,不需要看数据手册,就可以看对应接口,很方便的进行功能复用
  47.         PB05_AFx_SPI1MOSI();//打开SPIMOSI引脚复用功能
  48.         //OLEDSCLK和MOSI管脚
  49.         GPIO_InitStructure.Pins =GPIO_PIN_3 | GPIO_PIN_5;
  50.         GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;                                                                                       
  51.         GPIO_Init(CW_GPIOB,&GPIO_InitStructure);
  52.        
  53.   //OLED片选CS管脚和复位RES管脚 ,低电平复位
  54.         GPIO_InitStructure.Pins = GPIO_PIN_15 | GPIO_PIN_6;
  55.         GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;                                                                                        //
  56.   GPIO_Init(CW_GPIOA,&GPIO_InitStructure);
  57.   
  58. //初始状态都给高电平
  59.        
  60.   //OLED 数据和命令控制引脚
  61.         GPIO_InitStructure.Pins = GPIO_PIN_0;
  62.         GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;                                                                                       
  63.   GPIO_Init(CW_GPIOB,&GPIO_InitStructure);        
  64.         GPIO_WritePin(CW_GPIOA, GPIO_PIN_15 | GPIO_PIN_6, GPIO_Pin_SET);
  65.         GPIO_WritePin(CW_GPIOB,GPIO_PIN_0,GPIO_Pin_SET);

  66. }


  67. /****************************************************************************
  68. * 名        称:void OLED_SPI_Init(void)       
  69. * 功        能:配置在OLED与stm32间spi通信的初始化
  70. * 入口参数:无
  71. * 出口参数:无
  72. * 说        明:
  73. ****************************************************************************/
  74. void OLED_SPI_Init(void)
  75. {
  76.         SPI_InitTypeDef SPI_InitStructure;
  77.        
  78.        
  79.         OLED_SPI_APBClkENx(OLED_SPI_CLK, ENABLE);
  80.        
  81.         //配置SPI1相关参数:全双工通信、MSB/LSB、通信速度、工作模式(mode0~mode3)......
  82.         SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;                //全双工通信
  83.         SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                                                                                                        //主机角色
  84.         SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;                                 //看时序图,8位数据位
  85.         SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;                                                                                                                //时钟线空闲的时候是什么电平,当前配置为低电平
  86.         SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;                          //主机在时钟线哪一个时刻读取MISO引脚的电平,在时钟第一个边沿来采集数据
  87.         SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                                                                                                                        //片选需要代码控制
  88.         SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;                //SPI1的通信硬件时钟=72MHz/256   
  89.         SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;                                                                                //最高有效位优先传输
  90.         SPI_Init(CW_SPI1,&SPI_InitStructure);
  91.        
  92.         SPI_Cmd(CW_SPI1,ENABLE);
  93.        
  94.        
  95. }


  96. /****************************************************************************
  97. * 名        称:void OLED_Init(void)       
  98. * 功        能:OLED初始化
  99. * 入口参数:无
  100. * 出口参数:无
  101. * 说        明:参照上电序列初始化(24/40)
  102. ****************************************************************************/
  103. void OLED_Init(void)
  104. {
  105.        
  106.         OLED_CS_High;
  107.         //复位OLED
  108.         OLED_RST_High;  
  109.         Delay(0xffff);
  110.         Delay(0xffff);
  111.         Delay(0xffff);
  112.         OLED_RST_Low;
  113.         Delay(0xffff);
  114.         Delay(0xffff);
  115.         Delay(0xffff);
  116.         OLED_RST_High;
  117.        
  118.         OLED_Write_Operate(OLED_Mode_Cmd,0xAE); //关闭OLED
  119.         OLED_Write_Operate(OLED_Mode_Cmd,0x00); //设置列低位地址
  120.         OLED_Write_Operate(OLED_Mode_Cmd,0x10); //设置列高位地址
  121.   OLED_Write_Operate(OLED_Mode_Cmd,0x40); //设置起始行地址及映射RAM显示起始行 (0x00~0x3F)
  122.         OLED_Write_Operate(OLED_Mode_Cmd,0xB0); //设置页地址
  123.         OLED_Write_Operate(OLED_Mode_Cmd,0x81); //对比度设置                                                
  124.         OLED_Write_Operate(OLED_Mode_Cmd,0xCF); //Set SEG Output Current Brightness
  125.        
  126.         OLED_Write_Operate(OLED_Mode_Cmd,0xA1); //Set SEG/Column Mapping     0xa0左右反置 0xa1正常
  127.         OLED_Write_Operate(OLED_Mode_Cmd,0xA6); //
  128.         OLED_Write_Operate(OLED_Mode_Cmd,0xA8); //设置驱动路数(1 to 64)
  129.         OLED_Write_Operate(OLED_Mode_Cmd,0x3F); //*duty = 1/64*/
  130.         OLED_Write_Operate(OLED_Mode_Cmd,0xC8); //0xc0上下反置 0xc8正常
  131.         OLED_Write_Operate(OLED_Mode_Cmd,0xD3); //设置显示偏移(0x00~0x3F)
  132.         OLED_Write_Operate(OLED_Mode_Cmd,0x00); //not offset
  133.         OLED_Write_Operate(OLED_Mode_Cmd,0xD5); //--set Display clock divide ratio/oscillator frequency
  134.         OLED_Write_Operate(OLED_Mode_Cmd,0x80); //--set divide ratio, Set Clock as 100 Frames/Sec
  135.         OLED_Write_Operate(OLED_Mode_Cmd,0xD9); //*set pre-charge period*/
  136.         OLED_Write_Operate(OLED_Mode_Cmd,0Xf1); //Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
  137.         OLED_Write_Operate(OLED_Mode_Cmd,0xDA); //*set COM pins*/
  138.         OLED_Write_Operate(OLED_Mode_Cmd,0x12); //
  139.         OLED_Write_Operate(OLED_Mode_Cmd,0xdb); //*set vcomh*/
  140.         OLED_Write_Operate(OLED_Mode_Cmd,0x40); //Set VCOM Deselect Level
  141.         /**/
  142.         OLED_Write_Operate(OLED_Mode_Cmd,0x20);        //设置存储模式(0x00,0x02,0x01)
  143.         OLED_Write_Operate(OLED_Mode_Cmd,0x02); //页地址模式
  144.        
  145.         OLED_Write_Operate(OLED_Mode_Cmd,0x8d); //*set charge pump disable*/
  146.         OLED_Write_Operate(OLED_Mode_Cmd,0x14); //--set(0x10) disable
  147.         /**/
  148.         OLED_Write_Operate(OLED_Mode_Cmd,0xA4); //显示开启(A4,显示,A5无显示)
  149.         OLED_Write_Operate(OLED_Mode_Cmd,0xA6); //背景正反向显示(0xa6,正显,0xa7,反显)
  150.        
  151.        
  152.         OLED_Display_Clear();                                                                                //清屏
  153.         OLED_Write_Operate(OLED_Mode_Cmd,0xAF); //打开显示
  154.        
  155. }


  156. /****************************************************************************
  157. * 名        称:uint8_t SPI1_WriteReadByte(uint8_t Data)       
  158. * 功        能:SPI1读写一个字节
  159. * 入口参数:无
  160. * 出口参数:接收的数据
  161. * 返回值  :0,发送接收超时,1成功
  162. * 说        明:无
  163. ****************************************************************************/
  164. uint8_t SPI1_WriteReadByte(uint8_t Data)
  165. {
  166.         uint8_t cnt = 0;
  167.         while(SPI_GetFlagStatus(CW_SPI1,SPI_FLAG_TXE) == RESET)        //等待发送区为空
  168.         {
  169.                 cnt++;
  170.                 if( cnt > 100)
  171.                         return 0;
  172.                
  173.         }
  174.         SPI_SendData(CW_SPI1,Data);                                                                                                                                        //发送一个字节的数据
  175.         cnt = 0;
  176.         while(SPI_GetFlagStatus(CW_SPI1,SPI_FLAG_RXNE) == RESET)        //等待接收完一个Byte
  177.         {       
  178.                 cnt++;
  179.                 if( cnt > 100)
  180.                         return 0;
  181.         }
  182.         return SPI_ReceiveData(CW_SPI1);                                                                                                //接收一个字节的数据
  183.        
  184. }

  185. /****************************************************************************
  186. * 名        称:uint8_t OLED_Write_Byte(uint8_t data)       
  187. * 功        能:OLED写一个字节
  188. * 入口参数:无
  189. * 出口参数:接收的数据
  190. * 返回值  :0失败,1成功
  191. * 说        明:无
  192. ****************************************************************************/
  193. uint8_t OLED_Write_Byte(uint8_t data)
  194. {
  195.         if(!SPI1_WriteReadByte(data))
  196.                 return 0;
  197.         else
  198.                 return 1;
  199. }


  200. /****************************************************************************
  201. * 名        称:void OLED_Write_Operate(uint8_t mode,uint8_t data)
  202. * 功        能:OLED写操作
  203. * 入口参数:模式,数据
  204. * 出口参数:无
  205. * 返回值  :无
  206. * 说        明:无
  207. ****************************************************************************/
  208. void OLED_Write_Operate(uint8_t mode,uint8_t data)
  209. {
  210.         OLED_CS_Low;
  211.        
  212.         if(mode)
  213.         {
  214.                 OLED_Write_Data;
  215.         }
  216.         else
  217.         {
  218.                 OLED_Write_Cmd;
  219.         }
  220.        
  221.         OLED_Write_Byte(data);
  222.        
  223.         OLED_CS_High;
  224. }


  225. /****************************************************************************
  226. * 名        称:void OLED_Display_Clear(void)
  227. * 功        能:OLED清屏
  228. * 入口参数:无
  229. * 出口参数:无
  230. * 返回值  :无
  231. * 说        明:无
  232. ****************************************************************************/
  233. void OLED_Display_Clear(void)
  234. {
  235.         uint8_t page = 0;
  236.         uint8_t i=0;
  237.         OLED_CS_Low;
  238.        
  239.         for(page=0;page < 8; page++)
  240.         {
  241.                 OLED_Write_Operate(OLED_Mode_Cmd,0xB0+page);//设置页地址
  242.                 OLED_Write_Operate(OLED_Mode_Cmd,0x00);     //设置显示位置-列低地址
  243.           OLED_Write_Operate(OLED_Mode_Cmd,0x10);     //设置显示位置-列高地址
  244.                
  245.                 for(i = 0;i< 128; i++)
  246.                 {
  247.                         OLED_Write_Operate(OLED_Mode_Data,0x00);  //清屏
  248.                 }
  249.         }
  250. }



  251. /****************************************************************************
  252. * 名        称:void OLED_Set_Positon(void)
  253. * 功        能:设置显示坐标
  254. * 入口参数:x,y
  255. * 出口参数:无
  256. * 返回值  :无
  257. * 说        明:无
  258. ****************************************************************************/
  259. void OLED_Set_Positon(uint8_t x,uint8_t y)
  260. {
  261.        
  262.         OLED_Write_Operate(OLED_Mode_Cmd,0xB0 + y);                                                           //设置页地址
  263.         OLED_Write_Operate(OLED_Mode_Cmd,((x & 0xf0) >>4 ) | 0x10); //设置列高四位地址
  264.         OLED_Write_Operate(OLED_Mode_Cmd,(x & 0x0f) | 0x01);              //设置列低四位地址

  265. }


  266. /****************************************************************************
  267. * 名        称:void OLED_Display_on(void)
  268. * 功        能:显示打开
  269. * 入口参数:无
  270. * 出口参数:无
  271. * 返回值  :无
  272. * 说        明:无
  273. ****************************************************************************/
  274. void OLED_Display_on(void)
  275. {
  276.        
  277.         OLED_Write_Operate(OLED_Mode_Cmd,0x8d); //写充电泵寄存器
  278.         OLED_Write_Operate(OLED_Mode_Cmd,0x14); //打开充电泵
  279.         OLED_Write_Operate(OLED_Mode_Cmd,0xAF);        //打开OLED显示

  280. }


  281. /****************************************************************************
  282. * 名        称:void OLED_Display_offvoid)
  283. * 功        能:显示关闭
  284. * 入口参数:无
  285. * 出口参数:无
  286. * 返回值  :无
  287. * 说        明:无
  288. ****************************************************************************/
  289. void OLED_Display_off(void)
  290. {
  291.        
  292.         OLED_Write_Operate(OLED_Mode_Cmd,0x8d); //写充电泵寄存器
  293.         OLED_Write_Operate(OLED_Mode_Cmd,0x10); //关闭充电泵
  294.         OLED_Write_Operate(OLED_Mode_Cmd,0xAE);        //关闭OLED显示

  295. }


  296. /****************************************************************************
  297. * 名        称:void OLED_Display_onechar(uint8_t x,uint8_t y,uint8_t character,uint8_t size)
  298. * 功        能:显示单个字符
  299. * 入口参数:
  300. x ,y坐标位置
  301. character 字符
  302. size 字号大小
  303. * 出口参数:无
  304. * 返回值  :无
  305. * 说        明:无
  306. ****************************************************************************/
  307. void OLED_Display_onechar(uint8_t x,uint8_t y,uint8_t character,uint8_t size)
  308. {
  309.         uint8_t c=0,i=0;
  310.         c = character-' ';
  311.         if(x > MAX_COLUMN - 1)
  312.         {
  313.                 x= 0;
  314.                 if(size == SIZE8)
  315.                 {
  316.                         y = y+1;
  317.                 }
  318.                 if(size == SIZE16)
  319.                 {
  320.                         y = y+2;
  321.                 }
  322.         }
  323.         if(size == SIZE16)
  324.         {
  325.                 OLED_Set_Positon(x,y);
  326.                 for( i =0;i< 8; i++)
  327.                 {
  328.                         OLED_Write_Operate(OLED_Mode_Data,F8X16[c*16 + i]);
  329.                 }
  330.                 OLED_Set_Positon(x,y+1);
  331.                 for( i =0;i< 8; i++)
  332.                 {
  333.                         OLED_Write_Operate(OLED_Mode_Data,F8X16[c*16 + i+8]);
  334.                 }
  335.         }
  336.         else
  337.         {
  338.                 OLED_Set_Positon(x,y+1);
  339.                 for( i =0;i< 6; i++)
  340.                 {
  341.                         OLED_Write_Operate(OLED_Mode_Data,F6x8[c][i]);
  342.                 }
  343.         }
  344. }


  345. /****************************************************************************
  346. * 名        称:void OLED_Display_string(uint8_t x,uint8_t y,uint8_t *str,uint8_t size)
  347. * 功        能:显示字符串
  348. * 入口参数:
  349. x ,y坐标位置
  350. str 字符串
  351. size 字号大小
  352. * 出口参数:无
  353. * 返回值  :无
  354. * 说        明:无
  355. ****************************************************************************/
  356. void OLED_Display_string(uint8_t x,uint8_t y,uint8_t *str,uint8_t size)
  357. {
  358.         uint8_t i=0;
  359.         while(str[i]!='\0')
  360.         {
  361.                 OLED_Display_onechar(x,y,str[i],size);
  362.                 x += 8;
  363.                 if(x > 120)
  364.                 {
  365.                         x = 0;
  366.                         y += 2;
  367.                 }
  368.                 i++;
  369.         }
  370. }


  371. /****************************************************************************
  372. * 名        称:void OLED_Display_Chinese(uint8_t x,uint8_t y,uint8_t Sno)
  373. * 功        能:显示单个字符
  374. * 入口参数:
  375. x ,y坐标位置
  376. Sno 表示汉字数组中一个字的码所占的序号
  377. * 出口参数:无
  378. * 返回值  :无
  379. * 说        明:无
  380. ****************************************************************************/
  381. void OLED_Display_Chinese(uint8_t x,uint8_t y,uint8_t Sno)
  382. {
  383.         uint8_t adder=0,i=0;
  384.         OLED_Set_Positon(x,y);
  385.         for(i = 0;i< 16;i++)
  386.         {
  387.                 OLED_Write_Operate(OLED_Mode_Data,Hzk[2*Sno][i]);
  388.                 adder += 1;
  389.         }
  390.   OLED_Set_Positon(x,y+1);
  391.         for(i = 0;i< 16;i++)
  392.         {
  393.                 OLED_Write_Operate(OLED_Mode_Data,Hzk[2*Sno+1][i]);
  394.                 adder += 1;
  395.         }       
  396. }



  397. /****************************************************************************
  398. * 名        称:uint32_t OLED_POW(uint8_t m, uint8_t n)
  399. * 功        能:m的n次方
  400. * 入口参数:
  401. m为底数,n为指数
  402. * 出口参数:无
  403. * 返回值  :无
  404. * 说        明:无
  405. ****************************************************************************/
  406. uint32_t OLED_POW(uint8_t m, uint8_t n)
  407. {
  408.         uint32_t result=1;
  409.         while(n--)
  410.         {
  411.                 result *= m;
  412.         }
  413.         return result;
  414. }


  415. /****************************************************************************
  416. * 名        称:void OLED_Display_Num(uint8_t x,uint8_t y,uint32_t num, uint8_t Len,uint8_t size)
  417. * 功        能:显示单个字符
  418. * 入口参数:
  419. x ,y坐标位置
  420. Sno 表示汉字数组中一个字的码所占的序号
  421. * 出口参数:无
  422. * 返回值  :无
  423. * 说        明:无
  424. ****************************************************************************/
  425. void OLED_Display_Num(uint8_t x,uint8_t y,uint32_t num, uint8_t len,uint8_t size)
  426. {
  427.         uint8_t i=0;
  428.         uint8_t endisplay=0;
  429.         uint8_t temp=0;
  430.         for(i = 0;i < len;i++)
  431.         {
  432.                 temp = (num / (OLED_POW(10,len-i-1)))%10;
  433.                 if(endisplay == 0 && i < len-1)
  434.                 {
  435.                         if(temp == 0)
  436.                         {
  437.                                 OLED_Display_onechar(x + (size / 2) * i,y,' ',size);
  438.                                 continue;
  439.                         }
  440.                         else
  441.                         {
  442.                                 endisplay = 1;
  443.                         }
  444.                 }
  445.                 OLED_Display_onechar(x + (size / 2) * i,y,temp + '0',size);
  446.         }
  447. }


  448. /****************************************************************************
  449. * 名        称:void OLED_Display_Picture(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t BMP[])
  450. * 功        能:显示一张图片
  451. * 入口参数:
  452. x0 ,y0,x1,y1图片的大小
  453. BMP[] 图片的码
  454. * 出口参数:无
  455. * 返回值  :无
  456. * 说        明:无
  457. ****************************************************************************/
  458. void OLED_Display_Picture(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t BMP[])
  459. {
  460.         uint16_t i=0;
  461.         uint8_t x,y;
  462.   if(y1 == 8)
  463.   {
  464.    y= y1/ 8;
  465.         }               
  466.         else
  467.         {
  468.                 y = y1/ 8 + 1;
  469.         }
  470.         for(y = y0;y < y1;y++)
  471.         {
  472.                 OLED_Set_Positon(x0,y);
  473.                 for(x = x0;x< x1; x++)
  474.                 {
  475.                         OLED_Write_Operate(OLED_Mode_Data,BMP[i++]);
  476.                 }       
  477.         }
  478. }
2、头文件

  1. #ifndef _OLED_H
  2. #define _OLED_H

  3. #include "..\inc\main.h"


  4. /*引脚连接
  5. PA4  CS  低电平有效
  6. PA5  SCLK(SPI1)
  7. PA6  RES/MISO  低电平有效
  8. PA7  MOSI
  9. PB0  DC
  10. Page0-7地址为B0-B7
  11. */


  12. #define MAX_COLUMN 128
  13. #define MAX_ROW    64

  14. #define SIZE16       16
  15. #define SIZE8        8

  16. #define OLED_Mode_Data  1  //数据模式
  17. #define OLED_Mode_Cmd   0  //命令模式

  18. #define OLED_Write_Data PB00_SETHIGH()   //写数据
  19. #define OLED_Write_Cmd  PB00_SETLOW() //写命令

  20. #define OLED_SPI_CLK                                                                           RCC_APB2_PERIPH_SPI1
  21. #define OLED_SPI_SCK_GPIO_CLK            RCC_AHB_PERIPH_GPIOA
  22. #define OLED_SPI_MOSI_GPIO_CLK           RCC_AHB_PERIPH_GPIOB

  23. #define OLED_SPI_APBClkENx               RCC_APBPeriphClk_Enable2

  24. //CS LOW or HIGH
  25. #define OLED_CS_Low             PA15_SETLOW()
  26. #define OLED_CS_High            PA15_SETHIGH()

  27. #define OLED_RST_High  PA06_SETHIGH()
  28. #define OLED_RST_Low   PA06_SETLOW()

  29. void OLED_Config(void);
  30. void OLED_GPIO_Init(void);
  31. void OLED_SPI_Init(void);
  32. void OLED_Init(void);
  33. uint8_t SPI1_WriteReadByte(uint8_t Data);
  34. uint8_t OLED_Write_Byte(uint8_t data);
  35. void OLED_Write_Operate(uint8_t mode,uint8_t data);
  36. void OLED_Display_Clear(void);
  37. void OLED_Set_Positon(uint8_t x,uint8_t y);
  38. void OLED_Display_on(void);
  39. void OLED_Display_off(void);

  40. void OLED_Display_onechar(uint8_t x,uint8_t y,uint8_t character,uint8_t size);
  41. void OLED_Display_string(uint8_t x,uint8_t y,uint8_t *str,uint8_t size);
  42. uint32_t OLED_POW(uint8_t m, uint8_t n);
  43. void OLED_Display_Num(uint8_t x,uint8_t y,uint32_t num, uint8_t len,uint8_t size);
  44. void OLED_Display_Chinese(uint8_t x,uint8_t y,uint8_t Sno);
  45. void OLED_Display_Picture(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t BMP[]);
  46. #endif
3、显示内容头文件

  1. #ifndef __FONT_H
  2. #define __FONT_H        


  3. /*PCtoLCD2002软件取模设置
  4. 阴码  列行式  逆向  点阵大小16 索引16
  5. 16进制  C51格式  前缀0x


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

  208. {0x00,0x00,0xF0,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0xF0,0x00,0x00,0x00},
  209. {0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x0F,0x00,0x00,0x00},/*"中",0*/

  210. {0x40,0x40,0x40,0x5F,0x55,0x55,0x55,0x75,0x55,0x55,0x55,0x5F,0x40,0x40,0x40,0x00},
  211. {0x00,0x40,0x20,0x0F,0x09,0x49,0x89,0x79,0x09,0x09,0x09,0x0F,0x20,0x40,0x00,0x00},/*"景",1*/

  212. {0x00,0xFE,0x02,0x42,0x4A,0xCA,0x4A,0x4A,0xCA,0x4A,0x4A,0x42,0x02,0xFE,0x00,0x00},
  213. {0x00,0xFF,0x40,0x50,0x4C,0x43,0x40,0x40,0x4F,0x50,0x50,0x5C,0x40,0xFF,0x00,0x00},/*"园",2*/

  214. {0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00},
  215. {0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x7F,0x88,0x88,0x88,0x88,0x9F,0x80,0xF0,0x00},/*"电",3*/


  216. {0x80,0x82,0x82,0x82,0x82,0x82,0x82,0xE2,0xA2,0x92,0x8A,0x86,0x82,0x80,0x80,0x00},
  217. {0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"子",4*/

  218. {0x24,0x24,0xA4,0xFE,0xA3,0x22,0x00,0x22,0xCC,0x00,0x00,0xFF,0x00,0x00,0x00,0x00},
  219. {0x08,0x06,0x01,0xFF,0x00,0x01,0x04,0x04,0x04,0x04,0x04,0xFF,0x02,0x02,0x02,0x00},/*"科",5*/

  220. {0x10,0x10,0x10,0xFF,0x10,0x90,0x08,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x08,0x00},
  221. {0x04,0x44,0x82,0x7F,0x01,0x80,0x80,0x40,0x43,0x2C,0x10,0x28,0x46,0x81,0x80,0x00},/*"技",6*/




  222. {0x08,0x08,0x08,0x08,0x88,0x78,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00},
  223. {0x20,0x10,0x48,0x46,0x41,0x41,0x41,0x41,0x7F,0x41,0x41,0x41,0x41,0x40,0x40,0x00},/*"左",12*/
  224. /* (16 X 16 , 宋体 )*/

  225. {0x08,0x08,0x08,0x08,0xC8,0x38,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00},
  226. {0x08,0x04,0x02,0x01,0xFF,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xFF,0x00,0x00,0x00},/*"右",13*/
  227. /* (16 X 16 , 宋体 )*/

  228. {0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00},
  229. {0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00},/*"上",14*/
  230. /* (16 X 16 , 宋体 )*/

  231. {0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x42,0x82,0x02,0x02,0x02,0x02,0x00},
  232. {0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x01,0x06,0x00,0x00,0x00},/*"下",15*/
  233. /* (16 X 16 , 宋体 )*/



  234. {0x04,0x04,0x84,0x74,0x4F,0x44,0xC4,0x44,0x44,0x44,0x04,0x00,0x04,0x02,0x09,0x08},
  235. {0x08,0x08,0x0F,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"左",0*/
  236. };


  237. char Hzk12X12[][32]={
  238.        
  239. {0x04,0x04,0x84,0x74,0x4F,0x44,0xC4,0x44,0x44,0x44,0x04,0x00,0x04,0x02,0x09,0x08},
  240. {0x08,0x08,0x0F,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"左",0*/
  241. /* (12 X 12 , 宋体 )*/

  242. {0x04,0x04,0x84,0xE4,0x5C,0x47,0x44,0x44,0x44,0xC4,0x04,0x00,0x02,0x01,0x00,0x0F},
  243. {0x04,0x04,0x04,0x04,0x04,0x0F,0x00,0x00},/*"右",1*/
  244. /* (12 X 12 , 宋体 )*/

  245. {0x00,0x00,0x00,0x00,0xFF,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x08,0x08,0x08,0x08},
  246. {0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0x00},/*"上",2*/
  247. /* (12 X 12 , 宋体 )*/

  248. {0x02,0x02,0x02,0x02,0xFE,0x02,0x12,0x22,0x42,0x82,0x02,0x00,0x00,0x00,0x00,0x00},
  249. {0x0F,0x00,0x00,0x00,0x00,0x01,0x00,0x00},/*"下",3*/
  250. /* (12 X 12 , 宋体 )*/
  251. };

  252. unsigned char **[] = {
  253. 0x00,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,
  254. 0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0x7C,0x7C,0x3C,
  255. 0x1C,0x9C,0x9C,0xCC,0xCC,0xCC,0xEC,0xE4,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
  256. 0xF0,0xF0,0xF4,0xFC,0xFC,0xEC,0xDC,0x9C,0x3C,0xFC,0xFC,0xFC,0xFC,0xF8,0x10,0x00,
  257. 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  258. 0xFF,0xFF,0x7F,0x3F,0x1F,0x0F,0x07,0x87,0xC3,0xE1,0xF0,0xF0,0xF8,0xFC,0xFE,0xFE,
  259. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  260. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xF1,0x0F,0xFF,0xFF,0x00,0x00,
  261. 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,0x0F,0x0F,0x07,0x03,
  262. 0x01,0xC0,0xE0,0xF0,0xF8,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  263. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  264. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xC0,0xFF,0xFF,0x00,0x00,
  265. 0x00,0xFF,0xFF,0xFF,0x7F,0x3F,0x0F,0x03,0x03,0x01,0x00,0x80,0xC0,0xE0,0xF0,0xE0,
  266. 0x81,0x01,0x01,0x01,0x01,0x01,0x01,0x39,0xFD,0xFD,0xFF,0xFF,0xFF,0xFF,0xFD,0xFD,
  267. 0xF9,0xF1,0xC1,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x39,0xFD,0xFD,0xFF,0xFF,0xFF,
  268. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x8F,0xF8,0xFF,0xFF,0xFF,0x00,0x00,
  269. 0x00,0x1F,0x03,0x01,0x00,0x00,0x00,0x00,0x80,0xF0,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,
  270. 0xFF,0xFE,0xF0,0xC0,0x00,0x00,0x00,0x00,0x01,0x07,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,
  271. 0xFF,0xFF,0xFF,0x1F,0xC4,0xC0,0x80,0x00,0x00,0x00,0x00,0x01,0x0F,0x1F,0xFF,0xFF,
  272. 0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x87,0xF1,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
  273. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  274. 0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xE0,0x00,0x00,0x00,0x00,0x00,0x01,0x0F,0x7F,0x7F,
  275. 0x8F,0xE3,0xFC,0xFE,0xFF,0xFF,0xFF,0xFE,0xE0,0xC0,0x00,0x00,0x00,0x00,0x01,0x07,
  276. 0x1F,0x1F,0x8F,0xE1,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
  277. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  278. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xE0,0xC0,0x00,0x00,0xC0,0xF8,0xFE,
  279. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xF0,0x80,0x00,0x00,0xC0,
  280. 0xE0,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
  281. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x0F,0x0F,0x0F,0x0F,
  282. 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,0x0F,0x0F,
  283. 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0E,0x0F,0x0F,
  284. 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x04,0x00,
  285. };
  286. #endif
4、测试主程序

  1. int32_t main(void)
  2. {
  3.     //配置RCC
  4.     RCC_Configuration();

  5.     //配置GPIO
  6.     GPIO_Configuration();
  7.                 //i2c_config();
  8.     //配置UART
  9.     UART_Configuration();
  10.                 OLED_Config();
  11.     printf("\r\n use CW32L031 simulate I2C READ EEPROM Example\r\n");
  12.                
  13.     while(1)
  14.     {

  15.                         GPIO_TogglePin(LED_GPIO_PORT, LED_GPIO_PINS);
  16.       Delay(0xFF);
  17.                         OLED_Display_Picture(0,0,64,8,(uint8_t *)**);
  18.                         OLED_Display_string(64,0,"  OLED  ",SIZE16);
  19.                         OLED_Display_string(64,2," example ",SIZE16);
  20.                         OLED_Display_string(64,4," on ",SIZE16);
  21.                         OLED_Display_string(64,6,"CW32L031",SIZE16);
  22.                        
  23.     }
  24. }
三、最后的显示效果如下

具体功耗待后续测量一下;
OLED.jpg



weifeng90 发表于 2023-11-13 07:30 来自手机 | 显示全部楼层
这个OLED屏以前的MP3就是用的这个啊
yangxiaor520 发表于 2023-11-13 08:20 来自手机 | 显示全部楼层
现在这个屏用的少了
 楼主| 怀揣少年梦 发表于 2023-11-13 08:34 | 显示全部楼层
weifeng90 发表于 2023-11-13 07:30
这个OLED屏以前的MP3就是用的这个啊

是嘛,我是最近这几年才接触这个屏幕的
 楼主| 怀揣少年梦 发表于 2023-11-13 08:35 | 显示全部楼层
yangxiaor520 发表于 2023-11-13 08:20
现在这个屏用的少了

尺寸小了点,不过在项目中还用到这个屏幕显示
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:一切皆有可能

45

主题

473

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部