第一篇:矩陣鍵盤(pán)設(shè)計(jì)實(shí)驗(yàn)報(bào)告
南 京 林 業(yè) 大 學(xué)
實(shí)驗(yàn)報(bào)告
基于AT89C51 單片機(jī)4x4矩陣鍵盤(pán)接口電路設(shè)計(jì)
課
程 院
系 班
級(jí) 學(xué)
號(hào) 姓
名 指導(dǎo)老師
機(jī)電一體化設(shè)計(jì)基礎(chǔ) 機(jī)械電子工程學(xué)院
楊雨圖
2013年9月26日
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
一、實(shí)驗(yàn)?zāi)康?/p>
1、掌握鍵盤(pán)接口的基本特點(diǎn),了解獨(dú)立鍵盤(pán)和矩陣鍵盤(pán)的應(yīng)用方法。
2、掌握鍵盤(pán)接口的硬件設(shè)計(jì)方法,軟件程序設(shè)計(jì)和貼士排錯(cuò)能力。
3、掌握利用Keil51軟件對(duì)程序進(jìn)行編譯。
4、用Proteus軟件繪制“矩陣鍵盤(pán)掃描”電路,并用測(cè)試程序進(jìn)行仿真。
5、會(huì)根據(jù)實(shí)際功能,正確選擇單片機(jī)功能接線,編制正確程序。對(duì)實(shí)驗(yàn)結(jié)果能做出分析和解釋?zhuān)軐?xiě)出符合規(guī)格的實(shí)驗(yàn)報(bào)告。
二、實(shí)驗(yàn)要求
通過(guò)實(shí)訓(xùn),學(xué)生應(yīng)達(dá)到以下幾方面的要求:
素質(zhì)要求
1.以積極認(rèn)真的態(tài)度對(duì)待本次實(shí)訓(xùn),遵章守紀(jì)、團(tuán)結(jié)協(xié)作。
2.善于發(fā)現(xiàn)數(shù)字電路中存在的問(wèn)題、分析問(wèn)題、解決問(wèn)題,努力培養(yǎng)獨(dú)立工作能力。
能力要求
1.模擬電路的理論知識(shí)
2.脈沖與數(shù)字電路的理念知識(shí)
3.通過(guò)模擬、數(shù)字電路實(shí)驗(yàn)有一定的動(dòng)手能力 4.能熟練的編寫(xiě)8951單片機(jī)匯編程序 5.能夠熟練的運(yùn)用仿真軟件進(jìn)行仿真
三、實(shí)驗(yàn)工具
1、軟件:Proteus軟件、keil51。
2、硬件:PC機(jī),串口線,并口線,單片機(jī)開(kāi)發(fā)板
四、實(shí)驗(yàn)內(nèi)容
1、掌握并理解“矩陣鍵盤(pán)掃描”的原理及制作,了解各元器件的參數(shù)及格
元器件的作用。
2、用keil51測(cè)試軟件編寫(xiě)AT89C51單片機(jī)匯編程序
3、用Proteus軟件繪制“矩陣鍵盤(pán)掃描”電路原理圖。
4、運(yùn)用仿真軟件對(duì)電路進(jìn)行仿真。
五.實(shí)驗(yàn)基本步驟
1、用Proteus繪制“矩陣鍵盤(pán)掃描”電路原理圖。
2、編寫(xiě)程序使數(shù)碼管顯示當(dāng)前閉合按鍵的鍵值。
3、利用Proteus軟件的仿真功能對(duì)其進(jìn)行仿真測(cè)試,觀察數(shù)碼管的顯示狀
態(tài)和按鍵開(kāi)關(guān)的對(duì)應(yīng)關(guān)系。
4、用keil51軟件編寫(xiě)程序,并生成HEX文件。
5、根據(jù)繪制“矩陣鍵盤(pán)掃描”電路原理圖,搭建相關(guān)硬件電路。
6、用通用編程器或ISP下載HEX程序到MCU。
7、檢查驗(yàn)證結(jié)果。
第 1 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
六、實(shí)驗(yàn)具體內(nèi)容
使用單片機(jī)的P1口與矩陣式鍵盤(pán)連接時(shí),可以將P1口低4位的4條端口線定義為行線,P1口高4位的4條端口線定義為列線,形成4*4鍵盤(pán),可以配置16個(gè)按鍵,將單片機(jī)P2口與七段數(shù)碼管連接,當(dāng)按下矩陣鍵盤(pán)任意鍵時(shí),數(shù)碼管顯示該鍵所在的鍵號(hào)。
1、電路圖
2、程序流程圖
第 2 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
3、程序源碼
ORG 00H K1:
MOV
MOV
ANL
CJNE K2:
CALL
MOV
ANL
CJNE
JMP OVER:
CALL
MOV
ANL
CJNE
JMP OVER1:
MOV
MOV
ANL
CJNE
MOV
MOV
ANL
CJNE
MOV
MOV
ANL
CJNE
MOV
MOV
ANL
CJNE
LJMP ROW_0:
MOV SJMP
;起始地址00H P1, #0F0H
;設(shè)置P1.4~P1.7為輸入端口 A, P1
;從P1讀取所有列的值
A, #11110000B
;屏蔽掉無(wú)用的低4位,非列值 A, #11110000B, K1
;查詢(xún)直到所有的按鈕釋放
DELAY
;調(diào)用20ms延時(shí)子程序(省略)A, P1
;從P1讀取狀態(tài),看有沒(méi)有按鈕被按下A, #11110000B
;屏蔽掉無(wú)用的低4位,非列值 A, #11110000B, OVER;如果有按鈕按下,跳到OVER K2
;循環(huán)檢測(cè)
DELAY
;延時(shí)20ms防止抖動(dòng) A, P1
;從P1讀取狀態(tài) A, #11110000B
;屏蔽掉無(wú)用的位
A, #11110000B, OVER1;如果有按鈕按下,找到行 K2
;如果沒(méi)有按鈕按下,循環(huán)掃描 P1, #11111110B
;第0行輸出低電平A, P1
;讀所有的列 A, #11110000B
;屏蔽掉無(wú)用的位
A, #11110000B, ROW_0;如果第0行有按鈕按下,找列 P1, #11111101B
;第1行輸出低電平A, P1
;讀所有的列 A, #11110000B
;屏蔽掉無(wú)用的位
A, #11110000B, ROW_1;如果第1行有按鈕按下,找列 P1, #11111011B
;第2行輸出低電平A, P1
;讀所有的列 A, #11110000B
;屏蔽掉無(wú)用的位
A, #11110000B, ROW_2;如果第2行有按鈕按下,找列 P1, #11110111B
;第3行輸出低電平A, P1
;讀所有的列 A, #11110000B
;屏蔽掉無(wú)用的位
A, #11110000B, ROW_3;如果第3 行有按鈕按下,找列 K2
;如果沒(méi)有,則循環(huán)
DPTR, #KCODE0
;設(shè)置DPTR=第0行的起始地址 FIND
;找列
第 3 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
ROW_1:
MOV DPTR, #KCODE1
;設(shè)置DPTR=第1行的起始地址
SJMP FIND
;找列 ROW_2:
MOV DPTR, #KCODE2
;設(shè)置DPTR=第2行的起始地址
SJMP FIND
;找列 ROW_3:
MOV DPTR, #KCODE3
;設(shè)置DPTR=第3行的起始地址 FIND:
SWAP A FIND1:
RRC A
;看看是否進(jìn)位C為0
JNC MATCH
;如果是0,就跳到MATCH找鍵值
INC DPTR
;DPTR加1
SJMP FIND1
;循環(huán)查找 MATCH:
CLR A
;A=0
MOVC A, @A+DPTR
;用DPTR在數(shù)據(jù)表中找到鍵值裝入A
CLR P2.7
;置P2.0口為低,顯示數(shù)字
MOV P0, A
;顯示鍵值
LJMP K1
;循環(huán)
DELAY:
;延時(shí)子程序,1ms
MOV R1, #2
D1:
MOV R2, #248
DJNZ R2, $
DJNZ R1, D1
RET
;鍵值保存在以下的數(shù)據(jù)表中,可根據(jù)系統(tǒng)實(shí)際需要進(jìn)行修改
ORG 300H
;數(shù)據(jù)表起始地址
//KCODE0: DB 80H, 0C0H, 0C0H, 0C0H
;第0行 KCODE0: DB 0C0H,0F9H,0A4H,0B0H;第0行 KCODE1: DB 99H,92H,82H,0F8H
;第1行 KCODE2: DB 80H,90H,88H,83H;第2行 KCODE3: DB 0C6H,0A1H,86H,8EH
;第3行
END
4、仿真實(shí)驗(yàn)結(jié)果
當(dāng)矩陣鍵盤(pán)的0號(hào)鍵被按下時(shí),P0口的七段數(shù)碼管顯示的數(shù)據(jù)為0.如下圖1所以:
第 4 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
圖1
第 5 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
當(dāng)矩陣鍵盤(pán)的3號(hào)鍵被按下時(shí),P0口的七段數(shù)碼管顯示的數(shù)據(jù)為3.如下圖2所以:
圖2
第 6 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
第 7 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
第 8 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
第 9 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
當(dāng)矩陣鍵盤(pán)的D號(hào)鍵被按下時(shí),P0口的七段數(shù)碼管顯示的數(shù)據(jù)為d.如下圖3所以:
第 10 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
圖3
當(dāng)矩陣鍵盤(pán)的F號(hào)鍵被按下時(shí),P0口的七段數(shù)碼管顯示的數(shù)據(jù)為F.如下圖4所以:
圖4
5、實(shí)驗(yàn)板運(yùn)行結(jié)果
當(dāng)矩陣鍵盤(pán)的9號(hào)鍵被按下時(shí),P0口的七段數(shù)碼管顯示的數(shù)據(jù)為9.如下圖5所以:
第 11 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
第 12 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
第 13 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
第 14 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
第 15 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
圖5
第 16 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
第 17 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
第 18 頁(yè)
南京林業(yè)大學(xué)實(shí)驗(yàn)報(bào)告
第 19 頁(yè)
第二篇:矩陣鍵盤(pán)實(shí)驗(yàn)報(bào)告
自主學(xué)習(xí)用實(shí)驗(yàn) 矩陣鍵盤(pán)識(shí)別實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康?/p>
1、掌握 4×4 矩陣鍵盤(pán)的工作原理和鍵盤(pán)的掃描方式。
2、掌握鍵盤(pán)的去抖方法和鍵盤(pán)應(yīng)用程序的設(shè)計(jì)。
二、實(shí)驗(yàn)設(shè)備
1、PC 機(jī)一臺(tái);
2、開(kāi)放式模塊化單片機(jī)教學(xué)實(shí)驗(yàn)箱一臺(tái);
3、USB 下載線一根。
三、實(shí)驗(yàn)內(nèi)容
自行編制程序,用 51 單片機(jī)實(shí)現(xiàn) 4×4 矩陣鍵盤(pán)掃描,采用線反轉(zhuǎn)法;并實(shí)現(xiàn)當(dāng) S11按下時(shí)在數(shù)碼管上顯值“0”,當(dāng)S12按下時(shí)在數(shù)碼管上顯值“1”……,即依次將 S11 至S26按下,在數(shù)碼管上依次顯示十六進(jìn)制數(shù)“0-F”,矩陣鍵盤(pán)原理圖如圖 1-1 所示。單片機(jī)與數(shù)碼管接口電路原理圖如圖 1-2 所示。
圖 1-1 矩陣鍵盤(pán)接口電路
圖 1-2 數(shù)碼管接口電路原理圖
四、思考題
1.畫(huà)出所編程序的流程圖;
開(kāi)始Y判斷是否第一行有鍵按下N判斷是否第二行有鍵按下N判斷是否第三行有鍵按下N判斷是否第四行有鍵按下Y判斷是第幾個(gè)按鍵按下數(shù)碼管顯示對(duì)應(yīng)的數(shù)字Y判斷是第幾個(gè)按鍵按下數(shù)碼管顯示對(duì)應(yīng)的數(shù)字Y判斷是第幾個(gè)按鍵按下數(shù)碼管顯示對(duì)應(yīng)的數(shù)字判斷是第幾個(gè)按鍵按下數(shù)碼管顯示對(duì)應(yīng)的數(shù)字結(jié)束
2.若要實(shí)現(xiàn)2×4 矩陣鍵盤(pán),軟硬件作如何修改。
答:將行線P2^3, P2^4接線去掉。程序?qū)?yīng)部分P2=0xfd;P2=0xfe;刪掉。3.實(shí)驗(yàn)中有何故障、問(wèn)題出現(xiàn),是否得到解決?如何解決的? 問(wèn)題:顯示值對(duì)應(yīng)出錯(cuò)。
原來(lái)是共陽(yáng)段碼和共陰段碼弄相反了。
第三篇:矩陣教學(xué)設(shè)計(jì)
矩陣復(fù)習(xí)課 教學(xué)設(shè)計(jì)
江蘇省海州高級(jí)中學(xué) 申磊
一、教學(xué)內(nèi)容分析
《普通高中課程標(biāo)準(zhǔn)實(shí)驗(yàn)教科書(shū)·數(shù)學(xué)(選修4-2)》(蘇教版)。本節(jié)課程不是大學(xué)教材中矩陣內(nèi)容的簡(jiǎn)單下放,而是通過(guò)平面圖形的幾何變換來(lái)講解常見(jiàn)的簡(jiǎn)單二階矩陣,把矩陣作為一個(gè)研究平面圖形變換的基本工具,作為廣泛意義上的一種“代數(shù)”來(lái)學(xué)習(xí)和介紹。
二、設(shè)計(jì)思想
《標(biāo)準(zhǔn)》強(qiáng)調(diào)數(shù)學(xué)文化的重要作用,體現(xiàn)數(shù)學(xué)的文化的價(jià)值。數(shù)學(xué)教育不僅應(yīng)該幫助學(xué)生學(xué)習(xí)和掌握數(shù)學(xué)知識(shí)和技能,還應(yīng)該有助于學(xué)生了解數(shù)學(xué)的價(jià)值。讓學(xué)生逐步了解數(shù)學(xué)的思想方法、理性精神,體會(huì)數(shù)學(xué)家的創(chuàng)新精神,以及數(shù)學(xué)文明的深刻內(nèi)涵。
三、教學(xué)目標(biāo)
通過(guò)幾何變換討論二階方陣的乘法及性質(zhì)、矩陣的逆和矩陣的特征向量,矩陣的簡(jiǎn)單應(yīng)用。
四、教學(xué)重點(diǎn)和難點(diǎn)
重點(diǎn):通過(guò)幾何圖形變換,學(xué)習(xí)二階矩陣的基本概念、性質(zhì)和思想; 難點(diǎn):切變變換,逆變換(矩陣),特征值與特征向量。
五、教學(xué)過(guò)程設(shè)計(jì)
【課堂準(zhǔn)備】
1.選題:由教師根據(jù)本章教學(xué)目標(biāo)及重難點(diǎn)選擇適當(dāng)?shù)念}目制成導(dǎo)學(xué)案,印刷成導(dǎo)學(xué)案并提前一天發(fā)給學(xué)生;
2.做題:提前一天每位同學(xué)獨(dú)立完成導(dǎo)學(xué)案,然后學(xué)習(xí)小組內(nèi)部根據(jù)各自的做題情況展開(kāi)討論;
3.精彩展示:課前教師把任務(wù)分配到各個(gè)小組,由組長(zhǎng)確定每人的具體任務(wù),上臺(tái)來(lái)展示;
4.點(diǎn)評(píng):最后又其他組的成員給出點(diǎn)評(píng),不足之處再有教師補(bǔ)充。【教學(xué)過(guò)程】
1.出示課題:教師簡(jiǎn)明敘述本章內(nèi)容及重難點(diǎn)
2.交流、分享:(由教師主持。小組推薦發(fā)言人;以下記錄均為發(fā)言概述)基礎(chǔ)訓(xùn)練(學(xué)生在原位回答問(wèn)題,回答問(wèn)題方式:本題考查點(diǎn)是什么,答案是什么,怎么做?教師點(diǎn)評(píng))
?11??2??01??2?(1)學(xué)生1:函數(shù)小史計(jì)算:(1)?
(2)????????01??1??10???1?(2)教師點(diǎn)評(píng):掌握二階矩陣與平面列向量在乘法規(guī)則是解題的關(guān)鍵(3)學(xué)生2: 曲線xy=1繞坐標(biāo)原點(diǎn)逆時(shí)針旋轉(zhuǎn)90°后得到的曲線方程是__________,變換對(duì)應(yīng)的矩陣是_________.(4)教師帶頭鼓掌并簡(jiǎn)單評(píng)價(jià)
?02???10?(5)學(xué)生3:已知A=?,B=則AB=___________,BA=___________ ????21??3?2?(6)教師帶頭鼓掌并簡(jiǎn)單評(píng)價(jià)
?3?(7)學(xué)生4:設(shè)矩陣M??2?1??21???2?的逆矩陣是M?1??ab?,則a?c的值為
?cd????3?2?(8)教師帶頭鼓掌并簡(jiǎn)單評(píng)價(jià)
0?0??2x?y?x(9)學(xué)生5:已知A??,若A=B,求x,y.,B?????2?y??0?0x?2y?(10)教師點(diǎn)評(píng):兩個(gè)矩陣相等的充要條件是它們的行數(shù)與列數(shù)分別相等,并且對(duì)應(yīng)位置的元素也分別相等.?x??x???2x?5y?(11)學(xué)生6:已知變換???????,試將它寫(xiě)成矩陣的乘法形式.??y??y???x?2y?(12)教師點(diǎn)評(píng):一般地,對(duì)于平面向量變換T,如果變換規(guī)則為T(mén):?x??x???ax?by??y???y??=?cx?dy?,那么根據(jù)二階矩陣與平面列向量在乘法規(guī)則可以改寫(xiě)為???????x??x???ab??x?T:?????=?的矩陣形式.????y??y???cd??y?能力測(cè)試(學(xué)生上黑板展示,再有其他組同學(xué)給予點(diǎn)評(píng))
(13)學(xué)生7:已知在矩陣M的作用下點(diǎn)A(1,2)變成了點(diǎn)A′(11,5),點(diǎn)B(3,-1)變成了點(diǎn)B′(5,1),點(diǎn)C(x,0)變成了點(diǎn)C′(y,2),求(1)矩陣M;求(2)x、y值.(14)學(xué)生8點(diǎn)評(píng):求變換矩陣通常用待定系數(shù)法.
(15)學(xué)生9:求關(guān)于直線y=3x的反射變換對(duì)應(yīng)的矩陣A.
(16)學(xué)生10點(diǎn)評(píng):一般地若過(guò)原點(diǎn)的直線m的傾斜角為?,則關(guān)于直線m
?cos2?的反射變換矩陣為: A=??sin2?sin2?? ??cos2???x?(17)學(xué)生11:已知矩陣A??f(x)?,B??x1?x?,C???,若A=BC,?2a?求函數(shù)f(x)在[1,2] 上的最小值.(18)學(xué)生12點(diǎn)評(píng):(本題運(yùn)用了行矩陣與列矩陣的乘法規(guī)則及兩個(gè)矩陣相等的充要條件;求含參數(shù)的二次函數(shù)在閉區(qū)間上的最值問(wèn)題,通常需要分類(lèi)討論.(19)學(xué)生最值。
cos?sin?(??R),試求f(x)?x2?2x?3的13:若x?sin?cos???12??1?53M?????M?16?,求?(20)學(xué)生14:已知矩陣,向量3?????2??ab??k0?(21)學(xué)生15:記A??,其中k?R,作矩陣乘法SA,AS,,S?????cd??0k?S與單位矩陣、零矩陣的關(guān)系?
當(dāng)k>0時(shí),矩陣S對(duì)應(yīng)的變換TS有何幾何意義? 研究TS與伸壓變換的關(guān)系?
(22)學(xué)生16點(diǎn)評(píng):仔細(xì)體會(huì)兩個(gè)二階矩陣乘法可交換的條件;從矩陣乘法的代數(shù)運(yùn)算和幾何意義兩個(gè)不同的方面理解矩陣乘法和變換復(fù)合之間的內(nèi)在聯(lián)系;復(fù)雜的變換都可以通過(guò)簡(jiǎn)單的初等變換復(fù)合而成。3.課堂小結(jié):
第四篇:結(jié)構(gòu)矩陣設(shè)計(jì)心得體會(huì)
結(jié)構(gòu)矩陣設(shè)計(jì)心得體會(huì)
這學(xué)期的結(jié)構(gòu)矩陣設(shè)計(jì)課程分為兩部分,理論課程和上機(jī)實(shí)驗(yàn)課程。
在理論課程中,老師講解了結(jié)構(gòu)矩陣分析的理論知識(shí),包含原理,平面鋼架靜力分析等。通過(guò)理論的學(xué)習(xí)對(duì)結(jié)構(gòu)矩陣設(shè)計(jì)的總體思想有了系統(tǒng)的認(rèn)識(shí),在學(xué)習(xí)過(guò)程中,我感覺(jué)比較復(fù)雜的是結(jié)構(gòu)的剛度方程的確定,在理論課程結(jié)束后,我開(kāi)始了上機(jī)實(shí)驗(yàn)課程。
上機(jī)實(shí)驗(yàn)課程中,我們先確定了小組,我負(fù)責(zé)編寫(xiě)程序中的一部分,當(dāng)我們把程序都編寫(xiě)好匯總以后,進(jìn)行了調(diào)試,確認(rèn)程序可以正確運(yùn)行后,我們用程序完成了《結(jié)構(gòu)矩陣分析原理及程序設(shè)計(jì)》大作業(yè)。
現(xiàn)在課程已經(jīng)快要結(jié)束了,感慨頗多,令我感觸最深的是計(jì)算機(jī)在計(jì)算結(jié)構(gòu)內(nèi)力方面的運(yùn)用,計(jì)算機(jī)的方便快捷不僅使計(jì)算結(jié)果精確可靠,還減少了工作人員的大量計(jì)算勞動(dòng),為結(jié)構(gòu)設(shè)計(jì)提供的巨大的便捷,這也讓我明白,課程需要用一種交叉的學(xué)習(xí)方式來(lái)學(xué)習(xí),是一種綜合的學(xué)習(xí)方式,并且還要學(xué)會(huì)使用各種便捷的工具,使自己的學(xué)習(xí)能力有所提高。
這次學(xué)習(xí)也使我認(rèn)識(shí)到合作的重要性,這次作業(yè)的完成,就是與小組成員合作的結(jié)果。
第五篇:嵌入式ARM鍵盤(pán)控制LED燈實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)六 鍵盤(pán)控制LED燈實(shí)驗(yàn) 實(shí)驗(yàn)?zāi)康?/p>
(1)通過(guò)實(shí)驗(yàn)掌握中斷式鍵盤(pán)控制與設(shè)計(jì)方法;(2)熟練編寫(xiě)S3C2410中斷服務(wù)程序。實(shí)驗(yàn)設(shè)備
(1)S3C2410嵌入式開(kāi)發(fā)板,JTAG仿真器。
(2)軟件:PC機(jī)操作系統(tǒng)Windows XP,ADS1.2集成開(kāi)發(fā)環(huán)境,仿真器驅(qū)動(dòng)程序,超級(jí)終端通訊程序。實(shí)驗(yàn)內(nèi)容
編寫(xiě)中斷處理程序,處理一個(gè)鍵盤(pán)中斷,并在串口打印中斷及按鍵顯示信息。實(shí)驗(yàn)步驟
(1)參照模板工程,新建一個(gè)工程keypad,添加相應(yīng)的文件,并修改keypad的工程設(shè)置;
(2)創(chuàng)建keypad.c并加入到工程keypad中;(3)編寫(xiě)鍵盤(pán)中斷程序; 參考代碼如下: ①串口初始化程序
void uart_init()/* UART串口初始化 */ {
} GPHCON |= 0xa0;GPHUP = 0x0;ULCON0
//GPH2,GPH3 used as TXD0,RXD0
//GPH2,GPH3內(nèi)部上拉
//8N1
= 0x03;UCON0 = 0x05;UFCON0 = 0x00;
//查詢(xún)方式為輪詢(xún)或中斷;時(shí)鐘選擇為PCLK
//不使用FIFO //不使用流控 UMCON0 = 0x00;UBRDIV0 = 26;
//波特率為57600,PCLK=12Mhz ②發(fā)送數(shù)據(jù)
while(!(UTRSTAT0 & TXD0READY));UTXH0 = c;③接收數(shù)據(jù)
while(!(UTRSTAT0 & RXD0READY));return URXH0;④打印數(shù)據(jù)
int i = 0;
while(str[i]){ } return i;putc((unsigned char)str[i++]);⑤按鍵初始化
int key_init()/* 按鍵初始化 */ {
} ⑥中斷初始化
void irq_init()/* 中斷初始化 */ {
}(5)編譯keypad;
(6)運(yùn)行超級(jí)終端,選擇正確的串口號(hào),并將串口設(shè)置位:波特率(115200)、奇偶校驗(yàn)(None)、數(shù)據(jù)位數(shù)(8)和停止位數(shù)(1),無(wú)流控,打開(kāi)串口; INTMSK &= ~(3<<2);printk(“中斷初始化OKrn”);GPFCON = 0x55aa;GPFUP = 0xff;
printk(“按鍵初始化OKrn”);return 0;(7)運(yùn)行程序,在超級(jí)終端中輸入的數(shù)據(jù)將回顯到超級(jí)終端上,結(jié)果如圖5.4所示:
圖6.1 初始化運(yùn)行結(jié)果
圖6.2 main運(yùn)行結(jié)果 實(shí)驗(yàn)總結(jié)
通過(guò)這次實(shí)驗(yàn)我鞏固了上次實(shí)驗(yàn)的串口的使用方法,串口初始化、發(fā)送數(shù)據(jù)和接收數(shù)據(jù),同時(shí)也熟悉了中斷的處理過(guò)程,即保護(hù)現(xiàn)場(chǎng)、中斷處理、恢復(fù)現(xiàn)場(chǎng)并返回。
在實(shí)驗(yàn)時(shí)花費(fèi)了很多的時(shí)間都沒(méi)有按照老師的要求將代碼修改好,主要是因?yàn)閷?duì)代碼的不熟悉和不能很好的靈活運(yùn)用,最后對(duì)老師修改的代碼仔細(xì)的看了,其實(shí)很簡(jiǎn)單。