

下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、80C196單片機鼠標接口程序設計實例摘要通過對鼠標底層通信原理及協(xié)議的深入分析,探討了鼠標在80196單片機系統(tǒng)中的應用價值與可行性, 并介紹了鼠標接口軟件設計的 原理及方法,給出了80196單片機與鼠標的具體接口程序。關鍵詞鼠標接口技術軟件設計接口程序80196單片機由于低格低、處理能力強,在信號分析、數(shù)據(jù)采集等很 多領域得到了廣泛應用,在目標系統(tǒng)中使用各種規(guī)格的液晶或顯示器也越 來越多。因此在這樣的單片機系統(tǒng)中引入鼠標,將會方便操作,提高工作效率。鼠標內核本質上是一個二維的角度或位移信號檢測裝置,耗電極少、可靠性高、價格低廉,可能在許多場合發(fā)揮作用。鼠標與主機之間通過-232標準串行接口
2、進行通信,信息傳送是單方向、無條件、無應答連續(xù)進行的。此外80196的不直接支持鼠標的接口協(xié)議,在程序設計中必須予以注意、。本文主要探討80196單片機與兼容鼠標接口程序的設計實現(xiàn)。1鼠標信號發(fā)送協(xié)議與過程鼠標是一個功能高度集中的小型機電一體化系統(tǒng)。它首先將直線移轉換成角度位移,再轉變成數(shù)字量,然后與按鈕狀態(tài) 統(tǒng)一編碼,通過-232串口發(fā)出。鼠標工作所需功率從-232串行接口的控制線上竊取2、接口鼠標除外。 當鼠標被拖動超過一個最小距離或某一按鈕被按下時,它按照規(guī)定的 協(xié)議將移動距離和按鈕狀態(tài)通過一次或幾次信息發(fā)送到機;主機上的鼠標 驅動程序將信息變換成鼠標位置和按鈕狀態(tài)供其它程序模塊調用。每
3、發(fā)生一次移動或按鈕狀態(tài)變化,鼠標向上發(fā)送一次信息。 通常一般鼠標的分辨率為400。理論上即沿著某一方向每拖動一英寸一般速度, 會產生400次信息發(fā) 送過程。,如果拖動較快,則信息發(fā)送次數(shù)送減少,但所反映的總的移動距離 仍然是400步。各種串行接口鼠標在物理層普遍采用標準的串行通信協(xié)議,波特率為1200。幀格式為7個數(shù)據(jù)位、2個停止位,無奇偶校驗位。 上層協(xié)議則在此基礎上以十六進制數(shù)形式直接發(fā)更新鼠標信息,包括 初始化報告移動方向、距離、按鈕狀態(tài)。其一般形式如表1所示。表1鼠標信息發(fā)送格式序號名稱字串形式長度意義說明1初始化報告41字節(jié)聲明初始化結 束加電時發(fā)送一次2移動、按鈕1、2、33字節(jié)反
4、映按鈕狀態(tài)、移動方向 和距離移動或按鈕操作時發(fā)送上述1、2、3三個參數(shù)說明1_76固定值01;10=11本次鼠標移動包含左右移動分量;32=11本次 鼠標移動包含上下移動分量;4=1目前鼠標右鍵呈按下狀態(tài);5=1目前鼠 標左鍵呈按下狀態(tài)45=00則鍵呈釋放狀態(tài)。2_76固定值00;其余六位表示一個有符號二進制數(shù),反映左右移動 量,大于0為向右移動,小于0為向左移動。3_76固定值00;其余六位表示一個有符號二進制數(shù),反映上下移動 量,大于0為向下移動,小于0為向上移動。例如60231=6,2=02,3=3反饋出鼠標向右移動了2個單位,向上移動 了6個單位,目前左鍵按下。2鼠標接口程序設計801
5、96系列單片機內設-232收發(fā)器,但需要配置接口芯片實現(xiàn)電平轉換??紤]到鼠標從串口竊取功率,接口芯片必須具有一定的驅動能力,而 不能要用簡單的準-232電平轉換器。這里采用232作為接口芯片。圖1中左側為80196單片機,20、21通過232形成滿足鼠標要求的串 行接口,包括生成標準-232電平和提供電源供應。圖1中最右邊為9針或24針標準串行接插件。 由于鼠標的電源供應采用功率竊取方案,由提供,這里為加限流電阻 防止對鼠標造成傷害。由232垢信號發(fā)送端提供, 通過80196的20控制232的10腳對應的 輸出腳為7腳電平高低以改變7腳電位,使鼠標可以接收來自的控制命令,以實現(xiàn)鼠標安裝與否的檢
6、測232的11腳對應的輸入腳為14腳設備高電平以保證14腳電位為負-232電位,滿足鼠標發(fā)送信號時的電平要求。從鏈路層看,80196串行接口的四種工作方式均不滿足鼠標的幀格式 要求;但其工作方式11位起始位、8位數(shù)據(jù)位、1位停止位的總傳送位數(shù) 與鼠標1位起始位、7個數(shù)據(jù)位、2個停止位相同,均為10位。接收過程中80196收到7個數(shù)據(jù)位后, 將2個停止位中的第一個作為 數(shù)據(jù)位裝入接收緩沖器的最高位,由于停止位在物理層是高電平,作為數(shù) 據(jù)被接收后相當于邏輯0;剩下的第二個停止位給好為80196提供了有效 的停止位。利用80196的工作方式1完全可以保證正確接收鼠標信息。單片機起動后,通過鼠標驅動模
7、塊對鼠標進行初始化,即通過20使 電平翻轉一次而令鼠標發(fā)送初始化報告,以確認鼠標是否安裝。之后,鼠標即可隨著拖動或按鈕操作向單片機發(fā)送動作信息,經接口 模塊釋放即可反應鼠標位置和按鈕狀態(tài)。鼠標接口模塊主要包括按鈕狀態(tài)識別和位置識別兩個部分。80196將根據(jù)接收到的鼠標信息不斷刷新鼠標信息緩沖區(qū)。 由于鼠標事件間隔不確定,采用掃描方式但會浪費時間,還可能因來 不及處理而丟失信息。有效的處理方法是采用中斷方式接收,應用模塊通過軟件接口獲得鼠 標信息。完整的鼠標接口程序流程圖如圖2所示0在初始化階段,首先檢查鼠標是否存在,根據(jù)結果設置標志位,以備 以后取鼠標信息時判斷用; 根據(jù)需要設定鼠標初始化位置
8、、 按鈕原始狀態(tài);最后設置串行接口參數(shù)幀格式等并開放鼠標中斷。 鼠標發(fā)送信息時,第三個字節(jié)為一個完整的信息報告。 但80196每接收到一個字節(jié),就產生一次中斷,然后根據(jù)當前字節(jié)是 否大于40確定其性質。若是信息報告的首字節(jié),則還要進一步通過有效性檢驗后保存;若不是首字節(jié),則必須經過一系列檢驗后保存起來。收到三個字節(jié)后立即進行命令分析和執(zhí)行。具體處理過程可參看源程序。用戶模塊通過特定接口模塊圖2獲得鼠標當前位置和按鈕狀,并可通過進位標志=01判斷鼠標是否安裝。下面是圖2、3程序流程圖如圖對應的程序清單。該程序要求80196單片機的工作頻率為12;如果采有其它工作頻率,通過修改串行口的波特率設置參
9、數(shù)以及延時程序的時間常數(shù)即可。;8098特殊功能寄存器預定義00007_08_09210_11_1111618;通用寄存器預定義11+1+1640;顯示屏寬度480;顯示屏高度;變量區(qū)20_1;光標值_1光標值_4;接收緩沖區(qū)1;接收指針1_1;鼠標狀態(tài)_,#80;7存在,5,左鍵,4右鍵200020000,0,0,0,0,008000027,02080,#0100;設堆棧指針,#2;初始化指針_,#2_,#7_,#_;清除中斷_,#40;開串行中斷 ,_;清除,#09;設串口模式_,#9;1200,122,#0;22=0,#8000;延遲20000,7,_,#0;清單二取鼠標消息,=鼠標及按鈕狀態(tài),=,=_,#0,_;取鼠標信息_,#40;清單三串口中斷服務程序;中斷服務,6,0;第一個字節(jié)_,#_199;緩沖區(qū)空,出錯_1_,#_+2 98;緩沖區(qū)滿,出錯 ,_+;存儲收到字節(jié)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論