新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于單片機的共享控制器的設計

        基于單片機的共享控制器的設計

        作者: 時間:2011-08-06 來源:網絡 收藏

        1.3 外設的設計原理

          外設的原理見圖3,設計采用ATMEL公司的AT89S8252,它擁有8k flash存儲區、256×8位RAM。AT89S8252自帶EEPRO-M,且其P0、P1、P2、P3均可作為I/O口使用。在本設計中,鍵盤鼠標等PS/2口的切換主要是通過雙刀雙擲繼電器實現,顯示的R、G、B信號主要通過AD8183芯片完成信號切換,H、V信號通過54LS157芯片完成信號切換。為保證顯示信號切換的一致性,通過一個雙刀雙擲繼電器對AD8183和54LS157進行統一控制。本文為兩臺計算機設計一套鍵盤鼠標共享電路,計算機數量多時,情形類似。

          

        基于單片機的共享控制器的設計

          2 設計買現

          外設需要解決計算機啟動對外設(PS/2、VGA)初始化,并在計算機啟動完成后,控制信號的動態切換。共分為硬件設計和軟件設計。

          2.1 硬件設計

          U1的P1口接鍵盤K0、鼠標M0的時鐘、數據線;P0口接計算機的鍵盤鼠標信號線,即:PCI的時鐘線kbclk1、mselk1,數據線kbda-ta1、msdata1,PC2的時鐘線kbclk2、msclk2,數據線kbdata2,msdata2;P2口用來控制計算機間的切換。

          計算機啟動時,P0口的時鐘、數據線被拉高和拉低,檢測這些狀態,并根據PS/2協議讀出這些發來的命令。然后把這些命令直接發送給鍵盤K0。K0應答計算機的命令,單片機把這些應答數據轉發給計算機。對于后臺計算機,單片機直接回應這些計算機發來的命令。鼠標和計算機間的聯系和鍵盤相同。

          習慣上,指定其中一臺計算機設為前臺計算機,單片機轉發這臺計算機的命令、數據給鍵盤。當這臺計算機沒有接入時,單片機自動指定另一臺為前臺計算機。

          單片機的P2口外接一瞬態開關,當開關按下時,單片機接受一個脈沖,于是就把當前的前臺計算機和后臺計算機進行互換。并放置指示燈指示對應計算機的狀態。

          顯示信號分R、G、B信號,H、V信號。前三個信號為模擬信號,用AD8183芯片控制,在這個片子的輸入輸出端要力175Ω的匹配電阻,并且這個片子需要5V電源供電。輸出選擇端在U2的223腳SEL,當SEL端接地時,A路輸出,否則B路輸出。H、V信號由54LS157控制,這是四組2選1的數據選擇器,它的選擇端在1腳,1腳拉高B路輸出,1腳拉低A路輸出。這兩個片子的選擇端接到一個雙刀雙擲繼電器,對AD8183和154LS15 7進行統一控制。

          2.2 軟件設計

          計算機啟動時,運行BIOS,檢測主板和各種外部硬件設備,識別其設備類型,并對它們進行初始化。當檢測鍵盤時,如果掃描不到,且計算機在BIOS中設置PostBehavior->keyboard Errors->Report,計算機就會停止初始化,顯示出錯信息;否則,認為鍵盤不存在,跳過該設

          備,計算機初始化結束后該設備不能用。當多臺計算機與一個鍵盤相連時,必須給沒有與鍵盤物理連接的計算機建立虛擬的鍵盤。這個虛擬外設能夠完成與計算機的數據交換,幫助計算機順利通過BIOS檢測。同樣,對于鼠標,也必須建立虛擬鼠標使計算機通過BIOS檢測。虛擬鍵盤和虛擬鼠標這些虛擬外設,在計算機給出命令時,應答命令,使計算機確信該外設存在。

          BIOS檢測完成后,計算機進入系統初始化過程。在這個過程中,操作系統要對外部設備的具體參數進行設置。鍵盤要設置機打速率/延遲(typematic rate/delay);鼠標要設置采樣率(sample rate),讀取設備類型(不同類型的鼠標有不同的ID),設置分辨率(resolution,設置為每mm多少個計數點counts/mm),比例(scaling),設置數據報告禁止/允許。同樣,對于計算機必須建立虛擬外設,使系統確認外設存在,以通過初始化。

          當上述過程完成后,系統就順利通過了初始化。顯示器顯示一臺計算機的畫面,該畫面對應的計算機稱為前臺計算機,不被顯示畫面的計算機為后臺計算機。按下共享控制器上的切換按鈕,外設選擇一后臺計算機,把其置前成為前臺計算機,此時,顯示器顯示該計算機的畫面,鍵盤鼠標響應該計算機。原先的前臺計算機變為后臺工作。

          啟動過程的程序流程圖見圖4。

          

        基于單片機的共享控制器的設計

          本文用Keil C開發,它提供了豐富的數據類型,極大地增強了程序處理能力和靈活性,它能夠自動實現中斷服務程序的現場保護和恢復,目標程序效率高、可移植性好,是一種高級語言,可讀性強,維護使用方便靈活。軟件由主程序和中斷服務子程序組成。主程序完成系統的初始化和計算機命令的響應、鍵盤鼠標數據的發送。中斷程序主要包括鍵盤熱鍵切換、外部按鍵切換。軟件功能模塊結構清晰可讀。程序流程圖見圖4和圖5。

          

        基于單片機的共享控制器的設計

          系統上電,外設共享控制器上電并開始對AT89S8252初始化。包括對變量、串口、定時器、中斷控制、看門狗進行初始化操作。在這個過程中還需要對外部的計算機的PS/2外設進行初始化應答。并且自動掃描啟動計算機,PS/2、VGA外設連接啟動計算機,并顯示啟動計算機的畫面。

          當完成BIOS檢測和操作系統檢測應答后,單片機進入主程序,執行正常鍵盤鼠標的操作功能。讀取P1.1上鍵盤給主機的數據看是否有“切換前/后臺計算機”的熱鍵按下,如果是,將切換;否則,連接當前計算機。

          3 設計小結

          本論文完成了主機1和主機2的鍵盤、鼠標、顯示器幾種外設的共享,解決了PS/2口、VGA接口共享時遇到的問題。實物經過篩選試驗、環境適應性試驗、電磁兼容試驗,性能良好,安全可靠。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 永定县| 漳平市| 武冈市| 湖南省| 横山县| 双鸭山市| 安福县| 墨竹工卡县| 石渠县| 宕昌县| 成安县| 郴州市| 兴山县| 色达县| 广州市| 泗水县| 牡丹江市| 肇源县| 青州市| 文水县| 工布江达县| 佛坪县| 灵山县| 绩溪县| 连山| 汕尾市| 探索| 乐陵市| 中宁县| 宁海县| 清远市| 河东区| 商河县| 师宗县| 务川| 灵寿县| 通榆县| 镇江市| 龙岩市| 黄山市| 鹰潭市|