嵌入式實(shí)驗(yàn)報(bào)告副本_第1頁(yè)
嵌入式實(shí)驗(yàn)報(bào)告副本_第2頁(yè)
嵌入式實(shí)驗(yàn)報(bào)告副本_第3頁(yè)
嵌入式實(shí)驗(yàn)報(bào)告副本_第4頁(yè)
嵌入式實(shí)驗(yàn)報(bào)告副本_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、嵌入式系統(tǒng)原理與設(shè)計(jì) 實(shí)驗(yàn)報(bào)告 指導(dǎo)老師:王大全 B組成員 : 實(shí)驗(yàn)一 LED跑馬燈實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康膌 熟悉IAR開(kāi)發(fā)環(huán)境;l 了解跑馬燈的顯示原理;l 掌握J(rèn)X44B0中的跑馬燈的編程方法;二、實(shí)驗(yàn)設(shè)備l 硬件:JX44B0教學(xué)試驗(yàn)箱;PC機(jī);J-Link V8仿真器;l 軟件:PC機(jī)操作系統(tǒng)Windows XP(98,2000,);IAR開(kāi)發(fā)環(huán)境;J-link ARM V4.1i;三、實(shí)驗(yàn)內(nèi)容l 了解S3C44B0X的I/O接口原理。l 利用IAR開(kāi)發(fā)環(huán)境,用C語(yǔ)言編寫(xiě)跑馬燈主程序。四、實(shí)驗(yàn)說(shuō)明 S3C44B0X有多達(dá)71個(gè)復(fù)合功能的I/O口引腳,可以提供方便的拓展,分成7個(gè)端口如下:端口

2、A(10位I/O口)端口B(11位I/O口)端口C(16位I/O口)端口D和G(8位I/O口)端口E和F(9位I/O口) 在主程序開(kāi)始前,必須定義每個(gè)I/O管腳的功能。在特殊功能不用時(shí),作為I/O腳使用 所有的端口都是復(fù)用的,因?yàn)槭菑?fù)用的端口所以在應(yīng)用I/O口之前應(yīng)該對(duì)端口進(jìn)行設(shè)置,使之成為需要的模式,這個(gè)模式是由八個(gè)I/O控制寄存器GPxCON設(shè)置,其中的x就是A-H。我們以本實(shí)驗(yàn)中用到的GPB為例,GPB的控制寄存器是GPBCON,地址是0x56000010。GPBCON Bit Description GPB10 21:20 00 = Input 10 = nXDREQ0 01 = Ou

3、tput 11 = reserved GPB9 19:18 00 = Input 10 = nXDACK0 01 = Output 11 = reserved GPB8 17:16 00 = Input 10 = nXDREQ1 01 = Output 11 = reserved GPB7 15:14 00 = Input 10 = nXDACK1 01 = Output 11 = reserved GPB6 13:12 00 = Input 10 = nXBREQ 01 = Output 11 = reserved GPB5 11:10 00 = Input 10 = nXBACK 01 =

4、 Output 11 = reserved GPB4 9:8 00 = Input 10 = TCLK0 01 = Output 11 = reserved GPB3 7:6 00 = Input 10 = TOUT3 01 = Output 11 = reserved GPB2 5:4 00 = Input 10 = TOUT2 01 = Output 11 = reservedGPB1 3:2 00 = Input 10 = TOUT1 01 = Output 11 = reserved GPB0 1:0 00 = Input 10 = TOUT0 01 = Output 11 = res

5、erved 每個(gè)端口還有數(shù)據(jù)寄存器GPxDAT,和上拉寄存器GPxUP。還是以GPB為例。GPBDAT:地址為0x56000014,從低位到高位依次存儲(chǔ)GPB0GPB10十一個(gè)端口在I/O口狀態(tài)下的數(shù)據(jù),1表示輸出/輸入高電平,0表示輸出/輸入低電平。GPBUP:地址為0x56000018,從低位到高位依次存儲(chǔ)GPB0GPB10十一個(gè)端口在I/O口狀態(tài)下CPU是否提供上拉電阻,0表示提供,1表示不提供。五、實(shí)驗(yàn)步驟1、仔細(xì)閱讀實(shí)驗(yàn)說(shuō)明部分,熟悉S3C44B0X的I/O接口原理及其控制;2、用IAR開(kāi)發(fā)工具打開(kāi)打開(kāi)其中的跑馬燈的工程文件,用實(shí)驗(yàn)一中的方法選用本機(jī)的地址中的文檔文件。3、在IAR開(kāi)

