單片機實驗4報告_第1頁
單片機實驗4報告_第2頁
單片機實驗4報告_第3頁
單片機實驗4報告_第4頁
單片機實驗4報告_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機實驗4報告單片機實驗4報告全文共11頁,當(dāng)前為第1頁。單片機實驗4單片機實驗4報告全文共11頁,當(dāng)前為第1頁。學(xué)號19單片機原理與接口技術(shù)實驗報告實驗四動態(tài)顯示與矩陣式鍵盤實驗單片機實驗單片機實驗4報告全文共11頁,當(dāng)前為第2頁。一、實驗?zāi)康倪M一步理解數(shù)碼管與單片機的接口原理與動態(tài)顯示原理,理解單片機矩陣式鍵盤按鍵識別的原理;掌握單片機動態(tài)顯示應(yīng)用和編程方法;掌握單片機矩陣式鍵盤按鍵識別的方法。二、實驗內(nèi)容實驗內(nèi)容為3項,其中第1、2項必做。1、動態(tài)顯示。未按鍵不顯示,按K1鍵,動態(tài)顯示“19491001”;按K2鍵,動態(tài)顯示“20141210”。2、動態(tài)顯示與按鍵識別。矩陣式鍵盤鍵值分別是0-F,未按鍵不顯示。每按鍵一次,鍵值在最低位顯示,原鍵值向高位移一位。3、可控動態(tài)顯示與按鍵識別。矩陣式鍵盤鍵值分別是0-9,最下面一排鍵位功能鍵,左右兩個鍵分別為“清0鍵”“C”,和”“回車鍵”“”,其它鍵無效。未按鍵不顯示,每按鍵一次,鍵值在最低位顯示,原鍵值向高位移一位。按8個鍵后,再按鍵無效。按清0鍵全顯示“0”。按“單片機實驗4報告全文共11頁,當(dāng)前為第3頁。三、單片機實驗4報告全文共11頁,當(dāng)前為第3頁。圖3.4動態(tài)顯示與矩陣式鍵盤實驗電路原理圖動態(tài)顯示共8個共陰極數(shù)碼管,采用兩片74LS573進行驅(qū)動,74LS573與74LS373都是8D鎖存器,只是573引腳排列更易于布線。其引腳功能為:D1-D8為數(shù)據(jù)輸入端;Q1-Q8為數(shù)據(jù)輸出端;LE為數(shù)據(jù)輸入鎖存端,LE=1數(shù)據(jù)輸入D鎖存器,LE=0數(shù)據(jù)不能輸入D鎖存器,即LE下降沿鎖存當(dāng)前輸入數(shù)據(jù);地址輸出允許端,=0輸出鎖存數(shù)據(jù),=1輸出高阻。電路中,U1輸出段碼abcdefgdb,控制顯示的字形與小數(shù)點,U2輸出位選碼,控制第幾個數(shù)碼管顯示。單片機P14、P15分別連接到U1、U2的LE,連接U1、U2的。四、源程序第一項:#include<reg51.h>#defineucharunsignedchardataucharf[8];datauchara,b,num,y,k,g;單片機實驗4報告全文共11頁,當(dāng)前為第4頁。datauchar單片機實驗4報告全文共11頁,當(dāng)前為第4頁。table[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //共陰極數(shù)碼管顯示段碼(0-F)voiddelay(j)//延時函數(shù)dataucharj;{datauchari;while(j--)for(i=0;i<1;i++);} ucharcodesled_bit[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //定義點亮數(shù)碼管位選碼datauchard[]={1,9,4,9,1,0,0,1}; datauchare[]={2,0,1,4,1,2,1,0};sbitoe=P1^3;//2個573的三態(tài)使能端sbitdula=P1^4; //段碼573控制信號sbitwela=P1^5; //位碼573控制信號 //延時函數(shù)voidmain(void){ TMOD=0x01; //設(shè)置定時器T0為方式1定時TH0=(65536-500)/256; //給T0裝入初值TL0=(65536-500)%256; //給T0裝入初值ET0=1; //允許T0中斷 EA=1; EX0=1;單片機實驗4報告全文共11頁,當(dāng)前為第5頁。單片機實驗4報告全文共11頁,當(dāng)前為第5頁。 g=0; P0=0X00; while(1); //CPU開中斷}voidEX0_int(void)interrupt0{ TR0=1;y=P2;y=~y;if(y==1){for(g=0;g<8;g++)f[g]=d[g];}if(y==2){for(g=0;g<8;g++)f[g]=e[g];}}voidT0_int(void)interrupt1 //T0中斷函數(shù){TH0=(65536-500)/256;TL0=(65536-500)%256; oe=1; //關(guān)閉2個573輸出,防止送數(shù)據(jù)時相互影響 k=f[g]; //每次顯示disp[j]的數(shù)據(jù)P0=table[k]; //相應(yīng)顯示數(shù)字段碼dula=1;dula=0; //鎖存段碼 P0=~sled_bit[g]; //選擇相應(yīng)數(shù)碼管位選wela=1;單片機實驗4報告全文共11頁,當(dāng)前為第6頁。wela=0; //單片機實驗4報告全文共11頁,當(dāng)前為第6頁。oe=0; g++;if(g>=8)g=0; //打開2個573三態(tài)門,輸出段碼和位碼}第二項#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitoe=P1^3; //數(shù)碼管段選、位選鎖存器輸出控制信號sbitdula=P1^4; //數(shù)碼管段選鎖存器控制信號sbitwela=P1^5; //數(shù)碼管位選鎖存器控制信號ucharj=0;ucharcodesled_bit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //定義點亮數(shù)碼管位選碼datauchardisp[8]={16,16,16,16,16,16,16,16};ucharcodetable[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //共陰極數(shù)碼管顯示段碼(0-F)voiddelay(n) //延時函數(shù)dataucharn;{dataucharm;while(n--)for(m=0;m<1;m++);單片機實驗4報告全文共11頁,當(dāng)前為第7頁。單片機實驗4報告全文共11頁,當(dāng)前為第7頁。voidmain(void){ uchara,b,c,i,num; TMOD=0x01; //設(shè)置定時器T0為方式1定時TH0=(65536-500)/256; //給T0裝入初值TL0=(65536-500)%256; //給T0裝入初值ET0=1; //允許T0中斷EA=1; //CPU開中斷TR0=1; //啟動T0 oe=0; P2=0xff; while(1) { P2=0xf0; delay(5); P2=0xf0; a=P2; P2=0x0f; delay(5); P2=0x0f; b=P2; a=a|b; if(a!=0xff)單片機實驗4報告全文共11頁,當(dāng)前為第8頁。 單片機實驗4報告全文共11頁,當(dāng)前為第8頁。 switch(a) { case0xee:num=0; break; case0xde:num=1; break; case0xbe:num=2; break; case0x7e:num=3; break; case0xed:num=4; break; case0xdd:num=5; break; case0xbd:num=6; break; case0x7d:num=7; break; case0xeb:num=8; break; case0xdb:num=9; break; case0xbb:num=10; break; case0x7b:num=11; break; case0xe7:num=12; break; case0xd7:num=13; break; case0xb7:num=14; break; case0x77:num=15; } for(i=0;i<7;i++)disp[i]=disp[i+1]; disp[7]=num; }單片機實驗4報告全文共11頁,當(dāng)前為第9頁。 delay(255);單片機實驗4報告全文共11頁,當(dāng)前為第9頁。 } }voidT0_int(void)interrupt1{datauchark; TH0=(65536-1000)/256;TL0=(65536-1000)%256; oe=1; //關(guān)閉2個573輸出,防止在送數(shù)據(jù)時相互影響 k=disp[j]; //每次顯示ar[j]的數(shù)據(jù) P0=table[k]; //相應(yīng)顯示數(shù)字段碼 dula=1; dula=0; //鎖存段碼 P0=sled_bit[j]; //選擇相應(yīng)數(shù)碼管位選 wela=1; wela=0; //鎖存位碼 oe=0; //打開2個573三態(tài)門,輸出段碼和位碼 j++; //為下一個顯示做準(zhǔn)備 if(j>=8)j=0; }單片機實驗4報告全文共11頁,當(dāng)前為第10頁。五、實驗單片機實驗4報告全文共11頁,當(dāng)前為第10頁。第一項:給單片機上電,未按鍵不顯示,按K1鍵,動態(tài)顯示“19491001”;按K2鍵,動態(tài)顯示“20141210”。第二項:給單片機上電,未按鍵不顯示,按矩陣式鍵盤鍵值從小到大依次按鍵,依次顯示為:0,01,012,0123,01234,012345,0123456,01234567,12345678,23456789,3456789A,456789Ab,56789AbC,6789AbCd,789AbCdE,89AbCdEF。六、實驗思考題電路中為什么要用74LS573,不用74LS573,可用什么器件代替?如果U1、U2的都直接接地,應(yīng)如何編程?答:電路中需要2片74LS573來驅(qū)動8個共陰極數(shù)碼管,所以不能用74LS573,可用74LS373代替。如果U1、U2的都直接接地,即一直為0,74LS573總是輸出鎖存數(shù)據(jù),所以應(yīng)控制數(shù)據(jù)輸入鎖存端LE,使之在需要鎖存時置1。為什么要等鍵彈起,才進行鍵值分析?答:因為在按鍵前后都有一個過渡期,在這個階段電平忽高忽低,最好等這個時期過去再判斷是否按鍵,同樣,最好等鍵彈起,才進行鍵值分析,這樣才能分析準(zhǔn)確。如果用簡單按鍵與矩陣式鍵盤構(gòu)成組合按鍵,組合按鍵如何編程得到鍵值?答:采用線反轉(zhuǎn)法,將行和列得到的鍵值相或來得到鍵

溫馨提示

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

評論

0/150

提交評論