《單片機的原理及的應用》實驗報告材料_第1頁
《單片機的原理及的應用》實驗報告材料_第2頁
《單片機的原理及的應用》實驗報告材料_第3頁
《單片機的原理及的應用》實驗報告材料_第4頁
《單片機的原理及的應用》實驗報告材料_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機原理與應用實驗報告 1 系別計算機學院專業(yè)軟件工程 授課教師.實驗一:流水燈實驗1實驗目的1學習編譯和仿真環(huán)境使用2學習P3口的使用方法3學習延時子程序的編寫2實驗內(nèi)容1通過對P3口地址的操作控制8位LED流水點亮,從而認識單片機的接口;LED燈的點亮與否,通過延時程序控制亮燈時間.3實驗運行結(jié)果圖4源代碼/流水燈實驗#include /包含單片機存放器的頭文件sfrx=0 xb0; /P3口在存儲器中的地址是b0H,通過sfr可定義8051內(nèi)核單片機/的所有內(nèi)部8位特殊功能存放器,對地址x的操作也就是對P1口的操作/*函數(shù)功能:延時一段時間*/void delayunsigned ch

2、ar i,j;fori=0;iforj=0;j; /利用循環(huán)等待假如干機器周期,從而延時一段時間/*函數(shù)功能:主函數(shù)*/void main.whilex=0 xfe; /第一個燈亮delay; /調(diào)用延時函數(shù)x=0 xfd; /第二個燈亮delay; /調(diào)用延時函數(shù)x=0 xfb; /第三個燈亮delay; /調(diào)用延時函數(shù)x=0 xf7; /第四個燈亮delay; /調(diào)用延時函數(shù)x=0 xef; /第五個燈亮delay; /調(diào)用延時函數(shù)x=0 xdf; /第六個燈亮delay; /調(diào)用延時函數(shù)x=0 xbf; /第七個燈亮delay; /調(diào)用延時函數(shù)x=0 x7f; /第八個燈亮delay;

3、/調(diào)用延時函數(shù).實驗二:中斷實驗1實驗目的1熟悉51單片機中斷初始化編程方法.2掌握51單片機外部中斷源的設計使用.3中斷處理應用程序的設計與調(diào)試技巧.2實驗內(nèi)容通過對引腳的電平控制,實現(xiàn)外部中斷處理,從而控制輸出口P1的輸出效果變化.3實驗運行結(jié)果圖4源代碼/用外中斷0的中斷方式進展數(shù)據(jù)采集和處理#include /包含51單片機存放器定義的頭文件sbit S=P32;/將S位定義為P3.2,/*函數(shù)功能:主函數(shù)*/void mainEA=1; /開放總中斷EX0=1; /允許使用外中斷IT0=1; /選擇負跳變來觸發(fā)外中斷P1=0 xff;while; /無限循環(huán),防止程序跑飛/*函數(shù)功能

4、:外中斷T0的中斷服務程序*/void int0 interrupt 0 using 0 /外中斷0的中斷編號為0P1=P1; /每產(chǎn)生一次中斷請求,P1取反一次./用外中斷0的中斷方式進展數(shù)據(jù)采集和處理#include /包含51單片機存放器定義的頭文件#define uchar unsigned charvoid Delayuchar j;for0;i-forj=0;j;/sbit S=P32;/將S位定義為P3.2,./*函數(shù)功能:主函數(shù)*/void mainuchar display9=0 xff,0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0

5、x7f;unsigned int a;whileEA=1; /開放總中斷EX0=1; /允許使用外中斷EX1=1;IT0=1; /選擇負跳變來觸發(fā)外中斷IT1=1;IP=0;fora=0;aDelay;P1=displaya;/*函數(shù)功能:外中斷T0的中斷服務程序*/void int0_isr interrupt 0 using 1 /外中斷0的中斷編號為1uchar n;forn=0;np1=0 x0f;Delay;P1=0 xf0;Delay;void int1_isr interrupt 2 using 2uchar n;forn=0;np1=0 xff;Delay;P1=0;Delay

