完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>
標(biāo)簽 > PCF8591
PCF8591是一個單片集成、單獨供電、低功耗、8-bit CMOS數(shù)據(jù)獲取器件。PCF8591具有4個模擬輸入、1個模擬輸出和1個串行I2C總線接口。PCF8591的3個地址引腳A0, A1和A2可用于硬件地址編程,允許在同個I2C總線上接入8個PCF8591器件,而無需額外的硬件。
PCF8591是一個單片集成、單獨供電、低功耗、8-bit CMOS數(shù)據(jù)獲取器件。PCF8591具有4個模擬輸入、1個模擬輸出和1個串行I²C總線接口。PCF8591的3個地址引腳A0, A1和A2可用于硬件地址編程,允許在同個I2C總線上接入8個PCF8591器件,而無需額外的硬件。在PCF8591器件上輸入輸出的地址、控制和數(shù)據(jù)信號都是通過雙線雙向I2C總線以串行的方式進(jìn)行傳輸。
功能
PCF8591的功能包括多路模擬輸入、內(nèi)置跟蹤保持、8-bit模數(shù)轉(zhuǎn)換和8-bit數(shù)模轉(zhuǎn)換。PCF8591的最大轉(zhuǎn)化速率由I2C總線的最大速率決定。
PCF8591是一個單片集成、單獨供電、低功耗、8-bit CMOS數(shù)據(jù)獲取器件。PCF8591具有4個模擬輸入、1個模擬輸出和1個串行I²C總線接口。PCF8591的3個地址引腳A0, A1和A2可用于硬件地址編程,允許在同個I2C總線上接入8個PCF8591器件,而無需額外的硬件。在PCF8591器件上輸入輸出的地址、控制和數(shù)據(jù)信號都是通過雙線雙向I2C總線以串行的方式進(jìn)行傳輸。
功能
PCF8591的功能包括多路模擬輸入、內(nèi)置跟蹤保持、8-bit模數(shù)轉(zhuǎn)換和8-bit數(shù)模轉(zhuǎn)換。PCF8591的最大轉(zhuǎn)化速率由I2C總線的最大速率決定。
特性
【1】單獨供電【2】PCF8591的操作電壓范圍2.5V-6V【3】低待機電流【4】通過I2C總線串行輸入/輸出【5】PCF8591通過3個硬件地址引腳尋址【6】PCF8591的采樣率由I2C總線速率決定【7】4個模擬輸入可編程為單端型或差分輸入【8】自動增量頻道選擇【9】PCF8591的模擬電壓范圍從VSS到VDD【10】PCF8591內(nèi)置跟蹤保持電路【11】8-bit逐次逼近A/D轉(zhuǎn)換器【12】通過1路模擬輸出實現(xiàn)DAC增益
引腳信息
AIN0~AIN3:模擬信號輸入端。A0~A2:引腳地址端。VDD、VSS:電源端。(2.5~6V)SDA、SCL:I2C 總線的數(shù)據(jù)線、時鐘線。OSC:外部時鐘輸入端,內(nèi)部時鐘輸出端。EXT:內(nèi)部、外部時鐘選擇線,使用內(nèi)部時鐘時 EXT 接地。AGND:模擬信號地。AOUT:D/A 轉(zhuǎn)換輸出端。VREF:基準(zhǔn)電源端。
基于51單片機IIC通信的PCF8591學(xué)習(xí)筆記
PCF8591 是單電源,低功耗8 位CMOS 數(shù)據(jù)采集器件,具有4 個模擬輸入、一個輸出和一個串行I2C 總線接口。3 個地址引腳A0、A1 和A2 用于編程硬件地址,允許將最多8 個器件連接至I2C總線而不需要額外硬件。PCF8591由于其使用的簡單方便和集成度高,在單片機應(yīng)用系統(tǒng)中得到了廣泛的應(yīng)用,這篇文章是介紹IIC通信在ADDA轉(zhuǎn)換芯片PCF8591中的應(yīng)用。
關(guān)于IIC
IIC總線通信協(xié)議的介紹在“基于51單片機IIC通信的AT24C02學(xué)習(xí)筆記”有詳細(xì)的介紹。
關(guān)于PCF8591
PCF8591是單片、單電源低功耗8位CMOS數(shù)據(jù)采集器件,具有4個模擬輸入、一個輸出和一個串行I2C總線接口。3個地址引腳A0、A1 和A2 用于編程硬件地址,允許將最多8個器件連接至I2C總線而不需要額外硬件。器件的地址、控制和數(shù)據(jù)通過兩線雙向I2C總線傳輸。器件功能包括多路復(fù)用模擬輸入、片上跟蹤和保持功能、8位模數(shù)轉(zhuǎn)換和8位數(shù)模擬轉(zhuǎn)換。最大轉(zhuǎn)換速率取決于I2C總線的最高速率。
PCF8591的操作和AT24C02非常類似,只不過AT24C02是寫入或讀出數(shù)據(jù),而PCF8591是AIN端口輸入模擬電壓,然后PCF8591將轉(zhuǎn)換后的數(shù)字量通過IIC總線發(fā)送給單片機,或是單片機通過IIC總線給一個數(shù)字量,然后PCF8591通過AOUT端口將模擬電壓輸出.
控制字格式
最高位默認(rèn)為0
第6位是選擇是否允許模擬電壓輸出,在DA轉(zhuǎn)換時設(shè)置為1,AD轉(zhuǎn)換時設(shè)置為0或1均可
第5/4位是選擇模擬電壓輸出方式,一般選擇00單端輸入方式,其他的幾種方式如下圖所示
第3位默認(rèn)為0
第2位是自動增量使能位,如果自動增量(auto-increment)標(biāo)志置1,每次A/D 轉(zhuǎn)換后通道號將自動增加。
第1/0為是在AD轉(zhuǎn)換時選擇哪一個通道輸入的電壓轉(zhuǎn)換為數(shù)字量。
PCF8591的器件地址
每一個IIC器件都有一個器件地址,來區(qū)分不同的IIC設(shè)備,下面是PCF8591的地址
它的地址是由1001和A2A1A0組成的,在原理圖中可以看出,A2A1A0均為0,所以器件地址為0x90/0x91,最后一位是讀寫方向位,0表示下一個字節(jié)往總線上寫數(shù)據(jù),1表示下一個字節(jié)從總線上讀取數(shù)據(jù).
?。粒霓D(zhuǎn)換函數(shù)
?。粒霓D(zhuǎn)換即將AIN端口輸入的模擬電壓轉(zhuǎn)換為數(shù)字量并發(fā)送到總線上,可以知道該函數(shù)需要指定輸入的通道,還要將轉(zhuǎn)換后的數(shù)字量返回,所以該函數(shù)有返回值,和一個形參
程序?qū)崿F(xiàn):
/*讀取某一個通道轉(zhuǎn)換后的數(shù)字量*/
uchar Read_D(uchar Channel)
{
uchar dat;
start();
write_byte(0x90); //器件地址+0
ack();
write_byte(Channel); //控制字0x01表示通道1
ack();
start();
write_byte(0x91); //器件地址+1,下一個字節(jié)要讀取
ack();
dat=read_byte();
ack();
stop();
// AD_led=0; //轉(zhuǎn)換成功顯示
return dat;
}
?。模赁D(zhuǎn)換函數(shù)
?。模赁D(zhuǎn)換即將從總線上接收到的數(shù)字量通過AOUT輸出,該函數(shù)無返回值,有一個形參
程序?qū)崿F(xiàn):
1
2
3
4
5
6
7
8
9
10
11
12void Out_A(uchar Digital)
{
start();
write_byte(0x90); //器件地址+0,下一個字節(jié)為寫入
ack();
write_byte(0x40); //設(shè)置控制字 0100 0000 允許模擬輸出,不自增單端
ack();
write_byte(Digital); //將要轉(zhuǎn)換的數(shù)字量寫入
ack();
stop();
// DA_led=0; //轉(zhuǎn)換成功顯示
}
轉(zhuǎn)換公式
我們可以用一個轉(zhuǎn)換公式,將AD轉(zhuǎn)換后的數(shù)字量轉(zhuǎn)換為對應(yīng)的電壓值,在數(shù)碼管或液晶上顯示,公式如下:
1#define fun(x) (int)(5*x/255.0*100+0.5) //數(shù)字電壓x轉(zhuǎn)換為模擬電壓的公式
主函數(shù)調(diào)用
1
2
3
4dat1 = Read_D(0x01); //將通道1(電位器v2)的模擬電壓轉(zhuǎn)換的數(shù)字量讀出
Out_A(dat1); //將數(shù)字量轉(zhuǎn)換為模擬量輸出到led顯示
dis_Voltage1(fun(dat1)); //數(shù)碼管顯示電壓值
Delay_Ms(5); //延時緩沖
這樣就可以實時顯示輸入的電壓值了.還可以將電壓值輸出到led亮度顯示出來.這樣就可以作為一個簡易的小量程(5v)的電壓表了
總結(jié)
從程序可以看出PCF8591的操作和AT24C02基本一致,就是增加了控制字的內(nèi)容,相比于其他的ADDA轉(zhuǎn)換芯片,它結(jié)構(gòu)簡單,不需要外圍的電路,可以直接使用,而且容易實現(xiàn)模塊化設(shè)計,在大多數(shù)單片機系統(tǒng)中ADDA幾乎是不可缺少的,而PCF8591只需要兩個IO口(時鐘和數(shù)據(jù))和電源就可以實現(xiàn),大大節(jié)省了IO口的使用。
關(guān)于AT24C02的使用,請看我另一篇隨筆:“基于51單片機IIC通信的AT24C02學(xué)習(xí)筆記”
如何將PCF8591 ADC模塊與Raspberry Pi連接
在本教程中,我們將學(xué)習(xí)如何將 PCF8591 ADC/DAC 模塊與 Raspberry Pi 連接。
2022-08-26 標(biāo)簽:adc模數(shù)轉(zhuǎn)換器PCF8591 4264 0
在本教程中,我們將檢查 如何將 PCF8591 ADC/DAC 模塊與 Arduino 連接。
2022-08-26 標(biāo)簽:模數(shù)轉(zhuǎn)換器PCF8591Arduino 4095 0
從嚴(yán)格意義上來講,其實所有的信號都是差分信號,因為所有的電壓只能是相對于另外一個電壓而言。但是大多數(shù)系統(tǒng),我們都是把系統(tǒng)的 GND 作為基準(zhǔn)點。
基于89C51單片機的PCF8591 4路AD數(shù)碼管顯示源程序立即下載
類別:單片機 2023-05-16 標(biāo)簽:89C51單片機數(shù)碼管顯示PCF8591
基于89C51單片機的PCF8591 1路AD數(shù)碼管顯示源程序立即下載
類別:單片機 2023-05-16 標(biāo)簽:89C51單片機數(shù)碼管顯示PCF8591
基于AT89C51單片機PCF8591模數(shù)與數(shù)模轉(zhuǎn)換實驗立即下載
類別:單片機 2023-05-04 標(biāo)簽:AT89C51數(shù)模轉(zhuǎn)換PCF8591
PCF8591A/D和D/A轉(zhuǎn)換器英文手冊立即下載
類別:IC datasheet pdf 2022-02-21 標(biāo)簽:轉(zhuǎn)換器PCF8591
Linux驅(qū)動開發(fā)-編寫PCF8591(ADC)芯片驅(qū)動
PCF8591是一個IIC總線接口的ADC/DAC轉(zhuǎn)換芯片,功能比較強大,這篇文章就介紹在Linux系統(tǒng)里如何編寫一個PCF8591的驅(qū)動,完成ADC數(shù)...
2022-09-17 標(biāo)簽:adc轉(zhuǎn)換芯片PCF8591 2131 0
編輯推薦廠商產(chǎn)品技術(shù)軟件/工具OS/語言教程專題
電機控制 | DSP | 氮化鎵 | 功率放大器 | ChatGPT | 自動駕駛 | TI | 瑞薩電子 |
BLDC | PLC | 碳化硅 | 二極管 | OpenAI | 元宇宙 | 安森美 | ADI |
無刷電機 | FOC | IGBT | 逆變器 | 文心一言 | 5G | 英飛凌 | 羅姆 |
直流電機 | PID | MOSFET | 傳感器 | 人工智能 | 物聯(lián)網(wǎng) | NXP | 賽靈思 |
步進(jìn)電機 | SPWM | 充電樁 | IPM | 機器視覺 | 無人機 | 三菱電機 | ST |
伺服電機 | SVPWM | 光伏發(fā)電 | UPS | AR | 智能電網(wǎng) | 國民技術(shù) | Microchip |
Arduino | BeagleBone | 樹莓派 | STM32 | MSP430 | EFM32 | ARM mbed | EDA |
示波器 | LPC | imx8 | PSoC | Altium Designer | Allegro | Mentor | Pads |
OrCAD | Cadence | AutoCAD | 華秋DFM | Keil | MATLAB | MPLAB | Quartus |
C++ | Java | Python | JavaScript | node.js | RISC-V | verilog | Tensorflow |
Android | iOS | linux | RTOS | FreeRTOS | LiteOS | RT-THread | uCOS |
DuerOS | Brillo | Windows11 | HarmonyOS |