1 引言 鍵盤(pán)越來(lái)越廣泛地應用于嵌入式系統中。不同的應用領(lǐng)域鍵盤(pán)掃描方式的設計也各不相同,一般有以下=三種:①軟件方法來(lái)實(shí)現對鍵盤(pán)的掃描。②采用專(zhuān)用芯片實(shí)現對鍵盤(pán)的掃描。這是嵌入式系統中設計鍵盤(pán)普遍使用的方法。常用的鍵盤(pán)控制芯片有zl97289A等。這些芯片的內部集成了鍵盤(pán)的驅動(dòng)電路。配合一定的軟件設計即可使用。③與方式②相仿,由于按鍵的狀態(tài)變化體現在電平高低的變化,因此通過(guò)I/O口模擬鍵盤(pán)的驅動(dòng)信號也可實(shí)現鍵盤(pán)的控制。 隨著(zhù)芯片技術(shù)的發(fā)展,處理器內部的資源越來(lái)越豐富。如韓國三星半導體公司的32位ARM處理器S3C44BOX芯片.其內部集成了外部存儲器控制器、LCD控制器、4個(gè)DMA通道、2通道異步UART單元、1個(gè)同步串行口(SIO),1個(gè)多主I2C總線(xiàn)控制器、1個(gè)I2S總線(xiàn)控制器。5通道PWM定時(shí)器及1個(gè)內部定時(shí)器、71個(gè)通用I/O、8個(gè)外部中斷源、實(shí)時(shí)時(shí)鐘、8通道10位ADC等。由于其內部豐富的I/O口及I/O口擴展,可以通過(guò)S3C44BOX的I/O 口模擬鍵盤(pán)的驅動(dòng)信號實(shí)現鍵盤(pán)的控制。 2 鍵盤(pán)工作原理 嵌入式系統中應用較多的為矩陣鍵盤(pán).現以4x4的矩陣鍵盤(pán)為例,說(shuō)明其下作原理。,4x4行、列結構的16按鍵矩陣鍵盤(pán)由行線(xiàn)和列線(xiàn)組成。按鍵位于其行列的交叉點(diǎn)上。結構圖如圖1所示。要與4x4的矩陣鍵盤(pán)接口,最多需要16根口線(xiàn),為節省口線(xiàn)。在此選擇“鍵盤(pán)循環(huán)掃描”方法來(lái)檢測鍵盤(pán).采用此方法只需8根口線(xiàn)。 按鍵設置在行、列交叉點(diǎn)上,行、列分別連接到按鍵開(kāi)關(guān)的兩端。行線(xiàn)通過(guò)上拉電阻接到+5V上。平時(shí)無(wú)按鍵動(dòng)作時(shí).行線(xiàn)電平狀態(tài)將由通過(guò)此按鍵的列線(xiàn)電平?jīng)Q定:列線(xiàn)電平如果為低.行線(xiàn)電平為低;列線(xiàn)電平如果為高,則行線(xiàn)電平亦為高。因各按鍵之間相互發(fā)生影響,所以必須將行、列線(xiàn)信號配合起來(lái)并作適當的處理,才能確定閉合鍵的位置。 ![]() 圖1 矩陣式鍵盤(pán)結構 矩陣鍵盤(pán)循環(huán)掃描的識別方法,分兩步進(jìn)行:①識別鍵盤(pán)哪一行的鍵被按下。讓所有列線(xiàn)均為低電平,檢杳各行線(xiàn)電平是否為低。如果有行線(xiàn)為低,則說(shuō)明該行有鍵被按下,否則說(shuō)明無(wú)鍵被按下。②如果某行有鍵被按下。識別鍵盤(pán)哪一列的鍵被按下(亦稱(chēng)之為掃描法)。逐列置低電平,并置其余各列為高電平,檢查各行線(xiàn)電平的變化。如果行電平變?yōu)榈碗娖剑畡t可確定此行此列交叉點(diǎn)處按鍵被按下。 3 S3C44BOX與鍵盤(pán)硬件接口電路 S3C44BOX核心ARM板具有71個(gè)多功能輸入/輸出腳,包含在以下7組端口中:1個(gè)lO位輸出端口 A、1個(gè)11位輸出端口B、1個(gè)16位輸入/輸出端口c、2個(gè)8位輸入/輸出端口D和G、2個(gè)9位輸入/輸出端口E和F。從端口A(yíng)~G的功能描述看出.在一般的應用中,PA作為地址線(xiàn)使用;PB作為板塊bank選擇線(xiàn)和SDRAM的接口線(xiàn)使用;PC可以作為數據線(xiàn)、I2S接口、或LCD數據線(xiàn)等使用;在系統具備LCD的情況下,PD主要作為L(cháng)CD的信號線(xiàn)使用;PE可以作為串口信號線(xiàn)和定時(shí)器輸出使用;PF和PG則是多功能I/O口。在A(yíng)RMsys平臺中,很多端口線(xiàn)已被指定了一定的作用,例如PA,PB,PC,PD等;再者PF口集中分布在芯片右側引腳上,便于硬件連接。因此,在此選取PF口作為檢測鍵盤(pán)端口,并設定PF0~PF3為輸出掃描碼的端口,PF4~PF7為鍵值讀入口。 4 系統的軟件設計 鍵盤(pán)的掃描程序采用C語(yǔ)言編寫(xiě)。主要由三個(gè)部分組成:與S3C44BOX硬件有關(guān)的初始化程序、應用主程序、讀鍵子程序。在編寫(xiě)與S3C44BOX硬件有關(guān)的初始化程序時(shí)主要是對S3C44BOX內部各寄存器進(jìn)行初始化.首先通過(guò)設置PCONF(端口配置)寄存器,來(lái)實(shí)現端口功能配置。然后再分別設置PDATF(端口數據)及PUPF(端口上拉設置)寄存器。初始化設置程序如下: //設置PF0~3為輸出口(列線(xiàn)),PF4~7位輸入口 rfPCONF = Ox55: //設置PF0~3作為輸出口輸出掃描碼 rPDATF = 0xf0;//PFO~3全寫(xiě)入0 //設置PF4~7作為輸入口讀入鍵值 Keyvalue = (rPDATF&Oxf0)>>4; //設置內部上拉電阻 rPUPF = OxOO.//使能PFO~7的內部上拉電阻 主程序以一定的時(shí)間間隔反復調用讀鍵字程序.從而實(shí)時(shí)響應鍵入。主、子程序流程圖如圖2、3所示。 ![]() 圖2 主程序流程圖 ![]() 圖3 掃描按鍵子程序流程圖 子程序中定義了鍵值表格、掃描碼數組,程序如下: const char Keyboard[4][4]= { {'7','8','9','/'}, {'4','5','6','*'} {'1','2','3','-'} {'0','.','+','='} } 掃描碼數組為scanvalue[4]={0xfe,0xfd,0xfb,0xf7} 5 結束語(yǔ) 鍵盤(pán)已成為現代嵌入式設備人機交互的首選輸入設備。本文介紹了鍵盤(pán)循環(huán)掃描的工作原理,以三星公司ARM7內核芯片S3C44BOX為基礎.完成了鍵盤(pán)的軟硬件設計,實(shí)踐證明系統是穩定的、可靠的。 本文作者的創(chuàng )新點(diǎn)是:以ARM內核芯片S3CA4BOX為基礎.實(shí)現嵌入式設備的輸入功能,此系統具有擴展性好、用戶(hù)界面友好。外圍電路簡(jiǎn)單,可靠性高的特點(diǎn),其硬件接口采用插板的形式,結構簡(jiǎn)單、易于裝卸,方便系統集成和維護。 作者:余貴水 來(lái)源:《微計算機信息》(嵌入式與SOC)2009年第7-2期 |