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

下載本文檔

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

文檔簡介

1、單 片 機 實 驗 報 告姓名:鐘林春班級:0801205學號:2012212963任課教師:張開碧上課地點:S411實驗一流水燈實驗一、實驗目的及要求1、閃爍的LED;2、從左到右的流水燈;3、8只LED左右來回點亮;4、LED模擬交通燈。要求1: LED按設定的時間間隔閃爍要求2:接在P0 口的8個LED從左到右循環(huán)依次點亮,產(chǎn)生走馬燈效果要求3:程序利用循環(huán)移位函數(shù) _crol_和_cror_形成來回滾動的效果;二、實驗原理rarapapoPTaptipn血FZF3.3WH1 P2JW2 P? W ? l2 t&TAI !F2 POtlUFiMD Pl IHXD PS JJIHTD P3

2、 則IWIP3(UT1電路圖2、金WLISCWL3EIWHRUMK acjwrFZIAA誥hOFl 1 吋PSW門WmH 的HPH.Trfi pjjmlxrPl WTI2n MtPLfl円相nfln.r土亠士土丄三、源程序要求1:#in clude#defi ne uchar un sig ned char#defi ne uint un sig ned int sbit LED=P1A0;/延時void DelayMS(ui nt x)uchar i;while(x-) for(i=0;i120;i+);/主程序void mai n()while(1)LED=LED; DelayMS(150

3、);要求2:#in clude _cror_(PO,y)#i nclude / 包含程序中的#defi ne uchar un sig ned char#defi ne uint un sig ned intuchar led;void delay (un sig ned int i)uint j;uchar k;for(j=i;j0;j-) for(k=125;k0;k-);void mai n()led=0x7f;只亮第一個delay(1000);while(1)P0=led;delay(500);led=_cror_(led,1);P0 逐步右移一位。要求3:#in elude #inc

4、lude /包含程序中的 _crol_(P0,y)#defi ne uchar un sig ned char#defi ne uint un sig ned intsbit led=P0A0;uchar i;void delay (un sig ned int i)uint j;uchar k;for(j=i;j0;j-)for(k=125;k0;k-);void mai n() P0=0xfe;delay(IOOO);while(1)for(i=0;i8;i+)P0=led;delay(500);led=_crol_(led,1);P0 逐步左移一位。for(i=0;i8;i+)P0=le

5、d;delay(500);led=_cror_(led,1);P0 逐步右移一位實驗二獨立鍵盤實驗、實驗目的1、K1-K4 按鍵狀態(tài)顯示;2、K1-K4控制LED移位;3、單只數(shù)碼管循環(huán)顯示 09;4、K1-K4控制數(shù)碼管移位顯示。要求1: K1、K2按下時LED點亮,松開時熄滅,K3、K4按下并釋放時LED點亮,再次按下并釋放時熄滅;要求2: 按下K1時,P0 口 LED上移一位;按下K2時,P0 口 LED下移一位;按下K3時,P2 口 LED上移一位;按下K4時,P2 口 LED下移一位;要求3:主程序中的循環(huán)語句反復將09的段碼送至P0 口,使數(shù)字09循環(huán)顯示;要求4:按下K1時加1計

6、數(shù)并增加顯示位,按下K2時減1計數(shù)并減少顯示位,按下K3時清零、實驗原理亠二亠芒二亠亠占盤亠亠.亠玄亠mim liUiim uuhHV1LMnowi- 陸dm三、源程序要求1:#in clude#defi ne uchar un sig ned char#defi ne uint un sig ned intsbit LED仁POP;sbit LED2=P0A1;sbit LED3=P0A2;sbit LED4=P0A3;sbit K仁 P1AO;sbitK2=Pl;sbit K3=P1A2;sbit K4=P1A3;/延時voidDelayMS(ui nt x)uchar i;while(x

7、-) for(i=0;i120;i+);/主程序void mai n()PO=Oxff;P仁 Oxff;while(1)LED1=K1;LED2=K2;if(K3=0)while(K3=0); LED3=LED3;if(K4=O)while(K4=0);LED4=LED4;DelayMS(IO);要求2:#in clude#defi ne uchar un sig ned char#defi ne uint un sig ned intuchar led1;uchar led2;sbit K仁 P1A0;sbitK2=P1A1;sbit K3=P2;sbit K4=P1A3;/延時voidDe

