<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 51單片機系統與標準PC鍵盤(pán)的接口模塊設計

51單片機系統與標準PC鍵盤(pán)的接口模塊設計

作者: 時(shí)間:2011-11-07 來(lái)源:網(wǎng)絡(luò ) 收藏

概述
中,當按鍵較多時(shí),在硬件設計和軟件編程之間總存在著(zhù)矛盾。對于不同的需要進(jìn)行專(zhuān)用的鍵盤(pán)硬件設計和編程調試,通用性差,使項目開(kāi)發(fā)復雜化。標準在工藝與技術(shù)上都已相當成熟,而且工作穩定,價(jià)格低廉。本設計實(shí)現了一個(gè),它將標準發(fā)出的位置掃描碼,變換為標準的ASCII碼和OEM掃描碼或Windows虛擬鍵代碼,再以并行或串行方式傳送給上位單片機。

的特點(diǎn)
該模塊在與上位單片機之間起轉換作用,它屏蔽了與PC鍵盤(pán)進(jìn)行數據和命令交互的復雜過(guò)程,大大簡(jiǎn)化了上位設計;它實(shí)現了類(lèi)似DOS操作系統中鍵盤(pán)中斷服務(wù)程序的功能,使設計人員只需關(guān)心接收按鍵的結果,并可使用標準的鍵盤(pán)編碼進(jìn)行編程;它要求上位單片機通過(guò)8位并行接口與其相接,對于不能提供并行接口的系統,可使用SPI兼容的同步串行接口與其相接,特別是對于那些希望占用單片機的系統資源少而需要擴展的鍵數較多、儀器整體需要美觀(guān)大方的應用場(chǎng)合,其性能價(jià)格比更具優(yōu)勢。該模塊與單片機系統的連接關(guān)系如圖1所示,在圖中也給出與上位單片機相接的20腳接插件的信號定義。

計算機中標準PC機鍵盤(pán)的工作原理


51單片機系統與標準PC鍵盤(pán)的接口模塊設計

圖1 該模塊與上位單片機系統的連接關(guān)系及信號定義

51單片機系統與標準PC鍵盤(pán)的接口模塊設計

圖2 鍵盤(pán)接口時(shí)序(a) 鍵盤(pán)發(fā)送時(shí)序;(b) 鍵盤(pán)接收時(shí)序

51單片機系統與標準PC鍵盤(pán)的接口模塊設計

圖3 單片機系統與標準PC鍵盤(pán)原理框圖

鍵盤(pán)與主機通過(guò)鍵盤(pán)插頭相接,鍵盤(pán)插頭有5芯大插頭和6芯小插頭(PS/2接口)兩種。接口信號有:電源、地、鍵盤(pán)時(shí)鐘KB_CLK、鍵盤(pán)數據KB_DAT。正常工作時(shí),鍵盤(pán)電路不斷地掃描鍵盤(pán)矩陣。若有鍵按下,則以串行方式發(fā)送按鍵的位置掃描碼給主板鍵盤(pán)接口電路。按下鍵時(shí),發(fā)送接通掃描碼,松開(kāi)鍵時(shí),發(fā)送該鍵的斷開(kāi)掃描碼。斷開(kāi)掃描碼一般是在接通掃描碼前加一個(gè)斷開(kāi)標志字節F0H。若某鍵一直按下,則以按鍵重復率連續發(fā)送該鍵的接通掃描碼。掃描碼與按鍵的位置有關(guān),與該鍵的ASCII碼并無(wú)對應關(guān)系。表1第二列給出經(jīng)實(shí)際測試得到的若干按鍵的位置掃描碼。由表1可見(jiàn),根據鍵的按下或釋放及所按鍵的不同,這個(gè)序列可以是1、2、3、4、6、或8字節,可稱(chēng)之為位置掃描碼序列。

標準鍵盤(pán)與主機的通信是雙向的,并采用11位的串行異步通信格式,這11位數據包括:起始位0、8位數據位(LSB在先)、奇校驗位P、停止位1。圖2(a)給出了鍵盤(pán)發(fā)送時(shí)序。數據(KB_DAT)在時(shí)鐘(KB_CLK)的上升沿改變,下降沿時(shí)有效,可被主機讀取。圖2(b)給出鍵盤(pán)接收時(shí)序。主機發(fā)送前,先將KB_CLK拉低,以抑制鍵盤(pán)發(fā)送,再將KB_DAT拉低發(fā)送起始位,然后釋放KB_CLK線(xiàn),鍵盤(pán)接管KB_CLK并產(chǎn)生時(shí)鐘信號,主機在KB_CLK信號同步下發(fā)送其他位。

標準PC鍵盤(pán)接口模塊的工作原理
基本工作原理概述
該模塊的原理框圖如圖3所示。PC鍵盤(pán)與該模塊通過(guò)專(zhuān)用插座相連,數據KB_DAT接到AT89C2051的P3.0引腳,時(shí)鐘KB_CLK接到引腳。在PC鍵盤(pán)有鍵按下時(shí),KB_CLK信號會(huì )引起AT89C2051的連續中斷,通過(guò)定時(shí)器T0與外中斷的協(xié)同工作,可將PC鍵盤(pán)發(fā)出的位置掃描碼序列接收至緩沖區中。然后,在主程序中將位置掃描碼解碼、查表?yè)Q算,再編碼成一字節的WINDOWS虛擬鍵代碼或兩字節的OEM掃描碼與ASCII碼,并存入系統中棧。在上位單片機可以接收新鍵值時(shí),將棧中編碼數據以并行或串行方式傳送給上位單片機。

為了能更清楚地指示系統當前的工作狀態(tài),在硬件上加裝了電源、正在解碼、棧溢出、碼值準備好等指示燈。

中斷解碼的工作原理
由于鍵盤(pán)的按鍵是隨機的,為了能實(shí)時(shí)地響應,在程序中使用定時(shí)器T0中斷和中斷協(xié)同工作,將位置掃描碼序列恢復至鍵盤(pán)接收緩沖區中。中斷服務(wù)程序用來(lái)將碼值的一位移入緩沖區中,T0溢出的中斷服務(wù)程序主要用來(lái)判斷一次按鍵所發(fā)出的碼是否已全部接收。系統設置T0的定時(shí)間隔為5ms,并在系統啟動(dòng)后就開(kāi)始定時(shí)。由于在正常接收每個(gè)按鍵的碼值序列過(guò)程中,鍵盤(pán)發(fā)送的每位數據間隔不會(huì )大于5ms,因此在每次中斷服務(wù)中,首先要判斷T0是否溢出過(guò),若曾經(jīng)溢出,則認為該次中斷是一次新碼值接收的開(kāi)始,需將位計數器清零,否則只需移入一位數據即可,然后重新啟動(dòng)定時(shí)器,退出中斷服務(wù)程序。在新按鍵碼值序列接收完成后,設置blnDataValid標志,以通知主程序。

主程序的工作原理
主程序主要有四個(gè)任務(wù):①將鍵盤(pán)接收緩沖區的位置掃描碼通過(guò)查表等算法換成統一編碼的一個(gè)字節Windows虛擬鍵代碼或兩個(gè)字節的OEM掃描碼與ASCII碼;②根據系統中CAPS LOCK鍵、NUM LOCK鍵及SCROLL LOCK鍵的狀態(tài)信息控制鍵盤(pán)上三個(gè)指示燈的亮滅;③系統中設立的FIFO棧的維護;④與上位單片機碼值傳送的握手交互過(guò)程。主程序的流程圖如圖4所示。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>