C51單片機實驗報告 流水燈 交通燈 定時器 雙機交互 時鐘_第1頁
C51單片機實驗報告 流水燈 交通燈 定時器 雙機交互 時鐘_第2頁
C51單片機實驗報告 流水燈 交通燈 定時器 雙機交互 時鐘_第3頁
C51單片機實驗報告 流水燈 交通燈 定時器 雙機交互 時鐘_第4頁
C51單片機實驗報告 流水燈 交通燈 定時器 雙機交互 時鐘_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 實驗報告單片機核心板實驗學(xué) 號: 31100800 班 級: 自動化10班 姓 名: 張 指導(dǎo)老師: 胡 2012.1215 單片機核心板實驗要求一、 流水燈實驗1、 實驗?zāi)康模?) 簡單I/O引腳的輸出2) 掌握軟件延時編程方法3) 簡單按鍵輸入捕獲判斷2、 完成功能要求1) 開機是點亮12發(fā)光二極管,閃爍三下2) 按照順時針循環(huán)依次點亮發(fā)光二極管3) 通過按鍵將發(fā)光二極管的顯示改為順逆時針方式二、 定時器或?qū)崟r時鐘實驗1、 實驗?zāi)康?) 數(shù)碼管動態(tài)顯示技術(shù)2) 定時器的應(yīng)用3) 按鍵功能定義2、 完成功能要求1) 通過按鍵可以設(shè)定定時時間,啟動定時器,定時時間到,讓12個發(fā)光二極管閃爍,

2、完成定時器功能。2) 實時時鐘,可以設(shè)定當(dāng)前時間,完成鐘表功能(四位數(shù)碼管分別顯示分鐘和秒)。上述二個功能至少完成一種功能。三、 雙機通信實驗1、 實驗?zāi)康腢ART 串行通信接口技術(shù)應(yīng)用2、 完成功能要求用兩片核心板之間實現(xiàn)串行通信,將按鍵信息互發(fā)到對方數(shù)碼管顯示。四、 交通燈實驗1、 實驗?zāi)康?) 按鍵、數(shù)碼管、發(fā)光二極管綜合應(yīng)用編程技術(shù)2) 數(shù)據(jù)存儲于EEPROM的技術(shù)(也可以不使用)3) 定時中斷技術(shù)4) 按鍵中斷技術(shù)2、 完成功能要求1) 對每個路口(主干道、次干道)的綠燈時間,及黃燈時間的設(shè)定。2) 設(shè)定參數(shù)掉電后不丟失(如果不使用EEPROM,此功能可以不實現(xiàn))。3) 緊急按鍵功能

3、,當(dāng)按下該鍵時,所有路口變成紅燈,相當(dāng)于交警指揮特殊車輛通過。再按該鍵,恢復(fù)正常顯示。實驗一 流水燈實驗一、實驗?zāi)康?)簡單I/O引腳的輸出2)掌握軟件延時編程方法3)簡單按鍵輸入捕獲判斷二、實驗實現(xiàn)的功能1)開機是點亮12發(fā)光二極管,閃爍三下2)按照順時針循環(huán)依次點亮發(fā)光二極管3)通過按鍵將發(fā)光二極管的顯示改為順逆時針方式三、系統(tǒng)硬件設(shè)計1)如單片機核心板所示的硬件電路。四、系統(tǒng)軟件設(shè)計設(shè)計思路:1)定義數(shù)組使得調(diào)用數(shù)組可以使led燈能夠順時針和逆時針顯示;2)將按鍵的輸入端全部置零,做單獨按鍵使用;3)利用“while”循環(huán)使得數(shù)碼管可以閃爍三下;4)利用“for”循環(huán)使得小燈能夠依次點亮