8、layMS(ui nt x)uchar i;while(x-) for(i=0;i120;i+);/主程序void mai n()led 仁Oxfe;Led2=0xfe;while(1)if(K1=0)while(K1=0); P0=led1;PO 口 LED上移一位。P0 口 LED下移一位。Ied=_crol_(led1,1); if(K2=0)while(K2=0); P0=led1; led=_cror_(led1,1);if(K3=0)while(K3=0);P2=led2;Led仁_crol_(led2,1);P0 口 LED 上移一位。 if(K4=0)while(K4=0);P

9、2=led2;Led2=_cror_(led2,1);P0 口 LED 下移一位。要求3:#in clude#defi ne uchar un sig ned char#defi ne uint un sig ned intuchar code display10=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f;/延時Void DelayMS(ui nt x)uchar i;while(x-) for(i=0;i120;i+);/主程序void mai n()uchar i;while(1)for(i=0;i10;i+)PO=display

10、i;DelayMS(500)i=0;要求4:#in clude#defi ne uchar un sig ned char#defi ne uint un sig ned intsbit K仁 P1A0;Sbit K2=P1A1;sbit K3=P1A2;uchar code display10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/延時Void DelayMS(ui nt x) uchar i;while(x-) for(i=0;i a KS J= * 10 dI aKE KFa a4-三、源程序要求1:#in clude#in

11、 clude#defi ne uchar un sig ned char#defi ne uint un sig ned int/矩陣鍵盤按鍵特征碼表uchar code KeyCodeTable=0x11,0x12,0x14,0x18,0x21,0x22,0x24,0x28,0x41,0x42,0x44,0x48,0x81,0x82,0x84,0x88;/延時voidDelayMS(ui nt x)uchar i;while(x-) for(i=0;i120;i+);/鍵盤掃描ucharKeys_Sca n()Uchar sCode,kCode,i,k;低4位置0,放入4行P仁 0xf0;若

12、高4位出現(xiàn)0,則有鍵按下if(P1 &0 xf0)!=0xf0)DelayMS(2);if(P1 &0xf0)!=0xf0)sCode=0xfe;行掃描碼初值for(k=0;k4;k+)/對4行分別進行掃描P仁 sCode;if(P1 &0 xf0)!=0xf0)kCode=P1;for(i=0;i16;i+)/查表得到按鍵序號并返回if(kCode=KeyCodeTablei)return(i);elsesCode=_crol_(sCode,1);return(-1);/主程序void mai n()uchar i,P2_LED,P3_LED;ucharKeyNo=-1;按鍵序號,-1表示無

