摘要:介紹了對a/d芯片icl7135進行串行數據采集的具體方法,同時利用該方式結構簡單、編程簡潔、占用單片機資源少的特點,給出了用icl7135與at89c52單片機構成電壓表系統的硬件和軟件設計方法。
關鍵詞:單片機 adc 電壓表 icl7135
在常用的a/d轉換芯片(如adc0809、icl7135、icl7109等)中,icl7135與其余幾種有所不同,它是一種四位半的雙積分a/d轉換器,具有精度高(精度相當于14位二進制數)、價格低廉、抗干擾能力強等優點。通常情況下,設計者都是用單片機來并行采集icl7135的數據,本文介紹用單片機串行方式采集icl7135的數據以實現單片機電壓表和小型智能儀表的設計方案。
1 icl7135的串行工作方式
1.1 icl7135的測量周期
icl7135的測量周期包括下列四相(節拍):
(1)auto-zero(自動調零)相
在該相時,內部in 和in-輸入與引腳斷開,且在內部連接到anlg-common,基準電容被充電至基準電壓,系統接成閉環并為自動調零(autozero)電容充電以補償緩沖放大器、積分器和比較器的失調電壓。此時,自動調零精度令受系統噪聲的限制,以輸入為基準的總失調小于10μv。
(2)singal-integrate(信號積分)相
在該相,自動調零環路被打開,內部的in 和in-輸入被連接至外部引腳。在固定的時間周期內,這些輸入端之間的差分電壓被積分。當輸入信號相對于轉換器電源不反相(no-return)時,in-可直接連接至anjg-common以便輸出正確的共模電壓。同時,在這一相完成的基礎上,輸入信號的極性將被系統所記錄。
(3)deintegrate(去積分)相
該相的基準用于完成去積分(deintegrate)任務,此時內部in-在內部連接anlg-common,in 跨接至先前已充電的基準電容,所記錄的輸入信號的極性可確保以正確的極性連接至電容以使積分器輸出極性回零。輸出返回至零所需的時間正比于輸入信號的幅度。返回時間顯示為數字讀數,并由1000(vid/vref)確定。滿度或最大轉換值發生在vid等于vref的兩倍時。
(4)zero-integrate(積分器返回零)相
內部的in-連接到anlg-common,系統接成閉環以使積分器輸出返回到零。通常這相需要100~200個時鐘脈沖,但是在超范圍(overrange)轉換后,則需要6200個脈沖。
1.2 icl7135時序圖
圖1所示是vid為常數時的icl7135時序圖,由圖1可知:在signal-integrate(即信號積分)相開始時,icl7135的busy信號線跳高并一直保持高電平,直到de integrate(去積分)相結束時才跳回低電平。在滿量程情況下,這個區域中的最多脈沖個數為30002個。其中de integrate(去積分)相的脈沖個數反映了轉換結果。
圖2是不同vid值時的icl7135時序。由圖2可見:對于不同模擬量輸入,icl7135的busy信號的高電平寬度也不同。
2 與單片機系統的串行連接
在icl7135與單片機系統進行連接時,如果使用icl7135的并行采集方式,則不但要連接bcd碼數據輸出線,又要連接bcd碼數據的位驅動信號輸出端,這樣至少需要9根i/o口線。因此,系統的連接比較麻煩,且編程也非常復雜。
而icl7135的串行接法是通過計脈沖數的方法來獲得測量轉換結果的。由其時序分析可知,在deintegrate(去積分)相,其脈沖數與轉換結果具有一一對應關系。
實際上,可以通過單片機
(例如atmel公司的51系列單片機at89c52)的定時器t0(也可以使用定時器t1)來計脈沖器。由于,定時器t0所用的clk頻率是系統晶振頻率的1/12。因此可利用單片機(at89c52)的ale信號作為icl7135的脈沖(clk)輸入。但要注意,在軟件設計編程中,若指令中不出現movx指令,ale端產生的脈沖頻率將是晶振的1/6。至此,便可找到定時器所使用的頻率與單片機系統晶振頻率的關系,以及icl7135所需的頻率輸入與單片機系統晶振頻率的關系。
為了使定時器t0的計數脈沖的icl7135工作所需的脈沖同步,可以將icl7135的busy信號接至at89c52的p3.2(int0)引腳上,并且將定時器t0的選通控制信號gate倍1。此時定時器t0是否工作將受busy信號的控制。由上述時序圖可知,當icl7135開始工作時,即在積分波形的signal-integrate相開始時,也就是icl7135的busy信號跳高時,定時器t0才開始工作,且定時器t0的th0、tl0所記錄的數據與icl7135的測試脈沖(從積分波形的signal-integrate相開始時deintegrate相結束這一區域內的脈沖稱為測量脈沖)存在一定的比例關系。其系統連接圖如圖3所示。
在這種情況下,由于定時器t0和icl7135所用的時鐘不是同一路。因此,應當找到定時器t0所記錄的數據和測量脈沖之間的某種比例關系。其比例關系如下:
ftime=fosc/12
fale=fosc/6
freal=fosc/24
ficl=fale/n
其中,fosc為系統晶振頻率;ftime為定時器所用頻率;fale為單片機ale輸出的頻率;freal為icl7135的測量脈沖頻率;ficl為icl7135所用的輸入頻率,該頻率可通過dale分頻得到。n為分頻比,該系統中n應選為4。
圖4 icl7135a/d轉換器與系統的連接圖
由上述頻率之間的比率關系可知,at98c52的定時器t0所用的頻率是icl7135的測量脈沖頻率的兩倍。因此,定時器t0所記錄的脈沖數也是icl7135的測量脈沖的兩倍。圖中,分頻數可根據icl7135的要求和單片機的時鐘頻率來選擇。在這里,提倡使用四分頻,這樣可使定時器t0在對測量脈沖計數時不會溢出。若使用4以上的分頻數,則需在軟件上作一下改進。
要得到測量脈沖的個數,只需將定時器所記錄的脈沖個數除以2即可。而要得到a/d轉換結果所對應的脈沖數則應用測量脈沖的個數減去10001。這些轉換通常可通過軟件完成,因此非常簡單。通過a/d轉換結果所對應的脈沖數可得到被測的模擬量。通過對串行方式的討論可以看出:使用這種方法可以不再使用8255芯片來擴展口線。其優點是占用口線少,能節省系統的硬件資源,提高系統的抗干擾能力,不用添加任何擴展口線器件,從而使系統的成本得到降低。
3 基于單片機系統的電壓表設計
3.1 系統的硬件
圖4所示是單片機電壓表系統中icl7135與單片機系統的典型連接示意圖。圖中,單片機系統的晶振為6mhz,單片機的ale信號頻率為1mhz;考慮到系統連接方面和單片機ale信號頻率范圍等因素,筆者取icl7135的輸入頻率為ale信號的四分頻,即選用125khz。這樣選用的好處是t0定時器在對測量脈沖計數時不會產生溢出。
3.2 系統的軟件設計
icl7135a/d與單片機連接電路的軟件設計系統的程序流程圖如圖5所示。
該軟件流程圖由三部分組成。其中轉換子程序是在主程序中調用的,目的是為了不占用很長的中斷時間。t0計數器設定為方式1、定時狀態、選通控制設為“1”。故tmod控制字設置為“05h”。由于t0計數器用的是系統的晶振頻率,因此與設定為計數狀態效果一樣。
4 結束語
icl7135的串行方式在實踐中的應用效果很好。與并行方式相比,其突出的優點是結構簡單、程序簡潔、占用單片機的資源少、可提高抗干擾能力,同時可提高儀器的檢測可靠性,并且可在不添加任何擴展口線器件的情況下使系統的成本得到降低。





