[资源分享] 基于AutoChips 7801x开发板的OLED屏显示

[复制链接]
1024|2
 楼主| jinglixixi 发表于 2020-8-16 10:44 | 显示全部楼层 |阅读模式
本帖最后由 jinglixixi 于 2020-8-16 10:46 编辑

OLED屏是一种小巧的显示器件,特别是I2C接口的OLED 屏更能节省I/O口资源。本次使用的是一款0.91'的单色OLED屏,它比常规的OLED屏要长且窄,故更适于显示信息和参数,也更适于用在便携装置上。
若采用AutoChips7801x开发板来驱动它可使用开发板上的JP9接口来连接,其中SCLK连接PB13,而SDIN连接PC4,所产生的显示效果如图所示。
定义相关引脚输出高低电平的语句为:
#defineOLED_SCLK_Set()  GPIO_SetPinLevel(GPIOB,GPIO_PIN13, GPIO_LEVEL_HIGH);
#define OLED_SCLK_Clr()  GPIO_SetPinLevel(GPIOB, GPIO_PIN13,GPIO_LEVEL_LOW);

#defineOLED_SDIN_Set()  GPIO_SetPinLevel(GPIOC, GPIO_PIN4,GPIO_LEVEL_HIGH);
#defineOLED_SDIN_Clr()  GPIO_SetPinLevel(GPIOC,GPIO_PIN4, GPIO_LEVEL_LOW);

a.jpg
显示效果图


引脚的功能配置函数为:
  1. void LCD_GPIO_Cogfig(void)
  2. {
  3.        GPIO_SetFunc(GPIOC, GPIO_PIN4, GPIO_FUN0);
  4.        GPIO_SetFunc(GPIOB, GPIO_PIN13, GPIO_FUN0);
  5.       
  6.        GPIO_SetDir(GPIOC, GPIO_PIN4, GPIO_OUT);
  7.        GPIO_SetDir(GPIOB, GPIO_PIN13, GPIO_OUT);
  8. }


OLED屏初始化函数为:
  1. void OLED_Init(void)
  2. {

  3.        LCD_GPIO_Cogfig();
  4.       
  5.        OLED_SCLK_Set();
  6.        OLED_SDIN_Set();

  7.       mdelay(800);
  8.       OLED_WR_Byte(0xAE,OLED_CMD);//--display off

  9.       OLED_WR_Byte(0x40,OLED_CMD);//--set start line address
  10.       OLED_WR_Byte(0xB0,OLED_CMD);//--set page address
  11.       
  12.       OLED_WR_Byte(0xC8,OLED_CMD);//Com scan direction
  13.       
  14.       OLED_WR_Byte(0x81,OLED_CMD); // contract control
  15.       OLED_WR_Byte(0xFF,OLED_CMD);//--128  
  16.       OLED_WR_Byte(0xA1,OLED_CMD);//set segment remap
  17.       OLED_WR_Byte(0xA6,OLED_CMD);//--normal / reverse
  18.       OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
  19.       OLED_WR_Byte(0x1F,OLED_CMD);//--1/32 duty
  20.       
  21.       OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset
  22.       OLED_WR_Byte(0x00,OLED_CMD);//
  23.       
  24.       OLED_WR_Byte(0xD5,OLED_CMD);//set osc division
  25.       OLED_WR_Byte(0xf0,OLED_CMD);//
  26.       
  27.       OLED_WR_Byte(0xD9,OLED_CMD);//Set Pre-Charge Period
  28.       OLED_WR_Byte(0x22,OLED_CMD);//
  29.       
  30.       OLED_WR_Byte(0xDA,OLED_CMD);//set com pin configuartion
  31.       OLED_WR_Byte(0x02,OLED_CMD);//
  32.       
  33.       OLED_WR_Byte(0xDB,OLED_CMD);//set Vcomh
  34.       OLED_WR_Byte(0x49,OLED_CMD);//
  35.       
  36.       OLED_WR_Byte(0x8D,OLED_CMD);//set charge pump enable
  37.       OLED_WR_Byte(0x14,OLED_CMD);//
  38.       
  39.       OLED_WR_Byte(0xAF,OLED_CMD);//--turn on oled panel
  40.       
  41.       OLED_Clear();
  42. }


字符串显示函数为:
  1. void OLED_ShowString(uint8_t x,uint8_t y,uint8_t *chr,uint8_t Char_Size)
  2. {
  3.        unsigned char j=0;
  4.        while (chr[j]!='\0')
  5.        {            OLED_ShowChar(x,y,chr[j],Char_Size);
  6.                      x+=8;
  7.                      if(x>120){x=0;y+=2;}
  8.                      j++;
  9.        }
  10. }


汉字显示函数为:
  1. void OLED_ShowCHinese(uint8_t x,uint8_t y,uint8_t no)
  2. {                           
  3.          uint8_t t;
  4.          OLED_Set_Pos(x,y);  
  5.          for(t=0;t<16;t++)
  6.          {
  7.                             OLED_WR_Byte(Hzk[no][t],OLED_DATA);
  8.          }
  9.          OLED_Set_Pos(x,y+1);   
  10.           for(t=0;t<16;t++)
  11.           {
  12.                            OLED_WR_Byte(Hzk[no][16+t],OLED_DATA);   
  13.           }
  14. }


zeshoufx 发表于 2020-8-18 08:50 | 显示全部楼层
谢谢分享【基于AutoChips 7801x开发板的OLED屏显示】
 楼主| jinglixixi 发表于 2020-8-18 08:57 | 显示全部楼层
zeshoufx 发表于 2020-8-18 08:50
谢谢分享【基于AutoChips 7801x开发板的OLED屏显示】

感谢支持!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

521

主题

2949

帖子

39

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