6、;.實驗三:定時器/計數(shù)器實驗1實驗目的1熟悉51單片機中斷初始化編程方法2熟悉51單片機定時計數(shù)器的初始化編程方法3掌握定時計數(shù)器的應用2實驗內(nèi)容通過使用定時器T0的中斷來控制P2.0引腳的的LED的燈閃爍,要求閃爍時間2S,既亮1 S,滅1 S.3實驗運行結(jié)果圖4源代碼#include / 包含51單片機存放器定義的頭文件sbit D1=P14; /將D1位定義為P1.4引腳unsigned char Countor; /設置全局變量,儲存定時器T0中斷次數(shù)/*函數(shù)功能:主函數(shù)*/void mainEA=1;ET0=1;/開總中斷/定時器T0中斷允許/使用定時器T0的模式2TMOD=0 x

7、01;TH0=/256; /定時器T0的高8位賦初值TL0=%256; /定時器T0的高8位賦初值TR0=1;/啟動定時器T0Countor=0;/從0開始累計中斷次數(shù)while/無限循環(huán)等待中斷;/*函數(shù)功能:定時器T0的中斷服務程序*/void Time0 interrupt 1 using 0 數(shù)/其后的1為定時器T0表示使用第0組工作存放器Countor+; /中斷次數(shù)自加1if /假如累計滿20次,即計時滿1sD1=D1;/按位取反操作,將P2.0引腳輸出電平取反Countor=0; /將Countor清0,重新從0開始計數(shù)TH0=/256; /定時器T0的高8位重新賦初值.TL0=

8、%256; /定時器T0的高8位重新賦初值.實驗四:串行口實驗1實驗目的1掌握單片機的串行口的工作原理2掌握單片機串行口收發(fā)數(shù)據(jù)的方法2實驗內(nèi)容本實驗要求單片機U1通過其串行口TXD向單片機U2發(fā)送數(shù)據(jù).單片機U1的P1口接8個開關(guān),U2的P1口接8個發(fā)光二極管.U1設置為只能發(fā)送不能接收,U1讀入P1口的8個開關(guān)狀態(tài)后,通過串行口發(fā)送到U2,U2將接收到的數(shù)據(jù)送入P1口,由P1口上連接的8個發(fā)光二極管顯示8個開關(guān)的狀態(tài).3實驗運行結(jié)果圖4源代碼/*發(fā)送單片機的發(fā)送程序*/#include/包含存放器的頭文件/*向PC發(fā)送一個字節(jié)數(shù)據(jù)*/void SendSBUF=date;while;TI=

9、0;/*延時約150ms*/void delayunsigned char m,n;form=0;mforn=0;n;/*函數(shù)功能:主函數(shù)*/void mainunsigned char temp;.TMOD=0 x20; /定時器T1工作于方式2SCON=0 x40; /串口工作方式1PCON=0 x00; /波特率9600TH1=0 xfd; /根據(jù)規(guī)定給定時器T1賦初值TL1=0 xfd; /根據(jù)規(guī)定給定時器T1賦初值TR1=1;/啟動定時器T1P1=0 xff; /讀取P1端口數(shù)據(jù)whiletemp=P1;Send;/發(fā)送數(shù)據(jù)idelay; /50ms發(fā)送一次檢測數(shù)據(jù)/*接收單片機的接

10、收程序*/#include/包含單片機存放器的頭文件/*接收一個字節(jié)數(shù)據(jù)*/unsigned char Receiveunsigned char date;while ; /只要接收中斷標志位RI沒有被置1/等待,直至接收完畢RI=1RI=0;date=SBUF; /將接收緩沖器中的數(shù)據(jù)存于datreturn date;/為了接收下一幀數(shù)據(jù),需將RI清0/*主函數(shù)*/void main.TMOD=0 x20; /定時器T1工作于方式2SCON=0 x50; /SCON=0101 0000B,串口工作方式1,REN=1PCON=0 x00; /PCON=0000 0000B,波特率9600TH1

11、=0 xfd; /根據(jù)規(guī)定給定時器T1賦初值TL1=0 xfd; /根據(jù)規(guī)定給定時器T1賦初值TR1=1;REN=1;while/啟動定時器T1/允許接收P1=Receive; /將接收到的數(shù)據(jù)送P1口顯示.實驗五:輸入接口實驗1實驗目的1掌握共陰極、共陽極LED的使用方法2掌握矩陣鍵盤輸入掃描和識別程序編寫2實驗內(nèi)容設計一個4X4的矩陣鍵盤,鍵盤的015,要求編寫出一個鍵盤輸入掃描程序,要求單片機能根據(jù)鍵盤排列順序,能將按下去鍵盤號正確識別出來,并采用兩個數(shù)碼管分別鍵盤的個位和十位.3實驗運行結(jié)果圖4源代碼#include /包含51單片機存放器定義的頭文件sbit P14=P14;sbit

