《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > I2C總線在指紋識別系統(tǒng)鍵盤顯示中的應(yīng)用

I2C總線在指紋識別系統(tǒng)鍵盤顯示中的應(yīng)用

2009-09-24
作者:羅煥發(fā),李見為,楊先周

  摘 要:針對大多數(shù)嵌入式系統(tǒng)鍵盤顯示電路復(fù)雜、不靈活、維護(hù)困難等問題,結(jié)合指紋識別系統(tǒng)在汽車安全領(lǐng)域的應(yīng)用,介紹了基于I2C總線的數(shù)碼管顯示驅(qū)動和鍵盤掃描控制芯片CH452S以及擴(kuò)展口器件PCF8574AP在指紋識別系統(tǒng)鍵盤顯示接口中的應(yīng)用,包括硬件電路連接和軟件程序設(shè)計(jì)。采用I2C總線,不僅占用端口資源少,電路結(jié)構(gòu)簡單,而且易于電路擴(kuò)展與系統(tǒng)升級。
  關(guān)鍵詞: I2C總線; 單片機(jī); PCF8574AP; LCD; CH452S

?

  本文介紹的指紋識別系統(tǒng)采用單片機(jī)與DSP協(xié)同工作,實(shí)現(xiàn)用戶服務(wù)。為此,必須提供一個與用戶進(jìn)行對話的接口,即鍵盤顯示人機(jī)接口。指紋識別系統(tǒng)框圖如圖1所示。嵌入式系統(tǒng)開發(fā)過程中,鍵盤顯示一般采用微控制器直接與專用集成電路連接,如HD7279A、KS0108等,其所需引腳多、空間大,不利于產(chǎn)品小型化,而且成本高。由于本系統(tǒng)被控對象較多,包括DSP的HPI口、鍵盤顯示、GSM短信報警以及汽車控制接口,端口供需矛盾尤其突出。I2C總線是近年來嵌入式系統(tǒng)開發(fā)所廣泛采用的總線標(biāo)準(zhǔn),僅需2根線即可簡單、方便、有效地實(shí)現(xiàn)I/O口擴(kuò)展。本文主要介紹利用單片機(jī)普通I/O口模擬I2C總線操作,控制CH452S實(shí)現(xiàn)按鍵操作的捕獲,并控制PCF8574AP擴(kuò)展的并行口生成LCD 讀寫控制所需時序,完成指紋識別系統(tǒng)信息顯示。

?

1 I2C總線簡述
  Inter-Integrated Circuit Bus簡稱I2C總線,是由Philips公司開發(fā)的兩線串行總線,長度可達(dá)25英尺。I2C總線實(shí)現(xiàn)系統(tǒng)功能簡單有效,占用空間小,所需芯片管腳數(shù)量少,只須使用2根線即可方便構(gòu)成多機(jī)系統(tǒng)與擴(kuò)展系統(tǒng),便于系統(tǒng)維護(hù)與升級。這2根線一根是數(shù)據(jù)線SDA,另一根是時鐘線SCL,2條線都必須通過一個上拉電阻連接到正的電源電壓,其數(shù)據(jù)只有在總線空閑時才可傳送[1]。SDA線上的數(shù)據(jù)必須在時鐘線SCL高電平期間保持穩(wěn)定,否則將被視為起始條件或停止條件。當(dāng)SCL為高電平時,SDA由高電平切換為低電平,則為起始條件;當(dāng)SCL為高電平時,SDA由低電平切換為高電平,則為停止條件,如圖2所示,其中S為起始條件,P為停止條件。

?


  I2C總線上可以同時有多個I2C器件,每個器件都有唯一的地址識別,而且每個器件可作為主機(jī),也可作為從機(jī),可以是發(fā)送器,也可以是接收器,這主要取決于器件所要完成的功能。數(shù)據(jù)傳送格式是以主機(jī)發(fā)送啟動信號開始,接著發(fā)送第一個字節(jié),此字節(jié)的高7位為從設(shè)備地址,最低位為讀寫控制位。該位為0表示主機(jī)向從機(jī)發(fā)送數(shù)據(jù),為1表示主機(jī)從從機(jī)讀取數(shù)據(jù)。總線每次傳送的字節(jié)數(shù)沒有限制,但是各字節(jié)之間必須插入一個應(yīng)答位,數(shù)據(jù)字節(jié)從最高位開始發(fā)送,全部數(shù)據(jù)發(fā)送完后,就發(fā)送停止信號完成一次數(shù)據(jù)傳送。其中,應(yīng)答位是在發(fā)送每個字節(jié)之后主機(jī)發(fā)出第9個時鐘脈沖的高電平期間,發(fā)送器釋放SDA線(高),接收器拉低SDA線。如果傳輸中存在主機(jī)-接收器,則在最后一個字節(jié)不產(chǎn)生響應(yīng),通知從機(jī)-發(fā)送器數(shù)據(jù)傳輸結(jié)束,其傳輸格式如圖3所示。

