51xlf 发表于 2022-7-24 15:47

【N32G430开发板试用】+驱动0.96OLED

@安小芯
这里用N32G430实现对0.96寸的OLED的驱动。

在工程代码中使用的是PC13---SCL,PC14---SDA。
使用的是宏定义,方便后期修改和移植代码使用。
#define OLED_SCLK_Pin GPIO_PIN_13
#define OLED_SCLK_GPIO_Port GPIOC
#define OLED_SDIN_Pin GPIO_PIN_14
#define OLED_SDIN_GPIO_Port GPIOC对SCL和SDA的操作,
#define OLED_SCLK_Clr() GPIO_Pins_Reset(OLED_SCLK_GPIO_Port,OLED_SCLK_Pin)//SCL拉低
#define OLED_SCLK_Set() GPIO_Pins_Set(OLED_SCLK_GPIO_Port,OLED_SCLK_Pin)//SCL拉高

#define OLED_SDIN_Clr() GPIO_Pins_Reset(OLED_SDIN_GPIO_Port,OLED_SDIN_Pin)//SDA拉低
#define OLED_SDIN_Set() GPIO_Pins_Set(OLED_SDIN_GPIO_Port,OLED_SDIN_Pin)//SDA拉高下面开始初始化IO口的代码
    GPIO_InitType GPIO_InitStructure;

    RCC_AHB_Peripheral_Clock_Enable(RCC_AHB_PERIPH_GPIOC);;
    GPIO_InitStructure.Pin = OLED_SCLK_Pin|OLED_SDIN_Pin;
    GPIO_InitStructure.GPIO_Mode   = GPIO_PULL_UP;;
    GPIO_InitStructure.GPIO_Current= GPIO_DS_8MA;;
    GPIO_InitStructure.GPIO_Slew_Rate=GPIO_SLEW_RATE_FAST;
    GPIO_Peripheral_Initialize(GPIOC, &GPIO_InitStructure);其他的代码都是可以直接参考oled提供的例程即可。
这里只是提示如何实现汉字和英文的混合显示了。
void OLED_ShowStringCN(uint8_t x,uint8_t y,uint8_t *chr,uint8_t mode)
{   unsigned short k;
    unsigned char i,j;
    while(*chr) {
      if((*chr) < 128)
      {
            OLED_ShowChar(x,y,*chr,16,mode);
            x+=8;
            chr++;
      } else {

            for (k=0; k<hz16_num; k++)
            {
                if ((hz16.Index==*(chr))&&(hz16.Index==*(chr+1)))
                {
                  for(i=0; i<16; i++)
                  {
                        for(j=0; j<8; j++)
                        {
                            if(hz16.Msk&(0x80>>j))        OLED_DrawPoint(x+j,y+i,mode);
                            else {
                              OLED_DrawPoint(x+j,y+i,!mode);;
                            }
                        }
                        for(j=0; j<8; j++)
                        {
                            if(hz16.Msk&(0x80>>j))        OLED_DrawPoint(x+j+8,y+i,mode);
                            else
                            {
                              OLED_DrawPoint(x+j+8,y+i,!mode);;
                            }
                        }
                  }
                }
            }
            chr+=2;
            x+=16;
      }

    }
}在main函数中初始化OLED即可,
    OLED_Init();
    OLED_Clear();
    OLED_ShowStringCN(0,0,"国民技术N32G430",1);
    OLED_ShowStringCN(0,16,"BBS.21ic.com",1);
    OLED_Refresh();

取字模的方法。


源代码

页: [1]
查看完整版本: 【N32G430开发板试用】+驱动0.96OLED