亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        嵌入式linux下基于單片機(jī)的矩陣鍵盤與ARM的串行通信

        2008-04-12 00:00:00王成華
        現(xiàn)代電子技術(shù) 2008年4期

        摘要:提出一種單片機(jī)控制的由按鍵和旋鈕組成的矩陣鍵盤的設(shè)計(jì)方法,并實(shí)現(xiàn)其在嵌入式Linux下與ARM的串行通信,從硬件和軟件的角度詳細(xì)介紹該方案的實(shí)現(xiàn)過(guò)程,給出了基本的硬件原理和按鍵掃描以及通信程序設(shè)計(jì)的方法。實(shí)驗(yàn)證明,此方案簡(jiǎn)單可靠,ARM在Linux下可以準(zhǔn)確響應(yīng)鍵盤事件,已經(jīng)應(yīng)用于數(shù)字存儲(chǔ)示波器的研發(fā)中。

        關(guān)鍵詞:?jiǎn)纹瑱C(jī);距陣鍵盤;嵌入式linux;串行通信

        中圖分類號(hào):TN41;TP33

        文獻(xiàn)標(biāo)識(shí)碼:B

        文章編號(hào):1004—373X(2008)04—177—04

        1 引 言

        在現(xiàn)代工業(yè)控制系統(tǒng)和儀器設(shè)備中,鍵盤是不可缺少的輸入設(shè)備,是控制系統(tǒng)與操作人員交流的橋梁。操作人員可以通過(guò)外設(shè)鍵盤靈活地輸入各種參數(shù)以控制系統(tǒng)的運(yùn)行。考慮到本系統(tǒng)按鍵數(shù)量較多(23個(gè)按鍵和7個(gè)旋鈕),并且不想使用專用的鍵盤處理芯片,所以采用矩陣式鍵盤設(shè)計(jì)。單片機(jī)性能穩(wěn)定、價(jià)格低廉、功能強(qiáng)大,在儀器設(shè)備和電子消費(fèi)品中得到越來(lái)越廣泛的應(yīng)用。在單片機(jī)系統(tǒng)中,串行通信接口由于具有接口簡(jiǎn)單、容易實(shí)現(xiàn)等優(yōu)點(diǎn)已經(jīng)被廣泛使用,成為一種常用的接口。例如,單片機(jī)通過(guò)串口和上位機(jī)ARM進(jìn)行通信,就能夠?qū)崿F(xiàn)遠(yuǎn)程控制并能利用ARM強(qiáng)大的數(shù)據(jù)處理功能和友好的控制界面。Linux由于具有內(nèi)核強(qiáng)大、開(kāi)源、易擴(kuò)展和裁減以及豐富的硬件支持等許多優(yōu)點(diǎn),在嵌入式系統(tǒng)得到非常廣泛的應(yīng)用。特別是他的性能穩(wěn)定非常適合做工業(yè)控制。本文提出的鍵盤通信方案就是以嵌入式Linux和ARM 9處理器為軟硬件平臺(tái),在便攜式嵌入式設(shè)備上的應(yīng)用表明其具有較好的穩(wěn)定性和實(shí)時(shí)性。

        2 系統(tǒng)總體方案設(shè)計(jì)

        基于本系統(tǒng)的具體要求采用單片機(jī)控制鍵盤與ARM進(jìn)行實(shí)時(shí)串行通信。單片機(jī)采用美國(guó)Atmel公司生產(chǎn)的低電壓,高性能CMOS 8位單片機(jī)AT89C2051,此款單片機(jī)是Atmel公司的一種精簡(jiǎn)型51內(nèi)核單片機(jī)。ARM處理器采用三星公司的$3C2410 ARM9處理器,是16/32位RISC微處理器,主要用于低成本、低功耗和高性能手持設(shè)備和一般應(yīng)用的單片微處理器解決方案。由AT89C2051單獨(dú)管理鍵盤,實(shí)現(xiàn)鍵盤的識(shí)別譯碼工作,然后通過(guò)串口與ARM在Linux下進(jìn)行實(shí)時(shí)通信。圖1是系統(tǒng)總體框圖。

        3 硬件設(shè)計(jì)

        在本系統(tǒng)中,鍵盤由23個(gè)按鍵式開(kāi)關(guān)和7個(gè)旋鈕開(kāi)關(guān)構(gòu)成,相當(dāng)于37個(gè)按鍵式開(kāi)關(guān),于是將鍵盤按照8×5的矩陣鍵盤結(jié)構(gòu)進(jìn)行組織,其中3列為按鈕式按鍵,另2列分別接7個(gè)旋鈕開(kāi)關(guān)的A,B引出端。由于一般情況下ARM的CPU的任務(wù)較重,且I/O端口資源不足,所以使用專門的鍵盤掃描控制器完成對(duì)矩陣鍵盤的管理工作,該控制器即單片機(jī)AT89C2051,當(dāng)鍵盤控制器判斷到有按鍵事件發(fā)生,并判讀出相應(yīng)鍵碼后,就通過(guò)異步串行口與ARM通信,ARM的主CPU在接收到鍵碼后,會(huì)由硬件產(chǎn)生中斷并軟件響應(yīng),執(zhí)行相應(yīng)的處理程序。由于要實(shí)現(xiàn)符合RS 232的串行通信,還應(yīng)該用MAX 232芯片構(gòu)成串口電平轉(zhuǎn)換電路。圖2是系統(tǒng)硬件電路的示意圖,由于是ARM接收鍵盤發(fā)送的數(shù)據(jù),所以串行口采用2線制接法,即鍵盤和ARM的UART控制器的TXD和GND相互連接。

        在圖2中,鍵盤矩陣的KH0~KH7共8根行線接至AT89C2051 P1口的P1.0~P1.7引腳,KV0~KV4共5根列線接至P3口的對(duì)應(yīng)引腳,P 3.1作為異步串口的發(fā)送端,用于和主CPU通信。

        4 軟件設(shè)計(jì)

        軟件部分的程序包括上位機(jī)單片機(jī)鍵盤掃描程序和下位機(jī)ARM的接收處理程序,下面分別介紹。

        4.1鍵盤掃描程序設(shè)計(jì)與實(shí)現(xiàn)

        本系統(tǒng)采用矩陣鍵盤接口設(shè)計(jì),在對(duì)按鍵進(jìn)行編碼時(shí)一般是先獲得按鍵的掃描碼,然后將其轉(zhuǎn)化為事先約定的按鍵編碼。雖然不同的按鍵接口方式對(duì)應(yīng)不同的按鍵識(shí)別方法,但無(wú)論哪種接口方式,按鍵的閉合與否都反映在電壓的高低上,因此系統(tǒng)可以通過(guò)檢測(cè)不同的電平狀態(tài)來(lái)識(shí)別按鍵是否按下。另外,采用掃描法識(shí)別按鍵,讓行線從KH0,KH1到KH7逐行置零電平,若KH0為零電平,KH1~KH7為高電平,此刻依次檢查各列電平變化,若某列電平由高變低則表示此列與KH0的交叉處的鍵盤被按下。其主程序流程如圖3所示。

        結(jié)合本系統(tǒng)的具體情況,AT89C2051單片機(jī)僅用來(lái)進(jìn)行對(duì)鍵盤的管理,故可采用編程掃描方式,圖4為其鍵盤掃描子程序流程圖。

        由于鍵盤面板中包括按鍵和旋鈕,所以在編程的時(shí)候要區(qū)別對(duì)待。對(duì)于按鍵,首先將第N行置低電平,其余行置高電平,讀取SW_data值,若其與之前的SW值相等,則表示有可能按鍵被按下,此刻直接讀取列號(hào)看是否有鍵被按下,若有則通過(guò)行列號(hào)來(lái)確定具體的按鍵碼值。若SW_data值與之前的SW值不同則表示可能是旋鈕的轉(zhuǎn)動(dòng)。

        在數(shù)字儀器中,旋鈕開(kāi)關(guān)實(shí)際上是一個(gè)編碼開(kāi)關(guān),他相當(dāng)于將2個(gè)按鍵式開(kāi)關(guān)的一端連在一起成為公共端,另一端分別引出,稱之為引出端A和B。當(dāng)旋鈕開(kāi)關(guān)旋動(dòng)時(shí),旋鈕內(nèi)部與A,B相連的2個(gè)金屬簧片都會(huì)與接地的公共端相接,但是在時(shí)間上會(huì)有一個(gè)短暫的時(shí)間差,因此在A,B上就會(huì)產(chǎn)生如圖5所示的2個(gè)有一定相位差的脈沖信號(hào)。在鍵盤掃描過(guò)程中,如果能設(shè)法判斷出2路脈沖到達(dá)的相位關(guān)系,就可以知道旋鈕的旋動(dòng)方向,從而進(jìn)行相應(yīng)的操作。有2種方法可以用來(lái)判別脈沖到達(dá)的先后順序,一種是硬件的辦法,即采用鑒相器,通過(guò)專門的電路判斷,再將結(jié)果送至CPU;還有一種就是用軟件的方法進(jìn)行判斷,從圖5中可以分析出,當(dāng)旋鈕左旋時(shí),A,B兩端電平信號(hào)的組合狀態(tài)是11-01-00-10的序列,且這樣的序列具有惟一性,同樣當(dāng)旋鈕右旋時(shí),A,B電平信號(hào)的組合狀態(tài)序列也是惟一的,通過(guò)判斷這A,B兩端電平信號(hào)的組合狀態(tài)是否符合以上2組預(yù)知序列的順序,同樣可以判斷出旋鈕的旋動(dòng)方向。

        另外,為了防止鍵盤的意外事件,在軟件中對(duì)按鍵抖動(dòng)以及旋鈕的誤操作都做了相應(yīng)的處理。

        需要注意的是,串口的設(shè)置非常重要,關(guān)系到串口能否正常工作。由于鍵盤發(fā)送的是單字節(jié)的16進(jìn)制數(shù)據(jù),所以必需將串口所對(duì)應(yīng)的終端設(shè)置成原始(RAW)工作方式,就是不必對(duì)輸入輸出處理。

        初始化結(jié)束后就可以讀取鍵盤發(fā)送過(guò)來(lái)的數(shù)據(jù)。首先要打開(kāi)串口:fd=open(“/dev/ttySl”,O_RDWR),接下來(lái)可以用read函數(shù)進(jìn)行讀取。這里為了使串口在請(qǐng)求的操作阻塞時(shí)能進(jìn)行其他操作,用select函數(shù)實(shí)現(xiàn)了多路復(fù)用式串口。另外還要注意的是ARM在Linux下的串口接收程序的波特率一定要和單片機(jī)鍵盤掃描程序的波特率一致,不然不會(huì)接收到正確的數(shù)據(jù)。下面是接收程序:

        5 系統(tǒng)調(diào)試結(jié)果

        測(cè)試的時(shí)候把鍵盤串口和ARM開(kāi)發(fā)板的串口2相連,開(kāi)發(fā)板的串口1和PC的串口相連。先把鍵盤掃描程序燒寫到單片機(jī)。在PC上打開(kāi)串口工具DNW,在開(kāi)發(fā)板上啟動(dòng)Linux后下載串口接收程序并運(yùn)行。圖6是Linux下接收到的旋鈕和按鍵值。

        圖7是在Qt/E環(huán)境下編寫的數(shù)字存儲(chǔ)示波器界面測(cè)試鍵盤通信的畫面,結(jié)果顯示鍵盤可以控制LCD中波形的打開(kāi)、關(guān)閉、變換等操作。

        6 結(jié) 語(yǔ)

        近年來(lái)隨著Linux在國(guó)內(nèi)應(yīng)用范圍的日益壯大,在工業(yè)控制、數(shù)據(jù)采集等領(lǐng)域也必將越來(lái)越多地采用Linux,本文可以算作一個(gè)有益的嘗試。為了驗(yàn)證本系統(tǒng)的可靠性,在Linux下面用Qt/E編寫了帶有按鈕的數(shù)字示波器界面并移植到了ARM系統(tǒng)中。實(shí)驗(yàn)結(jié)果表明,數(shù)字示波器界面上面的按鈕能很好地響應(yīng)鍵盤的按鍵及旋鈕事件,系統(tǒng)穩(wěn)定可靠。當(dāng)然,要應(yīng)用到實(shí)際的項(xiàng)目中,還要根據(jù)實(shí)際情況具體考慮,靈活運(yùn)用,最終才能形成一個(gè)可靠的基于嵌入式linux的平臺(tái)。

        孕妇特级毛片ww无码内射| 久久精品国产免费观看99| 色综合久久丁香婷婷| 日本一区二区三区中文字幕视频| 日韩一本之道一区中文字幕| 亚洲一区二区三区蜜桃| 欧美性猛交99久久久久99按摩| 免费无码一区二区三区蜜桃大| 拍摄av现场失控高潮数次| 久久与欧美视频| 永久免费在线观看蜜桃视频 | 国产av一区二区三区无码野战| 精品日韩欧美一区二区在线播放| 人妻人人澡人人添人人爽人人玩| 国产精品久久久久久久久免费观看| 人妻av不卡一区二区三区| 国产亚洲av夜间福利在线观看 | 狠狠97人人婷婷五月| 国产精品欧美一区二区三区不卡| 亚洲av无码精品色午夜蛋壳| 国产精品av在线一区二区三区 | 亚洲AⅤ樱花无码| 亚洲国产都市一区二区| 美腿丝袜诱惑一区二区| 成人无码网www在线观看| 国产精品无圣光一区二区| 精品人妻中文av一区二区三区| 亚洲综合网一区二区三区| 日本av天堂一区二区三区| 极品老师腿张开粉嫩小泬| 波多野结衣中文字幕久久| 国产精品一久久香蕉国产线看观看| 亚洲无码vr| 亚洲女同高清精品一区二区99| 亚洲乱码无人区卡1卡2卡3| √新版天堂资源在线资源| 国产精品亚洲综合色区韩国| 91日本在线精品高清观看| 日本美女性亚洲精品黄色| 男女交射视频免费观看网站| 亚洲人成电影网站色|