久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2387|回復: 0
打印 上一主題 下一主題
收起左側

STM32F103ZET6_OLED096_IIC驅動 源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:640768 發表于 2021-8-13 16:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
STM32—OLED096_IIC驅動
  1. #include "myiic.h"
  2. #include "delay.h"

  3. //初始化IIC
  4. void IIC_Init(void)
  5. {                                             
  6.         GPIO_InitTypeDef GPIO_InitStructure;
  7.         RCC_APB2PeriphClockCmd(        RCC_APB2Periph_GPIOB, ENABLE );        //使能GPIOB時鐘
  8.           
  9.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
  10.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //推挽輸出
  11.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  12.         GPIO_Init(GPIOB, &GPIO_InitStructure);
  13.         GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7);         //PB6,PB7 輸出高
  14. }
  15. //產生IIC起始信號
  16. void IIC_Start(void)
  17. {
  18.         SDA_OUT();     //sda線輸出
  19.         IIC_SDA=1;                    
  20.         IIC_SCL=1;
  21.         delay_us(4);
  22.         IIC_SDA=0;//START:when CLK is high,DATA change form high to low
  23.         delay_us(4);
  24.         IIC_SCL=0;//鉗住I2C總線,準備發送或接收數據
  25. }          
  26. //產生IIC停止信號
  27. void IIC_Stop(void)
  28. {
  29.         SDA_OUT();//sda線輸出
  30.         IIC_SCL=0;
  31.         IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
  32.         delay_us(4);
  33.         IIC_SCL=1;
  34.         IIC_SDA=1;//發送I2C總線結束信號
  35.         delay_us(4);                                                                  
  36. }
  37. //等待應答信號到來
  38. //返回值:1,接收應答失敗
  39. //        0,接收應答成功
  40. u8 IIC_Wait_Ack(void)
  41. {
  42.         u8 ucErrTime=0;
  43.         SDA_IN();      //SDA設置為輸入  
  44.         IIC_SDA=1;delay_us(1);          
  45.         IIC_SCL=1;delay_us(1);         
  46.         while(READ_SDA)
  47.         {
  48.                 ucErrTime++;
  49.                 if(ucErrTime>250)
  50.                 {
  51.                         IIC_Stop();
  52.                         return 1;
  53.                 }
  54.         }
  55.         IIC_SCL=0;//時鐘輸出0           
  56.         return 0;  
  57. }
  58. //產生ACK應答
  59. void IIC_Ack(void)
  60. {
  61.         IIC_SCL=0;
  62.         SDA_OUT();
  63.         IIC_SDA=0;
  64.         delay_us(2);
  65.         IIC_SCL=1;
  66.         delay_us(2);
  67.         IIC_SCL=0;
  68. }
  69. //不產生ACK應答                    
  70. void IIC_NAck(void)
  71. {
  72.         IIC_SCL=0;
  73.         SDA_OUT();
  74.         IIC_SDA=1;
  75.         delay_us(2);
  76.         IIC_SCL=1;
  77.         delay_us(2);
  78.         IIC_SCL=0;
  79. }                                                                              
  80. //IIC發送一個字節
  81. //返回從機有無應答
  82. //1,有應答
  83. //0,無應答                          
  84. void IIC_Send_Byte(u8 txd)
  85. {                        
  86.     u8 t;   
  87.         SDA_OUT();             
  88.     IIC_SCL=0;//拉低時鐘開始數據傳輸
  89.     for(t=0;t<8;t++)
  90.     {              
  91.         IIC_SDA=(txd&0x80)>>7;
  92.         txd<<=1;           
  93.                 delay_us(2);   //對TEA5767這三個延時都是必須的
  94.                 IIC_SCL=1;
  95.                 delay_us(2);
  96.                 IIC_SCL=0;       
  97.                 delay_us(2);
  98.     }         
  99. }             
  100. //讀1個字節,ack=1時,發送ACK,ack=0,發送nACK   
  101. u8 IIC_Read_Byte(unsigned char ack)
  102. {
  103.         unsigned char i,receive=0;
  104.         SDA_IN();//SDA設置為輸入
  105.     for(i=0;i<8;i++ )
  106.         {
  107.         IIC_SCL=0;
  108.         delay_us(2);
  109.                 IIC_SCL=1;
  110.         receive<<=1;
  111.         if(READ_SDA)receive++;   
  112.                 delay_us(1);
  113.     }                                         
  114.     if (!ack)
  115.         IIC_NAck();//發送nACK
  116.     else
  117.         IIC_Ack(); //發送ACK   
  118.     return receive;
  119. }

復制代碼

代碼下載: STM32F103ZET6_OLED096_IIC驅動.7z (192.67 KB, 下載次數: 47)

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www.久久 | 久久综合婷婷 | 999久久久久久久久6666 | 亚洲欧美日韩精品久久亚洲区 | 狠狠av| 一区二区三区在线播放 | 亚洲a一区二区 | 精久久久久 | 久久精品色欧美aⅴ一区二区 | 91精品国产日韩91久久久久久 | 国产美女在线观看 | 中文字幕韩在线第一页 | 成人免费观看男女羞羞视频 | 亚洲精品一二三 | 亚洲91视频 | 日韩在线小视频 | 日本久久综合网 | 亚洲一区二区三区在线播放 | 午夜av电影| 午夜私人影院 | 午夜成人在线视频 | 毛片大全 | 91 视频网站| 久久99精品久久久久蜜桃tv | 久久国产激情视频 | a在线观看 | 日韩一区二区三区视频 | 一区二区中文字幕 | 免费观看a级毛片在线播放 黄网站免费入口 | 国产a视频 | 国产麻豆乱码精品一区二区三区 | 亚洲精品一| 中文字幕1区2区3区 亚洲国产成人精品女人久久久 | 国产午夜精品久久久 | 欧美性吧 | 国产久 | 在线色网 | 久久久免费精品 | 国产高清精品网站 | 中文字幕第一页在线 | 欧美一级视频 |