12、 P15=P15;sbit P16=P16;sbit P17=P17;unsignedcharcodeTab =0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;09的段碼/數(shù)字unsigned char keyval;/*函數(shù)功能:數(shù)碼管動態(tài)掃描延時*/void led_delayunsigned char j;forj=0;j;/*函數(shù)功能:按鍵值的數(shù)碼管顯示子程序*/void displayP2=0 xbf;P0=Tabk/10;led_delay;P2=0 x7f;P0=Tabk%10;led_delay;/*函數(shù)功

13、能:軟件延時子程序*/.void delay20msunsigned char i,j;fori=0;iforj=0;j;/*函數(shù)功能:主函數(shù)*/void mainEA=1;ET0=1;TMOD=0 x01;TH0=/256;TL0=%256;TR0=1;keyval=0 x00;whiledisplay;/*函數(shù)功能:定時器0的中斷服務子程序,進展鍵盤掃描,判斷鍵位*/void time0_interserve interrupt 1 using 1TR0=0;P1=0 xf0;if!=0 xf0delay20ms;if!=0 xf0P1=0 xfe;ifkeyval=1;ifkeyval=

14、2;ifkeyval=3;ifkeyval=4;.P1=0 xfd;ifkeyval=5;keyval=6;keyval=7;keyval=8;ifififP1=0 xfb;ifkeyval=9;ifififP1=0 xf7;keyval=10;keyval=11;keyval=12;ifkeyval=13;keyval=14;keyval=15;ifififkeyval=16;TR0=1;TH0=/256;TL0=%256;.實驗六:LCD循環(huán)顯示實驗1實驗目的1掌握單片機驅(qū)動顯示屏的方法2掌握LCD1602的使用方法2實驗內(nèi)容采用1602型LCD循環(huán)顯示字符串Wele to Heifei

15、Normal University.其中LCD位數(shù)據(jù)口;顯示開、有光標開且光標閃爍;光標右移,字符不移.3實驗運行結(jié)果圖4源代碼#include/包含單片機存放器的頭文件#include /包含_nop_函數(shù)定義的頭文件sbit RS=P20;sbit RW=P21;sbit E=P22;sbit BF=P07;/存放器選擇位,將RS位定義為P2.0引腳/讀寫選擇位,將RW位定義為P2.1引腳/使能信號位,將E位定義為P2.2引腳/忙碌標志位,將BF位定義為P0.7引腳unsigned char code string =Wele to China ;/*函數(shù)功能:延時1ms*i=10=101

16、0,可以認為是1毫秒*/void delay1msunsigned char i,j;fori=0;iforj=0;j;/*函數(shù)功能:延時假如干毫秒入口參數(shù):n*/void delayunsigned char i;fori=0;idelay1ms;/*函數(shù)功能:判斷液晶模塊的忙碌狀態(tài)返回值:result.result=1,忙碌;result=0,不忙*/unsigned char BusyTest.bit result;RS=0;RW=1;/根據(jù)規(guī)定,RS為低電平,RW為高電平時,可以讀狀態(tài)/E=1,才允許讀寫E=1;_nop_; /空操作_nop_;_nop_;_nop_; /空操作四個機

17、器周期,給硬件反響時間result=BF; /將忙碌標志電平賦給resultE=0;return result;/*函數(shù)功能:將模式設置指令或顯示地址寫入液晶模塊入口參數(shù):dictate*/void WriteInstruction whileBusyTest=1; /如果忙就等待RS=0;入指令/根據(jù)規(guī)定,RS和R/W同時為低電平時,可以寫RW=0;E=0;/E 置低電平根據(jù)表 8-6,寫指令時,E 為高脈/ 就是讓E從0到1發(fā)生正跳變,所以應先置沖,0_nop_;_nop_;P0=dictate;_nop_;_nop_;_nop_;_nop_;E=1;/空操作兩個機器周期,給硬件反響時間/