6、發(fā)環(huán)境目錄下編譯源文件,分析并熟悉程序。4、將PC機(jī)、仿真器和JX44B0教學(xué)試驗(yàn)箱連接并打開(kāi)“J-Link ARM V4.1i中的J-Link 。5、調(diào)試運(yùn)行程序觀察程序運(yùn)行,自行修改程序觀察各變量、寄存器等的作用。6、程序運(yùn)行后在擴(kuò)展板上的LED燈將輪流顯示(跑馬等)。六、參考例程 相應(yīng)的程序如下:#include "configure.h"#ifdef _PAOMADENG_EN#define LED_ADDR *(unsigned char*)0x02000000void main()LED_ADDR |= 0xf<<4;while(1)LED_ADDR

7、 = 0xe<<4;Delay(1000);LED_ADDR = 0xd<<4;Delay(1000);LED_ADDR = 0xb<<4;Delay(1000);LED_ADDR = 0x7<<4;Delay(1000); #endif /_PAOMADENG_EN七:實(shí)驗(yàn)結(jié)果:板子上可以看到:四個(gè)LED燈從上往下,不停地循環(huán)反復(fù)的來(lái)回跑,每次只亮一個(gè)燈。實(shí)驗(yàn)二 LEDDEMO數(shù)碼管實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康膌 熟悉IAR開(kāi)發(fā)環(huán)境;l 了解數(shù)碼管的顯示原理;l 掌握J(rèn)X44B0中的數(shù)碼管的編程方法;二、實(shí)驗(yàn)設(shè)備l 硬件:JX44B0教學(xué)試驗(yàn)箱;PC機(jī);J

8、-Link V8仿真器;l 軟件:PC機(jī)操作系統(tǒng)Windows XP(98,2000,);IAR開(kāi)發(fā)環(huán)境;J-link ARM V4.1i;三、實(shí)驗(yàn)內(nèi)容l 利用IAR開(kāi)發(fā)環(huán)境,運(yùn)行出數(shù)碼管的主程序。l 自行編寫(xiě)數(shù)碼管的程序,循環(huán)顯示0-F字符 四、實(shí)驗(yàn)說(shuō)明1、LED顯示原理發(fā)光二極管數(shù)碼顯示器簡(jiǎn)稱(chēng)LED顯示器。LED顯示器具有耗電低、成本低、配置簡(jiǎn)單靈活、安裝方便、耐震動(dòng)、壽命長(zhǎng)等優(yōu)點(diǎn),目前廣泛應(yīng)用于各類(lèi)電子設(shè)備之中。7段LED由7個(gè)發(fā)光二極管按“日”字排列。所有發(fā)光二極管的陽(yáng)極連接在一起稱(chēng)共陽(yáng)極接法,陰極連接在一起稱(chēng)為共陰極接法。一般共陰極可以不需要外接電阻。其中各二極管的排列如上圖在共陽(yáng)極

9、接法中,如果顯示數(shù)字“5”,需要在a、c、d、f、g端加上高電壓,其它加低電壓。這樣如果按照dp、g、fe、d、c、b、a的順序排列的話(huà)對(duì)應(yīng)的碼段是:6DH。其它的字符同理可以得到。2、數(shù)碼管顯示驅(qū)動(dòng)數(shù)碼管的顯示一般有動(dòng)態(tài)顯示和靜態(tài)顯示兩大類(lèi),另外按照驅(qū)動(dòng)方式又分串行驅(qū)動(dòng)和并行驅(qū)動(dòng)兩種方式。串行驅(qū)動(dòng)主要是提供串并轉(zhuǎn)換,減少控制線數(shù)量;并行驅(qū)動(dòng)對(duì)每一個(gè)段提供單獨(dú)的驅(qū)動(dòng),電路相對(duì)簡(jiǎn)單。這方面參看數(shù)字電路相關(guān)內(nèi)容。下面主要介紹靜態(tài)顯示和動(dòng)態(tài)顯示:1)靜態(tài)顯示:LED數(shù)碼管采用靜態(tài)接口時(shí),共陰極或共陽(yáng)極節(jié)點(diǎn)連接在一起地或者接高電平。每個(gè)顯示位的段選線與一個(gè)8位并行口線相連,只要在顯示位上的段選位保持段

