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