《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 從LCD電極讀數(shù)的單片機(jī)接口技術(shù)分析
從LCD電極讀數(shù)的單片機(jī)接口技術(shù)分析
摘要: 本文以一個(gè)全自動(dòng)血壓計(jì)為例,介紹將LCD顯示器讀數(shù)讀入單片機(jī)的接口電路。該血壓計(jì)顯示器為6 1/2位段式LCD顯示器,3位顯示收縮壓,3位顯示舒張壓。1/2位在兩組數(shù)碼中間,顯示4個(gè)指示符號(hào)。
Abstract:
Key words :
  通過測(cè)量儀表拾取被測(cè)信號(hào)是單片機(jī)前向通道設(shè)計(jì)中常用的數(shù)據(jù)采集方式。通常,接口電路從儀表電路中取得相關(guān)的模擬信號(hào),經(jīng)過A/D轉(zhuǎn)換或V/F轉(zhuǎn)換送入單片機(jī);或者取得一個(gè)頻率信號(hào),經(jīng)整形后送入單片機(jī)[1]。然而,有些測(cè)量儀表電路中可能找不到這樣的信號(hào)。以電容式壓力傳感器血壓計(jì)為例,盡管從其振蕩電路中可以取得一個(gè)與壓強(qiáng)成線性關(guān)系的頻率信號(hào)[2],送入單片機(jī)測(cè)得壓強(qiáng),但這個(gè)壓強(qiáng)并不是所要拾取的收縮壓、舒張壓和心率;而普通的血壓計(jì)又沒有智能儀表那樣的通信接口與單片機(jī)通信。顯然,要想通過這樣的儀表拾取被測(cè)信號(hào)只有直接讀取其顯示屏的讀數(shù)了。

  本文以一個(gè)全自動(dòng)血壓計(jì)為例,介紹將LCD顯示器讀數(shù)讀入單片機(jī)的接口電路。該血壓計(jì)顯示器為6 1/2位段式LCD顯示器,3位顯示收縮壓,3位顯示舒張壓。1/2位在兩組數(shù)碼中間,顯示4個(gè)指示符號(hào)。

  1  LCD的電極連接結(jié)構(gòu)和工作波形

  1.1  LCD的電極連接結(jié)構(gòu)

  圖1為血壓計(jì)LCD的電極連接結(jié)構(gòu)及等效電路。其中,圖1(a)為公共電極連接排列,圖1(b)為段電極連接排列。它共有4個(gè)公共電極COM0~COM3,每位數(shù)碼各有2個(gè)段電極Sx-0、Sx-1,其等效電路為一個(gè)4行×2列的矩陣,如圖1(c)所示。

按此在新窗口瀏覽圖片

圖1  LCD電極連接結(jié)構(gòu)及等效電路

  1.2  LCD的工作波形

  用雙蹤示波器觀察血壓計(jì)LCD的工作波形,如圖2所示。它采用時(shí)分割驅(qū)動(dòng)法驅(qū)動(dòng),偏比1/3,占空比1/4,B型[3]。公共電極COM0~COM3的信號(hào)波形始終保持不變,段電極Sx-0、Sx-1信號(hào)波形隨顯示數(shù)字的變化而變化。圖2中的Sx-0、Sx-1波形為顯示數(shù)字“0”時(shí)的工作波形。由圖2可知,不考慮信號(hào)的直流分量,所有波形的前半周期t1~t4與后半周期t5~t8大小相等,極性相反。COM0~COM3信號(hào)電壓依次在t1~t4四個(gè)時(shí)間內(nèi)達(dá)到峰值。時(shí)間t1為第1行上f、a兩段的掃描時(shí)間,公共電極COM0,Sx-0為f段的段電極,Sx-1為a段的段電極。在t1時(shí)間內(nèi), f段上的電壓COM0-Sx-0=V0,a段上的電壓COM0-Sx-1=V0,f、a兩段均處于選擇狀態(tài),顯示。其余各段在其掃描時(shí)間內(nèi)的電壓和顯示狀態(tài)如表1所列。7段中只有g(shù)段上的電壓為V0/3,處于非選擇狀態(tài),不顯示。其余6段均處于選擇狀態(tài),顯示。因此,顯示數(shù)字“0”。

按此在新窗口瀏覽圖片

圖2  LCD工作波形