10、碼電平不變,則該位就能保持相應(yīng)的顯示字符。這里的8位并行口可以直接采用并行I/O口,也可以采用串行驅(qū)動(dòng)。相應(yīng)的電路如下:很明顯采用靜態(tài)顯示方式要求有較多的控制端(并行)或較復(fù)雜的電路(串行)。但是在設(shè)計(jì)中對(duì)器件的要求低。2)動(dòng)態(tài)顯示在多位LED顯示時(shí),為了簡(jiǎn)化電路、節(jié)省端口(在很多系統(tǒng)中I/O端口資源非常寶貴),將所有的段選線冰涼在儀器由一個(gè)8位I/O口控制。而共陰極(或共陽(yáng)極)分別由相應(yīng)的I/O口控制,實(shí)現(xiàn)各位的分時(shí)選通。由于各個(gè)數(shù)碼管共用一個(gè)段碼輸出口,分時(shí)輪流通電,從而大大簡(jiǎn)化了硬件線路。降低了成本。但是這種方式的數(shù)碼管接口電路中數(shù)碼管不宜太多,一般應(yīng)控制在8個(gè)以?xún)?nèi)。否則會(huì)因?yàn)槊總€(gè)數(shù)碼管

11、發(fā)光時(shí)間太短而導(dǎo)致亮度低。若LED位數(shù)較多,應(yīng)采用增加驅(qū)動(dòng)能力的方式提高顯示亮度。典型電路如下:JX44B0采用的是動(dòng)態(tài)接口辦法,數(shù)碼管采用共陽(yáng)方式,向該地址寫(xiě)一個(gè)數(shù)據(jù)就可以控制LED的顯示,其原理圖如下圖所示。JX44B0采用兩片74HC273,一片實(shí)現(xiàn)片選功能,輸出連在六塊數(shù)碼管的共陽(yáng)極,另一片控制數(shù)碼管的亮滅??刂萍拇嫫鞣謩e為:(均為低電平有效)數(shù)碼管掃描控制地址為0x02000006,8位訪問(wèn)Bit0 控制數(shù)碼管0 低電平有效Bit1 控制數(shù)碼管1 低電平有效Bit2 控制數(shù)碼管2 低電平有效Bit3 控制數(shù)碼管3 低電平有效Bit4 控制數(shù)碼管4 低電平有效Bit5 控制數(shù)碼管5 低

12、電平有效地址0x02000004為數(shù)碼管的數(shù)據(jù)寄存器,控制數(shù)碼管的段碼輸出。3、 程序解析制作LED字符與碼段對(duì)應(yīng)表unsigned char seg7table16 = /* 0 1 2 3 4 5 6 7*/ 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, /* 8 9 A B C D E F*/0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e ; 掃描控制*(U8*) 0x02000006) = 0x3E; /* 使能第一個(gè)數(shù)碼管 */段碼輸出*(U8*) 0x02000004) = seg7ta

13、ble0;/* 輸出數(shù)據(jù) 0 */五、實(shí)驗(yàn)步驟1、仔細(xì)閱讀實(shí)驗(yàn)說(shuō)明部分,熟悉LEDDEMO數(shù)碼管的原理及驅(qū)動(dòng)機(jī)制;2、用IAR開(kāi)發(fā)工具打開(kāi)打開(kāi)其中的跑馬燈的工程文件,用實(shí)驗(yàn)一中的方法選用本機(jī)的地址中的文檔文件。3、在IAR開(kāi)發(fā)環(huán)境目錄下編譯源文件,分析并熟悉程序。4、將PC機(jī)、仿真器和JX44B0教學(xué)試驗(yàn)箱連接并打開(kāi)“J-Link ARM V4.1i中的J-Link 。5、調(diào)試運(yùn)行程序觀察程序運(yùn)行,自行修改程序觀察各變量、寄存器等的作用。六、參考例程 相應(yīng)的程序如下:/*/* */* FILE NAME VERSION */* */* LEDDEMO.C 1.0 */* */* DESCRIP

