欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 基于HC32V103開發板的OLED顯示驅動 [打印本頁]

作者: jinglixixi    時間: 2020-10-27 00:17
標題: 基于HC32V103開發板的OLED顯示驅動
OLED屏是一種自身發光的顯示器件,它有許多種類,如按色彩分,可分為單色屏、雙色屏及彩色屏等;按尺寸分,可分為0.91'0.96'屏等;按接口方式分,可分為I2C接口和SPI接口等。
其中,以I2C接口的OLED屏最有特點,它只用2I/O口就可完成顯示任務,且比數碼管所顯示的內容要豐富。
在掌握GPIO口使用的基礎上,就可十分輕松地實現驅動OLED屏顯示的目標。
在這里OLED屏與MCU的連接關系為:
SCL---PA2
SDA--- PA3
驅動OLED屏所定義的輸出高低電平的語句為:
#define SCL_high GPIO_WriteBit(GPIOA, GPIO_Pin_2, Bit_SET)
#define SCL_low  GPIO_WriteBit(GPIOA, GPIO_Pin_2, Bit_RESET)
#define SDA_high GPIO_WriteBit(GPIOA, GPIO_Pin_3, Bit_SET)
#define SDA_low  GPIO_WriteBit(GPIOA, GPIO_Pin_3, Bit_RESET)
配置2個引腳為輸出功能的函數為:
void OLED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;                  //定義一個GPIO_InitTypeDef類型的結構體
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//使能與LED相關的GPIO端口時鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3; //配置GPIO引腳
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      //設置GPIO模式為推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     //設置GPIO口輸出速度
GPIO_Init(GPIOA,&GPIO_InitStructure);                  //調用庫函數,初始化GPIOA
GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_3);           //設置引腳輸出高電平
}
在參考廠家提供OLED屏驅動例程的情況下,可以快速地完成程序的移植。
輔助驅動的基本函數為:
void IIC_Start()
{
   SCL_high;
   SDA_high;
   SDA_low;
   SCL_low;
}
void IIC_Stop()
{
   SCL_low;
   SDA_low;
   SCL_high;
   SDA_high;
}
OLED屏的初始化函數為:
void Initial_M096128x64_ssd1306()
{
    Write_IIC_Command(0xAE);   //displayoff
    Write_IIC_Command(0x20);    //SetMemory Addressing Mode
    Write_IIC_Command(0x10);    //00,HorizontalAddressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode(RESET);11,Invalid
    Write_IIC_Command(0xb0);//Set Page Start Address for Page Addressing Mode,0-7
    Write_IIC_Command(0xc8);//Set COM Output Scan Direction
    Write_IIC_Command(0x00);//---set low column address
    Write_IIC_Command(0x10);//---set high column address
    Write_IIC_Command(0x40);//--set start line address
    Write_IIC_Command(0x81);//--set contrast control register
    Write_IIC_Command(0xdf);
    Write_IIC_Command(0xa1);//--set segment re-map 0 to 127
    Write_IIC_Command(0xa6);//--set normal display
    Write_IIC_Command(0xa8);//--set multiplex ratio(1 to 64)
    Write_IIC_Command(0x3F);//
    Write_IIC_Command(0xa4);//0xa4,Output follows RAM content;0xa5,Output ignores RAMcontent
    Write_IIC_Command(0xd3);//-set display offset
    Write_IIC_Command(0x00);//-not offset
    Write_IIC_Command(0xd5);//--set display clock divide ratio/oscillator frequency
    Write_IIC_Command(0xf0);//--set divide ratio
    Write_IIC_Command(0xd9);//--set pre-charge period
    Write_IIC_Command(0x22); //
    Write_IIC_Command(0xda);//--set com pins hardware configuration
    Write_IIC_Command(0x12);
    Write_IIC_Command(0xdb);//--set vcomh
    Write_IIC_Command(0x20);//0x20,0.77xVcc
    Write_IIC_Command(0x8d);//--set DC-DC enable
    Write_IIC_Command(0x14);//
    Write_IIC_Command(0xaf);//--turn on oled panel
}
顯示圖片的函數為:
void Picture()
{
  unsigned char x,y;
  unsigned int i=0;
  for(y=0;y<8;y++)
  {
      Write_IIC_Command(0xb0+y);
      Write_IIC_Command(0x0);
      Write_IIC_Command(0x10);
      for(x=0;x<132;x++)
      {
          Write_IIC_Data(show[i++]);
      }
  }
}
經程序編譯,其結果如圖1所示。

1 完成編譯
在通過編譯后,使用下載工具即可完成下載,其界面如圖2所示。

2 完成下載
在完成下載,程序的運行效果如圖3所示。

3 運行效果





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1