13、按鍵while(1)KeyNo=Keys_Sca n();/掃描鍵盤獲取按鍵序號KeyNoif(KeyNo!=-1)P2_LED=0xff;P3_LED=0xff;for(i=0;i=KeyNo;i+)鍵值越大,點亮的 LED越多if(i=1;elseP2_LED=1;P3=P3_LED; /點亮條形 LEDP2=P2_LED;要求2:#in clude#in clude #defi ne uchar un sig ned char#defi ne uint un sig ned intun sig ned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x

14、6d,0x7d,void matrixkeysca n()0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0-F的碼表/矩陣鍵盤P仁 Oxfe;temp=P1;temp=temp&0 xf0;if (temp!=OxfO)delay(IO);temp=P1; temp=temp&OxfO;if (temp!=0xf0) temp=P1;switch (temp)case 0xee:key=1, num=O;break;case 0xde:key=2, num=1;break;case 0xbe:key=3 ,num=2;break;case 0x7e

15、:key=4,num=3;break;while (temp!=OxfO)temp=P1; temp=temp&0 xf0;P仁 Oxfd;temp=P1;temp=temp&0 xf0;if (temp!=OxfO)delay(10);temp=P1; temp=temp&OxfO;if (temp!=OxfO)temp=P1; switch (temp) case Oxed:key=5 ,num=4;break;case Oxdd:key=6 ,num=5;break; case Oxbd:key=7 ,num=6;break; case 0x7d:key=8 ,num=7;break;w

16、hile (temp!=OxfO)temp=P1;temp=temp&0 xf0;P1=0xfb;temp=P1;temp=temp&0 xf0;if (temp!=0xf0)delay(10);temp=P1;temp=temp&0xf0;if (temp!=0xf0)temp=P1;switch (temp)case 0xeb:key=9 ,num=8;break;case 0xdb:key=9 ,num=9;break; case 0xbb:key=10;break; case 0x7 b:key=11;break;while (temp!=0xf0)temp=P1;temp=temp&

17、0 xf0;P仁 0xf7;temp=P1;temp=temp&0 xf0;if (temp!=OxfO)delay(10);temp=P1; temp=temp&OxfO;if (temp!=0xf0)temp=P1;switch (temp)case 0xe7:key=12;break; case 0xd7:key=13;break;case 0xb7: key=14;break;case 0x77: key=15;break;default: break;while (temp!=0xf0) temp=P1; temp=temp&0 xf0;Void mai n() while(1)ma

18、trixkeysca n();P0=tablekey;實驗四外部中斷實驗一、實驗目的及要求1、INTO中斷計數(shù);2、外部INTO中斷控制 LED;3、INTO及INT1中斷計數(shù)要求1:每次按下計數(shù)鍵時觸發(fā)INTO中斷,中斷程序累加計數(shù),計數(shù)值顯示在3只數(shù)碼管上,按下清零鍵時數(shù)碼管清零要求2:每次按鍵都會觸發(fā)INTO中斷,中斷發(fā)生時將 LED狀態(tài)取反,產(chǎn)生LED狀態(tài) 由按鍵控制的效果要求3:每次按下第1個計數(shù)鍵時,第1組計數(shù)值累加并顯示在右邊 3只數(shù)碼管上, 每 次按下第2個計數(shù)鍵時,第2組計數(shù)值累加并顯示在左邊3只數(shù)碼管上,后兩個按鍵分別清零。二、實驗原理電路圖1、RPl三、源程序要求1:#i

19、n clude#defi ne uchar un sig ned char#defi ne uint un sig ned int09的段碼uchar code DSY_CODE=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;/計數(shù)值分解后各個待顯示的數(shù)位uchar DSY_Buffer=0,0,0;uchar Coun t=0;sbit Clear_Key=P3A6;數(shù)碼管上顯示計數(shù)值void Show_Co unt_O N_DSY()DSY_Buffer2=Count/1OO; /獲取 3 個數(shù)DSY_Buffer1=Cou

20、nt%1OO/1O;DSY_Buffer0=Cou nt%10;if(DSY_Buffer2=0)/高位為 0 時不顯示DSY_Buffer2=0x0a;if(DSY_Buffer1=0)高位為0,若第二位為 0同樣不顯示DSY_Buffer1=0x0a;P0=DSY_CODEDSY_Buffer0;P1=DSY_CODEDSY_Buffer1;P2=DSY_CODEDSY_Buffer2;/主程序void mai n()P0=0x00;P仁0x00;P2=0x00;IE=0x81; / 允許 INT0 中斷IT0=1;/下降沿觸發(fā)while(1)if(Clear_Key=0) Count=0

21、;清 0Show_C ount_O N_DSY();/INT0中斷函數(shù)void EX_INT0() in terrupt 0Cou nt+;計數(shù)值遞增要求2:#in clude#defi ne uchar un sig ned char#defi ne uint un sig ned intSbit LED=P0A0;/主程序void mai n()IE=0x81; / 允許 INTO 中斷IT0=1;/下降沿觸發(fā)while(1);/INT0中斷函數(shù)void EX_INT0() in terrupt 0LED=LED; 控制 LED 亮滅要求3:#in clude#defi ne uchar

22、un sig ned char#defi ne uint un sig ned intun sig ned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;int nu m1, nu m2;sbit K3=P3A4; 清零 1sbit K4=P3A5;/ 清零 2sbit wela 1=卩2人0;sbit wela2=P2Al;sbit wela3=P2A2;sbit wela4=P2A3;sbit wela5=P2A4;sbit wela6=P2A5

23、;Void display(i nt nu m2,i nt nu ml);void mai n()IE=0x85; / 開 EA 總中斷,允許 INT1 和 INT0 中斷,1000 0101IT0=1;/下降沿觸發(fā)IT1=1;下降沿觸發(fā)while(1)if(K3=0)while(K3=0);nu m1=0;if(K4=0)while(K4=0);nu m2=0;Display (nu m2, nu ml);/INTO中斷函數(shù)void EX_INT0() in terrupt 0num1+;/右邊的數(shù)字加 1void EX_INT0() in terrupt 0num2+;/左邊的數(shù)字加 1V

24、oid display(i nt nu m2,i nt nu m1)bai=num1/100; 右邊 num1 百位shi=(num1/10)%10; 右邊 num1 十位ge=nu m1%10;swan=num2/100;左邊num2百位,數(shù)碼管十萬位wa n=( nu m2/10)%10;qia n=nu m2%10;wela1=1;打開最高位數(shù)碼管的位選P1=tableswan;輸入段選數(shù)據(jù),即 NUM2的百位數(shù),數(shù)碼管的十萬位wela1=0;/關(guān)閉最高位數(shù)碼管的位選wela2=1;P1=tablewa n;wela2=0;wela3=1;P1=tableqia n;wela3=0;we

25、la4=1;P1=tablebai;wela4=0;wela5=1; P仁tableshi;wela5=0;wela6=1;P1=tablege; wela6=0;實驗五定時器中斷實驗一、實驗目的1、定時器控制單只 LED;2、TIMERO 控制流水燈;3、定時器控制4個LED滾動閃爍;要求1 : LED在定時器的中斷例程控制下不斷閃爍;要求2 :定時器控制P0、P2 口的LED滾動顯示,本例未使用中斷函數(shù); 要求3: 4只LED在定時器控制下滾動閃爍;二、實驗原理電路圖1、 C1C2卅22pf: R1丄m12M 10ic C31-冊-w; s BU12_PO.ODO慣T赳PO.1XM51FO

26、.3JWD3XTAL2FO片恥04P0.5JMD5FO.6JWD6PO.7JWD7P2.0tAe P2.1XA9P2 2/A.1QPSN旳珈11gTP2 4/A12 旳陽JE*巴辺14P2 7/A.15P1I.QP.iQiRMpP3JJTXDP1I.2P3 2 劇 1TQP1I.3P3 3miriPI 4PS.UTOP1I.5P3.5H1P1i.BP1I.7iP3.7fiD199AT69C51卜 XJ三、源程序要求1:#in clude#define uchar un sig ned char#define uint un sig ned intsbit LED=P0A0;uchar T_Co

27、 un t=0;/主程序void mai n()TMOD=OxOO;定時器0工作方式0TH0=(8192-5000)/32;/5ms 定時TL0=(8192-5000)%32;IE=0x82;/允許T0中斷TR0=1;while(1);/TO中斷函數(shù)void LED_Flash() in terrupt 1TH0=(8192-5000)/32;恢復初值TL0=(8192-5000)%32;if(+T_Count=100)/0.5s 開關(guān)一次 LEDLED=LED;T_Cou nt=0;要求2:#in clude#in clude#defi ne uchar un sig ned char#de

28、fi ne uint un sig ned int/主程序void mai n()uchar T_Coun t=0;P0=0xfe;P2=0xfe;/定時器0工作方式1/40ms定時/啟動定時器TMOD=0x01;TH0=(65536-40000)/256;TL0=(65536-40000)%256; TR0=1;while(1)if(TF0=1)TF0=0;TH0=(65536-40000)/256;/ 恢復初值TL0=(65536-40000)%256;if(+T_Cou nt=5)P0=_crol_(P0,1);P2=_crol_(P2,1);T_Cou nt=0;要求3:#in clude#defi ne uchar un sig ned char#defi ne uint un sig ned intsbit B仁 P0A0;sbit G仁 P0A1;sbit R仁 P0A2;sbit 丫仁 P0A3;uint i,j,k;/主程序void mai n()i=j=k=0;P0=0xff;定時器0工作方式2/200us 定時啟動定時器TMOD=0x02; TH0=256-200;TL0=256-200;IE=0x82;TR0=1;while(1);/TO中斷函數(shù) void LED_Flash_a nd_Scroll() in ter

溫馨提示

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

評論

0/150

提交評論