表1  顯示“0”時(shí)各段的顯示狀態(tài)

按此在新窗口瀏覽圖片

  由此可見,只要依次檢查在t1~t4四個(gè)時(shí)間內(nèi)f、a、g、b、e、c、d各段上的電壓COMx-Sx-y(x=0,1,…,6;y=0,1)是V0還是V0/3即可獲得LCD各位數(shù)碼的字形碼,然后再將字形碼轉(zhuǎn)換為測(cè)量結(jié)果。

  2  單片機(jī)讀數(shù)接口電路

  圖3為根據(jù)上述工作原理設(shè)計(jì)的8051單片機(jī)讀數(shù)接口電路。圖中,LCD為血壓計(jì)的液晶顯示器,6位數(shù)碼從右到左依次編號(hào)0~5,中間半位的編號(hào)為6。它有13個(gè)段電極、4個(gè)COM電極,GND為血壓計(jì)的接地端。8051的 PC口為8051的擴(kuò)展并行口。

按此在新窗口瀏覽圖片

圖3  讀數(shù)接口電路

  2.1  顯示狀態(tài)讀取電路

  由CD4067、CD4051、LM324(UA、UB)組成顯示狀態(tài)讀取電路,讀取LCD數(shù)碼各段的顯示狀態(tài)。CD4067多路模擬開關(guān)從LCD的13個(gè)段電極信號(hào)中選擇一路Sx-x輸出到LM324(UA)的反相輸入端2腳。CD4051多路模擬開關(guān)從LCD的4個(gè)COM信號(hào)中選擇一路COMx輸出到LM324(UA)的同相輸入端3腳。LM324(UA)接成模擬減法器,由1腳輸出信號(hào)COMx-Sx-x。UB作電壓比較器,參考電壓VR大小由電位器W1調(diào)節(jié)于V0/3~V0之間,將段電壓COMx-Sx-x與VR比較。比較結(jié)果為該段的顯示狀態(tài),高電平說明該段顯示,低電平不顯示。顯示狀態(tài)送入8051的P1.6腳。R1、C1組成RC濾波器,濾除高頻干擾。

  比如,要讀取0號(hào)數(shù)碼的a段顯示狀態(tài),由圖1知,0號(hào)數(shù)碼a段的段電極是S0-1,公共電極是COM0。由程序控制在t1時(shí)間內(nèi)令PC1PC0=00,使CD4051選擇COM0,令PC5~PC2=0001,使CD4067選擇S01,COM0和S01兩信號(hào)電壓經(jīng)UA減法器相減,然后再經(jīng)UB電壓比較后得到a段的顯示狀態(tài),8051從P1.6腳讀取此顯示狀態(tài)。

  2.2  INT0中斷信號(hào)產(chǎn)生電路

  UC和UD組成INT0中斷信號(hào)產(chǎn)生電路。UC 接成電壓跟隨器,減小電路對(duì)COM0信號(hào)的影響。R2、C2組成RC濾波器,濾除高頻干擾。UD作電壓比較器,參考電壓VR加在同相輸入端,VR大小由電位器W2調(diào)節(jié)于2V0/3~V0。電壓比較器將COM0信號(hào)轉(zhuǎn)換為INT0負(fù)脈沖信號(hào),工作波形如圖4所示。負(fù)脈沖的下降沿為LCD驅(qū)動(dòng)信號(hào)周期T的起始時(shí)刻。此負(fù)脈沖接至8051的INT0腳,在負(fù)脈沖的下降沿產(chǎn)生外部中斷0。

按此在新窗口瀏覽圖片

圖4  比較器UD工作波形

  3  程序設(shè)計(jì)

  啟用外部中斷0和定時(shí)器T0,以中斷方式讀取LCD各位數(shù)碼的字形碼。主程序以查詢方式讀取該字形碼,然后經(jīng)過讀數(shù)校驗(yàn)、字形碼到BCD碼的譯碼、讀數(shù)識(shí)別等,將字形碼轉(zhuǎn)換為讀數(shù)。

  3.1  讀取字形碼

  通過外部中斷0和定時(shí)器T0以中斷方式讀取LCD某一編號(hào)數(shù)碼的字形碼。如圖5所示,INT0負(fù)脈沖在周期T的起始時(shí)刻引起外部中斷0,由INT0中斷服務(wù)程序啟動(dòng)T0定時(shí)器,依次在t1~t4半個(gè)周期內(nèi)的f、a、g、b、e、c、d各時(shí)刻產(chǎn)生T0中斷,讀取各段的顯示狀態(tài),獲得字形碼。T0定時(shí)器設(shè)為工作方式2,自動(dòng)再裝入定時(shí)時(shí)間為T/16,初始定時(shí)時(shí)間為T/32。INT0和T0中斷服務(wù)程序流程如圖6所示。