18、將數(shù)據(jù)送入P0口,即寫入指令或地址/空操作四個機器周期,給硬件反響時間/E置高電平_nop_;_nop_;_nop_;_nop_;E=0;/空操作四個機器周期,給硬件反響時間/當E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令/*函數(shù)功能:指定字符顯示的實際地址.入口參數(shù):x*/void WriteAddressWriteInstruction; /顯示位置確實定方法規(guī)定為80H+地址碼x/*函數(shù)功能:將數(shù)據(jù)寫入液晶模塊入口參數(shù):y*/void WriteDatawhileBusyTest=1;RS=1;RW=0;E=0;/RS為高電平,RW為低電平時,可以寫入數(shù)據(jù)/E置低電平根據(jù)表8-6,寫指

19、令時,E為高脈沖,/ 就是讓E從0到1發(fā)生正跳變,所以應先置0/將數(shù)據(jù)送入P0口,即將數(shù)據(jù)寫入液晶模塊P0=y;_nop_;_nop_;_nop_;_nop_;E=1;/空操作四個機器周期,給硬件反響時間/E置高電平_nop_;_nop_;_nop_;_nop_;E=0;/空操作四個機器周期,給硬件反響時間/當E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令/*函數(shù)功能:對LCD的顯示模式進展初始化設置*/void LcdInitiatedelay;響時間/延時15ms,首次寫指令時應給LCD一段較長的反WriteInstruction; /顯示模式設置:162顯示,57點陣,8位數(shù)據(jù)接口del

20、ay; /延時5msWriteInstruction;delay;WriteInstruction;delay;WriteInstruction; /顯示模式設置:顯示開,有光標,光標閃爍.delay;WriteInstruction; /顯示模式設置:光標右移,字符不移delay;WriteInstruction; /清屏幕指令,將以前的顯示內(nèi)容去除delay;void main/主函數(shù)unsigned char i;LcdInitiate;delay;while/調(diào)用LCD初始化函數(shù)WriteInstruction;/清顯示:清屏幕指令WriteAddress; / 設置顯示位置為第一行的

21、第5個字i = 0;while / 顯示字符WriteData;i+;delay;fori=0;idelay;.實驗七:簡易計算器設計實驗1實驗目的1學會將單片機的輸入、輸出和內(nèi)部定時計數(shù)器等功能綜合應用2掌握各局部功能綜合調(diào)試能力2實驗內(nèi)容設計一個簡易計算器,能夠進展加減乘除運算.3實驗運行結(jié)果圖4源代碼#include/包含單片機存放器的頭文件#include /包含_nop_函數(shù)定義的頭文件/#includesbit P0_4 = 0 x84;sbit P0_5 = 0 x85;sbit P0_6 = 0 x86;sbit P0_7 = 0 x87;void delay10msunsig

22、ned char a,b;for0;a-for0;b-;void delay1msunsigned char a,b;for0;a-for0;b-;unsigned char code tab=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;void mainunsigned char m,i,j,k,l,p,cc2,cc3,cc4,cc5,o;unsigned long c1,c2,cc;unsigned int cc1;unsigned char

23、aa0,aa1,aa2,aa3,bb0,bb1,bb2,bb3;unsigned char a0,a1,a2,a3,b0,b1,b2,b3;bit q,n;whilestatic dian=0 x80,fuhao=0;.for j=0;jk=0 xfe;P0=k|l;ifdelay10ms;ifwhileP2=b0;P1=0 xfe;delay1ms;P2=0;P2=b1;P1=0 xfd;delay1ms;P2=0;P2=b2;P1=0 xfb;delay1ms;P2=0;P2=b3;P1=0 xf7;delay1ms;P2=0;P2=a0;P1=0 xef;delay1ms;P2=0;P2

24、=a1;P1=0 xdf;delay1ms;P2=0;P2=a2;P1=0 xbf;delay1ms;P2=0;P2=a3;P1=0 x7f;delay1ms;P2=0;.P2=dian;P1=0 xef;delay1ms;P2=0;P2=fuhao;P1=0 xef;delay1ms;P2=0;ifn=1;i=3;elsem+;ifma3=a2;a2=a1;a1=a0;a0=tab4*j;aa3=aa2;aa2=aa1;aa1=aa0;aa0=4*j;elseifpb3=b2;b2=b1;b1=b0;b0=tab4*j;bb3=bb2;bb2=bb1;bb1=bb0;bb0=4*j;p+;.

