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

下載本文檔

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

文檔簡介

1、80C196單片機鼠標接口程序設計實例作者:來源:互連網 瀏覽次數:169復I更來源:電子技術應用作者:華北電力大學(北京)(102206 )楊國田 白焰 撫順石油學院(113001)徐培民摘要:通過對鼠標底層通信原理及協議的深入分析,探討了鼠標在80C196單片機系統中的應用價值與可行性,并介紹了鼠標接口軟件設計的原理及方法,給出了80C196單片機與Microsoft 鼠標的具體接口程序。關鍵詞:鼠標 接口技術 軟件設計 接口程序80C196單片機由于低格低、處理能力強,在信號分析、數據采集等很多領域得到了廣泛應用,在目標系統中使用各種規格的液晶或CRT顯示器也越來越多。因此在這樣的單片機

2、系統中引入鼠標,將會方便操作,提高工作效率。鼠標內核本質上是一個二維的角度或位移 信號檢測裝置,耗電極少、可靠性高、價格低廉,可能在許多場合發揮作用。鼠標與主機之 間通過RS-232標準串行接口進行通信,信息傳送是單方向、無條件、無應答連續進行的。 此外80C196的UART不直接支持鼠標的接口協議,在程序設計中必須予以注意。本文主 要探討80C196 單片機與Microsoft兼容鼠標接口程序的設計實現。1鼠標信號發送協議與過程鼠標是一個功能高度集中的小型機電一體化系統。它首先將直線移轉換成角度位移,再轉變成數字量,然后與按鈕狀態統一編碼,通過RS-232串口發出。鼠標工作所需功率從RS23

3、2 串行接口的控制線上竊取(PS/2、USB接口鼠標除外)。當鼠標被拖動超過一個最小 距離或某一按鈕被按下時,它按照規定的協議將移動距離和按鈕狀態通過一次或幾次信息發 送到機;主機上的鼠標驅動程序將信息變換成鼠標位置和按鈕狀態供其它程序模塊調用。每發生一次移動或按鈕狀態變化,鼠標向上發送一次信息。通常一般鼠標的分辨率為400DPI。理論上即沿著某一方向每拖動一英寸(一般速度),會產生400次信息發送過程。,如果拖動較快,則信息發送次數送減少,但所反映的總的移動距離仍然是400步。各種串行接口鼠標在物理層普遍采用標準的串行通信協議,波特率為1200bps 。幀格式為7個數據位、2個停止位,無奇偶

4、校驗位。上層協議則在此基礎上以十六進制數形式直接發 更新鼠標信息,包括:初始化報告:移動方向、距離、按鈕狀態。其一般形式如表1所示。表1鼠標信息發送格式序號名稱式長度意義1初始化報告4DH (用)1字節聲明初始化結束加電時;2移動、投鈕Pl、P2s F33字節反映投鈕狀態、移動方向和距離移動測上述P1、P2、P3三個參數說明:P1_D7D6 固定值01 ; D1D0=11本次鼠標移動包含左右移動分量;D3D2=11本次鼠標移動包含上下移動分量;D4=1目前鼠標右鍵呈按下狀態;D5=1目前鼠標左鍵呈按下狀態(D4D5=00 則鍵呈釋放狀態)。0為向P2_D7D6固定值00 ;其余六位表示一個有符

5、號二進制數,反映左右移動量,大于右移動,小于0為向左移動。P3_D7D6固定值00 ;其余六位表示一個有符號二進制數,反映上下移動量,大于0為向下移動,小于0為向上移動。例如:6CH 02H 3AH ( P1=6CH,P2=02H,P3=3AH)反饋出鼠標向右移動了2個單位,向上移動了 6個單位,目前左鍵按下。30CI96眼片機MAX232ERS-232C鼠標 &RS-232C9S7圖1鼠標與8OC196應用系統接口原理圖2鼠標接口程序設計80C196 系列單片機內設 RS-232 收發器,但需要配置接口芯片實現電平轉換。考慮到鼠標從串口竊取功率,接口芯片必須具有一定的驅動能力,而不能要用簡單