4、一個周期;5)將以上思想?yún)R總,編程,實現(xiàn)功能。程序詳見附錄。五、實驗過程中遇到的問題及解決方法1)剛開始不知道怎樣只設(shè)置一個管腳(如P00),查閱相關(guān)資料后知道表示方法,并學(xué)會了用“sbit”語句定義,方便多了。2)對于C語言的很多東西都不知道,語句的用法也不清楚,重新看了C語言,用到什么看什么很快就懂了。3)主程序中沒有用延時程序和死循環(huán)導(dǎo)致led不能點亮,請教同學(xué)以后才知道。4)對于按鍵只是不了解,看書又很模糊,看了網(wǎng)上“KINGST工作室”也就是“手把手教你學(xué)單片機”的視頻后很清楚明了,之后好多東西也是從上邊學(xué)到,就不再贅述了。 指導(dǎo)老師簽字: 日期:實驗二 定時器或?qū)崟r時鐘實驗一、實驗

5、目的1)數(shù)碼管動態(tài)顯示技術(shù)2)定時器的應(yīng)用3)按鍵功能定義二、實驗實現(xiàn)的功能1)通過按鍵可以設(shè)定定時時間,啟動定時器,定時時間到,讓12個發(fā)光二極管閃爍,完成定時器功能。2)實時時鐘,可以設(shè)定當(dāng)前時間,完成鐘表功能(四位數(shù)碼管分別顯示分鐘和秒)。上述二個功能至少完成一種功能。三、系統(tǒng)硬件設(shè)計1)如單片機核心開發(fā)板所示的硬件電路。四、系統(tǒng)軟件設(shè)計設(shè)計思路:1)做的是秒表定時器的實驗;2)利用中斷技術(shù)實現(xiàn)利用單片機定時器完成計時功能;3)定時器1計時中斷程序每隔0.001s中斷一次并當(dāng)作一個計數(shù),則1000次中斷為 1秒,然后十進制進位即可;4)在程序開始計數(shù)器不工作時設(shè)定一個值,當(dāng)計數(shù)器工作時將

6、時間與設(shè)定時間比較,如果想等,計數(shù)器停止工作,小燈閃爍三下;5)將以上思想?yún)R總,編程,實現(xiàn)功能。程序詳見附錄。五、實驗過程中遇到的問題及解決方法1)最開始的時鐘和秒表都沒有用計時器和中斷,但是也達到了實驗要求,最后又改用始終計時器,浪費了很多時間。2)不知道怎么使數(shù)碼管顯示不同數(shù)字,從網(wǎng)上學(xué)到用動態(tài)掃描來顯示。3)認(rèn)真學(xué)習(xí)了中斷技術(shù)并運用之后,切實意識到中斷技術(shù)是單片機的核心技術(shù),數(shù)碼管顯示也變得簡單和穩(wěn)定了。4)子程序中的參數(shù)傳遞不出來,在網(wǎng)上搜索以后知道了全局變量和局部變量,并知道了“void”的作用。5)運用“!”符號后不用再麻煩的寫“key=0”,很實用 指導(dǎo)老師簽字: 日期:實驗三

7、雙機通信實驗一、實驗?zāi)康?)UART 串行通信接口技術(shù)應(yīng)用二、實驗實現(xiàn)的功能1)用兩片核心板之間實現(xiàn)串行通信,將按鍵信息互發(fā)到對方數(shù)碼管顯示。三、系統(tǒng)硬件設(shè)計1)如單片機核心板所示的硬件電路。四、系統(tǒng)軟件設(shè)計設(shè)計思路:1)該實驗不對端口進行復(fù)雜操作,所以實驗較簡單;2)設(shè)定波特率并計算出“TH1”和”TL1”的值;3)對單片機進行初始化;4)通過鍵盤掃面程序讀出按下降的鍵并給予相關(guān)的編號;5)輸出編號;6)讀入數(shù)過來的值;7)在數(shù)碼管上顯示;8)將以上思想?yún)R總,編程,實現(xiàn)功能。程序詳見附錄。五、實驗過程中遇到的問題及解決方法1)對UART技術(shù)不了解,看書和視頻以后有了初步了解。2)按照課本上的

