向兵 呂佳璐
摘 要:隨著電子技術(shù)和計算機應用的發(fā)展,單片機技術(shù)在工業(yè)控制領(lǐng)域得到廣泛應用,A/D轉(zhuǎn)換作為單片機在進行信號處理過程中模擬量和數(shù)字量轉(zhuǎn)化的重要渠道,在當今的智能化工業(yè)控制領(lǐng)域中,被廣泛應用于各種實時監(jiān)測、控制系統(tǒng),對單片機在信號采集、傳輸?shù)阮I(lǐng)域有著重要的意義。而PCF8591是一種具有IIC總線接口的8位A/D、D/A轉(zhuǎn)換芯片,在與CPU的信息傳輸過程中僅靠時鐘線SCL和數(shù)據(jù)線SDA就可以實現(xiàn)信息交換。
關(guān)鍵詞:單片機;PCF8591;A/D轉(zhuǎn)換;IIC總線
一、A/D轉(zhuǎn)換器發(fā)展現(xiàn)狀及發(fā)展趨勢
在自動化檢測控制系統(tǒng)中,微型計算機是一個典型的數(shù)字系統(tǒng),為了實現(xiàn)數(shù)據(jù)采集和輸出,A/D轉(zhuǎn)換是必不可少的一個過程。A/D轉(zhuǎn)換器是一種廣泛應用的器件,A/D轉(zhuǎn)換器是將摸擬量轉(zhuǎn)換為一定進制的數(shù)字量。A/D轉(zhuǎn)換器大多是將電壓量轉(zhuǎn)換為正比的二進制數(shù)字量,乘以轉(zhuǎn)換系數(shù)后可獲得電壓的數(shù)值量,也有先將電壓量轉(zhuǎn)換為時間或頻率,然后再經(jīng)計數(shù)得到電壓的數(shù)值量。目前,A/D轉(zhuǎn)換器已經(jīng)在轉(zhuǎn)換速度和轉(zhuǎn)換精度等主要指標上有了重大突破,而低電壓、高精度、高集成度、高效率則是A/D轉(zhuǎn)換器繼續(xù)發(fā)展的主要趨勢。
二、PCF8591芯片簡介
PCF8591 是單電源,低功耗8 位CMOS 數(shù)據(jù)采集器件,具有4路模擬輸入、一個輸出和一個串行IIC 總線接口與CPU進行通信。它的3 個地址引腳A0、A1 和A2 用于編程硬件地址,允許將最多8 個器件連接至IIC總線而不需要額外硬件,相比其他A/D轉(zhuǎn)換芯片,集成度更高,使用方法更加簡便。
三、IIC協(xié)議簡介
IIC 即Inter-Integrated Circuit(集成電路總線),這種總線類型是由飛利浦半導體公司在八十年代初設(shè)計出來的,主要是用來連接整體電路(ICS) ,IIC是一種多向控制總線,也就是說多個芯片可以連接到同一總線結(jié)構(gòu)下,同時每個芯片都可以作為實時數(shù)據(jù)傳輸?shù)目刂圃础_@種方式簡化了信號傳輸總線接口。
IIC實際上就是隨需求的增長應運而生的一種多機(以下分主機、從機)串行數(shù)據(jù)傳輸方式,而常說的IIC協(xié)議就是指的IIC的使用規(guī)則,必須遵守,以保證數(shù)據(jù)的正確傳輸。
應用IIC協(xié)議的器件一定有時鐘總線SCL和數(shù)據(jù)總線SDA,協(xié)議的主要規(guī)定有以下幾點:
1.SCL在高電平期間,SDA不準變化;SCL在低電平期間,SDA可以變化(數(shù)據(jù)傳輸);
2.主機的起始與停止信號控制二者數(shù)據(jù)傳輸?shù)墓?jié)奏;
3.主機發(fā)出讀寫數(shù)據(jù)命令后,如果從機不應答,一個stop信號就停止數(shù)據(jù)傳輸。
四、程序初始化步驟
要驅(qū)動PCF8591芯片必須要有驅(qū)動的程序,驅(qū)動PCF8591主要有以下步驟:
1、總線的啟動條件
2、總線停止條件
3、應答位的控制
4、等待應答
5、通過總線發(fā)送數(shù)據(jù)
6、從總線上接收數(shù)據(jù)
7、寫數(shù)據(jù)
8、讀數(shù)據(jù)
五、程序代碼
ADC的寫法基本與IIC一致,PCF8951和AT24C02的協(xié)議是一樣,需要注意的重點是讀寫命令的,主要的程序如下:
1.發(fā)送測量ADC命令
例:void init_pcf8591(void)
{
i2c_start();//初始化
i2c_sendbyte(0x90);//寫命令
i2c_waitack();//等待應答
i2c_sendbyte(0x03);//ADC通道 0x03電位器 0x01光敏電阻
i2c_waitack();//等待應答
i2c_stop();//停止
operate_delay(10);//延時10us
}
2.接收PCF8591轉(zhuǎn)換過的采樣電壓值
unsigned char adc_pcf8591(void)
{
unsigned char temp;
i2c_start();//初始化
i2c_sendbyte(0x91);//讀命令
i2c_waitack();//等待應答
temp = i2c_receivebyte();//將讀取的值給temp
iic_ack(0);
i2c_stop();
return temp;
}
3.轉(zhuǎn)換數(shù)據(jù):(注:轉(zhuǎn)換后的電壓單位為mv)
cnt=adc_pcf8591();
dspbuf[4]=cnt*196/10000;
dspbuf[5]=cnt*196%10000/1000;
dspbuf[6]=cnt*196%10000%1000/100;
dspbuf[7]=cnt*196%10000%1000%100/10;
(以上為存儲器映射寫法的數(shù)碼管顯示,dspbuf代表的是數(shù)碼管段選緩沖數(shù)組)
六、小結(jié)
傳統(tǒng)的A/D轉(zhuǎn)換器需要占用較多的I/O口,而且轉(zhuǎn)換時間長,讀寫操作復雜,并且不易實現(xiàn)系統(tǒng)擴展。從以上程序可以看出,PCF8591這種具有IIC總線結(jié)構(gòu)的多通道8bits的A/D轉(zhuǎn)換器,相比于傳統(tǒng)的A/D轉(zhuǎn)換器,結(jié)構(gòu)較為簡單,節(jié)約I/O資源(只需要兩個I/O口,即:時鐘線和數(shù)據(jù)線),擴展性強,可靠性高,能進行更多更強的處理。
參考文獻
[1] 姚越,吳寶慶.關(guān)于單片機技術(shù)應用的研究[J]. 科技資訊,2018,16(09):112-113.
[2] 梁小廷.單片機技術(shù)的發(fā)展及應用研究[J]. 民營科技,2018(06):9.
[3] 秦國棟.單片機技術(shù)微課庫建設(shè)實例[J]. 科學咨詢(科技?管理),2018(03):52.
[4] 劉玉叢.單片機技術(shù)應用課程實踐化教學改革的探索[J]. 電子世界,2018(03):97.
作者簡介:
向兵(1990-),男,漢,四川南充人,助教,碩士研究生,從事單片機原理與應用、電子產(chǎn)品分析與制作等課程研究及項目開發(fā)。
呂佳璐(1999-),女,漢,四川成都人,綿陽職業(yè)技術(shù)學院信息工程系2017級,電子信息工程技術(shù)專業(yè)專科在讀,擅長單片機開發(fā)項目設(shè)計與研究。
*課題項目:綿陽職業(yè)技術(shù)學院,校級精品在線開放課程-《電子產(chǎn)品分析與制作》