80C196單片機鼠標接口程序設計實例_第1頁
80C196單片機鼠標接口程序設計實例_第2頁
80C196單片機鼠標接口程序設計實例_第3頁
已閱讀5頁,還剩7頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、80C196單片機鼠標接口程序設計實例摘要通過對鼠標底層通信原理及協議的深入分析,探討了鼠標在80196單片機系統中的應用價值與可行性,并介紹了鼠標接口軟件設計的原理及方法,給出了80196單片機與鼠標的具體接口程序。關鍵詞鼠標接口技術軟件設計接口程序80196單片機由于低格低、處理能力強,在信號分析、數據采集等很多領域得到了廣泛應用,在目標系統中使用各種規格的液晶或顯示器也越來越多。因此在這樣的單片機系統中引入鼠標,將會方便操作,提高工作效率。鼠標內核本質上是一個二維的角度或位移信號檢測裝置,耗電極少、可靠性高、價格低廉,可能在許多場合發揮作用。鼠標與主機之間通過-232標準串行接口進行通信

2、,信息傳送是單方向、無條件、無應答連續進行的。此外80196的不直接支持鼠標的接口協議,在程序設計中必須予以注盡、。本文主要探討80196單片機與兼容鼠標接口程序的設計實現。1鼠標信號發送協議與過程鼠標是一個功能高度集中的小型機電一體化系統。它首先將直線移轉換成角度位移,再轉變成數字量,然后與按鈕狀態統一編碼,通過-232串口發出。鼠標工作所需功率從-232串行接口的控制線上竊取2、接口鼠標除外。當鼠標被拖動超過一個最小距離或某一按鈕被按下時,它按照規定的協議將移動距離和按鈕狀態通過一次或幾次信息發送到機;主機上的鼠標驅動程序將信息變換成鼠標位置和按鈕狀態供其它程序模塊調用。每發生一次移動或按

3、鈕狀態變化,鼠標向上發送一次信息。通常一般鼠標的分辨率為400。理論上即沿著某一方向每拖動一英寸一般速度,會產生400次信息發送過程。,如果拖動較快,則信息發送次數送減少,但所反映的總的移動距離仍然是400步。各種串行接口鼠標在物理層普遍采用標準的串行通信協議,波特率為1200。幀格式為7個數據位、2個停止位,無奇偶校驗位。上層協議則在此基礎上以十六進制數形式直接發更新鼠標信息,包括初始化報告移動方向、距離、按鈕狀態。其一般形式如表1所示。表1鼠標信息發送格式序號名稱字串形式長度意義說明1初始化報告41字節聲明初始化結束加電時發送一次2移動、按鈕1、2、33字節反映按鈕狀態、移動方向和距離移動

4、或按鈕操作時發送上述1、2、3三個參數說明1_76固定值01;10=11本次鼠標移動包含左右移動分量;32=11本次鼠標移動包含上下移動分量;4=1目前鼠標右鍵呈按下狀態;5=1目前鼠標左鍵呈按下狀態45=00則鍵呈釋放狀態。2_76固定值00;其余六位表示一個有符號二進制數,反映左右移動量,大于0為向右移動,小于0為向左移動。3_76固定值00;其余六位表示一個有符號二進制數,反映上下移動量,大于0為向下移動,小于0為向上移動。例如60231=6,2=02,3=3反饋出鼠標向右移動了2個單位,向上移動了6個單位,目前左鍵按下。2鼠標接口程序設計80196系列單片機內設-232收發器,但需要配

5、置接口芯片實現電平轉換??紤]到鼠標從串口竊取功率,接口芯片必須具有一定的驅動能力,而不能要用簡單的準-232電平轉換器。這里采用232作為接口芯片。圖1中左側為80196單片機,20、21通過232形成滿足鼠標要求的串行接口,包括生成標準-232電平和提供電源供應。圖1中最右邊為9針或24針標準串行接插件。由于鼠標的電源供應采用功率竊取方案,由提供,這里為加限流電阻防止對鼠標造成傷害。由232垢信號發送端提供,通過80196的20控制232的10腳對應的輸出腳為7腳電平高低以改變7腳電位,使鼠標可以接收來自的控制命令,以實現鼠標安裝與否的檢測。232的11腳對應的輸入腳為14腳設備高電平以保證

6、14腳電位為負-232電位,滿足鼠標發送信號時的電平要求。從鏈路層看,80196串行接口的四種工作方式均不滿足鼠標的幀格式要求;但其工作方式11位起始位、8位數據位、1位停止位的總傳送位數與鼠標1位起始位、7個數據位、2個停止位相同,均為10位。接收過程中80196收到7個數據位后,將2個停止位中的第一個作為數據位裝入接收緩沖器的最高位,由于停止位在物理層是高電平,作為數據被接收后相當于邏輯0;剩下的第二個停止位給好為80196提供了有效的停止位。利用80196的工作方式1完全可以保證正確接收鼠標信息。單片機起動后,通過鼠標驅動模塊對鼠標進行初始化,即通過20使電平翻轉一次而令鼠標發送初始化報

7、告,以確認鼠標是否安裝。之后,鼠標即可隨著拖動或按鈕操作向單片機發送動作信息,經接口模塊釋放即可反應鼠標位置和按鈕狀態。鼠標接口模塊主要包括按鈕狀態識別和位置識別兩個部分。80196將根據接收到的鼠標信息不斷刷新鼠標信息緩沖區。由于鼠標事件間隔不確定,采用掃描方式但會浪費時間,還可能因來不及處理而丟失信息。有效的處理方法是采用中斷方式接收,應用模塊通過軟件接口獲得鼠標信息。完整的鼠標接口程序流程圖如圖2所示在初始化階段,首先檢查鼠標是否存在,根據結果設置標志位,以備以后取鼠標信息時判斷用;根據需要設定鼠標初始化位置、按鈕原始狀態;最后設置串行接口參數幀格式等并開放鼠標中斷。鼠標發送信息時,第三

8、個字節為一個完整的信息報告。但80196每接收到一個字節,就產生一次中斷,然后根據當前字節是否大于40確定其性質。若是信息報告的首字節,則還要進一步通過有效性檢驗后保存;若不是首字節,則必須經過一系列檢驗后保存起來。收到三個字節后立即進行命令分析和執行。具體處理過程可參看源程序。用戶模塊通過特定接口模塊圖2獲得鼠標當前位置和按鈕狀,并可通過進位標志=01判斷鼠標是否安裝。下面是圖2、3程序流程圖如圖對應的程序清單。該程序要求80196單片機的工作頻率為12;如果采有其它工作頻率,通過修改串行口的波特率設置參數以及延時程序的時間常數即可。;;8098特殊功能寄存器預定義00007_08210_1

9、1_1111618;通用寄存器預定義11+1+1640;顯示屏寬度480;顯示屏高度;;變量區20_1;光標值_1光標值_4;接收緩沖區_1;接收指針1_1;鼠標狀態;7存在,5,左鍵,4右鍵;200020000,0,0,0,0,008000027,0;2080,#0100;設堆棧指針,#2;初始化指針#2#7#_;清除中斷,#40;開串行中斷,;清除#09;設串口模式,#9;1200,12ZZZ2,#0;22=0,#8000;延遲20000,7,#0;清單二取鼠標消息,=鼠標及按鈕狀態,=,=,#0,;取鼠標信息,#40;清單三串口中斷服務程序;中斷服務,6,0;第一個字節_,#_199;緩沖區空,出錯_1_,#_+298;緩沖區滿,出錯,_+;存儲收到字節_,#_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論