8、程序模仿之后發(fā)現(xiàn)可以接收不能發(fā)送,認(rèn)真查詢程序發(fā)現(xiàn)了在利用數(shù)碼管顯示時將“P0=0XF7”直接將按鍵檢測端口置高,按鍵無效了。3)解決問題二之后還是不能發(fā)送數(shù)據(jù),最后檢查發(fā)現(xiàn)直接用“IF(TI)”不能有效地開通發(fā)送標(biāo)志位,所以用了先將初值賦值給一個數(shù),檢測之后比較,并用比較結(jié)果進入發(fā)送允許,最后實現(xiàn)。 指導(dǎo)老師簽字: 日期:實驗四 交通燈試驗一、實驗?zāi)康?)按鍵、數(shù)碼管、發(fā)光二極管綜合應(yīng)用編程技術(shù)2)數(shù)據(jù)存儲于EEPROM的技術(shù)(也可以不使用)3)定時中斷技術(shù)4)按鍵中斷技術(shù)二、實驗實現(xiàn)的功能1)對每個路口(主干道、次干道)的綠燈時間,及黃燈時間的設(shè)定。2)設(shè)定參數(shù)掉電后不丟失(如果不使用EE

9、PROM,此功能可以不實現(xiàn))。3)緊急按鍵功能,當(dāng)按下該鍵時,所有路口變成紅燈,相當(dāng)于交警指揮特殊車輛通過。再按該鍵,恢復(fù)正常顯示。三、系統(tǒng)硬件設(shè)計1)如單片機核心板所示的硬件電路。四、系統(tǒng)軟件設(shè)計設(shè)計思路:1)該實驗較麻煩,但是有實驗一和實驗二做鋪墊思路也是很清晰地;2)交通燈為南北通東西停等待東西通南北停等待南北通東西停依次循環(huán),所以應(yīng)該設(shè)計一個周期包含以上四步;3)計數(shù)器工作時比較計數(shù)器的值和所設(shè)定的置,確定范圍,確定該范圍內(nèi)顯示的燈的種類;4)對于急停的情況,應(yīng)該在每秒都檢測一下鍵盤,如果鍵盤有輸入,中斷,執(zhí)行全部紅燈的程序;5)關(guān)于跳出急停程序,用“while“循環(huán)和”if“語句實現(xiàn)

10、;6)紅綠燈和黃燈的顯示時間在程序最開始計數(shù)器未開始工作室設(shè)定兩個數(shù)的值;7)將以上思想?yún)R總,編程,實現(xiàn)功能。程序詳見附錄。五、實驗過程中遇到的問題及解決方法1)該實驗是一個綜合性較強的實驗,不過由于有實驗一,實驗二的鋪墊,在技術(shù)上遇到的問題已經(jīng)很少了,但是還是遇到一些問題。2)最開始的時鐘和秒表都沒有用計時器和中斷,但是也達到了實驗要求,最后又改用始終計時器,浪費了很多時間。3)在急停之后如何出循環(huán)成為一個很大的困惑,最后運用了“while”循環(huán)解決了。4)發(fā)現(xiàn)用子程序以后會使程序簡明不少。 指導(dǎo)老師簽字: 日期:附錄:實驗一 流水燈實驗最終實現(xiàn):按任意鍵反向,只是必須等到一輪結(jié)束以后。程序

11、如下:#include<reg52.h>#define uchar unsigned charsbit ko1=P36;sbit ko2=P37;sbit ki1=P05;sbit ki2=P06;sbit ki3=P07;tab1=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff;tab2=0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3b,0x37,0x2f,0x1f;tab3=0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0x

12、fb,0xfd,0xfe;tab4=0x1f,0x2f,0x37,0x3b,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f;void Delay900ms()/11.0592MHzunsigned char i, j, k;i = 13;j = 156;k = 83;dodowhile (-k); while (-j); while (-i);void Delay10ms()/11.0592MHzunsigned char i, j;i = 108;j = 145;dowhile (-j); while (-i);void flick()uchar d;whil