6、的準 RS-232 電 平轉換器。這里采用 MAX232E 作為接口芯片。圖 1 中左側為 80C196 單片機, P2.0 (TXD )、 P2.1 (RXD )通過 MAX232E 形成滿足 鼠標要求的串行接口,包括生成標準 RS-232C 電平和提供電源供應。圖 1 中最右邊為 9 針或 24 針標準串行接插件。由于鼠標的電源供應采用功率竊取方案,由 DTR/RTS 提供, 這里為 DTR 加限流電阻防止對鼠標造成傷害。 RTS 由 MAX232E 垢信號發送端提供,通 過 80C196 的 P2.0 控制 MAX232E 的 10 腳(對應的輸出腳為 7 腳)電平高低以改變 7 腳電位

7、,使鼠標可以接收來自 RTS 的控制命令,以實現鼠標安裝與否的檢測。 MAX232E 的 11 腳(對應的輸入腳為 14 腳)設備高電平以保證 14 腳電位為負 RS-232 電位,滿足 鼠標發送信號時的電平要求。從鏈路層看, 80C196 串行接口的四種工作方式均不滿足鼠標的幀格式要求;但其工作方式 1 ( 1 位起始位、 8 位數據位、 1 位停止位)的總傳送位數與鼠標( 1 位起始位、 7 個數 據位、 2 個停止位)相同,均為 10 位。接收過程中 80C196 收到 7 個數據位后,將 2 個 停止位中的第一個作為數據位裝入接收緩沖器的最高位, 由于停止位在物理層是高電平, 作 為數

8、據被接收后相當于邏輯 “0”;剩下的第二個停止位給好為 80C196 提供了有效的停止 位。利用 80C196 的工作方式 1 完全可以保證正確接收鼠標信息。單片機起動后,通過鼠標驅動模塊對鼠標進行初始化,即通過 P2.0 使 RTS 電平翻轉一次 而令鼠標發送初始化報告, 以確認鼠標是否安裝。 之后, 鼠標即可隨著拖動或按鈕操作向單片機發送動作信息,經接口模塊釋放即可反應鼠標位置和按鈕狀態。80C196將根據接收到的鼠標鼠標接口模塊主要包括按鈕狀態識別和位置識別兩個部分。信息不斷刷新鼠標信息緩沖區。由于鼠標事件間隔不確定,采用掃描方式但會浪費CPU時間,還可能因來不及處理而丟失信息。有效的處

9、理方法是采用中斷方式接收,應用模塊通過軟件接口獲得鼠標信息。完整的鼠標接口程序流程圖如圖2所示。在初始化階段,首先檢查鼠標是否存在,根據結果設置標志位,以備以后取鼠標信息時判斷用;根據需要設定鼠標初始化位置、按鈕原始狀態;最后設置串行接口參數(幀格式等)并開放鼠標中斷。鼠標發 送信息時,第三個字節為一個完整的信息報告。但80C196每接收到一個字節,就產生一次中斷,然后根據當前字節是否大于40H確定其性質。若是信息報告的首字節,則還要進一步通過有效性檢驗后保存;若不是首字節,則必須經過一系列檢驗后保存起來。收到三個字節后立即進行命令分析和執行。具體處理過程可參看源程序。用戶模塊通過特定接口模塊

