摘要:本文設(shè)計(jì)一個(gè)基于8位單片機(jī)的標(biāo)準(zhǔn)PC鍵盤接口,可用于某些工業(yè)電子設(shè)備的智能化和升級(jí)換代。單片機(jī)具有經(jīng)濟(jì)、體積小、穩(wěn)定等特點(diǎn),用于嵌入式系統(tǒng)設(shè)計(jì)既可以節(jié)省成本,充分利用資源,又可以提高系統(tǒng)的可靠性。
關(guān)鍵詞:硬件接口;單片機(jī)控制;鍵盤
一、引言
本設(shè)計(jì)實(shí)現(xiàn)了一個(gè)鍵盤接口模塊,它將標(biāo)準(zhǔn)PC鍵盤發(fā)出的位置掃描碼,變換為標(biāo)準(zhǔn)的ASCII碼和OEM掃描碼或Windows虛擬鍵代碼,再以并行或串行方式傳送給上位單片機(jī)。
二、 AT89C55WD單片機(jī)應(yīng)用特點(diǎn)
AT89C55WD是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含20k bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和256 bytes的RAM,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),引腳兼容工業(yè)標(biāo)準(zhǔn)89C51和89C52芯片,片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,內(nèi)置功能強(qiáng)大的微處理器可提供許多高性價(jià)比的解決方案,適用于多數(shù)嵌入式應(yīng)用系統(tǒng)。
AT89C55WD有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫口線,以及片內(nèi)時(shí)鐘電路。
AT89C55WD具有PLCC、PDIP和TQFP三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。
AT89C55WD的主要功能特性:
兼容MCS51指令系統(tǒng);32個(gè)雙向I/O口;3個(gè)16位可編程定時(shí)/計(jì)數(shù)器;2個(gè)串行中斷;2個(gè)外部中斷源;片內(nèi)時(shí)鐘電路;4-5.5V工作電壓范圍;20kb可反復(fù)擦寫Flash ROM;256×8bit內(nèi)部RAM。
三、接口模塊特點(diǎn)
模塊在PC鍵盤與上位單片機(jī)之間起轉(zhuǎn)換作用,它屏蔽了與PC鍵盤進(jìn)行數(shù)據(jù)和命令交互的復(fù)雜過程,大大簡化了上位單片機(jī)系統(tǒng)的輸入設(shè)計(jì)。它實(shí)現(xiàn)了類似DOS操作系統(tǒng)中鍵盤中斷服務(wù)程序的功能,并可使用標(biāo)準(zhǔn)的鍵盤編碼進(jìn)行編程;要求上位單片機(jī)通過8位并行接口與其相接,對(duì)于不能提供并行接口的系統(tǒng),可使用SPI兼容的同步串行接口與其相接,特別是對(duì)于那些希望占用單片機(jī)的系統(tǒng)資源少而需要擴(kuò)展的鍵數(shù)較多、儀器整體需要美觀大方的應(yīng)用場合,其性能價(jià)格比更具優(yōu)勢。
3 計(jì)算機(jī)中標(biāo)準(zhǔn)PC機(jī)鍵盤的工作原理
鍵盤接口信號(hào)有電源、地、鍵盤時(shí)鐘KB-CLK、鍵盤數(shù)據(jù)KB-DAT。正常工作時(shí),鍵盤電路不斷地掃描鍵盤矩陣。若有鍵按下,則以串行方式發(fā)送按鍵的位置掃描碼給主板鍵盤接口電路。按下鍵時(shí),發(fā)送接通掃描碼,松開鍵時(shí),發(fā)送該鍵的斷開掃描碼。
標(biāo)準(zhǔn)鍵盤與主機(jī)的通信是雙向的,采用11位的串行異步通信格式,這些數(shù)據(jù)包括起始位0、8位數(shù)據(jù)位(LSB在先)、奇校驗(yàn)位、停止位1。圖1給出了鍵盤發(fā)送時(shí)序。數(shù)據(jù)(KB-DAT)在時(shí)鐘(KB-CLK)的上升沿改變,下降沿時(shí)有效,可被主機(jī)讀取。圖2給出鍵盤接收時(shí)序。主機(jī)發(fā)送前,先將KB-CLK拉低,以抑制鍵盤發(fā)送,再將KB-DAT拉低發(fā)送起始位,然后釋放KB-CLK線,鍵盤接管KB-CLK并產(chǎn)生時(shí)鐘信號(hào),主機(jī)在KB-CLK信號(hào)同步下發(fā)送其他位。
四、標(biāo)準(zhǔn)鍵盤接口模塊的工作原理
1.基本工作原理概述
PC鍵盤與該模塊通過專用插座相連,數(shù)據(jù)KB-DAT接到AT89C2051的P3 .0引腳。在PC鍵盤有鍵按下時(shí),KB-CLK信號(hào)會(huì)引起AT89C2051的連續(xù)中斷,通過定時(shí)器T0與外中斷的協(xié)同工作,可將PC鍵盤發(fā)出的位置掃描碼序列接收至緩沖區(qū)中。然后,在主程序中將位置掃描碼解碼、查表換算,再編碼成一字節(jié)WINDOWS的虛擬鍵代碼或兩字節(jié)的OEM掃描碼與ASCII碼,存入系統(tǒng)中FIFO棧。在上位單片機(jī)可以接收新鍵值時(shí),將FIFO棧中編碼數(shù)據(jù)以并行或串行方式傳送給上位單片機(jī)。
2.中斷解碼的工作原理
由于按鍵輸入是隨機(jī)的,為了能實(shí)時(shí)響應(yīng),在程序中使用定時(shí)器T0中斷和中斷協(xié)同工作,將位置掃描碼序列恢復(fù)至鍵盤接收緩沖區(qū)中。中斷服務(wù)程序用來將碼值的一位移入緩沖區(qū)中,T0溢出的中斷服務(wù)程序主要用來判斷一次按鍵所發(fā)出的碼是否己全部接收。系統(tǒng)設(shè)置T0的定時(shí)間隔為5ms,并在系統(tǒng)啟動(dòng)后就開始定時(shí)。由于在正常接收每個(gè)按鍵的碼值序列過程中,鍵盤發(fā)送的每位數(shù)據(jù)間隔不會(huì)大于5ms,因此在每次中斷服務(wù)中,首先要判斷T0是否溢出過,若溢出,則認(rèn)為該次中斷是開始接收新碼值,需將位計(jì)數(shù)器清零,否則只需移入一位數(shù)據(jù)即可,然后重新啟動(dòng)定時(shí)器,退出中斷服務(wù)程序。在新按鍵碼值序列接收完成后,設(shè)置blnDataValid標(biāo)志符以通知主程序。
3.主程序的工作原理
主程序主要有四個(gè)任務(wù):(1)將鍵盤接收緩沖區(qū)的位置掃描碼通過查表等算法換成統(tǒng)一編碼的一個(gè)字節(jié)Windows虛擬鍵代碼或兩個(gè)字節(jié)的OEM掃描碼與ASCII碼;(2)根據(jù)系統(tǒng)中CAPS LOCK鍵、NUM LOCK鍵及SCROLL LOCK鍵的狀態(tài)信息控制鍵盤上三個(gè)指示燈的亮滅;(3)系統(tǒng)中設(shè)立的正棧的維護(hù);(4)與上位單片機(jī)碼值傳送的握手交互過程。
在主程序中檢測到blnDataValid標(biāo)志后,即在鍵盤接收緩沖區(qū)中已接收到一個(gè)新的位置掃描碼序列,程序根據(jù)序列的不同特點(diǎn)做不同處理,根據(jù)硬件跳線的設(shè)置得到相應(yīng)按鍵的Windows虛擬鍵代碼或ASCII碼與OEM掃描。
在向上位單片機(jī)發(fā)送FIFO棧首的碼值之前要先檢測ACK信號(hào)狀態(tài)以確定上位單片機(jī)是否已取走上次碼值。若ACK信號(hào)有效,則將碼值鎖存在P1口上,然后由P3.7產(chǎn)生模擬的時(shí)鐘脈沖信號(hào),一方面將8位并行碼值置入串一并轉(zhuǎn)換芯(74LS165)片中,另一方面將觸發(fā)器(74LS74)置為1,使端變?yōu)?,為上位單片機(jī)提供碼值準(zhǔn)備好(PS_READY#)信號(hào),并點(diǎn)亮指示燈。在上位單片機(jī)中,可查詢此狀態(tài)信號(hào)也可利用此狀態(tài)信號(hào)申請(qǐng)中斷。上位單片機(jī)若采用并行接口方法,則發(fā)出讀緩沖器信號(hào)和片選信號(hào),便可通過三態(tài)緩沖器(74LS244)取得鍵值;若采用串行接口方法,則需發(fā)出串行時(shí)鐘(S_READ),從74LS165的串行數(shù)據(jù)端(S_DAT)讀回8位碼值。在上位單片機(jī)讀取完當(dāng)前的鍵值后,ACK信號(hào)將由握手邏輯自動(dòng)置為有效,系統(tǒng)可通過檢測ACK信號(hào)的狀態(tài)以發(fā)送下一個(gè)碼值。
結(jié)束語:
實(shí)踐證明應(yīng)用該模塊不但可大大地簡化鍵盤輸入電路及程序設(shè)計(jì),而且在使用高級(jí)語言書寫程序更加方便。該模塊可識(shí)別標(biāo)準(zhǔn)鍵盤上的所有按鍵,并能自動(dòng)考慮SHIFT、NUMLOCK及CAPLOCK鍵對(duì)編碼的影響。
作者單位:西北農(nóng)林科技大學(xué) 機(jī)械與電子工程學(xué)院
參考文獻(xiàn):
[1]李全利,仲偉峰.單片機(jī)原理及應(yīng)用[M].北京:清華大學(xué)出版社,2006.77-84.
[2]