




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、畢 業(yè) 論 文 正 文 第2頁摘 要鼠標(biāo)是人們?nèi)粘J褂玫碾娔X外設(shè),其技術(shù)的發(fā)展備受矚目。傳統(tǒng)的鼠標(biāo)有機(jī)械鼠標(biāo)和光電鼠標(biāo)兩種,它們都依賴于在平面上工作來感知位移的變化。而隨著工作場(chǎng)合和客戶需求的不斷變化,人們?cè)絹碓叫枰环N具備無線功能和懸空遙控功能的鼠標(biāo),它不依賴于平面,沒有連線的距離限制。同時(shí),在鼠標(biāo)的發(fā)展中,如何縮小鼠標(biāo)的體積,降低鼠標(biāo)的功耗也越來越被人們所關(guān)注。無線鼠標(biāo)則是電腦周邊器件與無線通信技術(shù)的完美結(jié)合物。無線鼠標(biāo)接收器作為無線鼠標(biāo)的一個(gè)重要組成部分是完成無線鼠標(biāo)與計(jì)算機(jī)之間的通信的媒介,對(duì)它的設(shè)計(jì)和創(chuàng)新能夠?yàn)闊o線鼠標(biāo)的更快普及和發(fā)展提供有力的支持。本文在分析了無線鼠標(biāo)的工作原理之后
2、,將無線鼠標(biāo)接收器的設(shè)計(jì)主要分為兩部分。一部分是無線通信,使用無線收發(fā)芯片nrf2401進(jìn)行無線發(fā)送和接收,并使用80c196單片機(jī)對(duì)該芯片進(jìn)行控制完成信息的無線傳遞功能。另一部分為接收器與計(jì)算機(jī)間的通信,將接收器接收到的信號(hào)在單片機(jī)的控制下通過rs232接口傳遞給pc機(jī)并讓pc識(shí)別出相應(yīng)的操作。通過調(diào)試驗(yàn)證其系統(tǒng)穩(wěn)定,通信可靠。最后論文總結(jié)了在無線鼠標(biāo)接收器研究設(shè)計(jì)中的工作,提出了下一步需要完善和解決的問題。 關(guān)鍵詞:無線鼠標(biāo);接收器;無線射頻;【abstract】 with the continuing popularity of computer, mouse as a part of
3、computers peripheral devices has been in rapid development. wireless mouse is the perfect combination of computer peripheral devices and wireless communication technologies.key words:wireless mouse, receiver, wireless rf黑龍江大學(xué)印制摘 要1一、 引言11.1 80c196的片內(nèi)結(jié)構(gòu)21.2 80c196的引腳圖31.3 80c196程序存儲(chǔ)器51.4 數(shù)據(jù)存儲(chǔ)器61.5 特殊
4、功能寄存器sfr71.6 工作方式81.7存儲(chǔ)器的設(shè)計(jì)91.9系統(tǒng)時(shí)鐘的設(shè)計(jì)10二、 系統(tǒng)設(shè)計(jì)112.1硬件構(gòu)成122.1.1 加速度計(jì)122.1.2 微處理器122.1.3 射頻收發(fā)器122.1.4 接口設(shè)計(jì)132.2 軟件設(shè)計(jì)132.2.1 usb 部分132.2.2 控制部分16三、無線鼠標(biāo)的結(jié)構(gòu)163.0 無線收發(fā)模塊163.1 發(fā)射部分163.2 接收部分173.2 編解碼電路173.2.1 pt2262/pt2272173.2.2 地址編碼設(shè)定和修改183.2.3 抗干擾的的處理183.3 無線遙控鼠標(biāo)的設(shè)計(jì)和實(shí)現(xiàn)193.3.1無線鼠標(biāo)左鍵的實(shí)現(xiàn)193.3.2 無線鼠標(biāo)滾輪的實(shí)現(xiàn)2
5、03.4 安裝與調(diào)試21四、80c196單片機(jī)鼠標(biāo)接口程序設(shè)計(jì)224.1 串行鼠標(biāo)的原理及數(shù)據(jù)協(xié)議224.2. 鼠標(biāo)信號(hào)發(fā)送協(xié)議與過程23五、結(jié)束語35六、 參考文獻(xiàn):36畢業(yè)設(shè)計(jì)正文 第36頁一、 引言隨著信息技術(shù)的飛速發(fā)展, 計(jì)算機(jī)已經(jīng)成為人們?nèi)粘9ぷ鳌W(xué)習(xí)必不可少的工具。其中, 鼠標(biāo)作為計(jì)算機(jī)最重要的外設(shè)之一, 它能控制計(jì)算機(jī)屏幕的光標(biāo)移動(dòng), 代替了鍵盤的某些繁瑣的指令, 使計(jì)算機(jī)的操作更加簡(jiǎn)便。鼠標(biāo)從出現(xiàn)至今, 經(jīng)歷了機(jī)械式鼠標(biāo)、光電機(jī)械式鼠標(biāo)和光電式鼠標(biāo)三個(gè)階段。本文要介紹的則是鼠標(biāo)發(fā)展的新階段:mems 無線鼠標(biāo)。它以mems 技術(shù)為依托, 進(jìn)行一定距離的無線操作, 來控制屏幕光標(biāo)
6、移動(dòng)。mems, micro electron- mechanical system, 即微機(jī)電系統(tǒng), 是指采用微機(jī)械加工技術(shù)可以批量制作的, 集微型傳感器、微型機(jī)構(gòu)、微型執(zhí)行器以及信號(hào)處理和控制電路、接口、通訊等于一體的微型器件或微型系統(tǒng)。它可以將物理信號(hào)轉(zhuǎn)換為電學(xué)信號(hào)或?qū)㈦妼W(xué)信號(hào)轉(zhuǎn)換為物理信號(hào), 實(shí)現(xiàn)從信號(hào)取樣、處理到執(zhí)行的整體集成。目前, 國內(nèi)外對(duì)這種基于mems 的無線鼠標(biāo)均有一定的研究。香港中文大學(xué)設(shè)計(jì)的是一個(gè)三維的指環(huán)形式的鼠標(biāo)1( 見圖1) , 將裝有mems 微加速度計(jì)的指環(huán)套在手指上, 通過手指的活動(dòng)來獲得加速度; 微處理器和射頻發(fā)射器則安裝在手腕處, 與指環(huán)相連, 構(gòu)成一個(gè)
7、完整的系統(tǒng)。圖1 鼠標(biāo)環(huán)的實(shí)物1.1 80c196的片內(nèi)結(jié)構(gòu)為了設(shè)計(jì)此系統(tǒng),我們采用了80c196單片機(jī)作為控制芯片,在前向通道中是一個(gè)非電信號(hào)的電量采集過程。它由傳感器采集非電信號(hào),從傳感器出來經(jīng)過功率放大過程,使信號(hào)放大,再經(jīng)過模/數(shù)轉(zhuǎn)換成為計(jì)算機(jī)能識(shí)別的數(shù)字信號(hào),再送入計(jì)算機(jī)系統(tǒng)的相應(yīng)端口。由于80c196中無片內(nèi)rom,且數(shù)據(jù)存儲(chǔ)器也不能滿足要求,經(jīng)擴(kuò)展2762和6264來達(dá)到存儲(chǔ)器的要求,其結(jié)果通過顯示器來進(jìn)行顯示輸出。 80c196是有8個(gè)部件組成,即cpu,時(shí)鐘電路,數(shù)據(jù)存儲(chǔ)器,并行口(p0p3)串行口,定時(shí)計(jì)數(shù)器和中斷系統(tǒng),它們均由單一總線連接并被集成在一塊半導(dǎo)體芯片上,即組成
8、了單片微型計(jì)算機(jī),80c196就是mcs-51系列單片機(jī)中的一種。圖 1-1 80c196基本組成cpu中央處理器:中央處理器是80c196的核心,它的功能是產(chǎn)生控制信號(hào),把數(shù)據(jù)從存儲(chǔ)器或輸入口送到cpu或cpu數(shù)據(jù)寫入存儲(chǔ)器或送到輸出端口。還可以對(duì)數(shù)據(jù)進(jìn)行邏輯和算術(shù)的運(yùn)算。 時(shí)鐘電路:80c196內(nèi)部有一個(gè)頻率最大為12mhz的時(shí)鐘電路,它為單片機(jī)產(chǎn)生時(shí)鐘序列,需要外接石英晶體做振蕩器和微調(diào)電容。內(nèi)存:內(nèi)部存儲(chǔ)器可分做程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,但在80c196中無片內(nèi)程序存儲(chǔ)器 。定時(shí)/計(jì)數(shù)器:80c196有兩個(gè)16位的定時(shí)/計(jì)數(shù)器,每個(gè)定時(shí)器/計(jì)數(shù)器都可以設(shè)置成定時(shí)的方式和計(jì)數(shù)的方式,但只能
9、用其中的一個(gè)功能,以定時(shí)或計(jì)數(shù)結(jié)果對(duì)計(jì)算機(jī)進(jìn)行控制。并行i/o口:mcs-51有四個(gè)8位的并行i/o口,p0,p1,p2,p3,以實(shí)現(xiàn)數(shù)據(jù)的并行輸出。串行口:它有一個(gè)全雙工的串行口,它可以實(shí)現(xiàn)計(jì)算機(jī)間或單片機(jī)同其它外設(shè)之間的通信,該并行口功能較強(qiáng),可以做為全雙工異步通訊的收發(fā)器也可以作為同步移位器用。 中斷控制系統(tǒng):80c196有五個(gè)中斷源,既外部中斷兩個(gè),定時(shí)計(jì)數(shù)中斷兩個(gè),串行中斷一個(gè),全部的中斷分為高和低的兩個(gè)輸出級(jí)。 1.2 80c196的引腳圖圖1-2 80c196引腳圖80c196的制作工藝為hmos,采用40管腳雙列直插dip封裝,引腳說明如下:vcc(40引腳)正常運(yùn)行時(shí)提供電源
10、。vss(20引腳)接地。xtal1(19引腳)在單片機(jī)內(nèi)部,它是一個(gè)反向放大器的輸入端,該放大器構(gòu)成了片內(nèi)的震蕩器,可以提供單片機(jī)的時(shí)鐘信號(hào),該引腳也是可以接外部的晶振的一個(gè)引腳,如采用外部振蕩器時(shí),對(duì)于8031而言此引腳應(yīng)該接地。xtal2(18引腳)在內(nèi)部,接至上述振蕩器的反向輸入端,當(dāng)采用外部振蕩器時(shí), 對(duì)mcs51系列該引腳接收外部震蕩信號(hào),即把該信號(hào)直接接到內(nèi)部時(shí)鐘的輸入端。rst/vpd(9引腳)在振蕩器運(yùn)行時(shí),在此引腳加上兩個(gè)機(jī)器周期的電平將單片機(jī)復(fù)位,復(fù)位后應(yīng)使此引腳電平保持不高于0.5v的低電平以保證8031正常工作。在掉電時(shí),此引腳接備用電源vdd,以保持ram數(shù)據(jù)不丟失
11、,當(dāng)bvcc低于規(guī)定的值時(shí),而vpd在其規(guī)定的電壓范圍內(nèi)時(shí),vpd就向內(nèi)部數(shù)據(jù)存儲(chǔ)器提供備用電源。ale/prog(30引腳)當(dāng)8031訪問外部存儲(chǔ)器時(shí),包括數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器,ale9地址鎖存允許0輸入的脈沖的下沿用于鎖存16位地址的低8位,在不訪問外部存儲(chǔ)器的時(shí)候,ale仍有兩個(gè)周期的正脈沖輸出,其頻率為振蕩器的頻率的1/6,在訪問外存儲(chǔ)器的是候,在兩個(gè)周期中,ale只出現(xiàn)一次,ale斷可驅(qū)動(dòng)8個(gè)ls ttl負(fù)載,對(duì)于有片內(nèi)eprom的而言,在eprom編程期間,此腳用于輸入編程脈沖prog。(29引腳)此腳輸出為 單片機(jī)內(nèi)訪問外部程序存儲(chǔ)器的讀選通信號(hào),在讀取外部指令期間, psen
12、非有兩次在每個(gè)周期有效,在此期間,每當(dāng)訪問外部存儲(chǔ)器時(shí),兩個(gè)有效的psen非將不再出現(xiàn),同樣這個(gè)引腳可驅(qū)動(dòng)8個(gè)lsttl負(fù)載。/vpp(31引腳)當(dāng)保持高電平時(shí),單片機(jī)訪問內(nèi)部存儲(chǔ)器,當(dāng)pc值超過0fffh時(shí),將自動(dòng)轉(zhuǎn)向片外存儲(chǔ)器。當(dāng)保持低電平時(shí),則只訪問外部程序存儲(chǔ)器,對(duì)8031而言,此腳必須接地。p0,p1,p2,p3:8031有四個(gè)并行口,在這四個(gè)并行口中,可以在任何一個(gè)輸出數(shù)據(jù),又可以從它們那得到數(shù)據(jù),故它們都是雙向的,每一個(gè)i/o口內(nèi)部都有一個(gè)8位數(shù)據(jù)輸出鎖存器和一個(gè)8位數(shù)據(jù)輸入緩沖器,各成為sfr中的一個(gè),因此cpu數(shù)據(jù)從并行i/o口輸出時(shí)可以得到鎖存,數(shù)據(jù)輸入時(shí)可以得到緩沖,但他
13、們?cè)诠δ芎陀猛旧系牟町惡艽?,p0和p2口內(nèi)部均有個(gè)受控制器控制的二選一選擇電路,故它們除可以用做通用i/o口以外還具有特殊的功能,p0口通常用做通用i/o口為cpu傳送數(shù)據(jù),p2口除了可以用做通用口以外,還具有第一功能,除p0口以外其余三個(gè)都是準(zhǔn)雙向口。80c196有一個(gè)全雙工串行口,這個(gè)串行口既可以在程序下把cpu的8位并行數(shù)據(jù)變成串行數(shù)據(jù)一位一位的從發(fā)送數(shù)據(jù)線發(fā)送出去,也可以把串行數(shù)據(jù)接受進(jìn)來變成并行數(shù)據(jù)給cpu,而且這種串行發(fā)送和接收可以單獨(dú)進(jìn)行也可以同時(shí)進(jìn)行。80c196的 串行發(fā)送和接收利用了p3口的第二功能,利用p3.1做串行數(shù)據(jù)接收線,串行接口的電路結(jié)構(gòu)還包括了串行口控制寄存器s
14、con,電源及波特率選擇寄存器pcon和串行緩沖寄存器sbuf,他們都屬于sfr,pcon和scon用于設(shè)置串行口工作方式和確定數(shù)據(jù)發(fā)送和接收,sbuf用于存放欲發(fā)送的數(shù)據(jù)起到緩沖的作用。1.3 80c196程序存儲(chǔ)器mcs-51系列單片機(jī)的內(nèi)部rom是不同的,8051有4k的rom,而8751則是4k光可擦寫eprom,而我們所采用的8031則沒有片內(nèi)的rom,但是無論那種型號(hào)的芯片都可以在片外擴(kuò)展多達(dá)64k的片外程序存儲(chǔ)器,外部程序存儲(chǔ)器擴(kuò)展的大小以滿足系統(tǒng)要求即可,或有特殊要求或?yàn)榱艘院笊?jí)方便采用大容量的片外程序存儲(chǔ)器。當(dāng)外接程序存儲(chǔ)器的時(shí)候,單片機(jī)通過p2口和p0口輸出16位的地址,
15、即可尋址的外部程序存儲(chǔ)器單元的地址,使用ale作為低8位地址鎖存器信號(hào),再由p0口讀回指令的代碼,用psen非作為外部程序存儲(chǔ)器的選通信號(hào)。單片機(jī)有一個(gè)程序計(jì)數(shù)器pc,它始終存著cpu要讀取的機(jī)器碼的所在地址,單片機(jī)工作時(shí),pc自動(dòng)加一,此時(shí)程序開始順序執(zhí)行,因?yàn)閱纹瑱C(jī)程序 訪問空間是64k,故需要16條地址線,當(dāng)接“0”則8031在片外程序存儲(chǔ)器中讀取指令,此時(shí)片外程序存儲(chǔ)器從0000h開始編址,因?yàn)?031無片內(nèi)程序存儲(chǔ)器,故在此系統(tǒng)中必須接地使cpu到外部rom中去尋址。在程序存儲(chǔ)器中有六個(gè)單元有特定的含義:0000h單元:?jiǎn)纹瑱C(jī)復(fù)位后,pc=0000h即從此處開始執(zhí)行指令。0003h單
16、元:外部中斷0入口地址。000bh單元:定時(shí)器0溢出中斷入口地址。0013h單元:外部中斷1入口地址。001bh單元:定時(shí)器溢出中斷入口地址。0023h單元:串行口中斷入口地址。使用時(shí)常在這些入口外安放一條絕對(duì)跳轉(zhuǎn)指令,使程序跳轉(zhuǎn)到擁護(hù)安排的中斷處理程序的起始地址,或從0000h外執(zhí)行一跳轉(zhuǎn)指令,跳轉(zhuǎn)到用戶設(shè)計(jì)的初始程序入口。1.4 數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器用于存放運(yùn)算中間的結(jié)果、數(shù)據(jù)暫存、緩沖、標(biāo)志位、待測(cè)程序等功能。片內(nèi)的128b的ram地址為00h7fh,供用戶做ram用,但是在這中間的前32單元,00h1fh即引用地址尋址做用戶ram用,常常做工作寄存器區(qū),分做四組,每組由8個(gè)單元組成通用
17、寄存器r0r7,任何時(shí)候都由其中一組作為當(dāng)前工作寄存器,通過rs0,rs1的內(nèi)容來決定選擇哪一個(gè)工作寄存器。低128字節(jié)中的20h2fh共16字節(jié)可用位尋址方式訪問各位,共128個(gè)位地址,30h7fh共80個(gè)單元為用戶ram區(qū),作堆?;驍?shù)據(jù)緩沖用,片內(nèi)ram不夠用時(shí),須擴(kuò)展片外數(shù)據(jù)存儲(chǔ)器。此時(shí)單片機(jī)通過p2口和p0口選出6位地址,使用ale作低8位的鎖存信號(hào),再由p0口寫入或讀出數(shù)據(jù)。寫時(shí)用,讀時(shí)用做外部數(shù)據(jù)存儲(chǔ)器的選通信號(hào)1.5 特殊功能寄存器sfr80c196有21個(gè)專用寄存器,他們是用來管理cpu和i/o口以及內(nèi)部邏輯部件的,在指令中專用寄存器是以存儲(chǔ)單元方式被讀寫的,專用寄存器雖有名稱
18、,但尋址時(shí)都做專用寄存器用,它們的地址是與片內(nèi)ram的地址相連的。下面就專用寄存器作以簡(jiǎn)單的介紹:累加器a:在絕大多數(shù)情況下它參與運(yùn)算的一方并存放運(yùn)算的結(jié)果。寄存器b:進(jìn)行乘除運(yùn)算時(shí),寄存器b有特定的用途,在乘時(shí)存放一個(gè)乘數(shù)以及積的最高位,a中存放另一個(gè)乘數(shù)以及積的低位。除法時(shí),b中存放除數(shù)及余數(shù),而在a中存放被除數(shù)和商,其他情況可作為普通寄存器用。堆棧指針sp:在子程序調(diào)用或中斷時(shí),用來暫存數(shù)據(jù)和地址,它按先進(jìn)后出的原則存儲(chǔ)數(shù)據(jù),它是一個(gè)八位寄存器它指出堆棧頂部在片內(nèi)ram中的位置,系統(tǒng)復(fù)位后,sp變成07h,使堆棧從00單元開始。;數(shù)據(jù)指針dptr:由兩個(gè)字節(jié)組成,dph字地址由83h,d
19、pl由82h,存放一個(gè)16位的二進(jìn)制數(shù)做地址用。程序狀態(tài)字psw:七位用來表征各種標(biāo)志,另一位無意義。 c ac fo rs1 rs0 ov - pc:進(jìn)位標(biāo)志位,用于表示加減運(yùn)算時(shí)最高位有無進(jìn)位和借位,在加法運(yùn)算中,若累加器最高位有進(jìn)位則cy=1,否則cy=0,在減法時(shí)則有借位cy=1,否則cy=0,在執(zhí)行算術(shù)邏輯運(yùn)算時(shí)可以被硬件或軟件置位或清除,cpu在進(jìn)行移位操作也會(huì)影響該位。ac:當(dāng)進(jìn)行加法或減法運(yùn)算時(shí)并產(chǎn)生由低四位向高四位的進(jìn)位或借位時(shí),ac置1,否則清0。若ac=0時(shí)則在加減過程中a3沒有向a4進(jìn)位或借位,否則正好相反。f0:f0常不是由機(jī)器來指令執(zhí)行中形成的,而是用戶根據(jù)程序的需
20、要進(jìn)行設(shè)置的,這個(gè)位一經(jīng)確定就可通過軟件測(cè)試來決定用戶程序的流向。rs1,rs0:8031有四個(gè)8位工作寄存器r0r7,用戶可以改變r(jià)s1和rs0的狀態(tài)來決定r0r7的物理地址。ov:用以指示運(yùn)算是否發(fā)生溢出,由機(jī)器執(zhí)行指令自動(dòng)形成,若機(jī)器在執(zhí)行指令過程中累加器a超過8位,則ov=1否則為0。p:用來來表示累加器a中的值為1的二進(jìn)制位的奇偶數(shù),若1的個(gè)數(shù)為奇數(shù)p=1,為偶數(shù)p=0。在串行通信中常用奇偶校驗(yàn)數(shù)據(jù)傳輸結(jié)果的正確性。1.6 工作方式它的工作方式可以分做復(fù)位,掉電和低功耗方式等。一、 復(fù)位方式當(dāng)mcs-5l系列單片機(jī)的復(fù)位引腳rst(全稱reset)出現(xiàn)2個(gè)機(jī)器周期以上的高電平時(shí),單片
21、機(jī)就執(zhí)行復(fù)位操作。如果rst持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)。 根據(jù)應(yīng)用的要求,復(fù)位操作通常有兩種基本形式:上電復(fù)位和上電或開關(guān)復(fù)位。上電復(fù)位要求接通電源后,自動(dòng)實(shí)現(xiàn)復(fù)位操作。常用的上電復(fù)位電路如圖 (1-3a)中左圖所示。圖中電容c1和電阻r1對(duì)電源十5v來說構(gòu)成微分電路。上電后,保持rst一段高電平時(shí)間,由于單片機(jī)內(nèi)的等效電阻的作用,不用圖中電阻r1,也能達(dá)到上電復(fù)位的操作功能,如圖 (1-3a)中所示。上電或開關(guān)復(fù)位要求電源接通后,單片機(jī)自動(dòng)復(fù)位,并且在單片機(jī)運(yùn)行期間,用開關(guān)操作也能使單片機(jī)復(fù)位。常用的上電或開關(guān)復(fù)位電路如圖 (1-3b)所示。上電后,由于電容c3的充電和反相門的作
22、用,使rst持續(xù)一段時(shí)間的高電平。當(dāng)單片機(jī)已在運(yùn)行當(dāng)中時(shí),按下復(fù)位鍵k后松開,也能使rst為一段時(shí)間的高電平,從而實(shí)現(xiàn)上電或開關(guān)復(fù)位的操作。 根據(jù)實(shí)際操作的經(jīng)驗(yàn),下面給出這兩種復(fù)位電路的電容、電阻參考值。 圖1-3 單片機(jī)的復(fù)位電路 圖(1-16a)中:cl10-30uf,r11ko 圖(1-16b)中:c:1uf,rllko,r210ko 二、掉電和低功耗方式人們往往在程序運(yùn)行中系統(tǒng)發(fā)生掉電的故障,使ram和寄存器中的數(shù)據(jù)內(nèi)容丟失,使人們丟失珍貴的數(shù)據(jù)而束手無策,80c196有掉電保護(hù),是先把有用的數(shù)據(jù)保存,再用備用電源進(jìn)行供電。1.7存儲(chǔ)器的設(shè)計(jì)在80c196芯片的外圍電路中必須對(duì)其進(jìn)行程
23、序存儲(chǔ)器的擴(kuò)展,和根據(jù)系統(tǒng)的需要對(duì)其進(jìn)行數(shù)據(jù)存儲(chǔ)器的擴(kuò)展。80c196對(duì)程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器均可進(jìn)行0000hffffh的64k字節(jié)地址內(nèi)容的有效尋址。在前面我們已經(jīng)講過80c196外擴(kuò)展存儲(chǔ)器時(shí),p2作高位的地址輸出,p0作低位地址輸出和數(shù)據(jù)線。一、程序存儲(chǔ)器的擴(kuò)展 由于80c196無內(nèi)部rom ,故擴(kuò)展的程序存儲(chǔ)器地址為0000hffffh,考慮系統(tǒng)的需要,我們將8031的程序存儲(chǔ)器擴(kuò)展為4k eprom,采用2764作為rom芯片。程序存儲(chǔ)器擴(kuò)展的容量大于256字節(jié),故eprom片內(nèi)地址線除了由p0口經(jīng)地址存儲(chǔ)器提供低8位地址外,還需要由p2口提供若干條地址線,我們選用8k的2764
24、eprom,故地址線應(yīng)該是13條,因?yàn)橄到y(tǒng)中只擴(kuò)展一片eprom,所以不用片選信號(hào),即eprom 的接地。在程序擴(kuò)展中,我們選用的地址鎖存器是74ls373當(dāng)三態(tài)門的為低電平時(shí),三態(tài)門處于導(dǎo)通狀態(tài),允許q端輸出,否則為高電平,輸出為三態(tài)門斷開,輸出端對(duì)外電路呈高阻態(tài),所以在這里為低電平,這時(shí)當(dāng)g端為高電平時(shí),鎖存器輸出和輸入的狀態(tài)是相同的,當(dāng)g由高電平下落為低電平時(shí),輸入端1d8d的數(shù)據(jù)鎖入1q8q中。當(dāng)2764處于讀方式下和均為低電平有效。當(dāng)vpp=+5v時(shí),eprom處于讀工作方式:這時(shí)由給定地址信號(hào)決定被選中存儲(chǔ)器單元信息。被讀出到數(shù)據(jù)輸出端d0d7上。維持方式:當(dāng)為高電平時(shí),vpp為+
25、5v,eprom處于低功耗方式,輸出端均為高阻態(tài),這與輸入無關(guān)。編程方式:在vpp加上+25v編程電源并在和地端跨接一個(gè)0.1uf的電容以干擾電壓的瞬間對(duì)2764進(jìn)入編程方式,被編程的8位數(shù)據(jù)以并行方式送到數(shù)據(jù)輸出斷編程校驗(yàn)。1.9系統(tǒng)時(shí)鐘的設(shè)計(jì)時(shí)鐘電路是用來產(chǎn)生80c196單片機(jī)工作時(shí)所必須的時(shí)鐘信號(hào),80c196本身就是一個(gè)復(fù)雜的同步時(shí)序電路,為保證工作方式的實(shí)現(xiàn),80c196在唯一的時(shí)鐘信號(hào)的控制下嚴(yán)格的按時(shí)序執(zhí)行指令進(jìn)行工作 ,時(shí)鐘的頻率影響單片機(jī)的速度和穩(wěn)定性。通常時(shí)鐘由于兩種形式:內(nèi)部時(shí)鐘和外部時(shí)鐘。我們系統(tǒng)采用內(nèi)部時(shí)鐘方式來為系統(tǒng)提供時(shí)鐘信號(hào)。80c196內(nèi)部有一個(gè)用于構(gòu)成振蕩器
26、的高增益反向放大器,該放大器的輸入輸出引腳為xtal1和xtal2,它們跨接在晶體振蕩器和用于微調(diào)的電容,便構(gòu)成了一個(gè)自激勵(lì)振蕩器電路中的c1、c2的選擇在30pf左右,但電容太小會(huì)影響振蕩的頻率、穩(wěn)定性和快速性。晶振頻率為在1.2mhz12mhz之間,頻率越高單片機(jī)的速度就越快,但對(duì)存儲(chǔ)器速度要求就高。為了提高穩(wěn)定性我們采用溫度穩(wěn)定性好的npo電容,采用的晶振頻率為12mhz。圖1-4系統(tǒng)時(shí)鐘二、 系統(tǒng)設(shè)計(jì)如圖2 所示, 這種新型的鼠標(biāo)由三個(gè)模塊組成:( 1)mems 加速度計(jì), 用它來檢測(cè)鼠標(biāo)各方向的運(yùn)動(dòng); ( 2) 微處理器, 用來處理加速度計(jì)輸出的數(shù)據(jù), 對(duì)收發(fā)器進(jìn)行控制; ( 3)
27、收發(fā)器, 對(duì)處理后的信號(hào)進(jìn)行無線傳輸, 以相應(yīng)的通訊協(xié)議與pc 機(jī)相連。圖2 無線鼠標(biāo)的結(jié)構(gòu)2.1硬件構(gòu)成2.1.1 加速度計(jì)mems 加速度計(jì)兩個(gè)mems 單軸加速度計(jì)( 或一個(gè)雙軸加速度計(jì)) 被放置在水平面上來檢測(cè)鼠標(biāo)x 和y 方向的運(yùn)動(dòng)。若在yz 平面放置一個(gè)雙軸加速度計(jì)檢測(cè)鼠標(biāo)的垂直運(yùn)動(dòng)和旋轉(zhuǎn)角度就構(gòu)成了三維鼠標(biāo)。本系統(tǒng)中采用ad 公司的adxl203 微加速度計(jì)檢測(cè)運(yùn)動(dòng), 這是一款電容式加速度計(jì), 溫度系數(shù)低、靈敏度高、直流響應(yīng)好。它通過檢測(cè)電容量的變化得到加速度值。2.1.2 微處理器本系統(tǒng)中采用了兩種微處理器。在發(fā)射部分中, 微處理器要對(duì)加速度計(jì)的輸出信號(hào)進(jìn)行濾波放大處理, 采用
28、a/d轉(zhuǎn)換電路將模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào), 并轉(zhuǎn)化為符合串行鼠標(biāo)規(guī)范的數(shù)據(jù)包, 輸出給發(fā)射器。其中一個(gè)重要作用是將加速度計(jì)輸出的與檢測(cè)的加速度成比例的電信號(hào)轉(zhuǎn)換成表征x、y 方向位移的電信號(hào), 實(shí)現(xiàn)該功能是通過編程對(duì)信號(hào)進(jìn)行二重積分。同時(shí)還需對(duì)發(fā)射器件進(jìn)行控制, 例如對(duì)內(nèi)部寄存器進(jìn)行初始設(shè)置, 設(shè)定工作頻率、發(fā)射功率等參數(shù); 進(jìn)入工作狀態(tài)后, 通過微控制器進(jìn)行收發(fā)模式的控制, 發(fā)送/接收數(shù)據(jù)或進(jìn)行狀態(tài)轉(zhuǎn)換。因此采用atmel 的atmega16 單片機(jī), 它是一種高性能、低功耗的avr 單片機(jī), 帶有16k 字節(jié)的可編程flash, 1k 字節(jié)的片內(nèi)sram, 3 個(gè)定時(shí)/計(jì)數(shù)器,2 個(gè)可編程的
29、串行usart。在接收部分, 微處理器需要對(duì)收發(fā)器和接口芯片進(jìn)行控制, 因此采用atmel 的at80c51。2.1.3 射頻收發(fā)器該系統(tǒng)采用射頻技術(shù)(rf) 來實(shí)現(xiàn)短距離無線數(shù)據(jù)通訊。射頻技術(shù)能夠?qū)Χ叹嚯x通訊提供充足的帶寬, 只要在限定距離內(nèi)( 一般為1020 米) , 就可以在任何位置使用, 幾乎不受障礙物的影響。系統(tǒng)選用的收發(fā)芯片是挪威nordic 公司推出的nrf2401 單片2.4ghz 無線收發(fā)一體芯片4, 24 引腳, 提供shockburst 模式、直接收發(fā)模式、duoceiver 雙信道收發(fā)模式、片上crc 以及地址計(jì)算編碼等功能, 支持多點(diǎn)間通信,最高傳輸速率超過1mbit
30、/s, 功耗小, 外圍設(shè)備少, 是一款理想的系統(tǒng)芯片。2.1.4 接口設(shè)計(jì)基于usb 使用方便、允許外設(shè)熱插拔、速度快、連接靈活等特點(diǎn), 本系統(tǒng)采用philips 的pdiusbd12 芯片6, 該芯片符合usb1.1 協(xié)議規(guī)范, 與任何微處理器有高速( 2mb/s) 并行接口, 可通過軟件控制總線連接softconnect,具有多中斷模式。2.2 軟件設(shè)計(jì)2.2.1 usb 部分根據(jù)usb 協(xié)議, 傳輸由主機(jī)(host) 開始, 單片機(jī)(at80c51) 作為前臺(tái), 等待中斷。主機(jī)發(fā)令牌給usb 芯片( pdiusbd12) , pdiusbd12 接收后給單片機(jī)發(fā)中斷,單片機(jī)進(jìn)入中斷服務(wù)程
31、序,進(jìn)行相應(yīng)的操作, 因此usb 的軟件設(shè)計(jì)分單片機(jī)方面和主機(jī)方面兩部分5。單片機(jī)方面的單片機(jī)控制程序通常由三部分組成: (1)初始化單片機(jī)和外圍設(shè)計(jì)(如pdiusbd12);(2) 主循環(huán)部分,可以進(jìn)行中斷; (3)中斷服務(wù)程序。圖3 無線鼠標(biāo)發(fā)射部分圖4 無線鼠標(biāo)接收部分主機(jī)方面的設(shè)計(jì)就是usb 設(shè)備驅(qū)動(dòng)程序的編制。usb驅(qū)動(dòng)程序?qū)儆趙dm(windows driver model) ,它對(duì)驅(qū)動(dòng)程序分層重新進(jìn)行定義, 以便適應(yīng)即插即用系統(tǒng)。驅(qū)動(dòng)程序包括: (1)driverentry 例程, 用來初始化入口和內(nèi)核調(diào)用; (2)irp處理, 內(nèi)核通過發(fā)送i/o 請(qǐng)求來運(yùn)行驅(qū)動(dòng)程序; (3)
32、分發(fā)例程, 用來“創(chuàng)建”、“讀”、“寫”處理程序; (4)硬件資源管理、電源管理等。usb 驅(qū)動(dòng)是usb 開發(fā)中最困難的, 開發(fā)工具可采用windows ddk 來實(shí)現(xiàn)。2.2.2 控制部分兩個(gè)單片機(jī)對(duì)系統(tǒng)進(jìn)行控制。主程序初始化i/o 口、中斷、寄存器等參數(shù)后, atmega16 對(duì)得到的鼠標(biāo)的加速度信號(hào)和按鍵信息進(jìn)行處理, 在對(duì)nrf2401 的控制字設(shè)置后傳輸數(shù)據(jù), 等待發(fā)送。at80c51 單片機(jī)在檢測(cè)到nrf2401 接收器的dr1 信號(hào)有效時(shí), 讀取接收器的數(shù)據(jù), 傳送給usb芯片。at80c51 單片機(jī)也對(duì)usb 芯片( pdiusbd12) 進(jìn)行控制處理。三、無線鼠標(biāo)的結(jié)構(gòu)3.0
33、 無線收發(fā)模塊鼠標(biāo)是用來控制屏幕光標(biāo)移動(dòng)的一種裝置,是計(jì)算機(jī)最重要的外部輸入設(shè)備之一。用遙控器控制鼠標(biāo),是用遙控器的按鍵信號(hào)控制鼠標(biāo)的上下左右移動(dòng)和左右鍵,只需要考慮發(fā)射和接收電路,不需要考慮接口協(xié)議。本設(shè)計(jì)只考慮左鍵和滾輪的滾動(dòng)方向來控制ppt的翻頁?;痉桨溉鐖D1所示。3.1 發(fā)射部分 無線發(fā)射編碼模塊主要由315mhz無線數(shù)據(jù)發(fā)射和編碼芯片pt2262組成。發(fā)射電路由聲表諧振器穩(wěn)頻,工作頻率為315mhz,以am方式調(diào)制, 240mm小拉桿天線發(fā)射信號(hào)。發(fā)射模塊具有較寬的工作電壓范圍。當(dāng)電壓變化時(shí)發(fā)射頻率基本不變,與發(fā)射模塊配套的接收模塊無需任何調(diào)整就能穩(wěn)定地接收。當(dāng)發(fā)射電壓為3 v時(shí)。
34、空曠地傳輸距離約2050 m。發(fā)射功率較??;當(dāng)電壓5 v時(shí)約 100200 m;當(dāng)電壓 9 v時(shí)約 300500 m;當(dāng)發(fā)射電壓為 12 v時(shí),為最佳工作電壓,具有較好的發(fā)射效果,此時(shí)發(fā)射電流約60 ma,空曠地傳輸距離700800 m,發(fā)射功率約 500 mw;當(dāng)電壓大于12 v時(shí)功耗增大,有效發(fā)射功率不再明顯提高。發(fā)射模塊用ask方式調(diào)制,以降低功耗。當(dāng)數(shù)據(jù)信號(hào)停止時(shí),發(fā)射電流降為零2。3.2 接收部分無線接收解碼模塊主要由315 mhz無線數(shù)據(jù)接收模塊、解碼芯片 pt2272及繼電器驅(qū)動(dòng)電路組成。315 mhz無線數(shù)據(jù)接收模塊有超再生式接收模塊和超外差式接收模塊兩種。 這里用的是超再生式
35、接收模塊,采用smd貼片工藝制造生產(chǎn),工作電壓為5 v,靜態(tài)電流4 ma,接收靈敏度為105 dbm。它內(nèi)含放大整形及解碼電路,使用極為方便。天線輸入端有選頻電路,而不依賴1/4波長天線的選頻作用,控制距離較近時(shí)可以剪短甚至去掉外接天線。由于頻率受溫度漂移影響大,采用了帶骨架的銅芯電感將頻率調(diào)整到315 mhz后封固。無線接收模塊沒有接收到空間的315 mhz信號(hào)時(shí),輸出的只是干擾信號(hào),解碼芯片pt2272輸出端d0d5均為低電平。當(dāng)無線接收模塊收到空間的315 mhz信號(hào)時(shí),經(jīng)放大、變頻、濾波等處理后輸出控制信號(hào),送到解碼芯片第14腳進(jìn)行解碼。只有pt2272的地址端的電平狀態(tài)與發(fā)射部分的p
36、t2262的地址端一致時(shí),對(duì)應(yīng)的數(shù)據(jù)端才有高電平輸出。本方案設(shè)計(jì)的地址為ff,即全部懸空,也可以另行設(shè)定地址碼,最重要的就是不要相互干擾。輸出時(shí)通過繼電器控制電路的工作狀態(tài),同時(shí)還有對(duì)應(yīng)的發(fā)光二極管指示。3.2 編解碼電路3.2.1 pt2262/pt2272 pt2262/pt2272 是一種 cmos 工藝制造的低功耗低價(jià)位通用編解碼電路,最多可有12位(a0a11)三態(tài)地址端管腳,任意組合可提供531 441個(gè)地址碼,最多可有6位(d0d5)數(shù)據(jù)端管腳,設(shè)定的地址碼和數(shù)據(jù)碼從17腳串行輸出,可用于無線遙控發(fā)射電路。編碼芯片pt2262發(fā)出的編碼信號(hào)由地址碼、數(shù)據(jù)碼、同步碼組成一個(gè)完整的碼
37、字。解碼芯片pt2272接收到信號(hào)后,其地址碼經(jīng)過兩次比較核對(duì)后,vt腳才輸出高電平,同時(shí)相應(yīng)的數(shù)據(jù)腳也輸出高電平,如果發(fā)送端一直按住按鍵,編碼芯片也會(huì)連續(xù)發(fā)射。當(dāng)發(fā)射機(jī)沒有按鍵按下時(shí),pt2262 不接通電源,其17腳為低電平,315 mhz的高頻發(fā)射電路不工作;當(dāng)有按鍵按下時(shí),pt2262上電工作,其第17腳輸出經(jīng)調(diào)制的串行數(shù)據(jù)信號(hào),當(dāng)17腳為高電平時(shí),315 mhz 的高頻發(fā)射電路起振并發(fā)射等幅高頻信號(hào),當(dāng)17腳為低電平時(shí),315 mhz 的高頻發(fā)射電路停止振蕩,所以高頻發(fā)射電路完全受控于pt2262的17腳輸出的數(shù)字信號(hào),從而對(duì)高頻電路完成幅度鍵控(ask)調(diào)制,相當(dāng)于調(diào)制度為100的
38、調(diào)幅。3.2.2 地址編碼設(shè)定和修改 通常使用中,一般采用8位地址碼和4位數(shù)據(jù)碼,這時(shí)編碼電路 pt2262 和解碼電路pt2272 的第18 腳為地址設(shè)定腳,有三種狀態(tài)可供選擇:懸空、接正電源、接地。3的8次方為6 561,所以地址編碼不重復(fù)度為6 561組,只有發(fā)射端pt2262和接收端pt2272的地址編碼完全相同,才能配對(duì)使用,pt2262和pt2272出廠時(shí)的8位地址編碼端全部懸空,這樣可以便于選擇各種編碼狀態(tài),用戶如果想改變地址編碼,只要將 pt2262和pt2272的18腳設(shè)置相同即可。當(dāng)兩者地址編碼完全一致時(shí),接收機(jī)對(duì)應(yīng)的d1d4端輸出約4v互鎖高電平控制信號(hào),同時(shí)vt端也輸出
39、解碼有效高電平信號(hào)。用戶可將這些信號(hào)加一級(jí)放大,便可驅(qū)動(dòng)繼電器、功率三極管等進(jìn)行負(fù)載遙控開關(guān)操作4。3.2.3 抗干擾的的處理通過pt2272的vt腳(17腳)是否為高電平去判斷是否有鍵按下,若為高,則去判斷pt2272的d0d3中哪個(gè)鍵按下,但其中忽略了一點(diǎn),即:這些數(shù)據(jù)接收到的是干擾,系統(tǒng)將錯(cuò)誤判斷影響正常運(yùn)行。由于干擾脈沖是窄脈沖,故可通過軟件來濾除干擾,從而有效的解決該問題。也就是說,只有在接收到pt2272的 vt腳由低變高至少保持 20 ms以上時(shí)系統(tǒng)才確認(rèn)按鈕按下。3.3 無線遙控鼠標(biāo)的設(shè)計(jì)和實(shí)現(xiàn)在普通的光電鼠標(biāo)基礎(chǔ)上,研究鼠標(biāo)的的按鍵電平和滾輪的波形來實(shí)現(xiàn)鼠標(biāo)的左鍵和滾輪的功能
40、,從而達(dá)到無線遠(yuǎn)距離的實(shí)現(xiàn)。無線遙控鼠標(biāo)設(shè)計(jì)方案如圖4所示。3.3.1無線鼠標(biāo)左鍵的實(shí)現(xiàn)通過對(duì)光電鼠標(biāo)的研究,發(fā)現(xiàn)鼠標(biāo)上的所有按鍵都是低電平有效,也就是說按鍵是一個(gè)按鈕開關(guān),一端連接地另一端連接鼠標(biāo)芯片。當(dāng)鍵按下鼠標(biāo)芯片的那一端就接地呈低電平,當(dāng)按鈕松開時(shí)呈高電平。根據(jù)此情況,只要在接收電路中有一信號(hào)連接到按鍵那一端,當(dāng)接收到低電平時(shí),也就是鼠標(biāo)芯片那一端為低電平,鼠標(biāo)的點(diǎn)擊就可以實(shí)現(xiàn),如圖5所示。圖5 對(duì)收發(fā)模塊是串行通信的,所以接收到的是一組方波信號(hào),這組方波信號(hào)經(jīng)過解碼電路解碼后就可以知道得到的是高電平或者是低電平。由于設(shè)計(jì)了用高電平發(fā)射,所以接收到的是高電平。然后經(jīng)過反相后給鼠標(biāo)按鍵連
41、接芯片的那一端,這樣就可以實(shí)現(xiàn)鼠標(biāo)的點(diǎn)擊功能。這種電路不僅能實(shí)現(xiàn)鼠標(biāo)的左擊功能,而且鼠標(biāo)所有的點(diǎn)擊都能實(shí)現(xiàn)。由于本設(shè)計(jì)只針對(duì)多媒體教學(xué)中放映3.3.2 無線鼠標(biāo)滾輪的實(shí)現(xiàn)如圖6 所示的鼠標(biāo)滾輪的實(shí)現(xiàn)是本設(shè)計(jì)的核心之一。在多媒體教學(xué)中放映ppt文件時(shí),實(shí)現(xiàn)頁面的上翻和下翻就是用鼠標(biāo)的滾輪來實(shí)現(xiàn)的。根據(jù)鼠標(biāo)滾輪的特點(diǎn),其實(shí)現(xiàn)的重點(diǎn)在于滾輪波形處理方面。由于要產(chǎn)生兩個(gè)信號(hào)方波而且還有相位差的存在,在實(shí)現(xiàn)上翻和下翻時(shí)相位差還是不同的,這在設(shè)計(jì)電路時(shí)會(huì)造成很多的麻煩。因此,在設(shè)計(jì)電路時(shí)考慮到用單片機(jī)來實(shí)現(xiàn)方波的產(chǎn)生和在不同的情況下產(chǎn)生不同的相位差,最終實(shí)現(xiàn)滾輪的上翻和下翻功能。利用單片機(jī)來實(shí)現(xiàn)與利用ic
42、芯片相比較,單片機(jī)的外圍電路要比ic芯片的外圍電路少很多。單片機(jī)不僅可以產(chǎn)生方波電路,在鼠標(biāo)左擊時(shí)還可以實(shí)現(xiàn)反相功能。單片機(jī)實(shí)現(xiàn)相應(yīng)功能的程序相對(duì)比較簡(jiǎn)單,其流程圖如圖7所示。應(yīng)該注意的是,方波的頻率的大小與鼠標(biāo)滾輪的反應(yīng)速度成正比,頻率選取是否適當(dāng)決定了鼠標(biāo)滾輪能否實(shí)現(xiàn),因此應(yīng)當(dāng)選擇適當(dāng)?shù)念l率。經(jīng)過調(diào)試,方波的頻率在50100hz的范圍內(nèi)比較合適,可在軟件中延時(shí)來實(shí)現(xiàn)方波頻率的控制。3.4 安裝與調(diào)試無線收發(fā)模塊雖然在傳輸距離上有優(yōu)勢(shì),但它對(duì)天線和電壓的要求相對(duì)要高一些,電壓的大小和天線的制作直接影響到傳輸距離。在調(diào)試時(shí)用了9 v的干電池,天線用了25 cm的螺旋型天線。資料表明,當(dāng)電壓 9
43、 v時(shí)傳輸距離約300500 m。根據(jù)調(diào)試情況,實(shí)際上很難達(dá)到這個(gè)距離。但對(duì)于本設(shè)計(jì),實(shí)際范圍只要有2030 m就已經(jīng)足夠了。利用單片機(jī)產(chǎn)生方波電路雖然程序非常簡(jiǎn)單,但是頻率有比較高的要求。根據(jù)鼠標(biāo)滾輪的資料和反復(fù)的調(diào)試,最終把方波的頻率定為100 hz比較合適。最重要的是在調(diào)試過程中發(fā)現(xiàn)單片機(jī)的晶振出來的高頻信號(hào)會(huì)影響到模塊的接收距離。通過采取相應(yīng)的措施,把原來用的12 mhz晶振改成4 mhz的,而且晶振離接收模塊盡可能地遠(yuǎn)。在接收模塊的電源附近加上濾波電容,這也是相對(duì)比較重要的。采取這些措施后,其傳輸距離得到一定的改善。本文利用光電式鼠標(biāo)和編解碼遙控電路模塊的結(jié)合,可實(shí)現(xiàn)低成本高性能的無
44、線鼠標(biāo),并具有全方位遙控的特點(diǎn),能有效地解決多媒體教室普遍存在的教師教學(xué)活動(dòng)離開電腦控制臺(tái)就無法操縱鼠標(biāo)的問題。當(dāng)今各大中小學(xué)校的多媒體教室正在以較快的速度普及,這種鼠標(biāo)能大大地改善多媒體教室的人機(jī)交互性能,因此具有很好的實(shí)際應(yīng)用價(jià)值。四、80c196單片機(jī)鼠標(biāo)接口程序設(shè)計(jì)80c196單片機(jī)由于低格低、處理能力強(qiáng),在信號(hào)分析、數(shù)據(jù)采集等很多領(lǐng)域得到了廣泛應(yīng)用,在目標(biāo)系統(tǒng)中使用各種規(guī)格的液晶或crt顯示器也越來越多。因此在這樣的單片機(jī)系統(tǒng)中引入鼠標(biāo),將會(huì)方便操作,提高工作效率。鼠標(biāo)內(nèi)核本質(zhì)上是一個(gè)二維的角度或位移信號(hào)檢測(cè)裝置,耗電極少、可靠性高、價(jià)格低廉,可能在許多場(chǎng)合發(fā)揮作用。鼠標(biāo)與主機(jī)之間通
45、過rs-232標(biāo)準(zhǔn)串行接口進(jìn)行通信,信息傳送是單方向、無條件、無應(yīng)答連續(xù)進(jìn)行的。此外80c196的uart不直接支持鼠標(biāo)的接口協(xié)議,在程序設(shè)計(jì)中必須予以注意。本文主要探討80c196單片機(jī)與microsoft兼容鼠標(biāo)接口程序的設(shè)計(jì)實(shí)現(xiàn)鼠標(biāo)是一種快速定位器,通過移動(dòng)鼠標(biāo)能快速定位屏幕上的對(duì)象,是計(jì)算機(jī)圖像界面交互的必用外部設(shè)備。通常,鼠標(biāo)通過微機(jī)中的串口或ps/2鼠標(biāo)插口和主機(jī)連接。當(dāng)在平面上移動(dòng)鼠標(biāo)時(shí),通過機(jī)械或光學(xué)的方法把鼠標(biāo)滾輪移動(dòng)的距離和方向轉(zhuǎn)換成脈沖信號(hào)傳送給計(jì)算機(jī),計(jì)算機(jī)鼠標(biāo)驅(qū)動(dòng)程式將脈沖個(gè)數(shù)轉(zhuǎn)換成鼠標(biāo)的水平方向和垂直方向的位移量,從而控制顯示屏上光標(biāo)箭頭隨鼠標(biāo)的移動(dòng)而移動(dòng)。根據(jù)此原
46、理,我們可利用鼠標(biāo)的上位機(jī)驅(qū)動(dòng)程式來設(shè)計(jì)測(cè)控系統(tǒng)中的編碼器讀取軟件。4.1 串行鼠標(biāo)的原理及數(shù)據(jù)協(xié)議鼠標(biāo)一般劃分為以下功能模塊:微控制器、按鍵檢測(cè)、位置移動(dòng)檢測(cè)、rs232信號(hào)產(chǎn)生、5v電源產(chǎn)生器。串行鼠標(biāo)的功能框圖如圖1所示。微軟公司和mouse system公司的鼠標(biāo)都采用串行輸入技術(shù)。微軟公司的協(xié)議格式為3個(gè)字節(jié):第1字節(jié)的6、7位固定為1,4,5位分別為左右鍵狀態(tài),2、3位為上下移動(dòng)數(shù)據(jù)的高6、7位,0、1位為左右移動(dòng)數(shù)據(jù)的高6、7位;第2、第3字節(jié)發(fā)送的都是左右上下的其余6位數(shù)據(jù),其中y表示上下、x表示左右移動(dòng)的數(shù)據(jù)位。mouse system公司的協(xié)議格式為5個(gè)字節(jié):1個(gè)字節(jié)用于描
47、述3個(gè)按鍵的狀態(tài),2個(gè)字節(jié)為y方向的相對(duì)坐標(biāo),另外2個(gè)字節(jié)為x方向的相對(duì)坐標(biāo),具體協(xié)議如表1所列。表1我們能方便地制作鼠標(biāo)表1 鼠標(biāo)系統(tǒng)數(shù)據(jù)信息協(xié)議mouse system格式microsoft格式數(shù)字位7 6 5 4 3 2 1 07 6 5 4 3 2 1 0字節(jié)11 0 0 0 0 l m r1 1 l r y7 y6 x7 x6字節(jié)2x7 x6 x5 x4 x3 x2 x1 x00 0 x5 x4 x3 x2 x1 x0字節(jié)3y7 y6 y5 y4 y3 y2 y1 y00 0 y5 y4 y3 y2 y1 y0字節(jié)4x7 x6 x5 x4 x3 x2 x1 x0字節(jié)5y7 y6 y5
48、 y4 y3 y2 y1 y04.2. 鼠標(biāo)信號(hào)發(fā)送協(xié)議與過程鼠標(biāo)是一個(gè)功能高度集中的小型機(jī)電一體化系統(tǒng)。它首先將直線移轉(zhuǎn)換成角度位移,再轉(zhuǎn)變成數(shù)字量,然后與按鈕狀態(tài)統(tǒng)一編碼,通過rs-232串口發(fā)出。鼠標(biāo)工作所需功率從rs-232串行接口的控制線上竊?。╬s/2、usb接口鼠標(biāo)除外)。當(dāng)鼠標(biāo)被拖動(dòng)超過一個(gè)最小距離或某一按鈕被按下時(shí),它按照規(guī)定的協(xié)議將移動(dòng)距離和按鈕狀態(tài)通過一次或幾次信息發(fā)送到機(jī);主機(jī)上的鼠標(biāo)驅(qū)動(dòng)程序?qū)⑿畔⒆儞Q成鼠標(biāo)位置和按鈕狀態(tài)供其它程序模塊調(diào)用。每發(fā)生一次移動(dòng)或按鈕狀態(tài)變化,鼠標(biāo)向上發(fā)送一次信息。通常一般鼠標(biāo)的分辨率為400dpi。理論上即沿著某一方向每拖動(dòng)一英寸(一般速度
49、),會(huì)產(chǎn)生400次信息發(fā)送過程。,如果拖動(dòng)較快,則信息發(fā)送次數(shù)送減少,但所反映的總的移動(dòng)距離仍然是400步。各種串行接口鼠標(biāo)在物理層普遍采用標(biāo)準(zhǔn)的串行通信協(xié)議,波特率為1200bps。幀格式為7個(gè)數(shù)據(jù)位、2個(gè)停止位,無奇偶校驗(yàn)位。上層協(xié)議則在此基礎(chǔ)上以十六進(jìn)制數(shù)形式直接發(fā)更新鼠標(biāo)信息,包括:初始化報(bào)告:移動(dòng)方向、距離、按鈕狀態(tài)。其一般形式如表1所示。表1 鼠標(biāo)信息發(fā)送格式序 號(hào)名 稱字串形式長 度意 義說 明1初始化報(bào)告4dh(m)1字節(jié)聲明初始化結(jié)束加電時(shí)發(fā)送一次2移動(dòng)、按鈕p1、p2、p33字節(jié)反映按鈕狀態(tài)、移動(dòng)方向和距離移動(dòng)或按鈕操作時(shí)發(fā)送上述p1、p2、p3三個(gè)參數(shù)說明:p1_d7d6
50、固定值01;d1d0=11本次鼠標(biāo)移動(dòng)包含左右移動(dòng)分量;d3d2=11本次鼠標(biāo)移動(dòng)包含上下移動(dòng)分量;d4=1目前鼠標(biāo)右鍵呈按下狀態(tài);d5=1目前鼠標(biāo)左鍵呈按下狀態(tài)(d4d5=00則鍵呈釋放狀態(tài))。p2_d7d6固定值00;其余六位表示一個(gè)有符號(hào)二進(jìn)制數(shù),反映左右移動(dòng)量,大于0為向右移動(dòng),小于0為向左移動(dòng)。p3_d7d6固定值00;其余六位表示一個(gè)有符號(hào)二進(jìn)制數(shù),反映上下移動(dòng)量,大于0為向下移動(dòng),小于0為向上移動(dòng)。例如:6ch 02h 3ah(p1=6ch,p2=02h,p3=3ah)反饋出鼠標(biāo)向右移動(dòng)了2個(gè)單位,向上移動(dòng)了6個(gè)單位,目前左鍵按下。80c196系列單片機(jī)內(nèi)設(shè)rs-232收發(fā)器,但
51、需要配置接口芯片實(shí)現(xiàn)電平轉(zhuǎn)換??紤]到鼠標(biāo)從串口竊取功率,接口芯片必須具有一定的驅(qū)動(dòng)能力,而不能要用簡(jiǎn)單的準(zhǔn)rs-232電平轉(zhuǎn)換器。這里采用max232e作為接口芯片。圖1中左側(cè)為80c196單片機(jī),p2.0(txd)、p2.1(rxd)通過max232e形成滿足鼠標(biāo)要求的串行接口,包括生成標(biāo)準(zhǔn)rs-232c電平和提供電源供應(yīng)。圖1中最右邊為9針或24針標(biāo)準(zhǔn)串行接插件。由于鼠標(biāo)的電源供應(yīng)采用功率竊取方案,由dtr/rts提供,這里為dtr加限流電阻防止對(duì)鼠標(biāo)造成傷害。rts由max232e垢信號(hào)發(fā)送端提供,通過80c196的p2.0控制max232e的10腳(對(duì)應(yīng)的輸出腳為7腳)電平高低以改變7
52、腳電位,使鼠標(biāo)可以接收來自rts的控制命令,以實(shí)現(xiàn)鼠標(biāo)安裝與否的檢測(cè)。max232e的11腳(對(duì)應(yīng)的輸入腳為14腳)設(shè)備高電平以保證14腳電位為負(fù)rs-232電位,滿足鼠標(biāo)發(fā)送信號(hào)時(shí)的電平要求。從鏈路層看,80c196串行接口的四種工作方式均不滿足鼠標(biāo)的幀格式要求;但其工作方式1(1位起始位、8位數(shù)據(jù)位、1位停止位)的總傳送位數(shù)與鼠標(biāo)(1位起始位、7個(gè)數(shù)據(jù)位、2個(gè)停止位)相同,均為10位。接收過程中80c196收到7個(gè)數(shù)據(jù)位后,將2個(gè)停止位中的第一個(gè)作為數(shù)據(jù)位裝入接收緩沖器的最高位,由于停止位在物理層是高電平,作為數(shù)據(jù)被接收后相當(dāng)于邏輯“0”;剩下的第二個(gè)停止位給好為80c196提供了有效的停
53、止位。利用80c196的工作方式1完全可以保證正確接收鼠標(biāo)信息。單片機(jī)起動(dòng)后,通過鼠標(biāo)驅(qū)動(dòng)模塊對(duì)鼠標(biāo)進(jìn)行初始化,即通過p2.0使rts電平翻轉(zhuǎn)一次而令鼠標(biāo)發(fā)送初始化報(bào)告,以確認(rèn)鼠標(biāo)是否安裝。之后,鼠標(biāo)即可隨著拖動(dòng)或按鈕操作向單片機(jī)發(fā)送動(dòng)作信息,經(jīng)接口模塊釋放即可反應(yīng)鼠標(biāo)位置和按鈕狀態(tài)。鼠標(biāo)接口模塊主要包括按鈕狀態(tài)識(shí)別和位置識(shí)別兩個(gè)部分。80c196將根據(jù)接收到的鼠標(biāo)信息不斷刷新鼠標(biāo)信息緩沖區(qū)。由于鼠標(biāo)事件間隔不確定,采用掃描方式但會(huì)浪費(fèi)cpu時(shí)間,還可能因來不及處理而丟失信息。有效的處理方法是采用中斷方式接收,應(yīng)用模塊通過軟件接口獲得鼠標(biāo)信息。完整的鼠標(biāo)接口程序流程圖如圖2所示。在初始化階段,
54、首先檢查鼠標(biāo)是否存在,根據(jù)結(jié)果設(shè)置標(biāo)志位,以備以后取鼠標(biāo)信息時(shí)判斷用;根據(jù)需要設(shè)定鼠標(biāo)初始化位置、按鈕原始狀態(tài);最后設(shè)置串行接口參數(shù)(幀格式等)并開放鼠標(biāo)中斷。鼠標(biāo)發(fā)送信息時(shí),第三個(gè)字節(jié)為一個(gè)完整的信息報(bào)告。但80c196每接收到一個(gè)字節(jié),就產(chǎn)生一次中斷,然后根據(jù)當(dāng)前字節(jié)是否大于40h確定其性質(zhì)。若是信息報(bào)告的首字節(jié),則還要進(jìn)一步通過有效性檢驗(yàn)后保存;若不是首字節(jié),則必須經(jīng)過一系列檢驗(yàn)后保存起來。收到三個(gè)字節(jié)后立即進(jìn)行命令分析和執(zhí)行。具體處理過程可參看源程序。用戶模塊通過特定接口模塊(圖2(b)獲得鼠標(biāo)當(dāng)前位置和按鈕狀,并可通過進(jìn)位標(biāo)志c=0/1判斷鼠標(biāo)是否安裝。下面是圖2程序流程圖如圖對(duì)應(yīng)的
55、程序清單。該程序要求80c196單片機(jī)的工作頻率為12mhz;如果采有其它工作頻率,通過修改串行口的波特率設(shè)置參數(shù)以及延時(shí)程序的時(shí)間常數(shù)即可。80c196特殊功能寄存器預(yù)定義r0 equ 00h:wordsbud equ 07h:byteint_mask equ 08h:byteint_pend equ 09h:bytebaud_rt equ 0eh:byteiop2 equ 10h:bytesp_con equ 11h:bytesp_stat equ 11h:byteioc1 equ 16h:bytesp equ 18h:word;通用寄存器預(yù)定義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 ;顯示屏高度變量區(qū)rseg at 20hm_x :dsw 1 ;光標(biāo)x值m_y :dsw 1 :光標(biāo)y值m_buf :dsb 4 ;接收緩沖區(qū)m_p : dsw 1 ;接收指針bx :dsw 1lrb_ok:dsb
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司組拔河比賽活動(dòng)方案
- 公司春游野餐活動(dòng)方案
- 公司特色聚餐活動(dòng)方案
- 公司美食節(jié)擺攤活動(dòng)方案
- 公司自制壽司活動(dòng)方案
- 公司組織種地活動(dòng)方案
- 公司沙灘拓展活動(dòng)方案
- 公司組織拓展活動(dòng)方案
- 2025年智能制造工程師職業(yè)考試題及答案
- 2025年?duì)I養(yǎng)學(xué)與食品安全的考試試卷及答案
- 2025年全省民政行業(yè)職業(yè)技能大賽(孤殘兒童護(hù)理員)備考試題庫(含答案)
- 南京鼓樓醫(yī)院合作協(xié)議書
- DB32/T 3375-2018公共場(chǎng)所母乳哺育設(shè)施建設(shè)指南
- 規(guī)培指導(dǎo)教師考試試題及答案
- 藥學(xué)三基培訓(xùn)課件
- 2025-2030中國壽險(xiǎn)行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030醫(yī)療美容產(chǎn)業(yè)市場(chǎng)深度調(diào)研及發(fā)展趨勢(shì)與投資前景預(yù)測(cè)研究報(bào)告
- 甘肅省建設(shè)工程計(jì)價(jià)規(guī)則 (DBJD25-98-2022)
- 2025年北師大版小學(xué)數(shù)學(xué)小升初模擬考試測(cè)試卷及答案(共三套)
- 公證管理考試題及答案
- 鈑金加工設(shè)備安全操作
評(píng)論
0/150
提交評(píng)論