[活动专区] 【杰发科技AC7802x测评】+OLED屏显示驱动

[复制链接]
 楼主| jinglixixi 发表于 2023-7-18 17:30 | 显示全部楼层 |阅读模式
<
#申请原创#
在开发板上配有一个OLED屏接口,见图1所示,利用它可直接来连接一个0.96寸的准双色OLED屏。
1.jpg
图1  OLED接口

值得注意的是,OLED屏所用的引脚是与AT24C02所共享的!

OLED屏与开发板的具体连接关系为:
SCL---PB7
SDA---PB8

所有引脚输出高低电平的定义语句为:
#defineSCL_high    GPIO_SetPinLevel(GPIOB,GPIO_PIN7, GPIO_LEVEL_HIGH)
#defineSCL_low     GPIO_SetPinLevel(GPIOB,GPIO_PIN7, GPIO_LEVEL_LOW)
#defineSDA_high    GPIO_SetPinLevel(GPIOB,GPIO_PIN8, GPIO_LEVEL_HIGH)
#defineSDA_low     GPIO_SetPinLevel(GPIOB,GPIO_PIN8, GPIO_LEVEL_LOW)

OLED屏的引脚配置函数为:
  1. void GPIO_OLEDInit(void)
  2. {
  3.     GPIO_SetFunc(GPIOB, GPIO_PIN7, GPIO_FUN0);
  4.     GPIO_SetFunc(GPIOB, GPIO_PIN8, GPIO_FUN0);
  5.     GPIO_SetDir(GPIOB, GPIO_PIN7, GPIO_OUT);
  6.     GPIO_SetDir(GPIOB, GPIO_PIN8, GPIO_OUT);
  7. }
OLED屏的初始化函数为:
  1. void OLED_Init(void)
  2. {
  3.     OLED_WR_Byte(0xAE,OLED_CMD);
  4.     OLED_WR_Byte(0x02,OLED_CMD);
  5.     OLED_WR_Byte(0x10,OLED_CMD);
  6.     OLED_WR_Byte(0x40,OLED_CMD);
  7.     OLED_WR_Byte(0x81,OLED_CMD);
  8.     OLED_WR_Byte(0xff,OLED_CMD);
  9.     OLED_WR_Byte(0xA1,OLED_CMD);
  10.     OLED_WR_Byte(0xC8,OLED_CMD);
  11.     OLED_WR_Byte(0xA6,OLED_CMD);
  12.     OLED_WR_Byte(0xA8,OLED_CMD);
  13.     OLED_WR_Byte(0x3f,OLED_CMD);
  14.     OLED_WR_Byte(0xD3,OLED_CMD);
  15.     OLED_WR_Byte(0x00,OLED_CMD);
  16.     OLED_WR_Byte(0xd5,OLED_CMD);
  17.     OLED_WR_Byte(0x80,OLED_CMD);
  18.     OLED_WR_Byte(0xD9,OLED_CMD);
  19.     OLED_WR_Byte(0xF1,OLED_CMD);
  20.     OLED_WR_Byte(0xDA,OLED_CMD);
  21.     OLED_WR_Byte(0x12,OLED_CMD);
  22.     OLED_WR_Byte(0xDB,OLED_CMD);
  23.     OLED_WR_Byte(0x40,OLED_CMD);
  24.     OLED_WR_Byte(0x20,OLED_CMD);
  25.     OLED_WR_Byte(0x02,OLED_CMD);
  26.     OLED_WR_Byte(0x8D,OLED_CMD);
  27.     OLED_WR_Byte(0x14,OLED_CMD);
  28.     OLED_WR_Byte(0xA4,OLED_CMD);
  29.     OLED_WR_Byte(0xA6,OLED_CMD);
  30.     OLED_WR_Byte(0xAF,OLED_CMD);
  31.     OLED_WR_Byte(0xAF,OLED_CMD);
  32.     OLED_Clear();
  33.     OLED_Set_Pos(0,0);
  34. }
OLED屏的清屏函数为:
  1. void OLED_Clear(void)
  2. {
  3.     uint8_t i,n;
  4.     for(i=0;i<8;i++)
  5.     {
  6.         OLED_WR_Byte (0xb0+i,OLED_CMD);
  7.         OLED_WR_Byte (0x00,OLED_CMD);
  8.         OLED_WR_Byte (0x10,OLED_CMD);
  9.         for(n=0;n<128;n++) OLED_WR_Byte(0,OLED_DATA);
  10.     }
  11. }
OLED屏的字符串显示函数为:
  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. int main(void)
  2. {
  3.     InitDelay();
  4.     InitDebug();
  5.     GPIO_LedInit();
  6.     TIMER_PrdInit();
  7.     GPIO_OLEDInit();
  8.     OLED_Init();
  9.     OLED_Clear();
  10.     OLED_ShowString(0,0,"AC7802x Test",16);
  11.     OLED_ShowString(0,4,"jinglixixi",16);
  12.     while (1)
  13.     {
  14.          GPIO_ToggleLedPrd();
  15.     }
  16. }

2.jpg
图2  显示效果

有了显示功能,再测试开发板的其它功能就方便了许多。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

518

主题

2933

帖子

39

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