版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)說明書</b></p><p> 課題名稱: 微機(jī)原理 </p><p> 設(shè)計(jì)題目: 設(shè)計(jì)一個(gè)16鍵的鍵盤系統(tǒng) </p><p> 專業(yè)班級(jí): </p><p>
2、 學(xué)生姓名: </p><p> 學(xué) 號(hào) : </p><p><b> 目 錄</b></p><p><b> 設(shè)計(jì)目的</b></p><p><b>
3、 設(shè)計(jì)原理與分析</b></p><p><b> 所選元件清單</b></p><p><b> 課程設(shè)計(jì)心得</b></p><p><b> 課程設(shè)計(jì)目的</b></p><p> 了解鍵盤電路的工作原理。</p><p>
4、 本實(shí)驗(yàn)要求在實(shí)驗(yàn)臺(tái)上,用并行接口實(shí)驗(yàn)卡PPI8255為PC機(jī)擴(kuò)展可編程并行接口;利用實(shí)驗(yàn)卡上的8位撥動(dòng)開關(guān)提供輸入數(shù)據(jù),用8個(gè)LED指示燈顯示輸出結(jié)果;用單脈沖按鈕PI提供輸入選通脈沖/STBA模擬輸入設(shè)備送數(shù),用單脈沖按鈕PO提供輸出應(yīng)答脈沖/ACKA和/ACKB模擬輸出設(shè)備取數(shù)。</p><p> 掌握鍵盤接口電路的編程方法。</p><p> 設(shè)計(jì)人機(jī)界面接口,要求在微機(jī)屏幕上
5、動(dòng)態(tài)地顯示當(dāng)前實(shí)驗(yàn)的內(nèi)容和實(shí)驗(yàn)的結(jié)果,包括8255A的工作方式,輸入的數(shù)據(jù)和輸出的結(jié)果</p><p> 設(shè)計(jì)人機(jī)界面接口,要求在微機(jī)屏幕上,以菜單方式列出并行接口8255A原理實(shí)驗(yàn)的內(nèi)容,并根據(jù)實(shí)驗(yàn)內(nèi)容設(shè)置好工作方式選擇跳線開關(guān),用戶可以通過鍵盤選擇實(shí)驗(yàn)的內(nèi)容。</p><p><b> 方式0</b></p><p> 8255為方式
6、0、A口輸入、B口輸出 ,可用無(wú)條件傳送方式控制輸入/出。</p><p><b> 方式1</b></p><p> 其它要求同方式0,改用查詢方式控制輸入/出,用中斷方式也可以,通過讀取C口的狀態(tài)字來獲取狀態(tài)。 </p><p><b> 方式2</b></p><p> 使A口既能接受
7、開關(guān)狀態(tài)又能控制LED指示燈顯示;要求先接收A口的開關(guān)數(shù)據(jù),可用查詢方式控制輸入/出。 </p><p> 第2章設(shè)計(jì)原理與分析</p><p><b> 2.1、實(shí)驗(yàn)原理:</b></p><p> 1、識(shí)別鍵的閉合,通常采用行掃描法和行反轉(zhuǎn)法。</p><p> 行掃描法是使鍵盤上某一行線為低電平,而其余
8、行接高電平,然后讀取列值,如所讀列值中某位為低電平,表明有鍵按下,否則掃描下一行,直到掃完所有行。</p><p> 本實(shí)驗(yàn)例程采用的是行反轉(zhuǎn)法。</p><p> 行反轉(zhuǎn)法識(shí)別鍵閉合時(shí),要將行線接一并行口,先讓它工作于輸出方式,將列線也接到一個(gè)并行口,先讓它工作于輸入方式,程序使CPU通過輸出端口往各行線上全部送低電平,然后讀入列線值,如此時(shí)有某鍵被按下,則必定會(huì)使某一列線值為0。然
9、后,程序?qū)蓚€(gè)并行端口進(jìn)行方式設(shè)置,使行線工作于輸入方式,列線工作于輸出方式,并將剛才讀得的列線值從列線所接的并行端口輸出,再讀取行線上的輸入值,那么,在閉合鍵所在的行線上的值必定為0。這樣,當(dāng)一個(gè)鍵被按下時(shí),必定可以讀得一對(duì)唯一的行線值和列線值。</p><p> 2、程序設(shè)計(jì)時(shí),要學(xué)會(huì)靈活地對(duì)8255A的各端口進(jìn)行方式設(shè)置??蓪⒏麈I對(duì)應(yīng)的鍵值(行線值、列線值)放在一個(gè)表中,將要顯示的0~F字符放在另一個(gè)表中
10、,通過查表來確定按下的是哪一個(gè)鍵并正確顯示出來。</p><p> 3、利用實(shí)驗(yàn)箱上的8255A可編程并行接口芯片和矩陣鍵盤,編寫程序,做到在鍵盤上每按一個(gè)數(shù)字鍵(0~F),用發(fā)光二極管將該代碼顯示出來。</p><p><b> 2.2、實(shí)驗(yàn)步驟:</b></p><p> 將鍵盤RL10~RL17接8255A的PB0~PB7;KA10
11、~KA12接8255A的PA0~PA2;PC0~PC7接發(fā)光二極管的L1~L8;8255A芯片的片選信號(hào)8255CS接CS0。</p><p> 2.3、實(shí)驗(yàn)電路: </p><p><b> 圖2-1實(shí)驗(yàn)電路圖</b></p><p><b> 2.4、程序框圖:</b></p><p>&
12、lt;b> 圖2-2程序框圖</b></p><p> 2.5、程序接線圖:</p><p> 鍵盤 RL10接 8255A PB0</p><p> 鍵盤 RL11接 8255A PB1</p><p> 鍵盤 RL12接 8255A PB2</p><p> 鍵盤 RL13接 8255
13、A PB3</p><p> 鍵盤 RL14接 8255A PB4</p><p> 鍵盤 RL15接 8255A PB5</p><p> 鍵盤 RL16接 8255A PB6</p><p> 鍵盤 RL17接 8255A PB7</p><p> 鍵盤KA10接 8255A PA0</p>
14、<p> 鍵盤KA12接 8255A PA1</p><p> 鍵盤KA12接 8255A PA28</p><p> 鍵盤PC0 發(fā)光二極管L1</p><p> 鍵盤PC1 發(fā)光二極管 L2</p><p> 鍵盤PC2 發(fā)光二極管 L3</p><p> 鍵盤PC3 發(fā)光二
15、極管 L4</p><p> 鍵盤PC4 發(fā)光二極管 L5</p><p> 鍵盤PC5 發(fā)光二極管 L6</p><p> 鍵盤PC6 發(fā)光二極管 L7</p><p> 鍵盤PC7 發(fā)光二極管 L8</p><p> 8255A芯片的片選信號(hào)8255CS接CS0</p><p>&
16、lt;b> 2.6、參考程序:</b></p><p><b> T8.ASM </b></p><p> NAME t8 ;8255鍵盤實(shí)驗(yàn)</p><p> PA EQU 0CFA0H</p><p> PB EQU PA+1</p><p> PC0 EQU P
17、B+1</p><p> PCTL EQU PC0+1</p><p> CSEG AT 4000H</p><p> LJMP START</p><p> CSEG AT 4100H</p><p> START: MOV 42H,#0FFH ;42H中放顯示的字符碼,初值為0FFH</p>
18、<p> STA1: MOV DPTR,#PCTL ;設(shè)置控制字,ABC口工作于方式0</p><p> ;AC口輸出而B口用于輸入</p><p> MOV A,#82H</p><p> MOVX @DPTR,A</p><p> LINE: MOV DPTR,#PC0 ;將字符碼從C口輸出顯示</p>
19、<p><b> MOV A,42H</b></p><p><b> CPL A</b></p><p> MOVX @DPTR,A</p><p> MOV DPTR,#PA ;從A口輸出全零到鍵盤的列線</p><p> MOVX @DPTR,A</p>&
20、lt;p> MOV DPTR,#PB ;從B口讀入鍵盤行線值</p><p> MOVX A,@DPTR</p><p> MOV 40H,A ;行線值存于40H中</p><p> CPL A ;取反后如為全零</p><p> ;表示沒有鍵閉合,繼續(xù)掃描</p><p><b> JZ
21、LINE</b></p><p> MOV R7,#10H ;有鍵按下,延時(shí)10MS去抖動(dòng)</p><p> DL0: MOV R6,#0FFH</p><p> DL1: DJNZ R6,DL1</p><p> DJNZ R7,DL0</p><p> MOV DPTR,#PCTL ;重置控制
22、字,讓A為輸入,BC為輸出</p><p> MOV A,#90H</p><p> MOVX @DPTR,A</p><p><b> MOV A,40H</b></p><p> MOV DPTR,#PB ;剛才讀入的行線值取出從B口送出</p><p> MOVX @DPTR,A&
23、lt;/p><p> MOV DPTR,#PA ;從A口讀入列線值</p><p> MOVX A,@DPTR</p><p> MOV 41H,A ;列線值存于41H中</p><p> CPL A ;取反后如為全零</p><p> JZ STA1 ;表示沒有鍵按下</p><p>
24、 MOV DPTR,#TABLE ;TABLE表首地址送DPTR</p><p> MOV R7,#18H ;R7中置計(jì)數(shù)值16</p><p> MOV R6,#00H ;R6中放偏移量初值</p><p> TT: MOVX A,@DPTR ;從表中取鍵碼前半段字節(jié),行線值與實(shí)</p><p> CJNE A,40H,NN1 ;際
25、輸入的行線值相等嗎?不等轉(zhuǎn)NN1</p><p> INC DPTR ;相等,指針指向后半字節(jié),即列線值</p><p> MOVX A,@DPTR ;列線值與實(shí)際輸入的列線值</p><p> CJNE A,41H,NN2 ;相等嗎?不等轉(zhuǎn)NN2</p><p> MOV DPTR,#CHAR ;相等,CHAR表基址和R6中的偏移量
26、</p><p> MOV A,R6 ;取出相應(yīng)的字符碼</p><p> MOVC A,@A+DPTR</p><p> MOV 42H,A ;字符碼存于42H</p><p> BBB: MOV DPTR,#PCTL ;重置控制字,讓AC為輸出,B為輸入</p><p> MOV A,#82H</p
27、><p> MOVX @DPTR,A</p><p> AAA: MOV A,42H ;將字符碼從C口送到二極管顯示</p><p> MOV DPTR,#PC0</p><p><b> CPL A</b></p><p> MOVX @DPTR,A</p><p>
28、; MOV DPTR,#PA ;判斷按下的鍵是否釋放</p><p><b> CLR A</b></p><p> MOVX @DPTR,A</p><p> MOV DPTR,#PB</p><p> MOVX A,@DPTR</p><p><b> CPL A<
29、/b></p><p> JNZ AAA ;沒釋放轉(zhuǎn)AAA</p><p> MOV R5,#2 ;已釋放則延時(shí)0.2秒,減少總線負(fù)擔(dān)</p><p> DEL1: MOV R4,#200</p><p> DEL2: MOV R3,#126</p><p> DEL3: DJNZ R3,DEL3<
30、;/p><p> DJNZ R4,DEL2</p><p> DJNZ R5,DEL1</p><p> JMP START ;轉(zhuǎn)START</p><p> NN1: INC DPTR ;指針指向后半字節(jié)即列線值</p><p> NN2: INC DPTR ;指針指向下一鍵碼前半字節(jié)即行線值</p>
31、;<p> INC R6 ;CHAR表偏移量加一</p><p> DJNZ R7,TT ;計(jì)數(shù)值減一,不為零則轉(zhuǎn)TT繼續(xù)查找</p><p><b> JMP BBB</b></p><p><b> TABLE: </b></p><p> DW 0FE06H,0FD06
32、H,0FB06H,0F706H;TABLE為鍵值表,每個(gè)鍵位占</p><p> DW 0BF06H,07F06H,0FE05H,0FD05H; 兩個(gè)字節(jié),第一個(gè)字節(jié)為行</p><p> DW 0EF05H,0DF05H,0BF05H,07F05H ;線值,第二個(gè)為列線值</p><p> DW 0FB03H,0F703H,0EF03H,0DF03H;<
33、;/p><p> CHAR: DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H ;字符碼表</p><p> DB 0AH,0BH,0CH,0DH,0EH,0FH,10H,11H,12H,13H</p><p> DB 14H,15H,16H,17H</p><p><b> END</
34、b></p><p> 第3章所選元件清單</p><p><b> 3.1元件清單:</b></p><p><b> 表3-1元件清單</b></p><p> 3.2 程序?qū)嶋H接線</p><p> 數(shù)碼管的不同筆段的組合構(gòu)成了不同字符的字形。為了獲得
35、不同的字形,各筆段所加的電平也不同,因此各個(gè)字形所形成的編碼是不一樣的。例如,對(duì)于共陽(yáng)極數(shù)碼管,如果要顯示字符2,則筆段a、b、g、e、d發(fā)光,對(duì)應(yīng)的引腳為低電平;其余各筆段不發(fā)光,對(duì)應(yīng)的引腳為該電平。所以字符2的字形編碼為如 dp gfedcba=10100100B=A4H。</p><p> 陰極數(shù)碼管的字形編碼與用陽(yáng)極數(shù)碼管的字形編碼是邏輯“非”的關(guān)系。根據(jù)上述編碼方法可以得出數(shù)碼管顯示的字符與對(duì)應(yīng)的字形
36、編碼的關(guān)系,如表3-2所示</p><p> 表3-2 數(shù)碼表的字形編碼表</p><p> 第4章 課程設(shè)計(jì)心得</p><p> 通過這次單片機(jī)課設(shè),我更加清晰的認(rèn)識(shí)了到了單片機(jī)內(nèi)的引腳。</p><p> 單片機(jī)的40個(gè)引腳按引腳功能大致可分為4個(gè)種類:電源、時(shí)鐘、控制和I/O引腳。 </p><p>
37、<b> ?、?電源: </b></p><p> ⑴ VCC - 芯片電源,接+5V; </p><p> ?、?VSS - 接地端; (用萬(wàn)用表測(cè)試單片機(jī)引腳電壓一般為0v或者5v,這是標(biāo)準(zhǔn)的TTL電平。但有時(shí)候在單片機(jī)程序正在工作時(shí)候測(cè)試結(jié)果并不是這個(gè)值而是介于0v-5v之間,其實(shí)這是萬(wàn)用表的響應(yīng)速度沒這么快而已,在某一個(gè)瞬間單片機(jī)引腳電壓仍保持在0v或者
38、5v。) </p><p> ?、?時(shí)鐘:XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。 </p><p> ⒊ 控制線:控制線共有4根, </p><p> ?、?I/O線 : </p><p> ?、?0C51共有4個(gè)8位并行I/O端口:P0、P1、P2、P3口,共32個(gè)引腳。 </p><p&g
39、t; ?、芇3口還具有第二功能,用于特殊信號(hào)輸入輸出和控制信號(hào)(屬控制總線) </p><p><b> P3口第二功能 </b></p><p> P30 RXD 串行輸入口 、P31 TXD 串行輸出口、P32 INT0 外部中斷0(低電平有效)、 P33 INT1 外部中斷1(低電平有效) 、P34 T0 定時(shí)計(jì)數(shù)器0 、P35 T1 定時(shí)計(jì)數(shù)器1 、P3
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字電路課程設(shè)計(jì)——設(shè)計(jì)一個(gè)簡(jiǎn)易鍵盤
- java課程設(shè)計(jì)---設(shè)計(jì)一個(gè)記事本
- 課程設(shè)計(jì)--設(shè)計(jì)一個(gè)矩陣運(yùn)算器
- 微機(jī)接口課程設(shè)計(jì)--設(shè)計(jì)一個(gè)模擬汽車控制系統(tǒng)
- 課程設(shè)計(jì)用c++設(shè)計(jì)一個(gè)排課程序
- 課程設(shè)計(jì)用c--設(shè)計(jì)一個(gè)排課程序
- 軟鍵盤系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)聊天程序
- 課程設(shè)計(jì)--設(shè)計(jì)一個(gè)小學(xué)算術(shù)運(yùn)算測(cè)試軟件
- 設(shè)計(jì)一個(gè)gui猜數(shù)字游戲程序課程設(shè)計(jì)
- 手機(jī)鍵盤課程設(shè)計(jì)
- eda課程設(shè)計(jì)一個(gè)彩燈控制器
- java課程設(shè)計(jì)--設(shè)計(jì)一個(gè)貪吃蛇游戲程序
- 鍵盤測(cè)試器的設(shè)計(jì)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--設(shè)計(jì)一個(gè)訂戶訂閱報(bào)刊的應(yīng)用系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)---鍵盤接口課程設(shè)計(jì)
- c++產(chǎn)品管理系統(tǒng)-課程設(shè)計(jì)--設(shè)計(jì)一個(gè)簡(jiǎn)單的產(chǎn)品管理系統(tǒng)
- 鍵盤監(jiān)聽程序課程設(shè)計(jì)
- 設(shè)計(jì)一個(gè)完整的數(shù)據(jù)通信系統(tǒng)--數(shù)據(jù)通信課程設(shè)計(jì)
- java課程設(shè)計(jì)--編寫一個(gè)記事本程序
評(píng)論
0/150
提交評(píng)論