10、(圖2( b)獲得鼠標當前位置和按鈕狀,并可通過進位標志C=0/1判斷鼠標是否安裝。F面是圖2、3程序流程圖如圖對應的程序清單。該程序要求80C196單片機的工作頻率1字節2 4QH?足否有效指針:2?保存字節Y指針=0為12MHz ;如果采有其它工作頻率,通過修改串行口的波特率設置參數以及延時程序的時間常數即可。圖3亂標中嘶服務程憚蠱程用;8098特殊功能寄存器預定義命令欣卿處理取斜收邦字節保存字節 rR0 EQU 00H : WordSBUD EQU 07H : ByteINT_MASK EQU 08H : ByteINT_PEND EQU 09H:ByteBAUD_RT EQU 0EH:

11、ByteIOP2 EQU 10H:ByteSP_CON EQU 11H:ByteSP_STAT EQU 11H:ByteIOC1 EQU 16H : ByteSP EQU 18H : Word;通用寄存器預定義RSEG AT ICHAX : DSW 1DX : DSW 1AL EQU AX :BYTEAH EQU (AX+1 ): BYTEDL EQU DX :BYTEDH EQU ( DX+1 ): BYTESCRNW EQU 640 ;顯示屏寬度SCRNH EQU 480 ;顯示屏高度;變量區RSEG AT 20HM_X : DSW 1 ;光標 X 值M_Y : DSW 1 :光標 Y 值

12、M_BUF :DSB 4 ;接收緩沖區BX : DSW 1LRB_OK : DSB 1 ;鼠標狀態; Bit7 :存在, Bit5 ,左鍵, Bit4 :右鍵CSEG AT 2000HDCW INITCSEG AT 200CHDCW SIOINTDCW INITDCW 0DCB 0,0 ,0 ,0 ,0 ,0DCB 08DHDCB 000HDCB 027H , 0FEHCSEG AT 2080HINIT :LD SP ,#0100H ;設堆棧指針LD M_X , #SCRNW/2 ;初始化指針LD M_Y , #SCRNH/2ANDB LRB_OK , #7CHLD M_P , #M_BUFC

13、LRB INT_PEND ;清除中斷LDB INT_MASK , #40H ;開串行中斷LDB AL, SP_STAT ;清除 RI/TILDB SP_CON , #09H ;設串口模式LDB BAUD_RT , #9BH; 1200 , 12MHzLDB BAUD_RT ,#80HEIANDB IOP2 ,#0FEH ; P2.2=0LD AX ,#8000H ;延遲 200msDLY0 :DEC AXJNE DLY0LDB AL , LRB_OKLBS AL , 7 ,M_OKANDB INT_MASK , #0BFHM_OK :NOP;清單二:取鼠標消息,AL= 鼠標及按鈕狀態, BX=

14、X , DX=Y GET_M:ANDB INT_MASK,#0BFHLDB AL , LRB_OK ;取鼠標信息LD BX ,M_XLD DX ,M_YORB INT_MASK ,#40HRET;清單三:串口中斷服務程序SIOINT : PUSHF ;中斷服務PUSH AXLDB AL ,SBUFLDB AH , SP_STATJBS AL, 6,ISB0 ;第一個字節CMP M_P ,#M_BUFJNE SIO_1SJMP C99 ;緩沖區空,出錯SIO_1 :CMP M_P , #M_BUF+2JH C98 ;緩沖區滿,出錯STB AL, M_P+ ;存儲收到字節CMP M_P , #M_

15、BUF+3JNE C99LD M_P , #M_BUF ;已收到完整命令GOLR :LDB AL , 1M_P ;處理 X 方向位移SHLB AL ,#2EXTB ALSHRA AX ,#2ADD M_X,AXCKL:CMP M_X,#0JGE CKRCLR M_XCKR:CMP M_X ,#SCRNWJLT GOUDLD M_X,#SCRNWGOUD:LDB AL,2M_P ; 處理 Y 方向位數SHLB AL ,#2EXTB ALSHRA AX ,#2ADD M_Y , AXCKU : CMP M_Y ,#0JGE CKDCLR M_YCKD :CMP M_Y , #SCRNHJLT ELRUDLD M_Y ,#SCRNHELRUD : SJMP C98ISB0 :STB AL, M_BUFANDB AL ,#0FHCMPB AL, #03HJE C97 ;=X3H,CMPB AL,#0CHJ

溫馨提示

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

評論

0/150

提交評論