當(dāng)前位置:首頁 > 智能硬件 > 智能硬件
[導(dǎo)讀]介紹了工控PC外接雙鍵盤的解決方案。

摘要:文中詳細(xì)介紹了PS/2接口協(xié)議的內(nèi)容、電氣特性和標(biāo)準(zhǔn)鍵盤的第二套鍵盤掃描碼集。給出了基于嵌入式系統(tǒng)的PS/2接口的軟、硬件實(shí)現(xiàn)方法,并介紹了工控PC外接雙鍵盤的解決方案。通過使用模擬開關(guān)CD4052巧妙地解決了工控PC外接雙鍵盤的沖突問題。

    關(guān)鍵詞:PS/2接口;串行通訊;單片機(jī);鍵盤;CD4052

1 PS/2接口標(biāo)準(zhǔn)的發(fā)展過程

隨著計(jì)算機(jī)工業(yè)的發(fā)展,作為計(jì)算機(jī)最常用輸入設(shè)備的鍵盤也日新月異。1981年IBM推出了IBM PC/XT鍵盤及其接口標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)定義了83鍵,采用5腳DIN連接器和簡單的串行協(xié)議。實(shí)際上,第一套鍵盤掃描碼集并沒有主機(jī)到鍵盤的命令。為此,1984年IBM推出了IBM AT鍵盤接口標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)定義了84~101鍵,采用5腳DIN連接器和雙向串行通訊協(xié)議,此協(xié)議依照第二套鍵盤掃描碼集設(shè)有8個(gè)主機(jī)到鍵盤的命令。到了1987年,IBM又推出了PS/2鍵盤接口標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)仍舊定義了84~101鍵,但是采用6腳mini-DIN連接器,該連接器在封裝上更小巧,仍然用雙向串行通訊協(xié)議并且提供有可選擇的第三套鍵盤掃描碼集,同時(shí)支持17個(gè)主機(jī)到鍵盤的命令?,F(xiàn)在,市面上的鍵盤都和PS/2及AT鍵盤兼容,只是功能不同而已。

2?。校樱步涌谟布?/B>

2.1 物理連接器

一般,具有五腳連接器的鍵盤稱之為AT鍵盤,而具有六腳mini-DIN連接器的鍵盤則稱之為PS/2鍵盤。其實(shí)這兩種連接器都只有四個(gè)腳有意義。它們分別是Clock(時(shí)鐘腳)、Data?數(shù)據(jù)腳?、+5V(電源腳)和Ground(電源地)。在PS/2鍵盤與PC機(jī)的物理連接上只要保證這四根線一一對(duì)應(yīng)就可以了。PS/2鍵盤靠PC的PS/2端口提供+5V電源,另外兩個(gè)腳Clock(時(shí)鐘腳)和Data?數(shù)據(jù)腳?都是集電極開路的,所以必須接大阻值的上拉電阻。它們平時(shí)保持高電平,有輸出時(shí)才被拉到低電平,之后自動(dòng)上浮到高電平?,F(xiàn)在比較常用的連接器如圖1所示。

2.2 電氣特性

PS/2通訊協(xié)議是一種雙向同步串行通訊協(xié)議。通訊的兩端通過Clock(時(shí)鐘腳)同步,并通過Data(數(shù)據(jù)腳)交換數(shù)據(jù)。任何一方如果想抑制另外一方通訊時(shí),只需要把Clock(時(shí)鐘腳)拉到低電平。如果是PC機(jī)和PS/2鍵盤間的通訊,則PC機(jī)必須做主機(jī),也就是說,PC機(jī)可以抑制PS/2鍵盤發(fā)送數(shù)據(jù),而PS/2鍵盤則不會(huì)抑制PC機(jī)發(fā)送數(shù)據(jù)。一般兩設(shè)備間傳輸數(shù)據(jù)的最大時(shí)鐘頻率是33kHz,大多數(shù)PS/2設(shè)備工作在10~20kHz。推薦值在15kHz左右,也就是說,Clock(時(shí)鐘腳)高、低電平的持續(xù)時(shí)間都為40μs。每一數(shù)據(jù)幀包含11~12個(gè)位,具體含義如表1所列。

表1 數(shù)據(jù)幀格式說明

1個(gè)起始位 總是邏輯0
8個(gè)數(shù)據(jù)位 (LSB)低位在前
1個(gè)奇偶校驗(yàn)位 奇校驗(yàn)
1個(gè)停止位 總是邏輯1
1個(gè)應(yīng)答位 僅用在主機(jī)對(duì)設(shè)備的通訊中

