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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機IIC時序及對IIC器件使用時的一些理解和源程序

[復制鏈接]
跳轉到指定樓層
#
IIC時序在多種通訊方式中是明顯比較復雜,他不僅在時間上有嚴格的要求,而且還具有多種模式。
新手往往對SCK,SDA還有讀寫應答時序很難理解,而且對主從機與接收發送機的關系很頭疼。
這次整理了一些常用程序和個人理解,以及IIC協議講解,希望對大家有幫助。

一、IIC通訊協議其實對大部分iic器件是通用的,但是它有不同的工作模式,比如說在單片機中,我們就學習了標準模式(PCF8591 A/D轉換芯片),快速模式(24C02存儲芯片),其實還有HS模式等等,目前我感覺得區別就是時間上的區別。


二、對于應答信號來說,雖然主機和從機的身份是固定的,但是接收方和發送方的身份是可以變化的,而且應答信號的產生是接收方發出的,所以比如說讀的時候,主機是接收方,從機是發送方,主機在讀完數據后,需要根據情況發出(非)應答信號;寫的時候則是相反的,需要從機作出應答。


三、接收從機應答的時序和讀時序其實很相似,都需要自從機接收數據。


SDA_IN與起始、終止及寫時序有關
SDA_OUT與應答、讀時序有關

單片機源程序如下:
  1. /**********************BST-V51實驗開發板例程************************
  2. *  平臺:BST-V51 + Keil U3 + STC89C52
  3. *  名稱:為IIC總線的基本驅動程序(此程序沒有寫主函數,只是一些IIC必備的子函數)
  4. *  晶振:11.0592MHZ
  5. *  說明:免費開源,不提供源代碼分析.
  6. ******************************************************************/

  7. #include<reg51.h>
  8. #include <intrins.h>
  9. #define uint unsigned int
  10. #define uchar unsigned char
  11. sbit sda=P2^0;                          //IO口定義
  12. sbit scl=P2^1;

  13. void nop()
  14. {
  15.         _nop_();
  16.         _nop_();
  17. }
  18. /////////24C02讀寫驅動程序////////////////////
  19. void delay1(unsigned int m)
  20. {        unsigned int n;
  21.           for(n=0;n<m;n++);
  22. }

  23. void init()  //24c02初始化子程序
  24. {
  25.         scl=1;
  26.         nop();
  27.         sda=1;
  28.         nop();
  29. }

  30. void start()        //啟動I2C總線
  31. {
  32.         sda=1;
  33.         nop();
  34.         scl=1;
  35.         nop();
  36.         sda=0;
  37.         nop();
  38.         scl=0;
  39.         nop();
  40. }

  41. void stop()         //停止I2C總線
  42. {
  43.         sda=0;
  44.         nop();
  45.         scl=1;
  46.         nop();
  47.         sda=1;
  48.         nop();
  49. }

  50. void writebyte(unsigned char j)  //寫一個字節
  51. {
  52.         unsigned char i,temp;
  53.            temp=j;
  54.            for (i=0;i<8;i++)
  55.    {
  56.            temp=temp<<1;
  57.            scl=0;
  58.            nop();
  59.            sda=CY;                //temp左移時,移出的值放入了CY中
  60.            nop();
  61.            scl=1;                //待sda線上的數據穩定后,將scl拉高
  62.            nop();
  63.    }
  64.    scl=0;
  65.    nop();
  66.    sda=1;
  67.    nop();
  68. }

  69. unsigned char readbyte()   //讀一個字節
  70. {
  71.    unsigned char i,j,k=0;
  72.    scl=0; nop(); sda=1;
  73.    for (i=0;i<8;i++)
  74.    {  
  75.                 nop(); scl=1; nop();
  76.               if(sda==1)
  77.                 j=1;
  78.               else
  79.                 j=0;
  80.               k=(k<<1)|j;
  81.                   scl=0;
  82.         }
  83.            nop();
  84.         return(k);
  85. }

  86. void clock()         //I2C總線時鐘
  87. {
  88.    unsigned char i=0;
  89.    scl=1;
  90.    nop();
  91.    while((sda==1)&&(i<255))
  92.              i++;
  93.    scl=0;
  94.    nop();
  95. }
復制代碼

所有資料51hei提供下載:
iic時序及講解.rar (1.4 MB, 下載次數: 43)
51單片機IIC常用函數.rar (1.04 KB, 下載次數: 35)


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:358100 發表于 2020-4-16 09:20 | 只看該作者
收藏學習學學。
回復

使用道具 舉報

樓主
ID:612010 發表于 2019-9-17 10:14 | 只看該作者
收藏學習一下
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91久久国产综合久久 | 99精品一区二区 | 九九免费视频 | 日韩电影一区 | www.午夜 | 国产成人久久av免费高清密臂 | 成人久久久久久久久 | 成人h片在线观看 | 日韩在线不卡视频 | 亚洲免费在线视频 | 国产精品久久久久久久久久久免费看 | 日韩成人免费视频 | 成人片免费看 | 逼逼网 | 亚洲精品天堂 | 男人天堂网址 | 在线久草 | 国产精品高潮呻吟久久 | 日韩高清一区二区 | 国产精品免费一区二区三区四区 | 日韩精品一区二区三区老鸭窝 | 精品一二| 99热精品国产 | 欧美日一区 | 午夜男人天堂 | 一级黄色毛片 | 999视频在线播放 | 91成人午夜性a一级毛片 | 麻豆成人在线视频 | 亚洲高清免费 | 日韩视频观看 | 午夜私人影院在线观看 | 区一区二区三在线观看 | 精品国产一区二区三区久久久四川 | 久久99精品久久久久久青青日本 | 91精产国品一二三区 | 国产在线精品一区二区三区 | 欧美一区二区三区在线免费观看 | 成人网av | 久久av资源网 | 欧美日韩综合 |