基于單片機的多計算機外設共享控制器的設計與實(shí)現
外設共享控制器的原理見(jiàn)圖3,設計采用ATMEL公司的AT89S8252單片機,它擁有8k flash存儲區、256×8位RAM。AT89S8252自帶EEPRO-M,且其P0、P1、P2、P3均可作為I/O口使用。在本設計中,鍵盤(pán)鼠標等PS/2口的切換主要是通過(guò)雙刀雙擲繼電器實(shí)現,顯示的R、G、B信號主要通過(guò)AD8183芯片完成信號切換,H、V信號通過(guò)54LS157芯片完成信號切換。為保證顯示信號切換的一致性,通過(guò)一個(gè)雙刀雙擲繼電器對AD8183和54LS157進(jìn)行統一控制。本文為兩臺計算機設計一套鍵盤(pán)鼠標共享電路,計算機數量多時(shí),情形類(lèi)似。
2 設計買(mǎi)現
外設共享控制器需要解決計算機啟動(dòng)對外設(PS/2、VGA)初始化,并在計算機啟動(dòng)完成后,控制信號的動(dòng)態(tài)切換。共分為硬件設計和軟件設計。
2.1 硬件設計
單片機U1的P1口接鍵盤(pán)K0、鼠標M0的時(shí)鐘、數據線(xiàn);P0口接計算機的鍵盤(pán)鼠標信號線(xiàn),即:PCI的時(shí)鐘線(xiàn)kbclk1、mselk1,數據線(xiàn)kbda-ta1、msdata1,PC2的時(shí)鐘線(xiàn)kbclk2、msclk2,數據線(xiàn)kbdata2,msdata2;P2口用來(lái)控制計算機間的切換。
計算機啟動(dòng)時(shí),P0口的時(shí)鐘、數據線(xiàn)被拉高和拉低,單片機檢測這些狀態(tài),并根據PS/2協(xié)議讀出這些發(fā)來(lái)的命令。然后把這些命令直接發(fā)送給鍵盤(pán)K0。K0應答計算機的命令,單片機把這些應答數據轉發(fā)給計算機。對于后臺計算機,單片機直接回應這些計算機發(fā)來(lái)的命令。鼠標和計算機間的聯(lián)系和鍵盤(pán)相同。
習慣上,指定其中一臺計算機設為前臺計算機,單片機轉發(fā)這臺計算機的命令、數據給鍵盤(pán)。當這臺計算機沒(méi)有接入時(shí),單片機自動(dòng)指定另一臺為前臺計算機。
單片機的P2口外接一瞬態(tài)開(kāi)關(guān),當開(kāi)關(guān)按下時(shí),單片機接受一個(gè)脈沖,于是就把當前的前臺計算機和后臺計算機進(jìn)行互換。并放置指示燈指示對應計算機的狀態(tài)。
顯示信號分R、G、B信號,H、V信號。前三個(gè)信號為模擬信號,用AD8183芯片控制,在這個(gè)片子的輸入輸出端要力175Ω的匹配電阻,并且這個(gè)片子需要5V電源供電。輸出選擇端在U2的223腳SEL,當SEL端接地時(shí),A路輸出,否則B路輸出。H、V信號由54LS157控制,這是四組2選1的數據選擇器,它的選擇端在1腳,1腳拉高B路輸出,1腳拉低A路輸出。這兩個(gè)片子的選擇端接到一個(gè)雙刀雙擲繼電器,對AD8183和154LS15 7進(jìn)行統一控制。
2.2 軟件設計
計算機啟動(dòng)時(shí),運行BIOS,檢測主板和各種外部硬件設備,識別其設備類(lèi)型,并對它們進(jìn)行初始化。當檢測鍵盤(pán)時(shí),如果掃描不到,且計算機在BIOS中設置PostBehavior->keyboard Errors->Report,計算機就會(huì )停止初始化,顯示出錯信息;否則,認為鍵盤(pán)不存在,跳過(guò)該設
備,計算機初始化結束后該設備不能用。當多臺計算機與一個(gè)鍵盤(pán)相連時(shí),必須給沒(méi)有與鍵盤(pán)物理連接的計算機建立虛擬的鍵盤(pán)。這個(gè)虛擬外設能夠完成與計算機的數據交換,幫助計算機順利通過(guò)BIOS檢測。同樣,對于鼠標,也必須建立虛擬鼠標使計算機通過(guò)BIOS檢測。虛擬鍵盤(pán)和虛擬鼠標這些虛擬外設,在計算機給出命令時(shí),應答命令,使計算機確信該外設存在。
BIOS檢測完成后,計算機進(jìn)入系統初始化過(guò)程。在這個(gè)過(guò)程中,操作系統要對外部設備的具體參數進(jìn)行設置。鍵盤(pán)要設置機打速率/延遲(typematic rate/delay);鼠標要設置采樣率(sample rate),讀取設備類(lèi)型(不同類(lèi)型的鼠標有不同的ID),設置分辨率(resolution,設置為每mm多少個(gè)計數點(diǎn)counts/mm),比例(scaling),設置數據報告禁止/允許。同樣,對于計算機必須建立虛擬外設,使系統確認外設存在,以通過(guò)初始化。
當上述過(guò)程完成后,系統就順利通過(guò)了初始化。顯示器顯示一臺計算機的畫(huà)面,該畫(huà)面對應的計算機稱(chēng)為前臺計算機,不被顯示畫(huà)面的計算機為后臺計算機。按下共享控制器上的切換按鈕,外設選擇一后臺計算機,把其置前成為前臺計算機,此時(shí),顯示器顯示該計算機的畫(huà)面,鍵盤(pán)鼠標響應該計算機。原先的前臺計算機變?yōu)楹笈_工作。
評論