freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

手指鍵盤(pán)的設(shè)計(jì)(參考版)

2024-12-11 08:59本頁(yè)面
  

【正文】 老師 們 您們辛苦了 !謝謝您們對(duì)我們的關(guān)愛(ài) ,對(duì)我們的無(wú)私 教誨, 在此 ,我感謝您們 ! 感謝所有關(guān)心過(guò)我的人。在論文定稿過(guò)程中,老師細(xì)心地審閱,耐心地指導(dǎo),幫助我順利地完成論文, 我在這次的畢業(yè)設(shè)計(jì)中 ,認(rèn)真對(duì)待每一個(gè)過(guò)程 ,希望 自己的認(rèn)真 ,自己最后的畢業(yè)設(shè)計(jì)的成果能夠回報(bào)老師這么多年來(lái)的教導(dǎo) ,這么多年的奉獻(xiàn) 。本論文是在老師的精心指導(dǎo)和大力支持下完成的。 但是 作為一個(gè)本科生的畢業(yè)論文,由于 知識(shí)和經(jīng)驗(yàn) 的匱乏,難免有許多考慮不周全的地方,如果沒(méi)有導(dǎo)師的督促指導(dǎo),以及同學(xué)們的支持,想要完成這個(gè)設(shè)計(jì)是難以想象的。 青島理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 39 致 謝 經(jīng)過(guò)半年的 學(xué)習(xí) 和忙碌,本次畢業(yè)論文設(shè)計(jì)已經(jīng)接近尾聲 ?,F(xiàn)總結(jié)論文研究工作如下:( 1) 闡述了 USB總線的原理和 USB相關(guān)的協(xié)議;( 2)對(duì)本設(shè)計(jì)的系統(tǒng)要求作出了 分析,根據(jù)要求選定元件和具體編程方案;( 3)針對(duì)系統(tǒng)所要實(shí)現(xiàn)的功能對(duì)相關(guān)芯片作了詳細(xì)介紹,特別是對(duì) Philips公司的PDIUSBD12芯片給出了具體的描述;( 4)在硬件部分設(shè)計(jì)了原理圖,對(duì)單片機(jī)控制電路和 USB接口芯片及其外圍給出了 Protel電路圖,在軟件部分設(shè)計(jì)了采用了結(jié)構(gòu)化的程序思想。 該論文闡述了 51系列單片機(jī)和 USB的相關(guān)內(nèi)容,詳細(xì)介紹了系統(tǒng)的一些功能設(shè)計(jì),包括硬件設(shè)計(jì)和軟件設(shè)計(jì)。雖然 C語(yǔ)言和開(kāi)發(fā)環(huán)境曾經(jīng)都學(xué)習(xí)并使 用過(guò),但應(yīng)用于這次的畢業(yè)設(shè)計(jì)才發(fā)現(xiàn)自己掌握的還不夠熟練。掌握了基于 51單片機(jī)和 PDIUSBD12芯片的手指鍵盤(pán)的設(shè)計(jì),熟悉了 USB相關(guān)協(xié)議,為以后的深入學(xué)習(xí)奠定了良好的基礎(chǔ)。其中可能還會(huì)有獲取設(shè)備序列號(hào),廠商字符串,產(chǎn)品字符串等。 // 主機(jī)查詢端點(diǎn)的時(shí)間間隔 } 由此我們可以看出, USB 的描述符之間的關(guān)系是一層一層的。 // 端點(diǎn)的傳輸類(lèi)型屬性 WORD wMaxPacketSize。 // 描述符類(lèi)型編號(hào),為 0x01 BYTE bEndpointAddress。 // 描述該接口的字符串索引值 } ( 5) 端點(diǎn)描述符 struct _ENDPOIN_DEscriptOR_STRUCT { BYTE bLength。 // 接口子類(lèi)型 BYTE bInterfaceProtocol。 // 該接口使用端點(diǎn)數(shù),不包括端點(diǎn) 0 BYTE bInterfaceClass。 // 接口的編號(hào) BYTE bAlternateSetting。 // 設(shè)備描述符的字節(jié)數(shù)大小,為 0x12 BYTE bDescriptorType。 // 描述符類(lèi)型編號(hào),為 0x01 BYTE SomeDescriptor[36]。 // 設(shè)備從總線提取的最大電流 } ( 3) 字符描述符 struct _STRING_DEscriptOR_STRUCT { BYTE bLength。 // 描述該配置的字符串的索引值 BYTE bmAttribute。 // 此配置所支持的接口數(shù)量 BYTE bConfigurationVale。 // 描述符類(lèi)型編號(hào),為 0x01 青島理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 36 WORD wTotalLength。 // 可能的配置數(shù)量 } ( 2) 配置描述符 struct _CONFIGURATION_DEscriptOR_STRUCT { BYTE bLength。 // 描述產(chǎn)品字符串的索引 BYTE iSerialNumber。 // 設(shè)備出廠編號(hào) BYTE iManufacturer。 // 廠商編號(hào) WORD idProduct。 // USB 分配的設(shè)備協(xié)議代碼,同上 BYTE bMaxPacketSize0。 // USB 分配的設(shè)備類(lèi)代碼, 0x01~0xfe 為標(biāo) // 準(zhǔn)設(shè)備類(lèi), 0xff 為廠商自定義類(lèi)型 // 0x00 不是在設(shè)備描述符中定義的,如 HID BYTE bDeviceSubClass。 // 描述符類(lèi)型編號(hào),為 0x01 WORD bcdUSB。 ( 1) 設(shè)備描述符 struct _DEVICE_DEscriptOR_STRUCT { BYTE bLength。 青島理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 35 USB 設(shè)備描述符 一個(gè)設(shè)備只有一個(gè)設(shè)備描述符,而一個(gè)設(shè)備描述符可以包含多個(gè)配置描述符,而一個(gè)配置描述符可以包含多個(gè)接口描述符,一個(gè)接口使用了幾個(gè)端點(diǎn),就有幾個(gè)端點(diǎn)描述符。 作為一個(gè)診斷工具 , 它對(duì)隔離故障的設(shè)備是很有用的 。 當(dāng) PDIUSBD12 成功地枚舉和配置后 LED指示將一直點(diǎn)亮 , 隨后 與 PDIUSBD12 之間成功的傳輸 ( 帶應(yīng)答 ) 將關(guān)閉 LED, 處于掛起狀態(tài)時(shí) , LED 將會(huì)關(guān)閉 。 前文指出, PDIUSBD12 的 TMGoodLink 技術(shù)可提供良好的 USB 連接指示 。 //端點(diǎn) 2 輸入中斷處理 } if(ConfigValue!=0) //如果已經(jīng)設(shè)置為非 0 的配置則可以返回報(bào)告數(shù)據(jù) { if(!Ep1InIsBusy) //如果端點(diǎn) 1 輸入沒(méi)有處于忙狀態(tài)則可以發(fā)送數(shù) 據(jù) { SendReport()。 //端點(diǎn) 2 輸出中斷處理 if(InterruptSourceamp。 //端點(diǎn) 1 輸入中斷處理 if(InterruptSourceamp。 //端點(diǎn) 1 輸出中斷處理 青島理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 34 if(InterruptSourceamp。 //端點(diǎn) 0 輸入中斷處理 if(InterruptSourceamp。 //端點(diǎn) 0 輸出中斷處理 if(InterruptSourceamp。 //總線復(fù)位中斷處理 if(InterruptSourceamp。 //總線掛起中斷處理 if(InterruptSourceamp。 //讀回第一字節(jié)的中斷寄存器 if(InterruptSourceamp。 //配置值初始化為 0 while(1) //死循環(huán) { if(D12GetIntPin()==0) //如果有中斷發(fā)生 { D12WriteCommand(READ_INTERRUPT_REGISTER)。 //先斷開(kāi) USB 連接 UsbConnect()。 //打開(kāi)中斷 InitKeyboard()。下表指出了 PDIUSBD12 芯片的命令字: 表 PDIUSBD12 命令字說(shuō)明 命令名 接受者 編碼 數(shù)據(jù) 初始化命令 設(shè)置地址 /使能 器件 D0H 寫(xiě) 1 字節(jié) 設(shè)置端點(diǎn)使能 器件 D8H 寫(xiě) 1 字節(jié) 設(shè)置模式 器件 F3H 寫(xiě) 2 字節(jié) 設(shè)置 DMA 器件 FBH 寫(xiě) /讀 1 字節(jié) 數(shù)據(jù)流命令 讀中斷寄存器 器件 F4H 讀 2 字節(jié) 選擇端點(diǎn) 控制輸出 00H 讀 1 字節(jié)(可選) 控制輸入 01H 讀 1 字節(jié)(可選) 端點(diǎn) 1 輸出 02H 讀 1 字節(jié)(可選) 端點(diǎn) 1 輸入 03H 讀 1 字節(jié)(可選) 端點(diǎn) 2 輸出 04H 讀 1 字節(jié)(可選) 端點(diǎn) 2 輸入 05H 讀 1 字節(jié)(可選) 讀最后處理狀態(tài) 控制輸出 40H 讀 1 字節(jié) 控制輸入 41H 讀 1 字節(jié) 端點(diǎn) 1 輸出 42H 讀 1 字節(jié) 端點(diǎn) 1 輸入 43H 讀 1 字節(jié) 端點(diǎn) 2 輸出 44H 讀 1 字節(jié) 端點(diǎn) 2 輸入 45H 讀 1 字節(jié) 讀緩沖區(qū) 選擇的端點(diǎn) F0H 讀 N 字節(jié) 寫(xiě)緩沖區(qū) 選擇的端點(diǎn) F0H 寫(xiě) N 字節(jié) 設(shè)置端點(diǎn)狀態(tài) 控制輸出 40h 寫(xiě) 1 字節(jié) 控制輸入 41h 寫(xiě) 1 字節(jié) 青島理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 33 端點(diǎn) 1 輸出 42h 寫(xiě) 1 字節(jié) 端點(diǎn) 1 輸入 43h 寫(xiě) 1 字節(jié) 端點(diǎn) 2 輸出 44h 寫(xiě) 1 字節(jié) 端點(diǎn) 2 輸入 45h 寫(xiě) 1 字節(jié) 應(yīng)答設(shè)置 選擇的端點(diǎn) F1H 無(wú) 緩沖區(qū)清零 選擇的端點(diǎn) F2H 無(wú) 使緩沖區(qū)有效 選擇的端點(diǎn) FAH 無(wú) 普通命令 發(fā)送回復(fù) F6H 無(wú) 讀當(dāng)前幀數(shù)目 F5H 讀 1 或 2 字節(jié) 主函數(shù)部分程序代碼: void main(void) //主函數(shù) { uint8 InterruptSource。如果使用總線供電,為了節(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。主機(jī)依照讀取的 USB 設(shè)備描述符來(lái)進(jìn)行配置,如果設(shè)備所需的 USB 資源得以滿足,就 發(fā)送配置命令給 USB 設(shè)備,表示配置完畢。主機(jī)讀取 USB 設(shè)備描述符,確認(rèn) USB 設(shè)備的屬性。當(dāng)主機(jī)接收到有設(shè)備對(duì)默認(rèn)地址 (00H)響應(yīng)的時(shí)候,就分配給設(shè)備一個(gè)空閑的地址,以后設(shè)備就只對(duì)該地址進(jìn)行響應(yīng)。設(shè)備接收到復(fù)位信號(hào)后,就暫時(shí)使用默認(rèn)地址 (00H)來(lái)響應(yīng)主機(jī)的命令。 (4)設(shè)備默認(rèn)狀態(tài)。 (3)主機(jī)檢測(cè)到設(shè)備,發(fā)出復(fù)位。 (2)設(shè)備上電??偩€枚舉的過(guò)程如下 : (1)設(shè)備連接。amp。amp。amp。amp。在程序中反映出來(lái)為以下判斷語(yǔ)句,根據(jù)不同的狀態(tài)返回不同的按鍵值。 } } else { KeyPress=0。 KeyPress=KeyOld。amp。 flag=14。(P21==0)) 青島理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 28 { if(KeyCurrent!=0xff) { KeyOld=KeyCurrent。 } } else if((P20==1)amp。 KeyPress=KeyOld。amp。 flag=0。(P21==0)) { if(KeyCurrent!=0xff) { KeyOld=KeyCurrent。 //讀取鍵 值, GetKeyValue()是個(gè)宏,不是函數(shù), if((P20==0)amp。 if(!KeyCanChange)return。 青島理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 26 按鍵處理流程 5ms 中斷時(shí)間到 按鍵與上次相同? 讀取鍵值 Y N 判斷模式正確? 鍵值處理 開(kāi)始 Y N USB 接口忙? N 發(fā)送按鍵值 Y 圖 按鍵處理流程圖 青島理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 27 按鍵 檢測(cè)代碼 實(shí)現(xiàn)該按鍵檢測(cè)功能的主要程序代碼: void Timer0Isr(void) interrupt 1 { //定時(shí)器 0 重裝,定時(shí)間隔為 5ms,加 15 是為了修正重裝所花費(fèi)時(shí)間 TH0=(65536clk/1000/12*5+15)/256。在鍵數(shù)較少時(shí),可采用硬件去抖,而當(dāng)鍵數(shù)較多時(shí),采用軟件去抖。即按鍵一次按下或釋放被錯(cuò)誤地認(rèn)為是多次操作,這種情況是不允許出現(xiàn)的。由于其經(jīng)濟(jì)實(shí)用,較多地應(yīng)用于單片機(jī)系統(tǒng)中。 如果采用專(zhuān)門(mén)的硬件電路檢測(cè)按鍵,這樣設(shè)計(jì)會(huì)使得電路變得復(fù)雜,成本增加, 編碼鍵盤(pán)能夠由硬件邏輯自動(dòng)提供與鍵對(duì)應(yīng)的編碼,此外,一般還具有去抖動(dòng)和多鍵、竄鍵保護(hù)電路,這種鍵盤(pán)使用方便,但需要較多的硬件,價(jià)格較貴,一般的單片機(jī)應(yīng)用系統(tǒng)較少采用。 按鍵按照接口原理可分為編碼鍵盤(pán)與非編碼鍵盤(pán)兩類(lèi),這兩類(lèi)鍵盤(pán)的主要區(qū)別是識(shí)別鍵符及給出相應(yīng)鍵碼的方法。前者造價(jià)低,后者壽命長(zhǎng)。 青島理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 25 按鍵處理部分 按鍵處理是本設(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)該避免的。 軟件設(shè)計(jì)部分主要是要處理好按鍵掃描和 USB 接口芯片的數(shù)據(jù)傳輸問(wèn)題,按鍵掃描部分利用單片機(jī)監(jiān)測(cè)處理,實(shí)時(shí)性好。許多應(yīng)用用 C 比其他語(yǔ)言編程更方便和有效。 C 不是一種大語(yǔ)言,不是為任何特殊應(yīng)用領(lǐng)域而設(shè)計(jì)。 本設(shè)計(jì)采用的開(kāi)發(fā)環(huán)境為 Keil uVision3,開(kāi)發(fā)語(yǔ)
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1