標(biāo)題: STM32 IIC通信OLED 屏幕驅(qū)動(dòng) [打印本頁(yè)]

作者: 了咖啡公平    時(shí)間: 2019-7-22 03:33
標(biāo)題: STM32 IIC通信OLED 屏幕驅(qū)動(dòng)
OLED 屏幕驅(qū)動(dòng)代碼,親測(cè)有效,可以顯示文字,字符,字符串,圖片等
  1. #include "OLED.h"
  2. #include "delay.h"
  3. #include "CodeTable.h"
  4. void I2C_Configuration(void)
  5. {
  6.         I2C_InitTypeDef  I2C_InitStructure;
  7.         GPIO_InitTypeDef  GPIO_InitStructure;

  8.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);
  9.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

  10.         /*STM32F103C8T6D¾Æ¬μÄó2¼tI2C: PB6 -- SCL; PB7 -- SDA */
  11.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
  12.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  13.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;//I2C±ØDë¿a©êä3ö
  14.         GPIO_Init(GPIOB, &GPIO_InitStructure);

  15.         I2C_DeInit(I2C1);//ê1óÃI2C1
  16.         I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
  17.         I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
  18.         I2C_InitStructure.I2C_OwnAddress1 = 0x30;//Ö÷»úμÄI2CμØÖ·,
  19.         I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
  20.         I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
  21.         I2C_InitStructure.I2C_ClockSpeed = 400000;//400K

  22.         I2C_Cmd(I2C1, ENABLE);
  23.         I2C_Init(I2C1, &I2C_InitStructure);
  24. }
  25. void OLED_IIC_Start(void)
  26. {
  27.         OLED_IIC_SDA = 1;
  28.         OLED_IIC_SCL = 1;
  29.         delay_us(2);
  30.          OLED_IIC_SDA = 0;//START:when CLK is high,DATA change form high to low
  31.         delay_us(2);
  32.         OLED_IIC_SCL = 0;
  33. void  OLED_IIC_Stop(void)
  34. {
  35.         OLED_IIC_SCL = 0;
  36.         OLED_IIC_SDA = 0;//STOP:when CLK is high DATA change form low to high
  37.          delay_us(2);
  38.         OLED_IIC_SCL = 1;
  39.         OLED_IIC_SDA = 1;//·¢ËíI2C×üÏß½áêøDÅoÅ
  40.         delay_us(2);                                                                  
  41. }
  42. void I2C_Write_Byte(uint8_t addr,uint8_t data)
  43. {
  44.     while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));
  45.         
  46.         I2C_GenerateSTART(I2C1, ENABLE);
  47.         while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));

  48.         I2C_Send7bitAddress(I2C1, OLED_ADDRESS, I2C_Direction_Transmitter);
  49.         while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));

  50.         I2C_SendData(I2C1, addr);/
  51.         while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));

  52.         I2C_SendData(I2C1, data);/
  53.         while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
  54.         
  55.         I2C_GenerateSTOP(I2C1, ENABLE);/
  56. }
復(fù)制代碼

5-OLED.7z

194.43 KB, 下載次數(shù): 54, 下載積分: 黑幣 -5


作者: 00000a    時(shí)間: 2020-1-9 16:03
已下載,但是并不能顯示,是否需要添加更新顯示函數(shù)
作者: HWL0541    時(shí)間: 2020-2-15 13:06
頂樓主,辛苦了




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