25、ifdelay10ms;ifwhileP2=b0;P1=0 xfe;delay1ms;P2=0;P2=b1;P1=0 xfd;delay1ms;P2=0;P2=b2;P1=0 xfb;delay1ms;P2=0;P2=b3;P1=0 xf7;delay1ms;P2=0;P2=a0;P1=0 xef;delay1ms;P2=0;P2=a1;P1=0 xdf;delay1ms;P2=0;P2=a2;P1=0 xbf;delay1ms;P2=0;P2=a3;P1=0 x7f;delay1ms;P2=0;P2=dian;P1=0 xef;delay1ms;.P2=0;P2=fuhao;P1=0 xef

26、;delay1ms;P2=0;ifi=4;n=1;elsem+;ifma3=a2;a2=a1;a1=a0;a0=tab4*j+1;aa3=aa2;aa2=aa1;aa1=aa0;aa0=4*j+1;elseifpb3=b2;b2=b1;b1=b0;b0=tab4*j+1;bb3=bb2;bb2=bb1;bb1=bb0;bb0=4*j+1;p+;if.delay10ms;ifwhileP2=b0;P1=0 xfe;delay1ms;P2=0;P2=b1;P1=0 xfd;delay1ms;P2=0;P2=b2;P1=0 xfb;delay1ms;P2=0;P2=b3;P1=0 xf7;delay

27、1ms;P2=0;P2=a0;P1=0 xef;delay1ms;P2=0;P2=a1;P1=0 xdf;delay1ms;P2=0;P2=a2;P1=0 xbf;delay1ms;P2=0;P2=a3;P1=0 x7f;delay1ms;P2=0;P2=dian;P1=0 xef;delay1ms;P2=0;P2=fuhao;P1=0 xef;.delay1ms;P2=0;ifi=1;n=1;elseifq=1;n=1;elsem+;ifma3=a2;a2=a1;a1=a0;a0=tab4*j+2;aa3=aa2;aa2=aa1;aa1=aa0;aa0=4*j+2;elseifpb3=b2;

28、b2=b1;b1=b0;b0=tab4*j+2;bb3=bb2;bb2=bb1;bb1=bb0;bb0=4*j+2;p+;.ifdelay10ms;ifwhileP2=b0;P1=0 xfe;delay1ms;P2=0;P2=b1;P1=0 xfd;delay1ms;P2=0;P2=b2;P1=0 xfb;delay1ms;P2=0;P2=b3;P1=0 xf7;delay1ms;P2=0;P2=a0;P1=0 xef;delay1ms;P2=0;P2=a1;P1=0 xdf;delay1ms;P2=0;P2=a2;P1=0 xbf;delay1ms;P2=0;P2=a3;P1=0 x7f;d

29、elay1ms;P2=0;P2=dian;.P1=0 xef;delay1ms;P2=0;P2=fuhao;P1=0 xef;delay1ms;P2=0;ifi=6;n=1;elseifi=2;n=1;elsem+;ifma3=a2;a2=a1;a1=a0;a0=tab4*j+3;aa3=aa2;aa2=aa1;aa1=aa0;aa0=4*j+3;elseifpb3=b2;b2=b1;b1=b0;b0=tab4*j+3;bb3=bb2;bb2=bb1;bb1=bb0;.bb0=4*j+3;p+;if/復位a0=a1=a2=a3=b0=b1=b2=b3=0;dian=0 x80;fuhao=0;

30、m=i=j=k=l=n=p=q=0;aa0=aa1=aa2=aa3=bb0=bb1=bb2=bb3=0;c1=c2=cc=cc1=cc2=cc3=cc4=cc5=0;ifP2=b0;P1=0 xfe;delay1ms;P2=0;P2=b1;P1=0 xfd;delay1ms;P2=0;P2=b2;P1=0 xfb;delay1ms;P2=0;P2=b3;P1=0 xf7;delay1ms;P2=0;P2=a0;P1=0 xef;delay1ms;P2=0;P2=a1;P1=0 xdf;delay1ms;P2=0;P2=a2;.P1=0 xbf;delay1ms;P2=0;P2=a3;P1=0 x7f;delay1ms;P2=0;P2=dian;P1=0 xef;delay1ms;P2=0;P2=fuhao;P1=0 xef;delay1ms;P2=0;elseq=0;c1=aa0+

溫馨提示

  • 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

提交評論