表中,如果數(shù)據(jù)位中1的個(gè)數(shù)為偶數(shù),校驗(yàn)位就為1;如果數(shù)據(jù)位中1的個(gè)數(shù)為奇數(shù),校驗(yàn)位就為0;總之,數(shù)據(jù)位中1的個(gè)數(shù)加上校驗(yàn)位中1的個(gè)數(shù)總為奇數(shù),因此總進(jìn)行奇校驗(yàn)。

2.3 PS/2設(shè)備和PC機(jī)的通訊

PS/2設(shè)備的Clock(時(shí)鐘腳)和Data?數(shù)據(jù)腳?都是集電極開路的,平時(shí)都是高電平。當(dāng)PS/2設(shè)備等待發(fā)送數(shù)據(jù)時(shí),它首先檢查Clock(時(shí)鐘腳)以確認(rèn)其是否為高電平。如果是低電平,則認(rèn)為是PC機(jī)抑制了通訊,此時(shí)它必須緩沖需要發(fā)送的數(shù)據(jù)直到重新獲得總線的控制權(quán)(一般PS/2鍵盤有16個(gè)字節(jié)的緩沖區(qū),而PS/2鼠標(biāo)只有一個(gè)緩沖區(qū)僅存儲(chǔ)最后一個(gè)要發(fā)送的數(shù)據(jù))。如果Clock(時(shí)鐘腳)為高電平,PS/2設(shè)備便開始將數(shù)據(jù)發(fā)送到PC機(jī)。一般都是由PS/2設(shè)備產(chǎn)生時(shí)鐘信號(hào)。發(fā)送時(shí)一般都是按照數(shù)據(jù)幀格式順序發(fā)送。其中數(shù)據(jù)位在Clock(時(shí)鐘腳)為高電平時(shí)準(zhǔn)備好,在Clock(時(shí)鐘腳)的下降沿被PC機(jī)讀入。PS/2設(shè)備到PC機(jī)的通訊時(shí)序如圖2所示。

當(dāng)時(shí)鐘頻率為15kHz時(shí),從Clock(時(shí)鐘腳)的上升沿到數(shù)據(jù)位轉(zhuǎn)變時(shí)間至少要5μs。數(shù)據(jù)變化到Clock(時(shí)鐘腳)下降沿的時(shí)間至少也有5 μs,但不能大于25 μs,這是由PS/2通訊協(xié)議的時(shí)序規(guī)定的。如果時(shí)鐘頻率是其它值,參數(shù)的內(nèi)容應(yīng)稍作調(diào)整。

上述討論中傳輸?shù)臄?shù)據(jù)是指對(duì)特定鍵盤的編碼或者對(duì)特定命令的編碼。一般采用第二套掃描碼集所規(guī)定的碼值來編碼。其中鍵盤碼分為通碼(Make)和斷碼(Break)。通碼是按鍵接通時(shí)所發(fā)送的編碼,用兩位十六進(jìn)制數(shù)來表示,斷碼通常是按鍵斷開時(shí)所發(fā)送的編碼,用四位十六進(jìn)制數(shù)來表示。

3 PS/2接口的嵌入式軟件編程方法

PS/2設(shè)備主要用于產(chǎn)生同步時(shí)鐘信號(hào)和讀寫數(shù)據(jù)。

3.1 PS/2向PC機(jī)發(fā)送一個(gè)字節(jié)

    從PS/2向PC機(jī)發(fā)送一個(gè)字節(jié)可按照下面的步驟進(jìn)行:

(1)檢測時(shí)鐘線電平,如果時(shí)鐘線為低,則延時(shí)50μs;

(2)檢測判斷時(shí)鐘信號(hào)是否為高,為高,則向下執(zhí)行,為低,則轉(zhuǎn)到(1);

(3)檢測數(shù)據(jù)線是否為高,如果為高則繼續(xù)執(zhí)行,如果為低,則放棄發(fā)送(此時(shí)PC機(jī)在向PS/2設(shè)備發(fā)送數(shù)據(jù),所以PS/2設(shè)備要轉(zhuǎn)移到接收程序處接收數(shù)據(jù));

(4)延時(shí)20μs(如果此時(shí)正在發(fā)送起始位,則應(yīng)延時(shí)40μs);

(5)輸出起始位(0)到數(shù)據(jù)線上。這里要注意的是:在送出每一位后都要檢測時(shí)鐘線,以確保PC機(jī)沒有抑制PS/2設(shè)備,如果有則中止發(fā)送;

(6)輸出8個(gè)數(shù)據(jù)位到數(shù)據(jù)線上;

(7)輸出校驗(yàn)位;

(8)輸出停止位(1);