13、e(d<=2)P2=0x00;P3=0xc3;Delay900ms();P2=0xff;P3=0xff;Delay900ms();d+; void main()uchar b,y,n;flick(); while(1)n=b;y=(n%2);if(y=1)uchar x;for(x=0;x<12;x+)P2=tab3x;P3=tab4x;Delay900ms();ko1=0;ko2=0;ki1=1;ki2=1;ki3=1;if(!ki1|!ki2|!ki3)Delay10ms();if(!ki1|!ki2|!ki3)b+=1;while(!ki1|!ki2|!ki3);if(y=0

14、)uchar x;for(x=0;x<12;x+) P2=tab1x;P3=tab2x;Delay900ms();ko1=0;ko2=0;ki1=1;ki2=1;ki3=1;if(!ki1|!ki2|!ki3) Delay10ms(); if(!ki1|!ki2|!ki3) b+=1; while(!ki1|!ki2|!ki3); 實驗二 定時器時鐘實驗最終實現(xiàn):上電后設(shè)置定時時間,按2號鍵時間+1,按3號鍵時間+100;按1號鍵開始工作;時間到偶小燈閃爍3下,回到初始狀態(tài)。程序如下:#include<reg52.h>#define uchar unsigned char#d

15、efine uint unsigned intsbit ko1=P36;sbit ko2=P37;sbit ki1=P05;sbit ki2=P06;sbit ki3=P07;sfr P1M1=0x91;sfr P1M0=0x92;tab1=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;tab2=0xf7,0xfb,0xfd,0xfe;tab34=0;uint a=0;uint b=0;void Delay100ms()/11.0592MHzunsigned char i, j, k;i = 5;j = 52;k = 195;dodowhi

16、le (-k); while (-j); while (-i);void Delay5ms()/11.0592MHzunsigned char i, j;i = 54;j = 199;dowhile (-j); while (-i);void flick()uchar d;while(d<=2)P2=0x00;P3=0xc3;Delay100ms();P2=0xff;P3=0xff;Delay100ms();d+; void show()char j;switch(j)case 0:P0=tab2j;j+;P1=tab1tab30;break;case 1:P0=tab2j;j+;P1=

17、tab1tab31;break;case 2:P0=tab2j;j+;P1=tab1tab32;break;case 3:P0=tab2j;j=0;P1=tab1tab33;break;default:break;void interrupt_timer1() interrupt 3TH1=0xfc;TL1=0x67;a+;if(a=1000)b+;a=0;tab30=b%10;tab31=b/10%10;tab32=b/100%10;tab33=b/1000%10;show();void main()uchar m,k;uint n=1;P1M1=0x00;P1M0=0xff;TMOD=0x

18、10;TH1=0xfc;TL1=0x67;ET1=1;EA=1;while(1)if(!TR1)k=0;for(k=0;k<50;k+)ko1=0;ko2=0;ki1=1;ki2=1;ki3=1;if(!ki1)Delay5ms();if(!ki1)TR1=1;break;while(!ki1);if(!ki2)Delay5ms();if(!ki2)n+=1;while(!ki2); if(!ki3)Delay5ms();if(!ki3)n+=100;while(!ki3);tab30=n%10;tab31=n/10%10;tab32=n/100%10;tab33=n/1000%10;f

19、or(m=0;m<4;m+)P0=tab2m; P1=tab1tab3m;Delay5ms(); if(m=4) m=0; if(b=n)TR1=0;b=0;n=1;flick();實驗三 雙機通信實驗最終實現(xiàn):兩機連接后按任意鍵可在兩外的機子上顯示該鍵編號。程序如下:#include<reg52.h>#define uchar unsigned char#define uint unsigned intsfr P1M1=0x91;sfr P1M0=0x92;sbit ko1=P36;sbit ko2=P37;sbit ki1=P05;sbit ki2=P06;sbit ki