14、TION */* */* JX44B0(S3C44B0X)數(shù)碼管顯示實(shí)驗(yàn) */* */* */* DATA STRUCTURES */* */* FUNCTIONS : */* 在JX44B0教學(xué)實(shí)驗(yàn)箱數(shù)碼管上循環(huán)顯示字符'0'到字符'F' */* */* DEPENDENCIES */* JX44B0-1 */* JX44B0-2 */* JX44B0-3 */* */* */* NAME: */* REMARKS: */* */*Copyright (C) 2003 Wuhan CVTECH CO.,LTD */*/*/* 顯示碼表 */* 七段數(shù)碼管結(jié)構(gòu):

15、 */* A */* - */* | | */* F| |B */* | G | */* - */* | | */* E| | C */* | | */* - */* D */* */* 七段數(shù)碼管顯示原理: */* JX44B0采用共陽(yáng)方式連接,為0時(shí)點(diǎn)亮、為1時(shí)熄滅 */* */* 七段數(shù)碼管字符與碼段對(duì)應(yīng)表 */*字符 DPGFEDCBA段碼(共陰)段碼(共陽(yáng)) */* 0001111113FH C0H */ /* 10000011006H F9H */* 2010110115BH A4H */* 3010011114FH B0H */* 40110011066H 99H */* 501

16、1011016DH 92H */* 6011111017DH 82H */* 70000011107H F8H */* 8011111117FH 80H */* 9011011116FH 90H */* A0111011177H 88H */* B011111007CH 83H */* C0011100139H C5H */* D010111105EH A1H */* E0111100179H 86H */* F0111000171H 8EH */* -0100000040H BFH */* .1000000080H 7FH */*熄滅0000000000H FFH */*/#define U

17、8 unsigned charstatic int delayLoopCount=1000;unsigned char seg7table16 = /* 0 1 2 3 4 5 6 7*/ 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, /* 8 9 A B C D E F*/ 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e,;void Delay(int time);void display_seg7();void flash_seg7();/*/* 函數(shù)說(shuō)明: EB44B0 7段構(gòu)共陽(yáng)數(shù)碼管測(cè)試

18、*/* 功能描述: 在數(shù)碼管上顯示012345 */* 返回代碼: 無(wú) */* 參數(shù)說(shuō)明: 無(wú) */*/Void main(void) int i;int j= 0;for( ; ; )for(i=0;i<=0x05;i+) *(UB*)0x02000006)=0x3f-(1<<j); *(UB*)0x02000004)=seg7tablei; j+; if (j>=6) j=0; delay(3000); *(UB*)0x02000006)=0x3f; /*/* Function name : 循環(huán)延時(shí)子程序 */* Description : 循環(huán) 'tim

19、e' 次 */* Return type :void */* Argument : 循環(huán)延時(shí)計(jì)數(shù)器 */*/void Delay(int time) int i; for(;time>0;time-)for(i=0;i<delayLoopCount;i+);七、實(shí)驗(yàn)結(jié)果 以上4步操作如跑馬燈實(shí)例一樣。5.當(dāng)程序運(yùn)行正常,將代碼燒寫(xiě)到JX44B0教學(xué)試驗(yàn)箱:,按順序從0-5一個(gè)燈一個(gè)燈的亮過(guò)去以上兩個(gè)實(shí)驗(yàn)用到的地址表格:表3-1 JX44B0地址空間分配表地址區(qū)間說(shuō) 明數(shù)據(jù)寬度(位)讀/寫(xiě)屬性0x000000000x0003fffffFLASH存儲(chǔ)器:28F320,4M字節(jié);

