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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于PCF8591尋址

[復制鏈接]
跳轉到指定樓層
樓主
最近看到網上很多PCF8591程序,如下
  • /* 讀取當前的 ADC 轉換值,chn-ADC 通道號 0~3 */
  • unsigned char GetADCValue(unsigned char chn){
  •     unsigned char val;
  •     I2CStart();
  •     if (!I2CWrite(0x48<<1)){ //尋址 PCF8591,如未應答,則停止操作并返回 0
  •         I2CStop();
  •         return 0;
  •     }
  •     I2CWrite(0x40|chn); //寫入控制字節,選擇轉換通道
  •     I2CStart();
  •     I2CWrite((0x48<<1)|0x01); //尋址 PCF8591,指定后續為讀操作
  •     I2CReadACK(); //先空讀一個字節,提供采樣轉換時間
  •     val = I2CReadNAK(); //讀取剛剛轉換完的值
  •     I2CStop();
  •     return val;
  • }


其中第五行尋址為什么要寫成0X48<<1  ,  為什么不能直接寫成0X90??反正這芯片的尋址是如圖


還有轉換的電壓是怎么計算的,為什么要乘25? 本人剛學,希望大神來指導一下。
  • void ValueToString(unsigned char *str, unsigned char val)
  • {
  •     val = (val*25) / 255;
  •     str[0 = (val/10) + '0'; //整數位字符
  •     str[1 = '.'; //小數點
  •     str[2 = (val%10) + '0'; //小數位字符
  •     str[3 = 'V'; //電壓單位
  •     str[4 = '\0'; //結束符
  • }

尋址.png (25.05 KB, 下載次數: 57)

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

使用道具 舉報

沙發
ID:111634 發表于 2018-7-25 16:28 | 只看該作者
你的問題不是三言兩語能說清,需要系統學習。介紹你一本書,《80C51單片機實用教程——基于Keil C和Proteus》高等教育出版社ISBN 978-7-04-044532-9。內有IIC和PCF8591內容。
回復

使用道具 舉報

板凳
ID:1078938 發表于 2023-5-21 19:16 | 只看該作者
其中第五行尋址為什么要寫成0X48<<1  ,  為什么不能直接寫成0X90??

看的是金沙灘宋老師的視頻吧。0x48 = 0100 1000.這里是宋老師的寫法原因,左移一位得到1001 0000.
這時候查閱PCF8591手冊,這是寫地址。1001手冊規定是0,后三位A2 ,A1,A1根據電路圖選位0,最后一位是讀寫位。

Snipaste_2023-05-21_19-14-44.jpg (19.12 KB, 下載次數: 42)

Snipaste_2023-05-21_19-14-44.jpg
回復

使用道具 舉報

地板
ID:883242 發表于 2023-5-21 22:55 | 只看該作者
0x48是把LSB的R/W去掉,看起來比較清楚的意思,實際上更不清楚了,0x48<<1這個操作在編譯器階段就已經計算完畢,并不會增加單片機運行期間的工作量。
回復

使用道具 舉報

5#
ID:526543 發表于 2023-5-22 13:35 | 只看該作者
對于 PCF8591 芯片的尋址,它使用 7 位的地址(A6~A0)進行尋址,其中最高位(MSB)是固定為 0。因此,當我們將芯片地址寫入 I2C 總線時,需要將地址左移一位,并將最低位置為 0,以與讀寫位進行組合。這就是為什么在代碼中將地址寫為 (0x48 << 1) 的原因。

以 0x48 為例,二進制表示為 0100 1000,左移一位后為 1001 0000,再將最低位置為 0,即 1001 0000(0x90)為寫操作,1001 0001(0x91)為讀操作。這樣可以確保正確的地址與讀寫位組合。

關于電壓的轉換,PCF8591 是一個 8 位 ADC(模數轉換器),它將輸入電壓轉換為數字值。該芯片的輸入范圍是 0V 到 Vref(供電電壓),對應于 0 到 255 的數字范圍。因此,通過讀取 ADC 轉換值,可以得到輸入電壓對應的數字值。

在給定的程序中,val 變量存儲了 ADC 轉換的結果,即輸入電壓對應的數字值。為了得到電壓值,將 val 乘以系數 25。這個系數是根據特定的應用場景和參考電壓(Vref)來確定的。具體的系數值可能需要根據實際情況進行調整。

總結一下,程序中的代碼實現了對 PCF8591 芯片進行讀取 ADC 轉換值的操作,通過尋址和寫入控制字節選擇轉換通道,并讀取轉換結果。轉換結果可以通過乘以系數得到相應的電壓值。請注意,具體的芯片規格和應用需求可能會有所不同,這里提供的解釋是基于一般情況的理解。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产电影精品久久 | 四虎网站在线观看 | 亚洲精品免费观看 | 日韩第一夜| 国产免费播放视频 | 国产精品久久久久一区二区三区 | 99免费 | 久久久91 | 日本特黄a级高清免费大片 成年人黄色小视频 | 成人激情视频在线观看 | 久久久成人免费视频 | 欧美一级特黄aaa大片在线观看 | 色综合久| 日本一区二区三区四区 | 在线看91 | 国产精品国产三级国产aⅴ无密码 | a级片在线 | 成人在线精品视频 | 日本不卡免费新一二三区 | 亚洲福利一区二区 | 亚洲精品乱码久久久久久9色 | 国产精品99视频 | 国产一区二区三区四区在线观看 | 91欧美精品成人综合在线观看 | 亚洲国产精品日本 | 国内精品视频在线观看 | 欧洲妇女成人淫片aaa视频 | 亚洲成人午夜在线 | 国产一区亚洲 | 91精品国产91久久久久久 | 国产精品福利网站 | 国产精品视频网 | 国产蜜臀97一区二区三区 | 国产高清一区二区三区 | wwww.8888久久爱站网 | 国产91av视频在线观看 | 日韩精品一区二区三区中文在线 | 日本三级日产三级国产三级 | 欧美精品一区二区三区四区五区 | 成人高清在线 | 久久国产高清 |