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

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

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

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

?

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

?

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

?


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

?


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

?


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

?


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


參考文獻(xiàn)
[1]?I2C總線規(guī)范[EB/OL]. http://www.zlgmcu.com/philips/iic/xuanxing/.2008.
[2]?P89C58手冊(cè)[EB/OL]. http://www.zlgmcu.com/philips/80c51/shouce/p89c5x/.2008.
[3] 數(shù)碼管驅(qū)動(dòng)及鍵盤(pán)控制芯片CH452中文手冊(cè)[EB/OL]. http://wch.cn/.2008.
[4]?PCF8574AP手冊(cè)[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)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。