20、16R/W0x02000000控制LED跑馬燈及鍵盤(pán)掃描:bit03 控制鍵盤(pán)掃描;bit47控制跑馬燈的顯示。低電平有效。8W0x02000002讀入鍵盤(pán)掃描值:bit03有效,某位為低時(shí),對(duì)應(yīng)列有鍵按下。8R0x02000004數(shù)碼管數(shù)據(jù)寄存器。8W0x02000006數(shù)碼管掃描控制寄存器:bit0bit5:低電平有效。8W 實(shí)驗(yàn)四 矩陣鍵盤(pán)驅(qū)動(dòng)實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康膌 熟悉IAR開(kāi)發(fā)環(huán)境;l 了解矩陣鍵盤(pán)驅(qū)動(dòng)實(shí)驗(yàn)的顯示原理,和掌握矩陣鍵盤(pán)驅(qū)動(dòng)實(shí)驗(yàn)的編程方法;l 掌握通過(guò)輸入/輸出端 口擴(kuò)展鍵盤(pán)的方法二、實(shí)驗(yàn)設(shè)備l 硬件:JX44B0教學(xué)試驗(yàn)箱;PC機(jī);J-Link V8仿真器;l 軟件:PC機(jī)

21、操作系統(tǒng)Windows XP(98,2000,);IAR開(kāi)發(fā)環(huán)境;J-link ARM V4.1i;三、實(shí)驗(yàn)內(nèi)容l 利用IAR開(kāi)發(fā)環(huán)境,運(yùn)行出矩陣鍵盤(pán)驅(qū)動(dòng)實(shí)驗(yàn)的主程序,掌握在IAR集成開(kāi)發(fā)環(huán)境中編寫(xiě)和調(diào)試程序的基本過(guò)程。l 了解鍵盤(pán)的構(gòu)成以及原理,自行編寫(xiě)矩陣鍵盤(pán)驅(qū)動(dòng)實(shí)驗(yàn)的程序。四、實(shí)驗(yàn)說(shuō)明1、掃描按鍵實(shí)現(xiàn)鍵盤(pán)有兩種方案:一是采用現(xiàn)有的一些芯片實(shí)現(xiàn)鍵盤(pán)掃描;再就是用軟件實(shí)現(xiàn)鍵盤(pán)掃描。作為一個(gè)嵌入系統(tǒng)設(shè)計(jì)人員,總是會(huì)關(guān)心產(chǎn)品成本。目前有很多芯片可以用來(lái)實(shí)現(xiàn)鍵盤(pán)掃描,但是鍵盤(pán)掃描的軟件實(shí)現(xiàn)方法有助于縮減一個(gè)系統(tǒng)的重復(fù)開(kāi)發(fā)成本,且只需要很少的CPU 開(kāi)銷(xiāo)。嵌入式控制器的功能很強(qiáng),可以充分利用這一資源

22、,這里就介紹一下軟鍵盤(pán)的實(shí)現(xiàn)方案。通常在一個(gè)鍵盤(pán)中使用了一個(gè)瞬時(shí)接觸開(kāi)關(guān),并且用如圖4-1 所示的簡(jiǎn)單電路,微處理器可以容易地檢測(cè)到閉合。當(dāng)開(kāi)關(guān)打開(kāi)時(shí),通過(guò)處理器的I/O 口的一個(gè)上拉電阻提供邏輯1;當(dāng)開(kāi)關(guān)閉合時(shí),處理器的I/O 口的輸入將被拉低到邏輯0??蛇z憾的是,開(kāi)關(guān)并不完善,因?yàn)楫?dāng)它們被按下或者被釋放時(shí),并不能夠產(chǎn)生一個(gè)明確的1 或者0。盡管觸點(diǎn)可能看起來(lái)穩(wěn)定而且很快地閉合,但與微處理器快速的運(yùn)行速度相比,這種動(dòng)作是比較慢的。當(dāng)觸點(diǎn)閉合時(shí),其彈起就像一個(gè)球。彈起效果將產(chǎn)生如圖4-2 所示的好幾個(gè)脈沖。彈起的持續(xù)時(shí)間通常將維持在5ms30ms 之間。如果需要多個(gè)鍵,則可以將每個(gè)開(kāi)關(guān)連接到微