(9)延時(shí)30μs(如果在發(fā)送停止位時(shí)釋放時(shí)鐘信號(hào)則應(yīng)延時(shí)50μs);

通過以下步驟可發(fā)送單個(gè)位:

(1)準(zhǔn)備數(shù)據(jù)位(將需要發(fā)送的數(shù)據(jù)位放到數(shù)據(jù)線上);

(2)延時(shí)20μs;

(3)把時(shí)鐘線拉低;

(4)延時(shí)40μs;

(5)釋放時(shí)鐘線;

(6)延時(shí)20μs。

3.2 PS/2設(shè)備從PC機(jī)接收一個(gè)字節(jié)

由于PS/2設(shè)備能提供串行同步時(shí)鐘,因此,如果PC機(jī)發(fā)送數(shù)據(jù),則PC機(jī)要先把時(shí)鐘線和數(shù)據(jù)線置為請(qǐng)求發(fā)送的狀態(tài)。PC機(jī)通過下拉時(shí)鐘線大于100μs來抑制通訊,并且通過下拉數(shù)據(jù)線發(fā)出請(qǐng)求發(fā)送數(shù)據(jù)的信號(hào),然后釋放時(shí)鐘。當(dāng)PS/2設(shè)備檢測到需要接收的數(shù)據(jù)時(shí),它會(huì)產(chǎn)生時(shí)鐘信號(hào)并記錄下面8個(gè)數(shù)據(jù)位和一個(gè)停止位。主機(jī)此時(shí)在時(shí)鐘線變?yōu)榈蜁r(shí)準(zhǔn)備數(shù)據(jù)到數(shù)據(jù)線,并在時(shí)鐘上升沿鎖存數(shù)據(jù)。而PS/2設(shè)備則要配合PC機(jī)才能讀到準(zhǔn)確的數(shù)據(jù)。具體連接步驟如下:

(1)等待時(shí)鐘線為高電平。

(2)判斷數(shù)據(jù)線是否為低,為高則錯(cuò)誤退出,否則繼續(xù)執(zhí)行。

(3)讀地址線上的數(shù)據(jù)內(nèi)容,共8個(gè)bit,每讀完一個(gè)位,都應(yīng)檢測時(shí)鐘線是否被PC機(jī)拉低,如果被拉低則要中止接收。

(4)讀地址線上的校驗(yàn)位內(nèi)容,1個(gè)bit。

(5)讀停止位。

(6)如果數(shù)據(jù)線上為0(即還是低電平),PS/2設(shè)備繼續(xù)產(chǎn)生時(shí)鐘,直到接收到1且產(chǎn)生出錯(cuò)信號(hào)為止(因?yàn)橥V刮皇牵保绻校樱苍O(shè)備沒有讀到停止位,則表明此次傳輸出錯(cuò))。

