国产毛片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://www.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
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜视频在线网站 | 久久久久国产精品 | 九九自拍 | 国产精品不卡无毒在线观看 | 日韩一区二区三区精品 | 中文在线免费不卡视频 | 五月天最新网站 | 国产香蕉75在线播放 | 91手机视频在线观看 | 国产在线麻豆自在拍91精品 | 日本黄在线观看免费播放 | 日韩亚洲欧美在线观看 | 91蜜臀视频 | 99视频全部看免费观 | 亚洲精品香蕉婷婷在线观看 | 亚洲国产成人久久99精品 | 久久精品一本到99热免费 | 美国免费黄色片 | 9久热| 日本在线免费观看视频 | 欧美成人亚洲综合精品欧美激情 | 久久免费精品视频 | 亚洲国产天堂在线观看 | 国产精品毛片高清在线完整版 | 2022国产男人亚洲欧美天堂 | 亚洲网站色 | 丁香婷婷影音先锋5566 | 国产在线看不卡一区二区 | 日本岛国片在线观看 | 青青日| 国产激情视频 | 午夜网页| 久久久噜噜噜www成人网 | 欧美xxxxx性视频 | 久久免费精品高清麻豆 | 亚洲一区二区三区不卡在线播放 | 亚洲第一成年网站大全亚洲 | 日韩特黄| 国产又黄又a又潮娇喘视频 国产又粗又爽又大又长免费视 | 日本不卡一区二区三区在线观看 | 女性爽爽影院免费观看麻豆 |