單片機系統與標準PC鍵盤的接口模塊設計
發布時間:2007/4/23 0:00:00 訪問次數:1634
單片機系統與標準PC鍵盤的接口模塊設計
本文介紹了一種單片機系統與標準PC鍵盤接口模塊,并詳細介紹了該模塊的工作原理與軟件編程思想。 在單片機系統中,當輸入按鍵較多時,在硬件設計和軟件編程之間總存在著矛盾。對于不同的單片機系統需要進行專用的鍵盤硬件設計和編程調試,通用性差,使項目開發復雜化。標準PC鍵盤在工藝與技術上都已相當成熟,而且工作穩定,價格低廉。本設計實現了一個接口模塊,它將標準PC鍵盤發出的位置掃描碼,變換為標準的ASCII碼和OEM掃描碼或Windows虛擬鍵代碼,再以并行或串行方式傳送給上位單片機。
接口模塊的特點
該模塊在PC鍵盤與上位單片機之間起轉換作用,它屏蔽了與PC鍵盤進行數據和命令交互的復雜過程,大大簡化了上位單片機系統的輸入設計;它實現了類似DOS操作系統中鍵盤中斷服務程序的功能,使設計人員只需關心接收按鍵的結果,并可使用標準的鍵盤編碼進行編程;它要求上位單片機通過8位并行接口與其相接,對于不能提供并行接口的系統,可使用SPI兼容的同步串行接口與其相接,特別是對于那些希望占用單片機的系統資源少而需要擴展的鍵數較多、儀器整體需要美觀大方的應用場合,其性能價格比更具優勢。該模塊與單片機系統的連接關系如圖1所示,在圖中也給出與上位單片機相接的20腳接插件的信號定義。
計算機中標準PC機鍵盤的工作原理
圖1 該模塊與上位單片機系統的連接關系及信號定義
圖2 鍵盤接口時序(a) 鍵盤發送時序;(b) 鍵盤接收時序
圖3 單片機系統與標準PC鍵盤接口模塊原理框圖
鍵盤與主機通過鍵盤插頭相接,鍵盤插頭有5芯大插頭和6芯小插頭(PS/2接口)兩種。接口信號有:電源、地、鍵盤時鐘KB_CLK、鍵盤數據KB_DAT。正常工作時,鍵盤電路不斷地掃描鍵盤矩陣。若有鍵按下,則以串行方式發送按鍵的位置掃描碼給主板鍵盤接口電路。按下鍵時,發送接通掃描碼,松開鍵時,發送該鍵的斷開掃描碼。斷開掃描碼一般是在接通掃描碼前加一個斷開標志字節F0H。若某鍵一直按下,則以按鍵重復率連續發送該鍵的接通掃描碼。掃描碼與按鍵的位置有關,與該鍵的ASCII碼并無對應關系。表1第二列給出經實際測試得到的若干按鍵的位置掃描碼。根據鍵的按下或釋放及所按鍵的不同,這個序列可以是1、2、3、4、6、或8字節,可稱之為位置掃描碼序列。
標準鍵盤與主機的通信是雙向的,并采用11位的串行異步通信格式,這11位數據包括:起始位0、8位數據位(LSB在先)、奇校驗位P、停止位1。圖2(a)給出了鍵盤發送時序。數據(KB_DAT)在時鐘(KB_CLK)的上升沿改變,下降沿時有效,可被主機讀取。圖2(b)給出鍵盤接收時序。主機發送前,先將KB_CLK拉低,以抑制鍵盤發送,再將KB_DAT拉低發送起始位,然后釋放KB_CLK線,鍵盤接管KB_CLK并產生時鐘信號,主機在KB_CLK信號同步下發送其他位。
標準PC鍵盤接口模塊的工作原理
基本工作原理概述
該模塊的原理框圖如圖3所示。PC鍵盤與該模塊通過專用插座相連,數據KB_DAT接到AT89C2051的P3.0引腳,時鐘KB_CLK接到引腳。在PC鍵盤有鍵按下時,KB_CLK信號會引起AT89C2051的連續中斷,通過定時器T0與外中斷的協同工作,可將PC鍵盤發出的位置掃描碼序列接收至緩沖區中。然后,在主程序中將位置掃描碼解碼、查表換算,再編碼成一字節的WINDOWS虛擬鍵代碼或兩字節的OEM掃描碼與ASCII碼,并存入系統中FIFO棧。在上位單片機可以接收新鍵值時,將FIFO棧中編碼數據以并行或串行方式傳送給上位單片機。
為了能更清楚地指示系統當前的工作狀態,在硬件上加裝了電源、正在解碼、FIFO棧溢出、碼值準備好等指示燈
中斷解碼的工作原理
由于鍵盤的按鍵輸入是隨機的,為了能實時地響應,在程序中使用定時器T0中斷和中斷協同工作,將位置掃描碼序列恢復至鍵盤接收緩沖區中。中斷服務程序用來將碼值的一位移入緩沖區中,T0溢出的中斷服務程序主要用來判斷一次按鍵所發出的碼是否已全部接收。系統設置T0的定時間隔為5ms,并在系統啟動后就開始定時。由于在正常接收每個按鍵的碼值序列過程中,鍵盤發送的每位數據間隔不會大于5ms,因此在每次中斷服務中,首先要判斷T0是否溢出過,若曾經溢出,則認為該次中斷是一次新碼值接收的開始,需將位計數器清零,否則只需移入一位數據即可,然后重新啟動定時器,退出中斷服務程序。在新按鍵碼值序列接收完成后,設置blnDataValid標志,以通知主程序。
主程序的工作原理
主程序主要有四個任務:①將鍵盤接收緩沖區的位置掃描碼通過查表等算法換成統一編碼的一個字節Windows虛擬鍵代碼或兩個字節的OEM掃描碼與ASCII碼;②根據系統中CAPS LOCK鍵、NUM LOCK鍵及SCROLL LOCK鍵的狀態信息控制鍵盤上三個指示燈的亮滅;③系統中設立的FIFO棧的維護;④與上位
單片機系統與標準PC鍵盤的接口模塊設計
本文介紹了一種單片機系統與標準PC鍵盤接口模塊,并詳細介紹了該模塊的工作原理與軟件編程思想。 在單片機系統中,當輸入按鍵較多時,在硬件設計和軟件編程之間總存在著矛盾。對于不同的單片機系統需要進行專用的鍵盤硬件設計和編程調試,通用性差,使項目開發復雜化。標準PC鍵盤在工藝與技術上都已相當成熟,而且工作穩定,價格低廉。本設計實現了一個接口模塊,它將標準PC鍵盤發出的位置掃描碼,變換為標準的ASCII碼和OEM掃描碼或Windows虛擬鍵代碼,再以并行或串行方式傳送給上位單片機。
接口模塊的特點
該模塊在PC鍵盤與上位單片機之間起轉換作用,它屏蔽了與PC鍵盤進行數據和命令交互的復雜過程,大大簡化了上位單片機系統的輸入設計;它實現了類似DOS操作系統中鍵盤中斷服務程序的功能,使設計人員只需關心接收按鍵的結果,并可使用標準的鍵盤編碼進行編程;它要求上位單片機通過8位并行接口與其相接,對于不能提供并行接口的系統,可使用SPI兼容的同步串行接口與其相接,特別是對于那些希望占用單片機的系統資源少而需要擴展的鍵數較多、儀器整體需要美觀大方的應用場合,其性能價格比更具優勢。該模塊與單片機系統的連接關系如圖1所示,在圖中也給出與上位單片機相接的20腳接插件的信號定義。
計算機中標準PC機鍵盤的工作原理
圖1 該模塊與上位單片機系統的連接關系及信號定義
圖2 鍵盤接口時序(a) 鍵盤發送時序;(b) 鍵盤接收時序
圖3 單片機系統與標準PC鍵盤接口模塊原理框圖
鍵盤與主機通過鍵盤插頭相接,鍵盤插頭有5芯大插頭和6芯小插頭(PS/2接口)兩種。接口信號有:電源、地、鍵盤時鐘KB_CLK、鍵盤數據KB_DAT。正常工作時,鍵盤電路不斷地掃描鍵盤矩陣。若有鍵按下,則以串行方式發送按鍵的位置掃描碼給主板鍵盤接口電路。按下鍵時,發送接通掃描碼,松開鍵時,發送該鍵的斷開掃描碼。斷開掃描碼一般是在接通掃描碼前加一個斷開標志字節F0H。若某鍵一直按下,則以按鍵重復率連續發送該鍵的接通掃描碼。掃描碼與按鍵的位置有關,與該鍵的ASCII碼并無對應關系。表1第二列給出經實際測試得到的若干按鍵的位置掃描碼。根據鍵的按下或釋放及所按鍵的不同,這個序列可以是1、2、3、4、6、或8字節,可稱之為位置掃描碼序列。
標準鍵盤與主機的通信是雙向的,并采用11位的串行異步通信格式,這11位數據包括:起始位0、8位數據位(LSB在先)、奇校驗位P、停止位1。圖2(a)給出了鍵盤發送時序。數據(KB_DAT)在時鐘(KB_CLK)的上升沿改變,下降沿時有效,可被主機讀取。圖2(b)給出鍵盤接收時序。主機發送前,先將KB_CLK拉低,以抑制鍵盤發送,再將KB_DAT拉低發送起始位,然后釋放KB_CLK線,鍵盤接管KB_CLK并產生時鐘信號,主機在KB_CLK信號同步下發送其他位。
標準PC鍵盤接口模塊的工作原理
基本工作原理概述
該模塊的原理框圖如圖3所示。PC鍵盤與該模塊通過專用插座相連,數據KB_DAT接到AT89C2051的P3.0引腳,時鐘KB_CLK接到引腳。在PC鍵盤有鍵按下時,KB_CLK信號會引起AT89C2051的連續中斷,通過定時器T0與外中斷的協同工作,可將PC鍵盤發出的位置掃描碼序列接收至緩沖區中。然后,在主程序中將位置掃描碼解碼、查表換算,再編碼成一字節的WINDOWS虛擬鍵代碼或兩字節的OEM掃描碼與ASCII碼,并存入系統中FIFO棧。在上位單片機可以接收新鍵值時,將FIFO棧中編碼數據以并行或串行方式傳送給上位單片機。
為了能更清楚地指示系統當前的工作狀態,在硬件上加裝了電源、正在解碼、FIFO棧溢出、碼值準備好等指示燈
中斷解碼的工作原理
由于鍵盤的按鍵輸入是隨機的,為了能實時地響應,在程序中使用定時器T0中斷和中斷協同工作,將位置掃描碼序列恢復至鍵盤接收緩沖區中。中斷服務程序用來將碼值的一位移入緩沖區中,T0溢出的中斷服務程序主要用來判斷一次按鍵所發出的碼是否已全部接收。系統設置T0的定時間隔為5ms,并在系統啟動后就開始定時。由于在正常接收每個按鍵的碼值序列過程中,鍵盤發送的每位數據間隔不會大于5ms,因此在每次中斷服務中,首先要判斷T0是否溢出過,若曾經溢出,則認為該次中斷是一次新碼值接收的開始,需將位計數器清零,否則只需移入一位數據即可,然后重新啟動定時器,退出中斷服務程序。在新按鍵碼值序列接收完成后,設置blnDataValid標志,以通知主程序。
主程序的工作原理
主程序主要有四個任務:①將鍵盤接收緩沖區的位置掃描碼通過查表等算法換成統一編碼的一個字節Windows虛擬鍵代碼或兩個字節的OEM掃描碼與ASCII碼;②根據系統中CAPS LOCK鍵、NUM LOCK鍵及SCROLL LOCK鍵的狀態信息控制鍵盤上三個指示燈的亮滅;③系統中設立的FIFO棧的維護;④與上位