?


2?硬件電路設(shè)計(jì)
  在指紋識別系統(tǒng)中,單片機(jī)負(fù)責(zé)管理系統(tǒng)級事務(wù),監(jiān)控鍵盤的按鍵操作和LCD的顯示。鍵盤用于完成用戶操作指令的輸入,使得用戶可以借助鍵盤輸入指令實(shí)現(xiàn)指紋識別系統(tǒng)的操作,而LCD用于顯示系統(tǒng)操作菜單以及系統(tǒng)反饋的提示信息和處理結(jié)果。
  單片機(jī)采用Philips的P89C58,該款單片機(jī)基于80C51內(nèi)核,具有32 KB非易失性只讀程序存儲器、256B內(nèi)部數(shù)據(jù)存儲器RAM、32個雙向I/O口、3個16位定時/計(jì)數(shù)器、6個中斷源[2]。
  鍵盤控制采用南京沁恒電子公司的CH452S,CH452S是數(shù)碼管顯示驅(qū)動和鍵盤掃描控制芯片,內(nèi)置時鐘振蕩電路,可以驅(qū)動8位數(shù)碼管并進(jìn)行64鍵鍵盤掃描[3],具有4線接口和2線接口,其中2線接口支持I2C總線。
  顯示采用小尺寸的LCD,帶有僅寫入的SPI接口,由擴(kuò)展口芯片PCF8574AP的并行口控制。PCF8574AP是Philips公司推出的一款帶有I2C總線硬件接口的擴(kuò)展口芯片,具有8位I/O口,且每一位都可獨(dú)立作為輸入輸出線。I/O口帶輸出鎖存,具有大電流驅(qū)動,可直接驅(qū)動LED[4]。
  由于該單片機(jī)P89C58不帶I2C硬件接口,因此,利用單片機(jī)的2個I/O口模擬I2C總線,總線的數(shù)據(jù)線接單片機(jī)的外部中斷1端口P3.3,時鐘線接單片機(jī)的P3.4端口,電路連接如圖4所示。

?


  在應(yīng)用中,CH452S采用標(biāo)準(zhǔn)2線接口,串行數(shù)據(jù)時鐘輸入線SCL和串行數(shù)據(jù)輸入、輸出線SDA,按鍵中斷輸出方式為低電平脈沖。在掃描鍵盤期間,DIG7~DIG0引腳用于列掃描輸出,SEG7~SEG0引腳都帶有內(nèi)部下拉電阻,用于行掃描輸入。鍵盤掃描是由CH452S自動完成的,當(dāng)檢測到有效按鍵時,會以中斷的方式通知單片機(jī)進(jìn)行處理。根據(jù)本系統(tǒng)需要,設(shè)計(jì)了4×4的鍵盤矩陣。用戶通過操作鍵盤對系統(tǒng)進(jìn)行控制和使用,鍵盤按扭的功能定義如下:(1)數(shù)字鍵:輸入數(shù)字0~9;(2)確定鍵:確認(rèn)當(dāng)前操作;(3)取消鍵:取消當(dāng)前操作;(4)注冊鍵:進(jìn)入用戶指紋注冊界面;(5)登錄鍵:進(jìn)入用戶指紋登錄界面;(6)刪除鍵:進(jìn)入用戶指紋刪除界面;(7)模式鍵:進(jìn)入模式功能選擇界面。由于CH452S不支持組合鍵,如果有多個鍵同時按下,那么按鍵代碼小的為有效按鍵。
  單片機(jī)對LCD顯示的控制是通過I2C總線讀寫PCF8574AP擴(kuò)展口,生成LCD讀寫時序?qū)崿F(xiàn)的,數(shù)據(jù)傳輸格式如圖3所示。對于PCF8574AP器件來說,從機(jī)地址為0x70。由于LCD僅采用寫入的SPI接口方式,所以無須用到對PCF8574AP讀操作,但在實(shí)際應(yīng)用中,PCF8574AP作為輸入時應(yīng)置口鎖存器為高電平,即在讀PCF8574AP前需要將PCF8574AP擴(kuò)展口全部置為1狀態(tài)。