按此在新窗口瀏覽圖片

圖5  T0中斷的各個(gè)時(shí)刻

按此在新窗口瀏覽圖片

圖6  INT0和T0中斷服務(wù)程序流程

  其中,PC口數(shù)據(jù)格式:PC5~PC3為要讀取的那位LCD數(shù)碼編號(hào),PC2為段電極編號(hào),PC1PC0為COM電極編號(hào)。

  3.2  字形碼轉(zhuǎn)換

  主程序以查詢方式分別讀取由中斷服務(wù)程序采集的各位數(shù)碼的字形碼,查表將字形碼轉(zhuǎn)換為BCD碼,再將幾位數(shù)碼的BCD碼轉(zhuǎn)變?yōu)閿?shù)值。

  3.3  讀數(shù)校驗(yàn)

  讀取一位數(shù)碼的字形碼需要1個(gè)周期T(實(shí)際只用前半個(gè)周期),經(jīng)測(cè)量,T=16.318 ms。讀取全部612位數(shù)碼至少需要用7個(gè)周期,約114 ms。考慮到在單片機(jī)讀數(shù)的過程中,LCD的讀數(shù)有可能發(fā)生變化而導(dǎo)致讀數(shù)錯(cuò)誤,程序中采用連續(xù)兩次讀數(shù)的方法來校驗(yàn)讀數(shù)的正確性。如果連續(xù)兩次讀數(shù)相同,則說明讀數(shù)是正確的;如果連續(xù)兩次讀數(shù)不同,則說明讀數(shù)可能是錯(cuò)誤的,應(yīng)重新讀數(shù)。

  3.4  讀數(shù)識(shí)別

  血壓計(jì)顯示的內(nèi)容除了收縮壓、舒張壓和心率以外還有充氣、放氣時(shí)的瞬時(shí)壓強(qiáng)以及一些狀態(tài)信息。LCD中間的半位(6號(hào))用于顯示待機(jī)(Reay to measure)、充氣(CUFF Inflating)、放氣(CUFF Deflating)以及更換電池(Replace Batteries)四個(gè)符號(hào)。另外,4號(hào)數(shù)碼顯示“E”時(shí)表示測(cè)量出錯(cuò),顯示“P”時(shí),右邊3位(0~2號(hào))數(shù)碼顯示的數(shù)字為心率。左右兩邊顯示內(nèi)容均是數(shù)字時(shí),左邊3位(3~5號(hào))是收縮壓,右邊3位是舒張壓,血壓與心率交替顯示。主程序通過這些信息來識(shí)別LCD所顯示的內(nèi)容。

  4  結(jié)論

  使用此接口電路采集數(shù)據(jù),不必考慮與拾取信號(hào)的測(cè)量相關(guān)的細(xì)節(jié)問題和技術(shù)規(guī)范。這樣,當(dāng)拾取信號(hào)的測(cè)量比較復(fù)雜時(shí),可以有效地縮短開發(fā)周期。同時(shí),它也不存在二次A/D轉(zhuǎn)換或V/F轉(zhuǎn)換方法所存在的單片機(jī)采集數(shù)據(jù)與儀表讀數(shù)不完全一致的問題。

  程序設(shè)計(jì)用1個(gè)驅(qū)動(dòng)信號(hào)周期讀取1位數(shù)碼,這樣的讀取速度對(duì)于讀數(shù)變化不是很快的血壓計(jì)來說已經(jīng)足夠了。如果測(cè)量儀表LCD讀數(shù)變化很快,可以修改編程,在1個(gè)周期內(nèi)同時(shí)讀取幾位數(shù)碼,甚至修改電路設(shè)計(jì),將后半周期也用于進(jìn)行讀數(shù),實(shí)現(xiàn)在1個(gè)信號(hào)周期內(nèi)讀取所有數(shù)碼。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。