国产毛片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視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本成人网址| 日本视频高清| 天天狠狠| 亚洲品质水蜜桃| YELLOW视频在线观看免费版高清| 嫩草AV久久伊人妇女| 在教室轮流被澡高H林萌| 欧美一区二区久久精品| 四虎影院大全| 特黄特黄黄色大片| 99久久999久久久综合精品涩| 久久精品久久精品| 天天操天天干天天爽| 亚洲综合图片区| 青青青国产在线观看免费网站| 有码日韩| 97色伦图片7778久久| 麻豆产精品一二三产区区| 亚洲图片 中文字幕| 色接久久| 色婷婷中文字幕| 一区二区在线视频观看| 精品无码三级在线观看视频| 中文字幕在线观看亚洲日韩| 欧美在线中文| 亚洲综合偷自成人网第页色| 一个人免费在线观看www| 久久成人永久免费播放| 人人搞人人干| 日本中文字幕在线观看| 色综合久久天天综合绕观看| 在线看免费| 男gv纯肉免费视频| 亚洲欧美日韩综合在线| 日本成年人免费看| 色啪久久婷婷综合激情| japanese幼儿videos| 让男人玩尿道的女人| 欧美色xx| 日韩在线视频在线观看| 亚洲精品精品一区|