(7 輸出應(yīng)答位。

(8) 檢測奇偶校驗(yàn)位,如果校驗(yàn)失敗,則產(chǎn)生錯(cuò)誤信號(hào)以表明此次傳輸出現(xiàn)錯(cuò)誤。

(9)延時(shí)45 μs,以便PC機(jī)進(jìn)行下一次傳輸。

讀數(shù)據(jù)線的步驟如下:

(1)延時(shí)20μs;

(2)把時(shí)鐘線拉低?

(3)延時(shí)40μs?

(4)釋放時(shí)鐘線?

(5)延時(shí)20μs?

(6)讀數(shù)據(jù)線。

下面的步驟可用于發(fā)出應(yīng)答位;

(1)延時(shí)15μs;

(2)把數(shù)據(jù)線拉低;

(3)延時(shí)5μs;

(4)把時(shí)鐘線拉低;

(5)延時(shí)40μs;

(6)釋放時(shí)鐘線;

(7)延時(shí)5μs;

(8)釋放數(shù)據(jù)線。

4 用于工控機(jī)的雙鍵盤設(shè)計(jì)

工控機(jī)通常要接標(biāo)準(zhǔn)鍵盤,但是為了方便操作,常常需要外接一個(gè)專用鍵盤。此實(shí)例介紹了在工控PC機(jī)到PS/2總線上再接入一個(gè)自制專用鍵盤的應(yīng)用方法。

該設(shè)計(jì)應(yīng)能保證兩個(gè)鍵盤單獨(dú)工作,而且相互不能影響。因此,不能直接把專用鍵盤和標(biāo)準(zhǔn)鍵盤一起接到工控PC的PS/2口。鑒于這種情況,本設(shè)計(jì)使用模擬開關(guān)CD4052并通過時(shí)分復(fù)用工控PC的PS/2口,來使在同一個(gè)時(shí)刻只有一個(gè)鍵盤有效,從而解決上述問題。其硬件原理圖如圖3所示。其中P2口和P1口用于鍵盤掃描電路(圖中未畫出),P0.0為數(shù)據(jù)端,P0.1為時(shí)鐘端,P0.2為模擬開關(guān)選通端。由于專用鍵盤不需要接收工控PC機(jī)的命令,所以軟件中并不需要寫這部分相應(yīng)的代碼。

通過軟件可在專用鍵盤復(fù)位后把P0.2清0,以使模擬開關(guān)CD4052打開相應(yīng)的通道。這時(shí)工控PC的標(biāo)準(zhǔn)鍵盤將開始工作。標(biāo)準(zhǔn)鍵盤可以完成工控PC剛啟動(dòng)時(shí)對(duì)外設(shè)檢測的應(yīng)答。復(fù)位后的專用鍵盤不停地掃描有沒有按鍵,如果有鍵按下則識(shí)別按鍵,并且按照預(yù)先的設(shè)計(jì)進(jìn)行編碼,同時(shí)調(diào)用發(fā)送程序并通過PS/2口發(fā)送到工控PC。此時(shí)模擬開關(guān)關(guān)閉相應(yīng)通道(將P0.2置1),專用鍵盤接入工控PC PS/2口的時(shí)鐘線和數(shù)據(jù)線而工作,但標(biāo)準(zhǔn)鍵盤被模擬開關(guān)從PS/2的時(shí)鐘線和數(shù)據(jù)線中斷而不工作,這樣,雙鍵盤便可時(shí)分復(fù)用同一個(gè)工控PC機(jī)的PS/2口。相應(yīng)的發(fā)送子程序如下:

#define DATA P00 用P0.0做數(shù)據(jù)線

#define CLK P01 用P0.1做時(shí)鐘線

#define INHIBIT P02 用P0.2做CD4052的INH端

#define PORTR P1 用P1口做讀入口

#define PORTW P2 用P2口做寫出口 可以實(shí)現(xiàn)64個(gè)自定義鍵

void send(uchar x)/***function for send a char da-ta***/

{

uchar i,temp,char_temp;

bit flag_check=1;

INHIBIT=1;//disable standard keyboard

delay_ ms(3);

temp=x;

for(i=0;i<8;i++)//find the number of 1 in this uchar x is odd or not

{

char_temp=temp&0x01;

if(char_temp==0x01)

{

flag_check=!flag_check;

}

temp=temp>>1;

}

CLK=1;//send 1 to P1 then read P1

while (!CLK) //if CLK is low wait

{

;

}

CLK=1;DATA=1;//send 1 to P1 then read P1

if(CLK==1)

{

delay_us(30);//

}

if(CLK==1&&DATA==1)//send data

{

DATA=0;//start bit 0

delay_us(10);

CLK=0;

delay_us(5);//

temp=x;

for(i=0;i<8;i++)//send 8 bits LSBfirst

{

CLK=1;

delay_us(5);

char_temp=temp&0x01;

if(char_temp==0x01)

{

DATA=1;

}

else

{

DATA=0;

}

//DATA=(bit)(temp&0x01);

//LSB

delay_us(10);

CLK=0;

delay_us(5);

temp=temp>>1;

}

CLK=1;//send check bit

delay_us(5);?

DATA=flag_check;

delay_us(10);?

CLK=0;

delay_us(5)

CLK=1;//send stop bit

delay_us(5);?

DATA=1;

delay us?10??

CLK=0?

delay_us(5);?

CLK=1;

delay_us(30);? ?

CLK=1;DATA=1;//send 1 to P1 then read P1

if(CLK==1&&DATA==0)

{

return; //pc is sending data to mcu, go to

receiving function

}

INHIBIT=0; //enable standard keyboard

}

5 結(jié)論

PS/2接口協(xié)議是現(xiàn)在大多數(shù)鍵盤、鼠標(biāo)與PC機(jī)通訊的標(biāo)準(zhǔn)協(xié)議。其中鼠標(biāo)對(duì)PC機(jī)的通訊更為簡單,只是傳輸數(shù)據(jù)的內(nèi)容不一樣而已。充分理解PS/2接口協(xié)議,可以幫助設(shè)計(jì)者自主開發(fā)一些工控機(jī)上的專用鍵盤等外設(shè),并能夠按照用戶的要求開發(fā)出專用的多功能鍵盤。該工控機(jī)的雙鍵盤設(shè)計(jì)目前已被某工控公司所采納,并已作為組件加入到產(chǎn)品當(dāng)中。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