|
最近看到網上很多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)
下載附件
2018-7-25 10:22 上傳
|