20、3=P07;sbit scran=P03;tab1=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar a,b,n;void Delay5ms()/11.0592MHzunsigned char i, j;i = 54;j = 199;dowhile (-j); while (-i);void main()SCON=0xd0;TMOD=0x20;PCON=0x00;TH1=0xf4;TL1=0xf4;TR1=1;scran=0;while(1)n=a;ko1=0;ko2=1;ki1=1;ki2=1;ki3=1;if(!ki1)Dela

21、y5ms();if(!ki1)a=1;while(!ki1);if(!ki2)Delay5ms();if(!ki2)a=2;while(!ki2);if(!ki3)Delay5ms();if(!ki3)a=3;while(!ki3);ko1=1;ko2=0;ki1=1;ki2=1;ki3=1;if(!ki1)Delay5ms();if(!ki1)a=4;while(!ki1);if(!ki2)Delay5ms();if(!ki2)a=5;while(!ki2);if(!ki3)Delay5ms();if(!ki3)a=6;while(!ki3);if(a!=n)SBUF=a;while(!TI

22、);TI=0; if(RI)b=SBUF;RI=0;P1=tab1b;實驗四 交通燈實驗最終實現(xiàn):上電之后進行初始設(shè)置,2號鍵增加紅綠燈時間,3號鍵增加黃燈時間,初始時間都為零;1號鍵開始工作;按3、4、5任意鍵急停,按3、4、5任意鍵繼續(xù)(從第一步開始。程序如下:#include<reg52.h>#define uchar unsigned char#define uint unsigned intvoid led_show();uchar m,n;uint a=0;uint b=0;uchar k,c,d,f,g;sfr P1M1=0x91;sfr P1M0=0x92;sbit

23、 ko1=P36;sbit ko2=P37;sbit ki1=P05;sbit ki2=P06;sbit ki3=P07;sbit dh=P22;sbit dl=P20;sbit dy=P21;sbit xh=P32;sbit xl=P26;sbit xy=P27;sbit nh=P25;sbit nl=P23;sbit ny=P24;sbit bh=P35;sbit bl=P33;sbit by=P34;tab1=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;tab2=0xf7,0xfb,0xfd,0xfe;tab34=0;void sh

24、ow()char j;switch(j)case 0:P0=tab2j;j+;P1=tab1tab30;break;case 1:P0=tab2j;j+;P1=tab1tab31;break;case 2:P0=tab2j;j+;P1=tab1tab32;break;case 3:P0=tab2j;j=0;P1=tab1tab33;break;default:break;void Delay5ms()/11.0592MHzunsigned char i, j;i = 54;j = 199;dowhile (-j); while (-i);void interrupt_timer1() inte

25、rrupt 3TH1=0xfc;TL1=0x67;a+;if(a=1000)b+;a=0;if(b<m&&b>=0)tab30=(m-b)%10;tab31=(m-b)/10%10;tab32=(m-b)/100%10;tab33=(m-b)/1000%10;if(b<d&&b>=m)tab30=(d-b)%10;tab31=(d-b)/10%10;tab32=(d-b)/100%10;tab33=(d-b)/1000%10;if(b<f&&b>=d)tab30=(f-b)%10;tab31=(f-b)/10%

26、10;tab32=(f-b)/100%10;tab33=(f-b)/1000%10;if(b<g&&b>=f)tab30=(g-b)%10;tab31=(g-b)/10%10;tab32=(g-b)/100%10;tab33=(g-b)/1000%10;show();void det()ko1=1;ko2=0;ki1=1;ki2=1;ki3=1;if(!ki1|!ki2|!ki3)Delay5ms();if(!ki1|!ki2|!ki3)P2=0xdb;bl=1;by=1;xh=0;bh=0;while(!ki1|!ki2|!ki3);while(ki1)if(!ki1|!ki2|!ki3)while(!ki1|!ki2|!ki3);b=0;break;void led_show()while(1)dl=1;xl=1;nl=1;b

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論