版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 電子信息產(chǎn)業(yè)的迅速發(fā)展,對個人計算機的體積以及便攜性提出了更高的要求。本文討論并設(shè)計的基于PDIUSBD12和STC89C52單片機的手指鍵盤,利用單片機實時掃描手指按鍵,并將檢測的按鍵值通過USB接口芯片傳送至PC,實現(xiàn)常規(guī)鍵盤的功能。全文由USB協(xié)議概述,USB接口芯片介紹說明,系統(tǒng)硬件設(shè)計和軟件設(shè)計等部分構(gòu)成。</
2、p><p> 利用單片機接口技術(shù)在數(shù)據(jù)處理方面的突出優(yōu)勢和單片機的可重復(fù)編特性使本系統(tǒng)具有一定的高可行性和高性價比。該方案還具有通用性,因為采用USB接口,支持主流PC機,可擴展性強,可用各種輸入設(shè)備,具有十分廣闊的發(fā)展前景。</p><p> 關(guān)鍵詞:手指鍵盤,USB,單片機,按鍵</p><p><b> ABSTRACT</b><
3、/p><p> Electronic information industry's rapid growth on the volume of personal computers and portable high demands. This article discusses and designs based on PDIUSBD12 and STC89C52 MCU finger keyboard,
4、 using MCU realtime scanning and detection of key values via the USB interface chip transmitted to the PC, the implementation of the regular keyboard functionality. The full text consists of the USB protocol overview, US
5、B interface chip describes, hardware design and software design, etc.</p><p> MCU interface technology used in data processing of the outstanding advantages and characteristics of single chip can be program
6、med to repeat the system has a high feasibility and cost-effective. The program also has the versatility, as with USB interface, support for the mainstream PC, can extend strong, available a variety of input devices, hav
7、e a very broad prospects for development.</p><p> KEY WORDS: Finger keyboard,USB,MCU,Key</p><p><b> 目 錄</b></p><p><b> 前 言1</b></p><p> 第1章
8、 手指鍵盤簡介2</p><p> 1.1 手指按鍵的可行性2</p><p> 1.2 手指按鍵采用USB接口的優(yōu)勢3</p><p> 第2章 USB概述4</p><p> 2.1 USB總線簡介4</p><p> 2.2 USB技術(shù)指標(biāo)5</p><p> 2.
9、3 USB系統(tǒng)構(gòu)成5</p><p> 2.3.1 USB宿主5</p><p> 2.3.2 USB設(shè)備6</p><p> 2.3.3 USB連接(數(shù)據(jù)流)7</p><p> 2.4 USB接口芯片介紹7</p><p> 2.4.1 芯片描述8</p><p>
10、2.4.2 芯片功能框圖及說明9</p><p> 2.4.3 芯片端點描述11</p><p> 2.4.4 芯片引腳配置14</p><p> 第3章 系統(tǒng)硬件設(shè)計17</p><p> 3.1 單片機硬件設(shè)計17</p><p> 3.1.1系統(tǒng)供電17</p><p&g
11、t; 3.1.2單片機電路設(shè)計18</p><p> 3.2 鍵盤設(shè)計20</p><p> 3.3 PDIUSBD12驅(qū)動電路21</p><p> 3.3.1 USB接口芯片電路21</p><p> 3.3.2 USB接口芯片電路說明22</p><p> 3.4 串行口電路23</
12、p><p> 第4章 系統(tǒng)軟件設(shè)計24</p><p> 4.1按鍵處理部分25</p><p> 4.1.1 按鍵處理流程26</p><p> 4.1.2 按鍵檢測代碼27</p><p> 4.1.3 鍵盤操作說明29</p><p> 4.2 USB接口部分30<
13、;/p><p> 4.2.1 USB接口芯片工作流程31</p><p> 4.2.2 PDIUSBD12驅(qū)動32</p><p> 4.2.3 USB 設(shè)備描述符35</p><p><b> 第5章 結(jié)論38</b></p><p><b> 致 謝39</b&
14、gt;</p><p><b> 參考文獻40</b></p><p> 附錄(系統(tǒng)電路原理圖):41</p><p><b> 前 言</b></p><p> 常規(guī)PC系列鍵盤采用16行*8列二維矩陣行列結(jié)構(gòu),鍵盤的掃描控制電路核心是8048單片機。8048采用行列掃描法識別按下的按
15、鍵,當(dāng)有按鍵按下時,8048通過五芯插座向PC傳送與按鍵位置相對應(yīng)的鍵盤掃描碼。常規(guī)標(biāo)準(zhǔn)鍵盤被廣泛應(yīng)用,但是體積大,不方便攜帶和擴展功能。本文利用PDIUSBD12芯片和51單片機設(shè)計成手指鍵盤,系統(tǒng)采用USB接口供電,即插即用,同時大大減少了按鍵的復(fù)雜程度,程序的靈活性也使得十個按鍵實現(xiàn)所有字母的輸入成為可能。</p><p> 51系列單片機應(yīng)用十分廣泛,本設(shè)計采用的STC89C52單片機是8位的、支持串口
16、編程的單片機,它與通用80C51系列單片機的指令系統(tǒng)和引腳兼容。片內(nèi)的Flash可允許在線重新編程,也可使用非易失性存儲器編程[1]。他將通用CPU和在線可編程Flash集成在一個芯片上,形成了功能強大、使用靈活和具有較高性能性價比的微控制器。</p><p> PDIUSBD12 是一款性價比很高的USB 器件,它通常用作控制系統(tǒng)中實現(xiàn)與微控制器進行通信的高速通用并行接口,它還支持本地的DMA傳輸。PDIUS
17、BD12 完全符合 USB1.1版的規(guī)范,適合應(yīng)用在鍵盤這種傳輸數(shù)據(jù)量不大的系統(tǒng)中,這些特性都為系統(tǒng)顯著節(jié)約了成本,同時使USB功能在外設(shè)上的應(yīng)用變得容易。 </p><p> 本設(shè)計的完成對簡化計算機的輸入設(shè)備設(shè)計,減小設(shè)備體積,實現(xiàn)快速輸入均有相當(dāng)重要的參考價值。</p><p> 第1章 手指鍵盤簡介</p><p> 當(dāng)計算機的外設(shè)越來越豐富的時候,鍵
18、盤作為其通用輸入設(shè)備卻沒有多少更新。鍵盤是最常用也是最主要的輸入設(shè)備,通過鍵盤,可以將英文字母、數(shù)字、標(biāo)點符號等輸入到計算機中,從而向計算機發(fā)出命令、輸入數(shù)據(jù)等。USB接口的鍵盤通用性強,適用于臺式機和筆記本和各種支持USB輸入的設(shè)備,因而應(yīng)用越來越廣泛。</p><p> 1.1 手指按鍵的可行性</p><p> 近幾年出現(xiàn)在PC機上的是新興多媒體鍵盤,它在傳統(tǒng)的鍵盤基礎(chǔ)上又增加了
19、不少常用快捷鍵或音量調(diào)節(jié)裝置,使PC操作進一步簡化,對于收發(fā)電子郵件、打開瀏覽器軟件、啟動多媒體播放器等都只需要按一個特殊按鍵即可,同時在外形上也做了重大改善,著重體現(xiàn)了鍵盤的個性化。</p><p> 鍵盤的外形分為標(biāo)準(zhǔn)鍵盤和人體工程學(xué)鍵盤,人體工程學(xué)鍵盤是在標(biāo)準(zhǔn)鍵盤上將指法規(guī)定的左手鍵區(qū)和右手鍵區(qū)這兩大板塊左右分開,并形成一定角度,使操作者不必有意識的夾緊雙臂,保持一種比較自然的形態(tài),這種設(shè)計的鍵盤被微軟公
20、司命名為自然鍵盤(Natural Keyboard),對于習(xí)慣盲打的用戶可以有效的減少左右手鍵區(qū)的誤擊率,如字母“G”和“H”。有的人體工程學(xué)鍵盤還有意加大常用鍵如空格鍵和回車鍵的面積,在鍵盤的下部增加護手托板,給以前懸空手腕以支持點,減少由于手腕長期懸空導(dǎo)致的疲勞。這些都可以視為人性化的設(shè)計。</p><p> 手指鍵盤屬于人體工程學(xué)鍵盤的一種,設(shè)計一種手指鍵盤,解決現(xiàn)有鍵盤不易攜帶,太大或太小不適于輸入,輸
21、入速度慢,對身體造成損傷,老年人學(xué)習(xí)難等缺陷。十個手指正好控制十個按鍵,避免了初學(xué)者尋找按鍵不方便的缺點,可以快速上手。而且另一個優(yōu)點是,手指鍵盤可以放在任意合適的地方,不必拘泥于桌面,可移動性強,操作方便。</p><p> 1.2 手指按鍵采用USB接口的優(yōu)勢</p><p> 將鍵盤集成于手套狀或指環(huán)狀的裝置上,通過鍵盤電路將按鍵信息編碼發(fā)送給智能工具,手指鍵盤便于攜帶,不占用智
22、能工具本身的體積,應(yīng)用范圍廣泛,無需手指尋找鍵盤,加快了輸入速度,使用手指鍵盤的字符布局既有適合電腦高手使用的傳統(tǒng)模式,又有適合老年人等初學(xué)者的易學(xué)模式。</p><p> 手指鍵盤應(yīng)用范圍廣泛,前景廣闊,幾乎適用于一切智能工具,與現(xiàn)有鍵盤的使用條件幾乎完全一樣。中國的固定住戶有三億,即使每個住戶只擁有手機、電腦、學(xué)習(xí)機等智能工具的一種,而擁有智能工具的用戶有30%,那么手指鍵盤就會有九千萬個市場份額。<
23、/p><p> 此種手指鍵盤市場上還沒有出現(xiàn),網(wǎng)絡(luò)上也沒有此類公開信息。屬于自主創(chuàng)新發(fā)明。</p><p> 手指鍵盤采用USB接口。USB 端口是一個大約 7mm*1mm 的插孔,有四根信號線:兩根線提供電源,兩根線傳輸資料。目前常見的USB接頭有兩種,一種是“方的”,另一種是“扁的”,前一種就是常說的A型頭,后一種為B型頭。兩種接頭都有四個引腳,中間兩個用來傳輸資料,側(cè)面兩個給USB設(shè)
24、備提供電源。接頭設(shè)計合理,避免用戶插錯?,F(xiàn)在普遍采用USB 1.1規(guī)范,速度(12Mbps)比標(biāo)準(zhǔn)串口約快100倍,支持多個設(shè)備的同時連接,而且具有真正的“即插即用”特性。USB電纜線分為高速電纜和低速電纜兩種。高速電纜的傳輸速率為12Mbps,主要用于連接數(shù)碼相機等,低速電纜的傳輸速率為1.5Mbps,主要用于連接鼠標(biāo)、鍵盤等。</p><p><b> 第2章 USB概述</b>&
25、lt;/p><p> 2.1 USB總線簡介</p><p> USB是一種支持在USB主機和USB設(shè)備之間進行串行數(shù)據(jù)傳輸?shù)耐ㄐ艆f(xié)議。主機作為總線的主叫方,采用兩種信令模式:全速模式12Mb/s和低速模1.5Mb/s。USB使用四種數(shù)據(jù)傳輸方式:控制傳輸(control)、中斷傳輸(interrupt)、批量傳輸(bulk)及等時傳輸(isochronous)[5]。</p>
26、<p> Intel公司開發(fā)的通用串行總線架構(gòu)(USB)的目的主要基于以下三方面考慮:一 計算機與電話之間的連接</p><p> 顯然用計算機來進行計算機通信將是下一代計算機基本的應(yīng)用。機器和人們的數(shù)據(jù)交互流動需要一個廣泛而又便宜的連通網(wǎng)絡(luò)。然而,由于目前產(chǎn)業(yè)間的相互獨立發(fā)展,尚未建立統(tǒng)一標(biāo)準(zhǔn),而USB則可以廣泛的連接計算機和電話。</p><p><b>
27、 二 易用性</b></p><p> 眾所周知,PC機的改裝是極不靈活的。對用戶友好的圖形化接口和一些軟硬件機制的結(jié)合,加上新一代總線結(jié)構(gòu)使得計算機的沖突大量減少,且易于改裝。但以終端用戶的眼光來看,PC機的輸入/輸出,如串行/并行端口、鍵盤、鼠標(biāo)、操縱桿接口等,均還沒有達到即插即用的特性,USB正是在這種情況下問世的。</p><p><b> 三 端口擴充
28、</b></p><p> 外圍設(shè)備的添加總是被相當(dāng)有限的端口數(shù)目限制著。缺少一個雙向、價廉、與外設(shè)連接的中低速的總線,限制了外圍設(shè)備(諸如電話/電傳/調(diào)制解調(diào)器的適配器、掃描儀、鍵盤、PDA)的開發(fā)。現(xiàn)有的連接只可對極少設(shè)備進行優(yōu)化,對于PC機的新的功能部件的添加需定義一個新的接口來滿足上述需要,USB就應(yīng)運而生。它是快速、雙向、同步、動態(tài)連接且價格低廉的串行接口,可以滿足PC機發(fā)展的現(xiàn)在和未來的
29、需要。 </p><p> 2.2 USB技術(shù)指標(biāo)</p><p> USB最大的特點是支持熱插拔(Hot plug)和即插即用 (Plug&Play)。當(dāng)設(shè)備插入時,主機枚舉(enumerate)此設(shè)備并加載所需的驅(qū)動程序,因此使用遠(yuǎn)比PCI和ISA總線方便 。目前USB支持3種數(shù)據(jù)信號速率,USB設(shè)備應(yīng)該在其外殼或者有時是自身上正確標(biāo)明其使用的速率。</p>
30、<p> ?。?)1.5 Mbit/s (183 KByte/s) 的低速速率,主要用于人機接口設(shè)備(Human Interface Devices ,HID)例如鍵盤、鼠標(biāo)、游戲桿。</p><p> ?。?)12 Mbit/s (1.4 MByte/s)的全速速率,在USB 2.0之前是曾經(jīng)是最高速率,后起的更高速率的高速接口應(yīng)該兼容全速速率。多個全速設(shè)備間可以按照先到先得法則劃分帶寬,使用多個等時
31、設(shè)備時會超過帶寬上限也并不罕見。所有的USB Hub支持全速速率?!?lt;/p><p> ?。?)480 Mbit/s (57 MByte/s)的高速速率。并非所有的USB 2.0設(shè)備都是高速的。高速設(shè)備插入全速hub時應(yīng)該與全速兼容,而高速hub具有所謂Transaction Translator(事務(wù)翻譯器)功能,能夠隔離全速、低速設(shè)備與高速之間數(shù)據(jù)流,但是不會影響供電和串聯(lián)深度 。</p>&l
32、t;p> 2.3 USB系統(tǒng)構(gòu)成</p><p> USB系統(tǒng)主要由三部分組成,即宿主(host),USB設(shè)備(device)和USB連接。</p><p> 2.3.1 USB宿主</p><p> USB宿主(host)是一個帶有USB主控制器的PC機或者嵌入式系統(tǒng),在USB系統(tǒng)中只有一個宿主,它是USB系統(tǒng)的主控者。USB宿主主要用于產(chǎn)生并且管理
33、控制信號和數(shù)據(jù)流,檢測并處理總線上的各種活動的狀態(tài),并為總線上的USB設(shè)備提供能源。</p><p> USB宿主存在于主機系統(tǒng)中,它包括硬件,軟件部分。其中,硬件部分指的是USB宿主控制器,一般集成在主板上,受USB系統(tǒng)軟件的控制。</p><p> 軟件部分分為三部分,分別是:</p><p> 1. USB設(shè)備驅(qū)動程序(USB Device Driver
34、s)通過I/O請求包發(fā)出給USB設(shè)備的請求,而這些I/O請求包則完成對目標(biāo)設(shè)備傳輸?shù)脑O(shè)置。</p><p> 2. USB驅(qū)動程序(USB Driver)在設(shè)備設(shè)置時讀取描述寄存器以獲取USB設(shè)備的特征,并根據(jù)這些特征,在請求發(fā)生時組織數(shù)據(jù)傳輸。</p><p> 3. 主控制器驅(qū)動程序(Host Controller Driver)完成對USB交換的調(diào)度,并通過根集線器或其它的集線器
35、完成對交換的初始化。</p><p> 2.3.2 USB設(shè)備</p><p> USB設(shè)備用于完成特定的功能,它具有極強的擴充性,能以一種星型+級聯(lián)的方式連接起來,USB宿主可以根據(jù)USB設(shè)備的動態(tài)增減,對其進行動態(tài)配置。</p><p> USB設(shè)備是實現(xiàn)某種具體功能的硬件設(shè)備,如鍵盤,鼠標(biāo)和攝像頭等。USB功能器件作為USB外設(shè),它必須保持和USB協(xié)議的
36、完全兼容,并可以響應(yīng)標(biāo)準(zhǔn)的USB操作。同樣,用于表明自己身份的“BIOS”系統(tǒng)對于USB外設(shè)也是必不可少的,這在USB外設(shè)上被稱為協(xié)議層。</p><p> 在物理機制上,一個USB外設(shè)可以由四部分構(gòu)成:(1)用于實現(xiàn)和USB協(xié)議兼容的SIE部分。(2)用于內(nèi)存特征字,存儲實現(xiàn)外設(shè)特殊功能程序及廠家信息的協(xié)議ROM(3)用于實現(xiàn)外設(shè)功能的傳感器及對資料進行簡單處理的DSP部分(4)將外設(shè)連接到主機或USB Hu
37、b的接口部分。</p><p> 根據(jù)傳輸率的不同,USB功能器件被分為高速和低速兩種。低速外設(shè)的標(biāo)準(zhǔn)傳輸率為1.5Mbps,而高速外設(shè)的標(biāo)準(zhǔn)傳輸率為12Mbps。例如鼠標(biāo),鍵盤等交互式設(shè)備就是低速設(shè)備運行,而打印機,掃描儀就使用全速設(shè)備模式運行。</p><p> 2.3.3 USB連接(數(shù)據(jù)流)</p><p> USB連接實際上是指USB器件和USB主機
38、連接并進行通信的方法,它可以將存在于USB主機和USB設(shè)備之間的USB數(shù)據(jù)傳輸模型描述為一個管道(pipe),管道只是一個邏輯上的概念。USB系統(tǒng)軟件通過缺省管道(與端點0相對應(yīng))管理設(shè)備,設(shè)備驅(qū)動程序通過其它的管道來管理設(shè)備的功能接口。</p><p> 實際的數(shù)據(jù)傳輸過程是:設(shè)備驅(qū)動程序通過對USBD接口(USB driver interface)的調(diào)用發(fā)出輸入輸出請求(IRP I/O Request Pa
39、cket), USB驅(qū)動程序接到請求后調(diào)用HCD接口(host controller driver interface)將IRP轉(zhuǎn)化為USB的傳輸(transfer),一個IRP可以包含一個或多個USB傳輸,然后HCD將USB傳輸分解為總線操作(transaction),由主控制器以包(packet)的形式發(fā)出。需要注意的是所有的數(shù)據(jù)傳輸都是由主機開始的,任何外設(shè)都無權(quán)開始一個傳輸。IRP是由操作系統(tǒng)定義的,而USB傳輸與總線操作是US
40、B規(guī)范定義的。</p><p> USB總線將1ms定義為一幀,每幀以一個SOF包為起始,在這1ms里USB進行一系列的總線操作,引入幀的概念主要是為了支持與時間有關(guān)的總線操作。為了滿足不同外設(shè)和用戶的要求 USB 提供了四種傳輸方式:控制傳輸,同步傳輸,中斷傳輸,批傳輸。它們在數(shù)據(jù)格式,傳輸方向,數(shù)據(jù)包容量限制,總線訪問限制等方面有著各自不同的特征。 </p><p> 2.4 US
41、B接口芯片介紹</p><p> 用于USB設(shè)備開發(fā)的芯片通常有兩種:一種是帶USB接口的微控制器,另一種是純粹的USB接口芯片,需要外部微控制器(MCU)控制。PHILIPS公司的PDIUSBD12芯片屬于后者。本文對此芯片的應(yīng)用作了具體設(shè)計,以PDIUSBD12為接口芯片,以STC89C52為微控制器,完成了USB接口電路的設(shè)計。</p><p> 2.4.1 芯片描述</p
42、><p> PDIUSBD12是一款性價比很高的USB器件,它通常用作微控制器系統(tǒng)中實現(xiàn)與微控制器進行通信的高速通用并行接口,它還支持本地的 DMA傳輸。這種實現(xiàn)USB接口的標(biāo)準(zhǔn)組件使得設(shè)計者可以在各種不同類型微控制器中選擇出最合適的微控制器。這種靈活性減小了開發(fā)的時間,風(fēng)險以及費用,通過使用已有的結(jié)構(gòu)和減少固件上的投資,從而用最快捷的方法實現(xiàn)最經(jīng)濟的USB外設(shè)的解決方案。 </p><p&g
43、t; PDIUSBD12完全符合USB1.1版的規(guī)范,它還符合大多數(shù)器件的分類規(guī)格:成像類,海量存儲器件,通信器件,打印設(shè)備以及人機接口設(shè)備。同樣地 PDIUSBD12 理想地適用于許多外設(shè)。</p><p> PDIUSBD12的技術(shù)可提供良好的USB連接指示。在枚舉中LED指示根據(jù)通信的狀況間歇閃爍。當(dāng)PDIUSBD12成功地枚舉和配置后LED指示將一直點亮,隨后與PDIUSBD12 之間成功的傳輸(帶應(yīng)
44、答)將關(guān)閉LED,處于掛起狀態(tài)時,LED 將會關(guān)閉。 </p><p> 該特性為USB 器件,集線器和USB通信狀態(tài)提供了用戶友好的指示。作為一個診斷工具,它對隔離故障的設(shè)備是很有用的。從系統(tǒng)測試中也可以看見該指示LED間歇閃爍,很好的驗證了這一特性。</p><p> 2.4.2 芯片功能框圖及說明 </p><p> 圖2.1 詳細(xì)描述了芯片內(nèi)部結(jié)構(gòu),
45、包括模擬收發(fā)器、電壓調(diào)整器、PLL、 Philips串行接口引擎(PSIE)等。</p><p> 圖2.1 芯片內(nèi)部結(jié)構(gòu)</p><p><b> 1、模擬收發(fā)器:</b></p><p> 集成的收發(fā)器接口可通過終端電阻直接與 USB 電纜相連。 </p><p><b> 2、電壓調(diào)整器:<
46、/b></p><p> 片內(nèi)集成了一個 3.3V 的調(diào)整器用于模擬收發(fā)器的供電,該電壓還作為輸出連接到外部 1.5k?的上拉電阻,可選擇 PDIUSBD12提供的帶 1.5k?內(nèi)部上拉電阻的軟件連接技術(shù)。 </p><p><b> 3、PLL:</b></p><p> 片內(nèi)集成了6M到48M時鐘乘法PLL,這樣就可使用低成本的
47、6M晶振,EMI也隨之降低。PLL的工作不需要外部元件。 </p><p><b> 4、位時鐘恢復(fù) </b></p><p> 位時鐘恢復(fù)電路使用4X過采樣規(guī)則,從進入的USB數(shù)據(jù)流中恢復(fù)時鐘,它能跟蹤 USB 規(guī)定范圍內(nèi)的抖動和頻漂。 </p><p> 5、Philips 串行接口引擎(PSIE):</p><
48、p> Philips SIE實現(xiàn)了全部的USB協(xié)議層,完全由硬件實現(xiàn)而不需要固件的參與。該模塊的功能包括:同步模式的識別,并行/串行轉(zhuǎn)換,位填充/解除填充,CRC校驗/產(chǎn)生,PID校驗/產(chǎn)生,地址識別和握手評估/產(chǎn)生。 </p><p><b> 6、:</b></p><p> 與 USB 的連接是通過1.5k?上拉電阻將D+(用于高速USB器件)置為高
49、實現(xiàn)的。1.5k?上拉電阻集成在PDIUSBD12 片內(nèi),默認(rèn)狀態(tài)下不與 VCC 相連。連接的建立通過外部/系統(tǒng)微控制器發(fā)送命令來實現(xiàn)。這就允許系統(tǒng)微控制器在決定與 USB 建立連接之前完成初始化時序。USB總線連接可以重新初始化而不需</p><p><b> 要拔出電纜。 </b></p><p> PDIUSBD12在連接可以建立之前會檢測USB VBUS
50、是否可用。VBUS可通過 EOT_N 管腳進行檢測。具體參閱管腳描述一節(jié)。 </p><p> 需要注意的是,內(nèi)部電阻的誤差(25%)大于USB規(guī)格的5% .但用于連接的VSE 電壓規(guī)格仍然有足夠的余量。是Philips半導(dǎo)體一項尚未獲批準(zhǔn)的專利技術(shù)。 </p><p><b> 7、:</b></p><p> 技術(shù)可提供良好的US
51、B連接指示。在枚舉中LED指示根據(jù)通信的狀況間歇閃爍。當(dāng)PDIUSBD12成功地枚舉和配置后LED指示將一直點亮,隨后與PDIUSBD12 之間成功的傳輸(帶應(yīng)答)將關(guān)閉LED,處于掛起狀態(tài)時,LED 將會關(guān)閉。 </p><p> 該特性為USB 器件,集線器和USB通信狀態(tài)提供了用戶友好的指示。作為一個診斷工具,它對隔離故障的設(shè)備是很有用的。該特性降低了現(xiàn)場支持和熱線的成本。 </p>&l
52、t;p> 8、存儲器管理單元(MMU)和集成(RAM): </p><p> 以 12M/s的速率傳輸并與微控制器并口相連時,MMU和集成RAM作為USB 之間速度差異的緩沖區(qū)。這就允許微控制器以自己的速率對USB信息包進行讀寫。 </p><p> 9、并行和 DMA接口:</p><p> 一個普通的并行接口定義成易于使用,快速而且可以與主流的微
53、控制器直接接口。對一個微控制器而言,PDIUSBD12看起來就象一個帶8位數(shù)據(jù)總線和一個地址位,占用2個位置的存儲器件。PDIUSBD12支持多路復(fù)用和非復(fù)用的地址和數(shù)據(jù)總線,還支持主端點與本地共享RAM之間直接讀取的 DMA傳輸。支持單周期和突發(fā)模式的DMA傳輸[6]。 </p><p> 2.4.3 芯片端點描述</p><p> PDIUSBD12 的端點適用于不同類型的設(shè)備,例
54、如圖像 打印機 海量存儲器和通信設(shè)備端點可通過Set Mode 命令配置為 4 種不同的模式,分別為:</p><p><b> 表2.1 端點模式</b></p><p> 4種模式具體說明見下表:</p><p> 表2.2 模式0(非同步模式)</p><p> 表2.3 模式1(同步輸出模式)</p
55、><p> 表2.4 模式2(同步輸入模式)</p><p> 表2.5 模式3(同步輸入/輸出模式)</p><p><b> 表格說明:</b></p><p> 主端點(端點2)在有些方面是比較特別的,它是進行吞吐大數(shù)據(jù)的主要端點,同樣地它執(zhí)行主機的特性以減輕傳輸大數(shù)據(jù)的任務(wù): </p><
56、;p> 1、雙緩沖,允許USB與本地CPU之間的并行讀寫操作,這樣就增加了數(shù)據(jù)的吞吐量緩沖區(qū)切換是自動處理的,這導(dǎo)致了透明的緩沖區(qū)操作。 </p><p> 2、支持DMA(直接存儲器訪問)操作,可以和對其它端點的正常 I/O 操作交叉進行。 </p><p> 3、DMA操作中的自動指針處理。在跨過緩沖區(qū)邊界時不需要本地CPU的干預(yù)。 </p><p&
57、gt; 4、可配置為同步傳輸或非同步(批量和中斷)傳輸[7]。</p><p> 2.4.4 芯片引腳配置</p><p> PDIUSBD12芯片采用TSSOP28塑料極小型封裝,一共28個引腳,本體寬度為4.4mm。</p><p> 圖2.2 芯片引腳配置</p><p> 下面對其引腳和命令字作具體說明。 </p>
58、;<p> 表4.6 PDIUSBD12芯片引腳說明</p><p> 注:O2:2mA驅(qū)動輸出OD4:4mA驅(qū)動開漏輸出</p><p> OD8:8mA驅(qū)動開漏輸出 IO2:4mA輸出</p><p> 隨著科技的發(fā)展,芯片集成度越來越高,封裝也變得越來越小,PDIUSBD12芯片不是采用標(biāo)準(zhǔn)DIP直插的引腳,因而需要有一個S
59、OP轉(zhuǎn)DIP的轉(zhuǎn)接板,這樣方便采用電路板設(shè)計硬件電路,同時也方便程序下載完成后系統(tǒng)的調(diào)試。即使有了轉(zhuǎn)接板,采用貼片封裝的PDIUSBD12芯片也需要手工焊接在轉(zhuǎn)接板上,這一點需要特別注意,不能長時間焊接,以免芯片過熱以致?lián)p壞。</p><p> PDIUSBD12與一般需要提供時鐘信號的芯片不同,該芯片需要標(biāo)準(zhǔn)的6MHz的時鐘信號,因而采用晶振的時候需要特別注意,不能隨意選擇,這一點與51系列單片機能有選擇的采
60、用晶振的情況不同。</p><p> 芯片內(nèi)部有各個寄存器,根據(jù)寄存器相關(guān)命令編寫C語言程序(可以采用由局部到整體的方法),這樣對USB傳輸協(xié)議的認(rèn)識更清楚,程序流程也容易理解,脈絡(luò)清晰。在程序中,Main函數(shù)作為程序設(shè)備Reset時的程序入口,調(diào)用了一些初始化設(shè)備的函數(shù),比如各種寄存器如中斷寄存器,定時器,計數(shù)器等,初始化D12芯片并完成連接等工作,然后程序進入循環(huán)等待階段,等待著中斷的發(fā)生。</p&g
61、t;<p> 由于沒有采用PCB制板,手工焊接要十分注意電源干擾的問題,電源和地之間要加上濾波電容。USB接口芯片與單片機之間的引線要盡量短,本設(shè)計采用并行傳輸,數(shù)據(jù)傳輸占用了8個IO口,個引腳連線要盡量平行,避免交叉,以免信號線相互干擾,造成數(shù)據(jù)傳輸不爭取或者USB總線不能正常復(fù)位。</p><p> PDIUSBD12芯片的GoodLinkLED指示器短接普通發(fā)光二極管時,要注意連接限流電阻
62、,不能超過該芯片的輸入電流額定值,否則可能造成芯片工作不正常,并且與電腦或者其他USB Host 芯片不能正常建立連接。</p><p> 對該芯片的各個管腳和具體功能建立了一定認(rèn)識的基礎(chǔ)上,就能順利完成各部分硬件電路的設(shè)計和軟件功能調(diào)試。</p><p> 第3章 系統(tǒng)硬件設(shè)計</p><p> 本章對系統(tǒng)硬件部分的設(shè)計作出了詳細(xì)的介紹,主要是51單片機外圍
63、電路設(shè)計,鍵盤設(shè)計,PDIUSBD12芯片的外圍電路及其與單片機的接口設(shè)計。并給出了PDIUSBD12的時序說明。</p><p> 3.1 單片機硬件設(shè)計</p><p><b> 3.1.1系統(tǒng)供電</b></p><p> 本設(shè)計采用的單片機芯片為STC89C52,這是新一代超強抗干擾、高速、低功耗的單片機,指令代碼完全兼容傳統(tǒng)的8
64、051單片機。燒寫程序代碼時需要有一個上電握手過程,因而下載程序時不能采用USB供電,否則可能導(dǎo)致下載失敗。因而需要在設(shè)計時需要有一個外接電源。</p><p> 電源采用常規(guī)的L7805穩(wěn)壓芯片供電。用78系列三端穩(wěn)壓IC來組成穩(wěn)壓電源所需的外圍元件極少,電路內(nèi)部還有過流、過熱及調(diào)整管的保護電路,使用起來可靠、方便,而且價格便宜。系統(tǒng)正常工作時,7805輸出電流不大,因而可以不加散熱片,下圖為穩(wěn)壓電路圖: &
65、lt;/p><p> 圖3.1 電源電路電路</p><p> C14、C15和C16分別為輸入端和輸出端濾波電容,保證系統(tǒng)供電穩(wěn)定。程序燒寫完畢,利用USB連接線將該系統(tǒng)與PC機成功連接后,復(fù)位單片機,PC機提示發(fā)現(xiàn)新硬件(人體輸入學(xué)設(shè)備)后,說明系統(tǒng)能正常運行,這時可以移除外接電源,采用USB接口供電。USB口最大能提供500 mA電流,足夠驅(qū)動單片機及其外圍電路工作。</p&
66、gt;<p> 3.1.2單片機電路設(shè)計</p><p> 系統(tǒng)控制芯片為STC89C52,單片機外圍器件連接如下圖:</p><p> 圖3.2 單片機外圍電路</p><p> 系統(tǒng)采用22.1184MHz晶振,該晶振結(jié)合單片機內(nèi)部的電路,產(chǎn)生單片機所必須的時鐘頻率,單片機的一切指令的執(zhí)行都是建立在這個基礎(chǔ)上的,晶振的提供的時鐘頻率越高,那
67、單片機的運行速度也就越快,實時性越好。</p><p> 單片機在開機時都需要復(fù)位,以便中央處理器CPU以及其他功能部件都處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。</p><p> STC89C51系列單片機的RST引腳是復(fù)位信號的輸入端。復(fù)位信號是高電平有效,持續(xù)時間要有24個時鐘周期以上。上電復(fù)位時可接大約10K的下拉電阻。</p><p> 將P0
68、口與PDIUSBD12連接,實際是一個并行接口。PDIUSBD12帶有一個普通的并行接口,易于使用,快速而且可以與主流的微控制器直接接口。對一個微控制器而言 PDIUSBD12 看起來就象一個帶 8 位數(shù)據(jù)總線和一個地址位占用2個位置的存儲器件。</p><p> STC89C52的多位地址和數(shù)據(jù)總線可直接與 PDIUSBD12 的數(shù)據(jù)總線相連。將P0口作為數(shù)據(jù)傳輸接口時,需加10K上拉電阻。</p>
69、;<p> LED0、LED1、LED3為鍵盤上的指示燈,分別代表Num Lock、Caps Lock、Scroll Lock。當(dāng)按鍵有對應(yīng)的按鍵事件發(fā)生時,相應(yīng)的燈會亮起,以指示用戶當(dāng)前的鍵盤操作狀態(tài)。</p><p><b> 3.2 鍵盤設(shè)計</b></p><p> 將按鍵安裝在手套里面,手指觸手可及,不必尋找按鍵,操作方便,而且方便攜帶,
70、這是本設(shè)計的一大特色,電路設(shè)計如下:</p><p> 圖3.3 鍵盤設(shè)計電路</p><p> 鍵盤部分的設(shè)計基于左右手的規(guī)則,左右手的大拇指負(fù)責(zé)切換輸入模式,可選高電平觸發(fā)和低電平觸發(fā),這樣,兩個按鍵可以實現(xiàn)四種模式的切換,其余各鍵設(shè)置為低電平觸發(fā),正常輸入字符。</p><p> 將鍵盤引線接在單片機上,單片機實時掃描按鍵,分析是否有按鍵事件發(fā)生,如果有
71、按鍵按下,根據(jù)按下的按鍵和模式按鍵計算具體鍵值,將處理好的鍵值送USB接口芯片處理,這樣完成一次按鍵檢測過程。</p><p> 按鍵檢測部分實時性要求很高,如果采用單一判斷單片機的IO口高低電平,由于程序流程多,完成一次按鍵檢測延時很大,無法達到設(shè)計的要求,因而可以在軟件部分利用單片機的定時計數(shù)器,每隔一定的時間對鍵盤檢測一次,具體參見軟件設(shè)計部分的內(nèi)容。</p><p> 3.3
72、PDIUSBD12驅(qū)動電路</p><p> 3.3.1 USB接口芯片電路</p><p> PDIUSBD12與單片機的接口電路上文已作出說明,本設(shè)計中PDIUSBD12所用晶振為6MHz,這是根據(jù)芯片手冊的要求而設(shè)計。</p><p><b> 電路原理圖如下:</b></p><p> 圖3.4 PDIU
73、SBD12外圍電路</p><p> 3.3.2 USB接口芯片電路說明</p><p> 芯片的ALE將其固定為低電平用于單地址/數(shù)據(jù)總線配置。CS_N為片選,低有效,因而也接低電平。SUSPEND接低電平是防止總線掛起,使器件一直處于工作狀態(tài)。</p><p> RD_N(讀選通)和WR_N(寫選通)直接與單片機的 連接,控制方便。</p>
74、<p> DMREQ為DMA請求端,DMACK_N為DMA應(yīng)答端(低有效),EOT_N為DMA傳輸結(jié)束端(低有效),且EOT_N僅當(dāng)DMACK_N和RD_N或WR_N一起激活時才有效。將這三個端口通過1K電阻接高電平即可。</p><p> 接口芯片采用USB口供電,該系統(tǒng)有一個電源指示燈LED3和一個通訊指示燈LED4。其中LED4接21引腳,在枚舉中LED指示根據(jù)通信的狀況間歇閃爍。當(dāng)PDIUS
75、BD12成功地枚舉和配置后LED指示將一直點亮,隨后與PDIUSBD12 之間成功的傳輸(帶應(yīng)答)將關(guān)閉LED,處于掛起狀態(tài)時,LED 將會關(guān)閉。 </p><p> 該特性為USB 器件,集線器和USB通信狀態(tài)提供了用戶友好的指示。作為一個診斷工具,它對隔離故障的設(shè)備是很有用的。該特性降低了現(xiàn)場支持和熱線的成本。 </p><p><b> 3.4 串行口電路</
76、b></p><p> 串行口電路采用常規(guī)的max232電平轉(zhuǎn)換芯片,該芯片只需外接4個1uF電容。MAX232芯片是Maxim公司生產(chǎn)的低功耗、單電源雙RS232發(fā)送/接收器,它的內(nèi)部有一個電源電壓變換器,可以把輸入的+5V電源變換成RS-232C輸出電平所需±10V電壓,所以采用此芯片接口的串行通信系統(tǒng)只要單一的+5V電源就可以了。串行口支持以下通信速率:300,1200,2400,4800
77、,9600,19200,38400,57600,115200bps。</p><p> STC89C52與MAX232的接口電路如下圖所示,改電路可用于單片機下載程序,也可用于將系統(tǒng)運行過程中傳送的信息上傳至PC機觀察,便于調(diào)試。</p><p> 圖3.5 MAX232串口通信電路</p><p> 第4章 系統(tǒng)軟件設(shè)計</p><p&g
78、t; 單片機開發(fā)中除必要的硬件外,同樣離不開軟件,匯編語言源程序要變?yōu)镃PU可以執(zhí)行的機器碼有兩種方法,一種是手工匯編,另一種是機器匯編,機器匯編是通過匯編軟件將源程序變?yōu)闄C器碼。隨著單片機開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級語言開發(fā),單片機的開發(fā)軟件也在不斷發(fā)展,Keil軟件是目前最流行開發(fā)MCS-51系列單片機的軟件。</p><p> Keil提供了包括C編譯器、宏匯編、連接器、庫管理和
79、一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部份組合在一起。Keil軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到其生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。</p><p> 本設(shè)計采用的開發(fā)環(huán)境為Keil uVis
80、ion3,開發(fā)語言為C語言。C語言是一個通用的編程語言,它提供高效的代碼,結(jié)構(gòu)化的編程和豐富的操作符。C不是一種大語言,不是為任何特殊應(yīng)用領(lǐng)域而設(shè)計。它一般來說限制較少,可以為各種軟件任務(wù)提供方便和有效的編程。許多應(yīng)用用C比其他語言編程更方便和有效。與匯編相比,C 語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。</p><p> 軟件設(shè)計部分主要是要處理好按鍵掃描和USB接口芯片的數(shù)據(jù)傳輸
81、問題,按鍵掃描部分利用單片機監(jiān)測處理,實時性好。以下為各部分軟件設(shè)計的詳細(xì)介紹。</p><p><b> 4.1按鍵處理部分</b></p><p> 按鍵處理是本設(shè)計的關(guān)鍵部分,如果單片機在處理按鍵時出現(xiàn)各種錯誤,比如按鍵連擊,按鍵鍵值串?dāng)_,檢測不到按鍵,那么整個系統(tǒng)將變得不可靠,手指鍵盤輸入時發(fā)生錯誤的概率增大,系統(tǒng)穩(wěn)定性減小,這是應(yīng)該避免的。</p&
82、gt;<p> 按鍵按照結(jié)構(gòu)原理可分為兩類,一類是觸點式開關(guān)按鍵,如機械式開關(guān)、導(dǎo)電橡膠式開關(guān)等;另一類是無觸點開關(guān)按鍵,如電氣式按鍵,磁感應(yīng)按鍵等。前者造價低,后者壽命長。目前,微機系統(tǒng)中最常見的是觸點式開關(guān)按鍵。</p><p> 按鍵按照接口原理可分為編碼鍵盤與非編碼鍵盤兩類,這兩類鍵盤的主要區(qū)別是識別鍵符及給出相應(yīng)鍵碼的方法。編碼鍵盤主要是用硬件來實現(xiàn)對鍵的識別,非編碼鍵盤主要是由軟件來
83、實現(xiàn)鍵盤的定義與識別。如果采用專門的硬件電路檢測按鍵,這樣設(shè)計會使得電路變得復(fù)雜,成本增加,</p><p> 編碼鍵盤能夠由硬件邏輯自動提供與鍵對應(yīng)的編碼,此外,一般還具有去抖動和多鍵、竄鍵保護電路,這種鍵盤使用方便,但需要較多的硬件,價格較貴,一般的單片機應(yīng)用系統(tǒng)較少采用。非編碼鍵盤只簡單地提供行和列的矩陣,其它工作均由軟件完成。由于其經(jīng)濟實用,較多地應(yīng)用于單片機系統(tǒng)中。</p><p&
84、gt; 在觸點抖動期間檢測按鍵的通與斷狀態(tài),可能導(dǎo)致判斷出錯。即按鍵一次按下或釋放被錯誤地認(rèn)為是多次操作,這種情況是不允許出現(xiàn)的。為了克服按鍵觸點機械抖動所致的檢測誤判,必須采取去抖動措施,可從硬件、軟件兩方面予以考慮。在鍵數(shù)較少時,可采用硬件去抖,而當(dāng)鍵數(shù)較多時,采用軟件去抖。本設(shè)計采用軟件去抖。</p><p> 4.1.1 按鍵處理流程</p><p> 4.1.2 按鍵檢測代
85、碼</p><p> 實現(xiàn)該按鍵檢測功能的主要程序代碼:</p><p> void Timer0Isr(void) interrupt 1</p><p><b> { </b></p><p> //定時器0重裝,定時間隔為5ms,加15是為了修正重裝所花費時間</p><p> T
86、H0=(65536-clk/1000/12*5+15)/256; </p><p> TL0=(65536-clk/1000/12*5+15)%256; </p><p> if(!KeyCanChange)return; //如果正在處理按鍵,則不再掃描鍵盤 </p><p> KeyCurrent=GetKeyValue(); //讀取鍵值,
87、GetKeyValue()是個宏,不是函數(shù),</p><p> if((P20==0)&&(P21==0))</p><p><b> {</b></p><p> if(KeyCurrent!=0xff)</p><p><b> {</b></p><
88、p> KeyOld=KeyCurrent;</p><p> KeyPress=KeyOld; </p><p><b> flag=0;</b></p><p><b> }</b></p><p><b> }</b></p><p&g
89、t; else if((P20==0)&&(P21==1))</p><p><b> {</b></p><p> if(KeyCurrent!=0xff)</p><p><b> {</b></p><p> KeyOld=KeyCurrent;</p>
90、<p> KeyPress=KeyOld; </p><p><b> flag=7;</b></p><p><b> }</b></p><p><b> }</b></p><p> else if((P20==1)&&(P21==
91、0))</p><p><b> {</b></p><p> if(KeyCurrent!=0xff)</p><p><b> {</b></p><p> KeyOld=KeyCurrent;</p><p> KeyPress=KeyOld; </p&
92、gt;<p><b> flag=14;</b></p><p><b> }</b></p><p><b> }</b></p><p> else if((P20==1)&&(P21==1))</p><p><b>
93、{</b></p><p> if(KeyCurrent!=0xff)</p><p><b> {</b></p><p> KeyOld=KeyCurrent;</p><p> KeyPress=KeyOld; </p><p><b> flag=21; &
94、lt;/b></p><p><b> }</b></p><p><b> } </b></p><p><b> else </b></p><p><b> {</b></p><p> KeyPr
95、ess=0;</p><p><b> }</b></p><p><b> }</b></p><p> 4.1.3 鍵盤操作說明</p><p> 根據(jù)鍵盤檢測部分的程序代碼,得出下表,為手指按鍵具體操作對應(yīng)表</p><p> 表3.1 手指按鍵對應(yīng)表<
96、/p><p> 左右大拇指按鍵用于切換輸入功能,具體說明見下表:</p><p> 表3.2按鍵切換功能表</p><p> 注:高低代表按鍵接高電平或者低電平的狀態(tài),在手指鍵盤上反映出來就是按鍵按下或者沒有按下的狀態(tài),按下為低電平,未按下為高電平。在程序中反映出來為以下判斷語句,根據(jù)不同的狀態(tài)返回不同的按鍵值。</p><p> if(
97、(P20==0)&&(P21==0)){……}</p><p> else if((P20==0)&&(P21==1)){……}</p><p> else if((P20==1)&&(P21==0)){……}</p><p> else if((P20==1)&&(P21==1)){……}<
98、;/p><p> 4.2 USB接口部分</p><p> 主機對一個USB設(shè)備的識別是經(jīng)過一個枚舉的過程來完成的,主機的總線枚舉器隨時監(jiān)控必要的設(shè)備狀態(tài)變化。總線枚舉的過程如下:</p><p> (1)設(shè)備連接。USB設(shè)備經(jīng)USB總線連接主機。</p><p> (2)設(shè)備上電。USB設(shè)備可以自供電,也可以使用USB總線供電。<
99、/p><p> (3)主機檢測到設(shè)備,發(fā)出復(fù)位。主機通過檢測設(shè)備在總線的上拉電阻檢測到有新的設(shè)備連接,并獲釋設(shè)備是全速設(shè)備還是低速設(shè)備,然后向該端口發(fā)送一個復(fù)位信號。</p><p> (4)設(shè)備默認(rèn)狀態(tài)。設(shè)備從總線上接收到一個復(fù)位信號后,才可以對總線的處理操作做出響應(yīng)。設(shè)備接收到復(fù)位信號后,就暫時使用默認(rèn)地址(00H)來響應(yīng)主機的命令。</p><p> (5)
100、地址分配。當(dāng)主機接收到有設(shè)備對默認(rèn)地址(00H)響應(yīng)的時候,就分配給設(shè)備一個空閑的地址,以后設(shè)備就只對該地址進行響應(yīng)。</p><p> (6)讀取USB設(shè)備描述符。主機讀取USB設(shè)備描述符,確認(rèn)USB設(shè)備的屬性。</p><p> (7)設(shè)備配置。主機依照讀取的USB設(shè)備描述符來進行配置,如果設(shè)備所需的USB資源得以滿足,就發(fā)送配置命令給USB設(shè)備,表示配置完畢。</p>
101、<p> (8)掛起。如果使用總線供電,為了節(jié)省電源,當(dāng)總線保持空閑狀態(tài)超過3ms以后,設(shè)備驅(qū)動程序就會進入掛起狀態(tài),在掛起狀態(tài)時,USB設(shè)備保留了包括其地址和配置信息在內(nèi)的所有內(nèi)部狀態(tài),設(shè)備的消耗電流不超過500uA。</p><p> 4.2.1 USB接口芯片工作流程</p><p> 4.2.2 PDIUSBD12驅(qū)動</p><p>
102、 對一個具體的USB接口芯片,需要根據(jù)其相關(guān)寄存器或者命令字來驅(qū)動。下表指出了PDIUSBD12芯片的命令字:</p><p> 表4.1 PDIUSBD12命令字說明</p><p> 主函數(shù)部分程序代碼:</p><p> void main(void) //主函數(shù)</p><p><b> {</b>&
103、lt;/p><p> uint8 InterruptSource;</p><p> EA=1; //打開中斷</p><p> InitKeyboard(); //初始化按鍵</p><p> UsbDisconnect(); //先斷開USB連接</p><p> UsbConnect(); //將USB
104、連接上</p><p> ConfigValue=0; //配置值初始化為0</p><p> while(1) //死循環(huán)</p><p><b> {</b></p><p> if(D12GetIntPin()==0) //如果有中斷發(fā)生</p><p><b> {&
105、lt;/b></p><p> D12WriteCommand(READ_INTERRUPT_REGISTER);//寫讀中斷寄存器命令</p><p> InterruptSource=D12ReadByte(); //讀回第一字節(jié)的中斷寄存器</p><p> if(InterruptSource&0x80)UsbBusSuspend();
106、//總線掛起中斷處理</p><p> if(InterruptSource&0x40)UsbBusReset(); //總線復(fù)位中斷處理</p><p> if(InterruptSource&0x01)UsbEp0Out(); //端點0輸出中斷處理</p><p> if(InterruptSource&0x02)Us
107、bEp0In(); //端點0輸入中斷處理</p><p> if(InterruptSource&0x04)UsbEp1Out(); //端點1輸出中斷處理</p><p> if(InterruptSource&0x08)UsbEp1In(); //端點1輸入中斷處理</p><p> if(InterruptS
108、ource&0x10)UsbEp2Out(); //端點2輸出中斷處理</p><p> if(InterruptSource&0x20)UsbEp2In(); //端點2輸入中斷處理</p><p><b> }</b></p><p> if(ConfigValue!=0) //如果已經(jīng)設(shè)置為非0的配
109、置則可以返回報告數(shù)據(jù)</p><p><b> {</b></p><p> if(!Ep1InIsBusy) //如果端點1輸入沒有處于忙狀態(tài)則可以發(fā)送數(shù)據(jù)</p><p><b> { </b></p><p> SendReport(); //則返回報告</p>&
110、lt;p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 程序說明:</b></p>&l
111、t;p> 如果單片機檢測到按鍵按下的信息,并根據(jù)相應(yīng)的模式發(fā)送按鍵碼,USB接口芯片如果出于非忙的狀態(tài),自動將處理好的數(shù)據(jù)包發(fā)往PC機,順利實現(xiàn)一次按鍵過程。</p><p> 前文指出,PDIUSBD12的技術(shù)可提供良好的USB連接指示。在枚舉中LED指示根據(jù)通信的狀況間歇閃爍。當(dāng)PDIUSBD12成功地枚舉和配置后LED指示將一直點亮,隨后與PDIUSBD12 之間成功的傳輸(帶應(yīng)答)將關(guān)閉LED,
112、處于掛起狀態(tài)時,LED 將會關(guān)閉。該特性為USB 器件,集線器和USB通信狀態(tài)提供了用戶友好的指示。作為一個診斷工具,它對隔離故障的設(shè)備是很有用的。從系統(tǒng)測試中也可以看見該指示LED間歇閃爍,很好的驗證了這一特性。</p><p> 4.2.3 USB 設(shè)備描述符</p><p> 一個設(shè)備只有一個設(shè)備描述符,而一個設(shè)備描述符可以包含多個配置描述符,而一個配置描述符可以包含多個接口描述
113、符,一個接口使用了幾個端點,就有幾個端點描述符。這間描述符是用一定的字段構(gòu)成的,分別如下說明。 </p><p><b> ?。?)設(shè)備描述符</b></p><p> struct _DEVICE_DEscriptOR_STRUCT </p><p><b> { </b></p><p>
114、 BYTE bLength; // 設(shè)備描述符的字節(jié)數(shù)大小,為0x12 </p><p> BYTE bDescriptorType; // 描述符類型編號,為0x01 </p><p> WORD bcdUSB; // USB版本號 </p><p> BYTE bDeviceClass;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計--多功能數(shù)顯鍵盤設(shè)計
- 鍵盤畢業(yè)設(shè)計說明書---鍵盤外殼注塑模設(shè)計
- 鍵盤按鍵注塑模具設(shè)計-畢業(yè)設(shè)計論文
- 電腦鍵盤按鍵注塑模具畢業(yè)設(shè)計
- 畢業(yè)設(shè)計----基于單片機的ps2鍵盤設(shè)計
- 畢業(yè)設(shè)計--ps2鍵盤鼠標(biāo)識別器的設(shè)計
- 鍵盤手指分布圖
- 畢業(yè)設(shè)計---基于μcos-_ii的鍵盤驅(qū)動的實現(xiàn)
- 鍵盤按鍵注塑模畢業(yè)設(shè)計-機械模具畢業(yè)論文
- 鍵盤設(shè)計
- 鍵盤接口設(shè)計
- 賓館畢業(yè)設(shè)計畢業(yè)設(shè)計
- 4329手指力學(xué)特性測量裝置的設(shè)計【機械畢業(yè)設(shè)計全套資料+已通過答辯】
- 畢業(yè)設(shè)計---畢業(yè)設(shè)計選題系統(tǒng)
- 畢業(yè)設(shè)計論文 畢業(yè)設(shè)計管理系統(tǒng)設(shè)計
- 基于深度相機的手指識別與虛擬鍵盤技術(shù).pdf
- 畢業(yè)設(shè)計----畢業(yè)設(shè)計選題系統(tǒng)
- 畢業(yè)設(shè)計 畢業(yè)設(shè)計(論文)管理系統(tǒng)設(shè)計
- 畢業(yè)設(shè)計---閘閥的設(shè)計
- 畢業(yè)設(shè)計---逆變器的設(shè)計
評論
0/150
提交評論