23、處理器上它自己的輸入端口。然而,當(dāng)開(kāi)關(guān)的數(shù)目增加時(shí),這種方法將很快使用完所有的輸入端口。下圖是按鍵的抖動(dòng)鍵盤(pán)上排列這些開(kāi)關(guān)最有效的方法(當(dāng)需要5 個(gè)以上的鍵時(shí))就形成了二維矩陣。當(dāng)行和列的數(shù)目一樣多時(shí),也就是方型的矩陣,將產(chǎn)生一個(gè)最優(yōu)化的布列方式(I/O端被連接的時(shí)候)。一個(gè)瞬時(shí)接觸開(kāi)關(guān)(按鈕)放置在每一行與每一列的交叉點(diǎn)。矩陣所需的鍵的數(shù)目顯然根據(jù)應(yīng)用程序而不同。每一行由一個(gè)輸出端口的一位驅(qū)動(dòng),而每一列由一個(gè)電阻器上拉且供給輸入端口一位。鍵盤(pán)掃描過(guò)程就是讓微處理器按有規(guī)律的時(shí)間間隔查看鍵盤(pán)矩陣,以確定是否有鍵被按下。一旦處理器判定有一個(gè)鍵按下,鍵盤(pán)掃描軟件將過(guò)濾掉抖動(dòng)并且判定哪個(gè)鍵被按下。每

24、個(gè)鍵被分配一個(gè)稱(chēng)為掃描碼的唯一標(biāo)識(shí)符。應(yīng)用程序利用該掃描碼,根據(jù)按下的鍵來(lái)判定應(yīng)該采取什么行動(dòng)。換句話(huà)說(shuō),掃描碼將告訴應(yīng)用程序按下哪個(gè)鍵。某一時(shí)刻按下多個(gè)鍵(意外地或者故意地)的情況被稱(chēng)為轉(zhuǎn)滾。能夠正確識(shí)別一個(gè)新鍵被按下(即使n-1 個(gè)鍵已經(jīng)被按下)的任何算法被稱(chēng)為具有n 鍵轉(zhuǎn)滾的能力。本章提出的矩陣鍵盤(pán)系統(tǒng)設(shè)計(jì),在這種系統(tǒng)中用戶(hù)輸入可能發(fā)生相繼按鍵。這些系統(tǒng)通常不需要具有像終端或者計(jì)算機(jī)系統(tǒng)上的鍵盤(pán)的全部特征那樣的鍵盤(pán)。鍵盤(pán)掃描算法:在初始化階段,所有的行(輸出端口)被強(qiáng)行設(shè)置為低電平。在沒(méi)有任何鍵按下時(shí)。所有的列(輸入端口)將讀到高電平。任何鍵的閉合將造成其中的一列變?yōu)榈碗娖?。為了查看是?/p>

25、有一個(gè)鍵已經(jīng)被按下,微處理器僅僅需要查看任一列的值是否變成低電平。一旦微處理器檢測(cè)到有鍵被按下,就需要找出是哪一個(gè)鍵。過(guò)程很簡(jiǎn)單,微處理器只需在其中一行上輸出一個(gè)低電平。如果它在輸入端口上發(fā)現(xiàn)一個(gè)0 值,該微處理器就知道在所選擇行上產(chǎn)生了鍵的閉合。相反,如果輸入端口全是高電平,則被按下的鍵就不在那一行,微處理器將選擇下一行,并重復(fù)該過(guò)程直到它發(fā)現(xiàn)了該行為止。一旦該行被識(shí)別出來(lái),則被按下鍵的具體的列可以通過(guò)鎖定輸入端口上唯一的低電位來(lái)確定。本實(shí)驗(yàn)板按鍵電路如下:2、S3C44B0中相關(guān)設(shè)置本實(shí)驗(yàn)采用內(nèi)存地址直接控制鍵盤(pán):地址0x02000000的bit03作為鍵盤(pán)掃描的行輸出,地址0x02000

