找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 2173|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

STM32 IIC通信OLED 屏幕驅(qū)動

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:394719 發(fā)表于 2019-7-22 03:33 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
OLED 屏幕驅(qū)動代碼,親測有效,可以顯示文字,字符,字符串,圖片等
  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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:541451 發(fā)表于 2020-1-9 16:03 | 只看該作者
已下載,但是并不能顯示,是否需要添加更新顯示函數(shù)
回復(fù)

使用道具 舉報

板凳
ID:91165 發(fā)表于 2020-2-15 13:06 | 只看該作者
頂樓主,辛苦了
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表