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

正文內(nèi)容

基于51單片機(jī)的usb鍵盤設(shè)計(jì)與實(shí)現(xiàn)本科生畢業(yè)設(shè)計(jì)論文(已改無錯(cuò)字)

2022-10-10 20:05:38 本頁面
  

【正文】 GL_N OD8 GoodLinkLED 指示器(低有效) 22 XTAL1 I 晶振連接端 1( 6MHz) 23 XTAL2 O 晶振連接端 2( 6MHz)。如果采用外部時(shí)鐘信號(hào)取代晶振,可連接 XTAL1,XTAL2 應(yīng)當(dāng)懸空 24 VCC P 電源電壓( ) ,要使器件工作在 ,對(duì) VCC 和腳都 提供 25 D+ A USB D數(shù)據(jù)線 26 D A USB D+數(shù)據(jù)線 27 P 調(diào)整輸出。要使器件工作在 ,對(duì) VCC和腳 都提供 28 A0 I 地址位。 A0=1 選擇命令指令, A0=0 選擇數(shù)據(jù)。該位在多路地址 /數(shù)據(jù)總線配置時(shí)應(yīng)接高電平 隨著科技的發(fā)展,芯片集成度越來越高,封裝也變得越來越小, PDIUSBD12 芯片不是采用標(biāo)準(zhǔn) DIP 直插的引腳,因而需要有一個(gè) SOP 轉(zhuǎn) DIP 的轉(zhuǎn)接板,這樣方便采用電路板設(shè)計(jì)硬件電路,同時(shí)也方便程序下載完成后系統(tǒng)的調(diào)試。即使有了轉(zhuǎn)接板,采用貼片封裝的 PDIUSBD12 芯片也需要手工焊接在轉(zhuǎn)接板上,這一點(diǎn)需要特別注意,不能長時(shí)間焊接,以免芯片過熱以致?lián)p壞。 PDIUSBD12 與一般需要提供時(shí)鐘信號(hào)的芯片不同,該芯片需要標(biāo)準(zhǔn)的 6MHz 的時(shí)鐘信號(hào),因而采用晶振的時(shí)候需要特別注意,不能隨意選擇,這一點(diǎn)與 51 系列 單片機(jī)能有選擇的采用晶振的情況不同。 芯片內(nèi)部有各個(gè)寄存器,根據(jù)寄存器相關(guān)命令編寫 C 語言程序(可以采用由局部到整體的方法),這樣對(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ā)生。 三江學(xué)院 2020屆本科生畢業(yè)設(shè)計(jì)(論文) 14 由于沒有采用 PCB 制板,手工焊接要十分注意電源干擾的問題,電源和地之間要加上濾波電容。 USB 接口芯片與單片機(jī)之間的引線要盡量短,本設(shè)計(jì)采用并行傳輸,數(shù)據(jù)傳輸占用了 8 個(gè) IO 口 ,個(gè)引腳連線要盡量平行,避免交叉,以免信號(hào)線相互干擾,造成數(shù)據(jù)傳輸不爭取或者 USB 總線不能正常復(fù)位。 PDIUSBD12芯片的 GoodLinkLED指示器短接普通發(fā)光二極管時(shí),要注意連接限流電阻,不能超過該 芯片的輸入電流額定值,否則可能造成芯片工作不正常,并且與電腦或者其他 USB Host 芯片不能正常建立連接。 對(duì)該芯片的各個(gè)管腳和具體功能建立了一定認(rèn)識(shí)的基礎(chǔ)上,就能順利完成各部分硬件電路的設(shè)計(jì)和軟件功能調(diào)試。 USB 接口芯片硬件設(shè)計(jì) 圖 PDIUSBD12 接口原理圖 USB 接口芯片端點(diǎn)描述 PDIUSBD12 的端點(diǎn)適用于不同類型的設(shè)備 ,例如圖像 打印機(jī) 海量存儲(chǔ)器和通信設(shè)備端點(diǎn)可通過 Set Mode 命令配置為 4 種不同的模式,分別為: 表 端點(diǎn)模式 模式 0 NonISO 模式 非同步傳輸 模式 1 ISOOUT 模式 同步輸出傳輸 三江學(xué)院 2020屆本科生畢業(yè)設(shè)計(jì)(論文) 15 模式 2 ISOIN 模式 同步輸入傳輸 模式 3 ISOIO 模式 同步輸入輸出傳輸 4 種模式具體說明見下表: 表 模式 0(非同步模式) 端點(diǎn)數(shù) 端點(diǎn)索引 傳輸類型 端點(diǎn)類型 方向 最大信息包規(guī)格(字節(jié)) 0 0 1 控制輸出 控制輸入 默認(rèn) 默認(rèn) 輸出 輸入 16 16 1 2 3 普通輸出 普通輸入 普通 普通 輸出 輸入 16 16 2 4 5 普通輸出 普通輸入 普通 普通 輸出 輸入 464 464 表 模式 1(同步輸出模式) 端點(diǎn)數(shù) 端點(diǎn)索引 傳輸類型 端點(diǎn)類型 方向 最大信息包規(guī)格(字節(jié)) 0 0 1 控制輸出 控制輸入 默認(rèn) 默認(rèn) 輸出 輸入 16 16 1 2 3 普通輸出 普通輸入 普通 普通 輸出 輸入 16 16 2 4 同步輸出 同步 輸出 4128 表 模式 2(同步輸入模式) 端點(diǎn)數(shù) 端點(diǎn)索引 傳輸類型 端點(diǎn)類型 方向 最大信息包規(guī)格(字節(jié)) 0 0 1 控制輸出 控制輸入 默認(rèn) 默認(rèn) 輸出 輸入 16 16 1 2 3 普通輸出 普通輸入 普通 普通 輸出 輸入 16 16 三江學(xué)院 2020屆本科生畢業(yè)設(shè)計(jì)(論文) 16 2 4 同步輸入 同步 輸入 4128 表 模式 3(同步輸入 /輸出模式) 端點(diǎn)數(shù) 端點(diǎn)索引 傳輸類型 端點(diǎn)類型 方向 最大信息包規(guī)格(字節(jié)) 0 0 1 控制輸出 控制輸入 默認(rèn) 默認(rèn) 輸出 輸入 16 16 1 2 3 普通輸出 普通輸入 普通 普通 輸出 輸入 16 16 2 4 5 同步輸出 同步輸入 同步 同步 輸出 輸入 464 464 表格說明: 主端點(diǎn) (端點(diǎn) 2)在有些方面是比較特別的 ,它是進(jìn)行吞吐大數(shù)據(jù)的主要端點(diǎn) ,同樣地它執(zhí)行主機(jī)的特性以減輕傳輸大數(shù)據(jù)的任務(wù) : 雙緩沖,允許 USB 與本地 CPU 之間的并行讀寫操作,這樣就增加了數(shù)據(jù)的吞吐量緩沖區(qū)切換是自動(dòng)處理的,這導(dǎo)致了透明的緩沖區(qū)操作。 支持 DMA(直接存儲(chǔ)器訪問)操作,可以和對(duì)其它端點(diǎn)的正常 I/O 操作交叉進(jìn)行。 DMA 操作中的自動(dòng)指針處理。在跨過緩沖區(qū)邊界時(shí)不需要本地 CPU 的干預(yù)。 可配置為同步傳輸或非同步(批量和中斷)傳輸。 USB 接口芯片命令 系對(duì)一個(gè)具體的 USB 接口芯片,需要根據(jù)其相關(guān)寄存器或者命令字來驅(qū)動(dòng)。下表指出了 PDIUSBD12 芯片的命令字: 表 PDIUSBD12 命令字說明 命令名 接受者 編碼 數(shù)據(jù) 初始化命令 設(shè)置地址 /使能 器件 D0H 寫 1 字節(jié) 設(shè)置端點(diǎn)使能 器件 D8H 寫 1 字節(jié) 設(shè)置模式 器件 F3H 寫 2 字節(jié) 設(shè)置 DMA 器件 FBH 寫 /讀 1 字節(jié) 三江學(xué)院 2020屆本科生畢業(yè)設(shè)計(jì)(論文) 17 數(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é) 寫緩沖區(qū) 選擇的端點(diǎn) F0H 寫 N 字節(jié) 設(shè)置端點(diǎn)狀態(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é) 應(yīng)答設(shè)置 選擇的端點(diǎn) F1H 無 緩沖區(qū)清零 選擇的端點(diǎn) F2H 無 使緩沖區(qū)有效 選擇的端點(diǎn) FAH 無 普通命令 發(fā)送回復(fù) F6H 無 讀當(dāng)前幀數(shù)目 F5H 讀 1 或 2 字節(jié) 三江學(xué)院 2020屆本科生畢業(yè)設(shè)計(jì)(論文) 18 USB 鍵盤硬件設(shè)計(jì) 圖 USB鍵盤硬件原理圖 三江學(xué)院 2020屆本科生畢業(yè)設(shè)計(jì)(論文) 19 第 4 章 系統(tǒng)軟件設(shè)計(jì) 單片機(jī)開發(fā)中除必要的硬件外,同樣離不開軟件,匯編語言源程序要變?yōu)?CPU 可以執(zhí)行的機(jī)器碼有兩種方法,一種是手工匯編,另一種是機(jī)器匯編,機(jī)器匯編是通過匯編軟件將源程序變?yōu)闄C(jī)器碼。隨著單片機(jī)開 發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級(jí)語言開發(fā),單片機(jī)的開發(fā)軟件也在不斷發(fā)展, Keil 軟件是目前最流行開發(fā) MCS51 系列單片機(jī)的軟件。 Keil 提供了包括 C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境( uVision)將這些部份組合在一起。Keil 軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全 Windows 界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到其生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理 解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢。 本設(shè)計(jì)采用的開發(fā)環(huán)境為 Keil uVision4,開發(fā)語言為 C 語言。 C 語言是一個(gè)通用的編程語言 ,它提供高效的代碼 ,結(jié)構(gòu)化的編程和豐富的操作符。 C不是一種大語言,不是為任何特殊應(yīng)用領(lǐng)域而設(shè)計(jì)。它一般來說限制較少,可以為各種軟件任務(wù)提供方便和有效的編程。許多應(yīng)用用 C 比其他語言編程更方便和有效。與匯編相比, C 語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。 軟件設(shè)計(jì)部分主要是要處理好按鍵掃描和 USB 接口芯片的數(shù)據(jù)傳輸問題,按鍵掃描部分利用單片機(jī)監(jiān) 測處理,實(shí)時(shí)性好。以下為各部分軟件設(shè)計(jì)的詳細(xì)介紹。 三江學(xué)院 2020屆本科生畢業(yè)設(shè)計(jì)(論文) 20 固件編程的實(shí)現(xiàn) USB 接口芯片工作流程圖 圖 接口芯片工作流程圖 初始化按鍵和定時(shí)器 連接 USB 有中斷事件發(fā)生? N Y 等待 USB 中斷 有按鍵事件發(fā)生? 判斷中斷類型 轉(zhuǎn)中斷處理 Y 發(fā)送 USB 數(shù)據(jù)包 N 開始 三江學(xué)院 2020屆本科生畢業(yè)設(shè)計(jì)(論文) 21 PDIUSBD12 命令接口 詳細(xì)程序見附錄 A。 USB 中斷服務(wù)程序 詳細(xì)程序見附錄 B。 按鍵處理流程圖 圖 按鍵處理流程圖 5ms 中斷時(shí)間到 按鍵與上次相同? 讀取鍵值 Y N 判斷模式正確? 鍵值處理 Y N USB 接口忙? N 發(fā)送按鍵值 Y 開始 三江學(xué)院 2020屆本科生畢業(yè)設(shè)計(jì)(論文) 22 USB 鍵盤處理程序 /******************************************************************** 函數(shù)功能:定時(shí)器 0 中斷處理。 入口參數(shù):無。 返 回:無。 備 注: 晶體約 5ms 中斷一次。 ********************************************************************/ void Timer0Isr(void) interrupt 1 { //定時(shí)器 0 重裝,定時(shí)間隔為 5ms,加 15 是為了修正重裝所花費(fèi)時(shí)間 //這個(gè)值可以通過軟件仿真來確定,在這里設(shè)置斷點(diǎn),調(diào)整使兩次運(yùn)行 //時(shí)間差 剛好 為 5ms 即可。 TH0=(65536Fclk/1000/12*5+15)/256。 TL0=(65536Fclk/1000/12*5+15)%256。 // if(!KeyCanChange)return。 //如果正在處理按 鍵,則不再掃描鍵盤 //開始鍵盤掃描 //保存按鍵狀態(tài)到當(dāng)前按鍵情況 //KeyCurrent 總共有 8 個(gè) bit //當(dāng)某個(gè)開關(guān)按下時(shí),對(duì)應(yīng)的 bit 為 1 KeyCurrent=GetKeyValue()。 //讀取鍵值, GetKeyValue()其實(shí)是個(gè)宏,不是函數(shù), //這里故意寫成函數(shù)的樣子,美觀。它的定義在 // 文件中 if(KeyCurrent!=KeyOl
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1