完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>
標(biāo)簽 > PCF8591
PCF8591是一個(gè)單片集成、單獨(dú)供電、低功耗、8-bit CMOS數(shù)據(jù)獲取器件。PCF8591具有4個(gè)模擬輸入、1個(gè)模擬輸出和1個(gè)串行I2C總線接口。PCF8591的3個(gè)地址引腳A0, A1和A2可用于硬件地址編程,允許在同個(gè)I2C總線上接入8個(gè)PCF8591器件,而無需額外的硬件。
PCF8591是一個(gè)單片集成、單獨(dú)供電、低功耗、8-bit CMOS數(shù)據(jù)獲取器件。PCF8591具有4個(gè)模擬輸入、1個(gè)模擬輸出和1個(gè)串行I²C總線接口。PCF8591的3個(gè)地址引腳A0, A1和A2可用于硬件地址編程,允許在同個(gè)I2C總線上接入8個(gè)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是一個(gè)單片集成、單獨(dú)供電、低功耗、8-bit CMOS數(shù)據(jù)獲取器件。PCF8591具有4個(gè)模擬輸入、1個(gè)模擬輸出和1個(gè)串行I²C總線接口。PCF8591的3個(gè)地址引腳A0, A1和A2可用于硬件地址編程,允許在同個(gè)I2C總線上接入8個(gè)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】單獨(dú)供電【2】PCF8591的操作電壓范圍2.5V-6V【3】低待機(jī)電流【4】通過I2C總線串行輸入/輸出【5】PCF8591通過3個(gè)硬件地址引腳尋址【6】PCF8591的采樣率由I2C總線速率決定【7】4個(gè)模擬輸入可編程為單端型或差分輸入【8】自動增量頻道選擇【9】PCF8591的模擬電壓范圍從VSS到VDD【10】PCF8591內(nèi)置跟蹤保持電路【11】8-bit逐次逼近A/D轉(zhuǎn)換器【12】通過1路模擬輸出實(shí)現(xiàn)DAC增益
引腳信息
AIN0~AIN3:模擬信號輸入端。A0~A2:引腳地址端。VDD、VSS:電源端。(2.5~6V)SDA、SCL:I2C 總線的數(shù)據(jù)線、時(shí)鐘線。OSC:外部時(shí)鐘輸入端,內(nèi)部時(shí)鐘輸出端。EXT:內(nèi)部、外部時(shí)鐘選擇線,使用內(nèi)部時(shí)鐘時(shí) EXT 接地。AGND:模擬信號地。AOUT:D/A 轉(zhuǎn)換輸出端。VREF:基準(zhǔn)電源端。
基于51單片機(jī)IIC通信的PCF8591學(xué)習(xí)筆記
PCF8591 是單電源,低功耗8 位CMOS 數(shù)據(jù)采集器件,具有4 個(gè)模擬輸入、一個(gè)輸出和一個(gè)串行I2C 總線接口。3 個(gè)地址引腳A0、A1 和A2 用于編程硬件地址,允許將最多8 個(gè)器件連接至I2C總線而不需要額外硬件。PCF8591由于其使用的簡單方便和集成度高,在單片機(jī)應(yīng)用系統(tǒng)中得到了廣泛的應(yīng)用,這篇文章是介紹IIC通信在ADDA轉(zhuǎn)換芯片PCF8591中的應(yīng)用。
關(guān)于IIC
IIC總線通信協(xié)議的介紹在“基于51單片機(jī)IIC通信的AT24C02學(xué)習(xí)筆記”有詳細(xì)的介紹。
關(guān)于PCF8591
PCF8591是單片、單電源低功耗8位CMOS數(shù)據(jù)采集器件,具有4個(gè)模擬輸入、一個(gè)輸出和一個(gè)串行I2C總線接口。3個(gè)地址引腳A0、A1 和A2 用于編程硬件地址,允許將最多8個(gè)器件連接至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ā)送給單片機(jī),或是單片機(jī)通過IIC總線給一個(gè)數(shù)字量,然后PCF8591通過AOUT端口將模擬電壓輸出.
控制字格式
最高位默認(rèn)為0
第6位是選擇是否允許模擬電壓輸出,在DA轉(zhuǎn)換時(shí)設(shè)置為1,AD轉(zhuǎn)換時(shí)設(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)換時(shí)選擇哪一個(gè)通道輸入的電壓轉(zhuǎn)換為數(shù)字量。
PCF8591的器件地址
每一個(gè)IIC器件都有一個(gè)器件地址,來區(qū)分不同的IIC設(shè)備,下面是PCF8591的地址
它的地址是由1001和A2A1A0組成的,在原理圖中可以看出,A2A1A0均為0,所以器件地址為0x90/0x91,最后一位是讀寫方向位,0表示下一個(gè)字節(jié)往總線上寫數(shù)據(jù),1表示下一個(gè)字節(jié)從總線上讀取數(shù)據(jù).
AD轉(zhuǎn)換函數(shù)
?。粒霓D(zhuǎn)換即將AIN端口輸入的模擬電壓轉(zhuǎn)換為數(shù)字量并發(fā)送到總線上,可以知道該函數(shù)需要指定輸入的通道,還要將轉(zhuǎn)換后的數(shù)字量返回,所以該函數(shù)有返回值,和一個(gè)形參
程序?qū)崿F(xiàn):
/*讀取某一個(gè)通道轉(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,下一個(gè)字節(jié)要讀取
ack();
dat=read_byte();
ack();
stop();
// AD_led=0; //轉(zhuǎn)換成功顯示
return dat;
}
?。模赁D(zhuǎn)換函數(shù)
DA轉(zhuǎn)換即將從總線上接收到的數(shù)字量通過AOUT輸出,該函數(shù)無返回值,有一個(gè)形參
程序?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,下一個(gè)字節(jié)為寫入
ack();
write_byte(0x40); //設(shè)置控制字 0100 0000 允許模擬輸出,不自增單端
ack();
write_byte(Digital); //將要轉(zhuǎn)換的數(shù)字量寫入
ack();
stop();
// DA_led=0; //轉(zhuǎn)換成功顯示
}
轉(zhuǎn)換公式
我們可以用一個(gè)轉(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); //延時(shí)緩沖
這樣就可以實(shí)時(shí)顯示輸入的電壓值了.還可以將電壓值輸出到led亮度顯示出來.這樣就可以作為一個(gè)簡易的小量程(5v)的電壓表了
總結(jié)
從程序可以看出PCF8591的操作和AT24C02基本一致,就是增加了控制字的內(nèi)容,相比于其他的ADDA轉(zhuǎn)換芯片,它結(jié)構(gòu)簡單,不需要外圍的電路,可以直接使用,而且容易實(shí)現(xiàn)模塊化設(shè)計(jì),在大多數(shù)單片機(jī)系統(tǒng)中ADDA幾乎是不可缺少的,而PCF8591只需要兩個(gè)IO口(時(shí)鐘和數(shù)據(jù))和電源就可以實(shí)現(xiàn),大大節(jié)省了IO口的使用。
關(guān)于AT24C02的使用,請看我另一篇隨筆:“基于51單片機(jī)IIC通信的AT24C02學(xué)習(xí)筆記”
pcf8591 ad轉(zhuǎn)換實(shí)例及程序詳解
I2C總線是Philips公司推出的串行總線,整個(gè)系統(tǒng)僅靠數(shù)據(jù)線(SDA)和時(shí)鐘線(SCL)實(shí)現(xiàn)完善的全雙工數(shù)據(jù)傳輸,即CPU與各個(gè)外圍器件僅靠這兩條線...
從嚴(yán)格意義上來講,其實(shí)所有的信號都是差分信號,因?yàn)樗械碾妷褐荒苁窍鄬τ诹硗庖粋€(gè)電壓而言。但是大多數(shù)系統(tǒng),我們都是把系統(tǒng)的 GND 作為基準(zhǔn)點(diǎn)。
如何將PCF8591 ADC模塊與Raspberry Pi連接
在本教程中,我們將學(xué)習(xí)如何將 PCF8591 ADC/DAC 模塊與 Raspberry Pi 連接。
2022-08-26 標(biāo)簽:adc模數(shù)轉(zhuǎn)換器PCF8591 4293 0
在本教程中,我們將檢查 如何將 PCF8591 ADC/DAC 模塊與 Arduino 連接。
2022-08-26 標(biāo)簽:模數(shù)轉(zhuǎn)換器PCF8591Arduino 4140 0
2
0
51單片機(jī)+pcf8591模塊 簡單的數(shù)模轉(zhuǎn)換,硬件沒問題,程序沒報(bào)錯,可就是模塊上aout處的燈一直不亮是為什么?
標(biāo)簽:51單片機(jī)數(shù)模轉(zhuǎn)換PCF8591 3615 2
類別:IC中文資料 2011-03-22 標(biāo)簽:數(shù)據(jù)手冊PCF8591
基于51單片機(jī)用PCF8591進(jìn)行AD_DA轉(zhuǎn)換用1602LCD顯示的電流采樣立即下載
類別:單片機(jī) 2013-08-30 標(biāo)簽:51單片機(jī)1602AD轉(zhuǎn)換
詳述經(jīng)典51單片機(jī)上用PCF8591實(shí)現(xiàn)的AD轉(zhuǎn)換立即下載
類別:單片機(jī) 2014-07-24 標(biāo)簽:單片機(jī)AD轉(zhuǎn)換PCF8591
Linux驅(qū)動開發(fā)-編寫PCF8591(ADC)芯片驅(qū)動
PCF8591是一個(gè)IIC總線接口的ADC/DAC轉(zhuǎn)換芯片,功能比較強(qiáng)大,這篇文章就介紹在Linux系統(tǒng)里如何編寫一個(gè)PCF8591的驅(qū)動,完成ADC數(shù)...
2022-09-17 標(biāo)簽:adc轉(zhuǎn)換芯片PCF8591 2174 0
編輯推薦廠商產(chǎn)品技術(shù)軟件/工具OS/語言教程專題
電機(jī)控制 | DSP | 氮化鎵 | 功率放大器 | ChatGPT | 自動駕駛 | TI | 瑞薩電子 |
BLDC | PLC | 碳化硅 | 二極管 | OpenAI | 元宇宙 | 安森美 | ADI |
無刷電機(jī) | FOC | IGBT | 逆變器 | 文心一言 | 5G | 英飛凌 | 羅姆 |
直流電機(jī) | PID | MOSFET | 傳感器 | 人工智能 | 物聯(lián)網(wǎng) | NXP | 賽靈思 |
步進(jìn)電機(jī) | SPWM | 充電樁 | IPM | 機(jī)器視覺 | 無人機(jī) | 三菱電機(jī) | ST |
伺服電機(jī) | 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 |