嵌入式系統(tǒng)實(shí)踐上機(jī)實(shí)踐報(bào)告-數(shù)碼管和鍵盤控制_第1頁(yè)
嵌入式系統(tǒng)實(shí)踐上機(jī)實(shí)踐報(bào)告-數(shù)碼管和鍵盤控制_第2頁(yè)
嵌入式系統(tǒng)實(shí)踐上機(jī)實(shí)踐報(bào)告-數(shù)碼管和鍵盤控制_第3頁(yè)
嵌入式系統(tǒng)實(shí)踐上機(jī)實(shí)踐報(bào)告-數(shù)碼管和鍵盤控制_第4頁(yè)
嵌入式系統(tǒng)實(shí)踐上機(jī)實(shí)踐報(bào)告-數(shù)碼管和鍵盤控制_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第?次實(shí)驗(yàn)實(shí)驗(yàn)名稱 學(xué)號(hào)姓名 第1頁(yè)共12頁(yè)計(jì)算機(jī)科學(xué)技術(shù)系上機(jī)實(shí)踐報(bào)告課程名稱:嵌入式系統(tǒng)實(shí)踐年級(jí):上機(jī)實(shí)踐成績(jī):指導(dǎo)教師:姓名:創(chuàng)新實(shí)踐成績(jī):上機(jī)實(shí)踐名稱:數(shù)碼管和鍵盤控制學(xué)號(hào):上機(jī)實(shí)踐日期:上機(jī)實(shí)踐編號(hào):組號(hào):上機(jī)實(shí)踐時(shí)間:實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)實(shí)驗(yàn)掌握LED的顯示控制方法.鞏固實(shí)驗(yàn)4.1中所掌握的對(duì)存儲(chǔ)區(qū)進(jìn)行訪問(wèn)的方法。實(shí)驗(yàn)設(shè)備硬件:EmbestEduKit-III實(shí)驗(yàn)平臺(tái),EmbestARM標(biāo)準(zhǔn)/增強(qiáng)型仿真器套件,PC機(jī)。軟件:EmbestIDEProARM集成開(kāi)發(fā)環(huán)境,Windows98/2000/NT/XP。實(shí)驗(yàn)內(nèi)容編寫(xiě)程序使實(shí)驗(yàn)板上八段數(shù)碼管循環(huán)顯示0到9字符。編寫(xiě)程序,獲得實(shí)驗(yàn)板上5×4鍵盤輸入,并發(fā)送到串口顯示實(shí)驗(yàn)原理八段數(shù)碼管嵌入式系統(tǒng)中,經(jīng)常使用八段數(shù)碼管來(lái)顯示數(shù)字或符號(hào),由于它具有顯示清晰、亮度高、使用電壓低、壽命長(zhǎng)的特點(diǎn),因此使用非常廣泛。結(jié)構(gòu)八段數(shù)碼管由八個(gè)發(fā)光二極管組成,其中七個(gè)長(zhǎng)條形的發(fā)光管排列成“日”字形,右下角一個(gè)點(diǎn)形的發(fā)光管作為顯示小數(shù)點(diǎn)用,八段數(shù)碼管能顯示所有數(shù)字及部份英文字母。見(jiàn)圖4-13。類型八段數(shù)碼管有兩種不同的形式:一種是八個(gè)發(fā)光二極管的陽(yáng)極都連在一起的,稱之為共陽(yáng)極八段數(shù)碼管;另一種是八個(gè)發(fā)光二極管的陰極都連在一起的,稱之為共陰極八段數(shù)碼管。工作原理以共陽(yáng)極八段數(shù)碼管為例,當(dāng)控制某段發(fā)光二極管的信號(hào)為低電平時(shí),對(duì)應(yīng)的發(fā)光二極管點(diǎn)亮,當(dāng)需要顯示某字符時(shí),就將該字符對(duì)應(yīng)的所有二極管點(diǎn)亮;共陰極二極管則相反,控制信號(hào)為高電平時(shí)點(diǎn)亮。電平信號(hào)按照dp,g,e…a的順序組合形成的數(shù)據(jù)字稱為該字符對(duì)應(yīng)的段碼,常用字符的段碼表如下:顯示方式八段數(shù)碼管的顯示方式有兩種,分別是靜態(tài)顯示和動(dòng)態(tài)顯示。靜態(tài)顯示是指當(dāng)八段數(shù)碼管顯示一個(gè)字符時(shí),該字符對(duì)應(yīng)段的發(fā)光二極管控制信號(hào)一直保持有效。動(dòng)態(tài)顯示是指當(dāng)八段數(shù)碼管顯示一個(gè)字符時(shí),該字符對(duì)應(yīng)段的發(fā)光二極管是輪流點(diǎn)亮的,即控制信號(hào)按一定周期有效,在輪流點(diǎn)亮的過(guò)程中,點(diǎn)亮?xí)r間是極為短暫的(約1ms),由于人的視覺(jué)暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),數(shù)碼管的顯示依然是非常穩(wěn)定的。電路原理EMBESTEduKit-III教學(xué)電路中,使用的是共陽(yáng)極八段數(shù)碼管,數(shù)碼管的控制通過(guò)芯片ZLG7290控制,各段的控制信號(hào)是芯片ZLG7290的SEGA~SEGG引腳控制,需要顯示的段碼通過(guò)IIC總線傳送到該芯片,見(jiàn)圖4-14、圖4-15。圖4-14八段數(shù)碼管連接電路圖4-15八段數(shù)碼管控制電路鍵盤中斷工作示意圖鍵盤工作原理(8×8)8行8列產(chǎn)生64個(gè)信號(hào),支持64個(gè)鍵Dig和Seg,分別用作鍵盤矩陣的行線和列線其中ZLG7290系統(tǒng)框圖:實(shí)驗(yàn)步驟準(zhǔn)備實(shí)驗(yàn)環(huán)境使用Embest仿真器連接目標(biāo)板,使用EmbestEduKit-III實(shí)驗(yàn)板附帶的串口線,連接實(shí)驗(yàn)板上的UART0和PC機(jī)的串口。串口接收設(shè)置在PC機(jī)上運(yùn)行windows自帶的超級(jí)終端串口通信程序(波特率115200、1位停止位、無(wú)校驗(yàn)位、無(wú)硬件流控制);或者使用其它串口通信程序。打開(kāi)實(shí)驗(yàn)例程1)拷貝光盤CD1\Software\EduKit44b0文件夾到EmbestIDE\Examples\Samsung\目錄下;2)使用EmbestIDE通過(guò)EmbestJTAG仿真器連接實(shí)驗(yàn)板,打開(kāi)實(shí)驗(yàn)例程目錄4.6_8led_test子目錄下的8led_test.pjf例程,編譯鏈接工程成功;3)點(diǎn)擊IDE的Debug菜單,選擇RemoteConnect項(xiàng)或F8鍵,遠(yuǎn)程連接目標(biāo)板;4)點(diǎn)擊IDE的Debug菜單,選擇Download下載調(diào)試代碼到目標(biāo)系統(tǒng)的RAM中;5)點(diǎn)擊Debug菜單的Go或F5鍵運(yùn)行程序。觀察實(shí)驗(yàn)結(jié)果1).在PC機(jī)上觀察超級(jí)終端程序主窗口,可以看到如下界面:2).實(shí)驗(yàn)系統(tǒng)八段數(shù)碼管循環(huán)顯示0~9字符。完成實(shí)驗(yàn)練習(xí)題理解和掌握實(shí)驗(yàn)后,完成實(shí)驗(yàn)練習(xí)題調(diào)試過(guò)程、結(jié)果和分析首先分別裝載運(yùn)行了實(shí)驗(yàn)6數(shù)碼管、實(shí)驗(yàn)7鍵盤的示例程序,了解了試驗(yàn)箱上數(shù)碼管對(duì)應(yīng)的地址,如下表所示:0x130x120x110x100x170x160x150x14接著觀察實(shí)驗(yàn)7的程序發(fā)現(xiàn)從試驗(yàn)箱上的鍵盤輸入的字符是放在ucChar這個(gè)變量中,然后通過(guò)串口通信顯示在超級(jí)終端上的;所以只需要將這個(gè)變量記錄下,同時(shí)調(diào)用實(shí)驗(yàn)6數(shù)碼管中的全局?jǐn)?shù)組即可將鍵盤輸入在數(shù)碼管上顯示出來(lái)。理清楚這個(gè)總體思路后,再根據(jù)實(shí)驗(yàn)要求上的內(nèi)容逐步實(shí)現(xiàn):初始化數(shù)碼管的清空還是很容易的,直接將‘0’寫(xiě)入到數(shù)碼管地址中即可;0~9、A~F情形類似,新輸入的值放入在0x14中之前的值全部左移一位,在寫(xiě)左移這部分代碼for循環(huán)時(shí)由于數(shù)碼管地址有些混亂所以調(diào)試花費(fèi)了不少時(shí)間。在顯示‘+’、‘-’、‘*’時(shí)需要左移的不再是一位,需要寫(xiě)一個(gè)封裝的move函數(shù),當(dāng)判斷出ucChar<255時(shí)分別對(duì)輸入的‘+’、‘-’、‘*’調(diào)用move函數(shù)后再將輸入值放到0x16、0x15、0x14中;其中‘FUN'需要單獨(dú)判斷ucChar是否為0xFF再左移、輸入??偨Y(jié)這次的實(shí)驗(yàn)由于是數(shù)碼管與鍵盤兩次合并在一起,所以還是給了比較充足的時(shí)間來(lái)完成。預(yù)習(xí)時(shí)不太清楚怎么將數(shù)碼管與鍵盤相聯(lián)系,在運(yùn)行了示例程序后了解到變量ucChar和數(shù)組f_szDigital[]起到了橋接的作用。總體來(lái)說(shuō)這次實(shí)驗(yàn)還是完成得比較成功的,理解示例程序花費(fèi)了不少的時(shí)間,一旦讀懂了程序之后這次實(shí)驗(yàn)就可以解決了。(創(chuàng)新)下面代碼中用顏色標(biāo)注的部分是我自己寫(xiě)的代碼用來(lái)實(shí)現(xiàn)題目要求。不過(guò)那是一個(gè)比較直接的方法,簡(jiǎn)單易懂。為此我還有一種方法:因?yàn)長(zhǎng)1包含0~3數(shù)碼管,L2包含4~7數(shù)碼管,從左向右分別為3,2,1,0,7,6,5,4。為此數(shù)碼管上的字符移動(dòng)起來(lái)比較麻煩。我們可以新建一個(gè)buffer[8]。每次我們往相應(yīng)的數(shù)碼管寫(xiě)入字符的時(shí)候,我們可以先寫(xiě)入buffer里面,字符的移動(dòng)也可以先在buffer里面執(zhí)行。然后,我們將buffer與原來(lái)數(shù)碼管的地址數(shù)組相對(duì)應(yīng)。這樣我們便于理解問(wèn)題,寫(xiě)的程序也比較簡(jiǎn)練。附件程序代碼1#include"44b.h"#include"44blib.h"#include"def.h"#include"iic.h"intf_nKeyPress;unsignedcharf_szDigital[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,//0~90xEE,0xFF,0x9C,0xFD,0x9E,0x8E,//A8.C0.EF0x1,0x2,0x0,0x92,0x90};//,-close三二voidkeyboard_test(void);voidkeyboard_int(void);UINT8Tkey_set(UINT8TucChar);voidkeyboard_test(void){ inti,j,k; UINT8TucChar,t; iic_init(); for(i=0;i<8;i++) iic_write(0x70,0x10+i,0); //setEINT2interrupthandlerpISR_EINT2=(int)keyboard_int; for(;;) { f_nKeyPress=0; rINTMSK=rINTMSK&(~(BIT_GLOBAL|BIT_EINT2)); //enableEINT2int while(f_nKeyPress==0); iic_read(0x70,0x1,&ucChar); /* if(ucChar!=0) { ucChar=key_set(ucChar); if(ucChar<10)ucChar+=0x30; elseif(ucChar<16)ucChar+=0x37; if(ucChar<255) uart_printf("presskey%c\n",ucChar); if(ucChar==0xFF) { uart_printf("presskeyFUN(exitnow)\n\r"); return; } }*/ if(ucChar!=0) {chart; ucChar=key_set(ucChar); if(ucChar<16) { for(j=3;j>0;j--) { i=j-1; iic_read(0x70,0x10+i,&t); iic_write(0x70,0x10+j,t); } iic_read(0x70,0x10+7,&t); iic_write(0x70,0x10,t); for(j=7;j>4;j--) { k=j-1; iic_read(0x70,0x10+k,&t); iic_write(0x70,0x10+j,t); } iic_write(0x70,0x10+4,f_szDigital[ucChar]); delay(500); } elseif(ucChar<255) { if(ucChar=='+') { move_three(); iic_write(0x70,0x16,0xEE); iic_write(0x70,0x15,0xFD); iic_write(0x70,0x14,0xFD); } if(ucChar=='-') { move_three(); iic_write(0x70,0x16,0xB7); iic_write(0x70,0x15,0x7C); iic_write(0x70,0x14,0xFF); } if(ucChar=='*') { move_two(); iic_write(0x70,0x14,0x1c); iic_write(0x70,0x15,0x7C); } } elseif(ucChar==0xFF) {move_three(); iic_write(0x70,0x16,0x8E); iic_write(0x70,0x15,0x7C); iic_write(0x70,0x14,0xEC); } } }while(1);}voidmove_three(void){inti,j;chart; iic_read(0x70,0x10,&t); iic_write(0x70,0x13,t); for(i=5;i<8;i++) { iic_read(0x70,0x10+i,&t); j=i-5; iic_write(0x70,0x10+j,t); } iic_read(0x70,0x14,&t); iic_write(0x70,0x17,t);}voidmove_two(void){ chart; iic_read(0x70,0x11,&t); iic_write(0x70,0x13,t); iic_read(0x70,0x10,&t); iic_write(0x70,0x12,t); iic_read(0x70,0x17,&t); iic_write(0x70,0x11,t); iic_read(0x70,0x16,&t); iic_write(0x70,0x10,t); iic_read(0x70,0x15,&t); iic_write(0x70,0x17,t); iic_read(0x70,0x14,&t); iic_write(0x70,0x16,t); }/**********************************************************************************************name: keyboard_int*func: keyboardinterrupthandler*para: none*ret: none*modify:*comment: ********************************************************************************************/voidkeyboard_int(void){ UINT8TucChar;delay(1000); rINTMSK=rINTMSK|BIT_EINT2; //disableEINT2intrI_ISPC=BIT_EINT2;f_nKeyPress=1;}/**********************************************************

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論