国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

例說單片機數據通信之模擬IIC通信

發布時間:2014-10-15 15:00    發布者:看門狗
關鍵詞: 單片機 , SDA , I2C
作者:Liklon

  IIC 即Inter-Integrated Circuit(集成電路總線),這種總線類型是由飛利浦半導體公司在八十年代初設計出來的,主要是用來連接整體電路(ICS) ,IIC是一種多向控制總線,也就是說多個芯片可以連接到同一總線結構下,同時每個芯片都可以作為實時數據傳輸的控制源。這種方式簡化了信號傳輸總線。

  I2C串行總線一般有兩根信號線,一根是雙向的數據線SDA,另一根是時鐘線SCL。所有接到I2C總線設備上的串行數據SDA都接到總線的SDA上,各設備的時鐘線SCL接到總線的SCL上。以51單片機和AT24C02介紹IO模擬IIC通信。

  啟始與停止



  啟始條件:必須在所有命令之前發送,時鐘線保持高電平期間,數據線電平從高到低的跳變作為IIC總線的啟動信號。

  停止條件:時鐘線保持高電平期間,數據線電平從低到高的跳變作為IIC總線的停止信號。操作結束時必須發送停止條件。

  void startbit()

  {

  clrSCL();

  setSDA();

  setSCL(); //時鐘為高時

  clrSDA(); //SDA下降沿

  clrSCL();

  }

  void stopbit()

  {

  clrSCL();

  clrSDA();

  setSCL(); //時鐘為高時

  setSDA(); //SDA上升沿

  clrSCL();

  }

  應答信號



  每次數據傳送成功后,從設備發送一個應答信號。當第九個時鐘信號產生時,產生應答信號的器件將SDA下拉為低,通知已經接收到8位數據。

  void respond()

  {

  unsigned char i = 0;

  setSDA(); //釋放總線

  setSCL(); //時鐘

  while(SDA != 0)

  {

  i++;

  if(i > 200) break;

  }

  clrSCL();

  }

  讀寫字節操作



  IIC總線協議定義如下:

  1. 只有在總線非忙時才被允許進行數據傳輸。

  2. 在數據傳輸時,當時鐘線為高電平,數據線必須為固定狀態,不允許跳變,時鐘線為高電平時數據線的任何電平變化都會被當做總線的啟動或停止條件

  void writeByte(unsigned char dat)

  {

  unsigned char i = 0;

  for(i = 0;i < 8;i++)

  {

  clrSCL(); //拉低時鐘線,改變SDA線的電平

  if(dat & 0x80) setSDA();

  else clrSDA();

  setSCL(); //SDA電平穩定后,拉高時鐘線

  dat <<= 1;

  }

  clrSCL();

  }

  unsigned char readByte()

  {

  unsigned char i = 0,tmp = 0;

  for(i = 0;i < 8;i++)

  {

  clrSCL(); //拉低時鐘線

  tmp <<= 1; //準備讀取數據

  setSCL(); //拉高時鐘線

  if(SDA) tmp |= 0x01;

  }

  clrSCL();

  return tmp;

  }

  AT24C02讀寫操作



  void writeAT24XX(unsigned char addr,unsigned char dat)

  {

  startbit(); //起始信號

  writeByte(0xa0); //器件地址

  respond();

  writeByte(addr); //器件內部地址

  respond();

  writeByte(dat); //數據

  respond();

  stopbit(); //停止

  }



  unsigned char readAT24XX(unsigned char addr)

  {

  unsigned char dat;

  startbit(); //起始信號

  writeByte(0xa0); //器件地址

  respond();

  writeByte(addr); //器件內部地址

  respond();

  startbit(); //起始信號

  writeByte(0xa1); //器件地址

  respond();

  dat = readByte(); //數據

  stopbit(); //停止

  return dat;

  }

  主函數部分內容以及程序運行效果:

  void main()

  {

  unsigned char dat;

  initUart();

  sendString("UART INIT OK!!!\n"); //串口通信初始化

  sendString("write 0x05 --> addr 0x00 \n");//寫入5到期間內部地址0

  writeAT24XX(0x00,0x05); //寫入數據

  sendString("read dat <-- addr 0x00 \n"); //讀出寫入數據

  dat = readAT24XX(0x00); //讀出數據

  sendString("dat-->"); //打印

  sendByte(dat + '0');

  while(1);

  }




本文地址:http://m.qingdxww.cn/thread-133438-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
  • Dev Tool Bits——使用條件軟件斷點宏來節省時間和空間
  • Dev Tool Bits——使用DVRT協議查看項目中的數據
  • Dev Tool Bits——使用MPLAB® Data Visualizer進行功率監視
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 毛片免费在线观看网站 | 大伊香蕉精品一区视频在线 | 欧美一区二区视频三区 | 狠狠久久综合 | 伊伊人成亚洲综合人网香 | 2019国产精品 | 国产产一区二区三区久久毛片国语 | 色丁香在线 | 九九在线视频 | 在线观看日韩视频 | 91新网站 | 国产亚洲成在线播放va | 被高跟鞋调教丨vk | 亚洲综合久 | 国产一区二区三区在线观看影院 | 欧美a区| 国产三级国产精品国产国在线观看 | www.欧美精品 | 重口婴交h小黄文 | 麻豆爱爱 | 成人国产精品一区二区网站 | 成人在线网址 | 色在线综合 | 不卡欧美| 亚洲激情视频在线 | 日本色图视频 | 99久久www免费人成精品 | 在线三级播放 | 亚洲免费在线观看视频 | 无限资源中文免费 | 欧美视频在线观看免费 | 亚洲视频99 | 国产精品亚洲欧美日韩一区在线 | 国产精品视频免费 | 欧美视频1 | 日本精品一区二区三区在线观看 | 欧美在线视频免费播放 | 青青青手机在线观看 | 黑人一级 | 亚洲精品短视频 | 国产成人精品一区二区 |