3? 軟件程序設(shè)計(jì)
  指紋識別系統(tǒng)的主控程序是由單片機(jī)來完成的,監(jiān)控鍵盤和LCD顯示是其中的一部分。由于單片機(jī)不帶硬件I2C接口,所以I2C協(xié)議通過模擬實(shí)現(xiàn),此協(xié)議比較簡單,主要包括啟動總線、結(jié)束總線、發(fā)送數(shù)據(jù)、讀取數(shù)據(jù)、獲取響應(yīng)、發(fā)送響應(yīng)。鍵盤控制芯片CH452S定義了空操作、復(fù)位、設(shè)定系統(tǒng)參數(shù)、讀取按鍵代碼、進(jìn)入睡眠狀態(tài)等23條操作命令,單片機(jī)通過I/O口模擬I2C總線發(fā)送操作命令。LCD采用SPI接口,包括復(fù)位、片選、數(shù)據(jù)/命令、串行數(shù)據(jù)、時鐘5條線,分別由PCF8574AP擴(kuò)展的5個I/O口控制,改變狀態(tài)只須往PCF8574AP寫相應(yīng)的數(shù)據(jù)即可。系統(tǒng)共設(shè)有16個按鍵,當(dāng)CH452檢測到有效按鍵時,將等到SCL和SDA空閑后從SDA輸出幾個微秒寬度的低電平脈沖作為鍵盤的中斷信號。單片機(jī)響應(yīng)鍵盤中斷請求后,向CH452S發(fā)送讀取按鍵代碼命令,CH452S將從SDA線輸出按鍵代碼。為了提高系統(tǒng)運(yùn)行效率、減少中斷處理時間,中斷服務(wù)程序只設(shè)置鍵盤的中斷標(biāo)志(此中斷標(biāo)志為自設(shè)變量),將讀取按鍵代碼子程序放在中斷外主控程序執(zhí)行,程序流程圖如圖5所示。

?


  系統(tǒng)在上電后,主控程序首先對系統(tǒng)進(jìn)行初始化,包括單片機(jī)初始化、CH452S初始化、LCD顯示初始化、I2C總線初始化等,然后進(jìn)入死循環(huán)。在循環(huán)中,程序等待中斷。當(dāng)有中斷發(fā)生后,在中斷服務(wù)程序置位相應(yīng)的中斷標(biāo)志位,然后退出中斷等待,進(jìn)入中斷查詢,看是哪種類型的中斷。如果是鍵盤中斷,則單片機(jī)通過I2C總線向CH452S發(fā)送讀取按鍵代碼命令;如果是其他中斷,則處理其他信息。最后進(jìn)行按鍵處理和更新LCD顯示,供用戶進(jìn)一步操作。隨后又回到等待中斷循環(huán)中,如此不停地循環(huán)反復(fù)。
  本文介紹了采用I2C總線實(shí)現(xiàn)對指紋識別系統(tǒng)鍵盤及LCD顯示的控制,經(jīng)過實(shí)踐證明,此方案構(gòu)建的鍵盤顯示人機(jī)接口可實(shí)現(xiàn)正常的按鍵捕獲和信息顯示,是一種簡單實(shí)用、穩(wěn)定可靠的設(shè)計(jì)方案。該方案節(jié)約了單片機(jī)端口引腳資源,降低了系統(tǒng)復(fù)雜度,軟硬件實(shí)現(xiàn)容易,成本低廉,而且易于系統(tǒng)功能擴(kuò)展。本文介紹的方法,只須經(jīng)過簡單適當(dāng)修改,即可應(yīng)用于其他嵌入式系統(tǒng)場合,很值得推廣使用。


參考文獻(xiàn)
[1]?I2C總線規(guī)范[EB/OL]. http://www.zlgmcu.com/philips/iic/xuanxing/.2008.
[2]?P89C58手冊[EB/OL]. http://www.zlgmcu.com/philips/80c51/shouce/p89c5x/.2008.
[3] 數(shù)碼管驅(qū)動及鍵盤控制芯片CH452中文手冊[EB/OL]. http://wch.cn/.2008.
[4]?PCF8574AP手冊[EB/OL]. http://www.zlgmcu.com/philips/iic/ePDF/.2008.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。