26、002的bit03作為鍵盤(pán)掃描的列輸入。3、 鍵盤(pán)處理流程Ø 依次將鍵盤(pán)的每一行輸出低電平,延時(shí)一段時(shí)間Ø 然后獲取該行中各列的輸入情況,如果各列全部為1則繼續(xù)查詢(xún)下一行,否則延時(shí)一段時(shí)間并重新掃描一次Ø 如果掃描結(jié)果與上次掃描結(jié)果相同則調(diào)用key_get_char獲取鍵碼,然后調(diào)用display_num在LED上顯示相應(yīng)鍵值。Ø 通過(guò)如下程序?qū)㈡I盤(pán)的row行輸出低電平:unsigned char* keyboard_port = (unsigned char*)0x20000000;*keyboard_port = (0x00000001 <&l

27、t; row);3、程序解析本實(shí)驗(yàn)中用到的主要函數(shù)如下:void Main(void)int row;unsigned char ascii_key, input_key, key_mask = 0x0F;unsigned char*keyboard_port_scan = (unsigned char*)0x02000000;unsigned char*keyboard_port_value = (unsigned char*)0x02000002;while(1)for( row = 0; row < 4; row+)*keyboard_port_scan = (0x00000001

28、<<row); /*將row列置低電平*/delay(10000);/*延時(shí)*/input_key = (*keyboard_port_value) & key_mask;/*并獲取第一次掃描值*/if(input_key = key_mask)continue;/* 沒(méi)有按鍵*/* 延時(shí),再次獲取掃描值,如果兩次的值不等,則認(rèn)為是一個(gè)干擾*/delay(10000);if (*keyboard_port_value) & key_mask) != input_key) continue;ascii_key = key_get_char(row, input_key

29、);/* 查表*/display_num( ascii_key);/* 顯示結(jié)果*/改進(jìn)后的組合鍵的主程序void main(void)int row;unsigned char ascii_key, input_key, key_mask = 0x0F;unsigned char*keyboard_port_scan = (unsigned char*)0x02000000;unsigned char*keyboard_port_value = (unsigned char*)0x02000002;unsigned char Key1,Key2,Key_Count=0,Key_Show=0;

30、 while(1) for( row = 0; row < 4; row+) input_key=key_mask;/把 *keyboard_port_scan = (0x00000001<<row); /*將row行置低電平*/ delay(20000); input_key = (*keyboard_port_value) & key_mask;/*并獲取第一次掃描值*/ if(Key_Show=0) display_num1(Key1); Key_Show=1; else if(Key_Show=1) display_num2(Key2); Key_Show=0

31、; if (*keyboard_port_value) & key_mask) != input_key) continue; if(input_key = key_mask)continue; /沒(méi)有按鍵 if(Key_Count=0 ) Key1 = key_get_char(row, input_key); Key_Count=1; else Key2 = key_get_char(row, input_key); Key_Count=0; 五、實(shí)驗(yàn)步驟1、仔細(xì)閱讀實(shí)驗(yàn)說(shuō)明部分,熟悉掃描鍵盤(pán)的機(jī)制;2、直接用IAR打開(kāi)已有的工程文件,或者按照實(shí)驗(yàn)一中的方法重新建立工程(當(dāng)函數(shù)無(wú)法

32、通過(guò)右鍵跳轉(zhuǎn)的時(shí)候,就必須重新建立工程,把所需文件放在一個(gè)文件夾下)3、在IAR環(huán)境下編譯源文件。(詳見(jiàn)實(shí)驗(yàn)一),分析并熟悉程序。4、在IAR環(huán)境下調(diào)試運(yùn)行程序觀察程序運(yùn)行。自行修改程序觀察各變量、寄存器等的作用。 5、按下擴(kuò)展板上的鍵盤(pán),觀察數(shù)碼管顯示情況,在實(shí)際的應(yīng)用中如何應(yīng)用鍵盤(pán)掃描六、參考例程 相應(yīng)的程序如下:/*/* */* FILE NAME VERSION */* */* KEY.C 1.0 */* */* DESCRIPTION */* */* JX44B0(S3C44B0X)鍵盤(pán)實(shí)驗(yàn) */* */* */* DATA STRUCTURES */* */* FUNCTIONS

33、: */* 在JX44B0教學(xué)實(shí)驗(yàn)箱進(jìn)行鍵盤(pán)掃描的實(shí)驗(yàn) */* */* DEPENDENCIES */* JX44B0-1 */* JX44B0-2 */* JX44B0-3 */* */* */* NAME: */* REMARKS: */* */*Copyright (C) 2003 Wuhan CVTECH CO.,LTD */*/*/* 學(xué)習(xí)JX44B0中鍵盤(pán)的處理方法: */*/* functions */void delay(int count);void display_num(unsigned char number);/* 數(shù)碼管顯示碼表,請(qǐng)參考led實(shí)驗(yàn) */unsigned char seg7table16 = /* 0 1 2 3 4 5 6 7*/ 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, /* 8 9 A B C D

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論