![單片機(jī)實驗報告山東大學(xué)_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/20/a04a4bd1-09b0-4c27-b56b-bbf565436afc/a04a4bd1-09b0-4c27-b56b-bbf565436afc1.gif)
![單片機(jī)實驗報告山東大學(xué)_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/20/a04a4bd1-09b0-4c27-b56b-bbf565436afc/a04a4bd1-09b0-4c27-b56b-bbf565436afc2.gif)
![單片機(jī)實驗報告山東大學(xué)_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/20/a04a4bd1-09b0-4c27-b56b-bbf565436afc/a04a4bd1-09b0-4c27-b56b-bbf565436afc3.gif)
![單片機(jī)實驗報告山東大學(xué)_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/20/a04a4bd1-09b0-4c27-b56b-bbf565436afc/a04a4bd1-09b0-4c27-b56b-bbf565436afc4.gif)
![單片機(jī)實驗報告山東大學(xué)_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/20/a04a4bd1-09b0-4c27-b56b-bbf565436afc/a04a4bd1-09b0-4c27-b56b-bbf565436afc5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、. 第三單元Proteus 系統(tǒng)仿真實驗實驗一 基本并行口I/O口實驗 自我完成實驗1、 實驗要求當(dāng)按鍵 SW1 按下之后,D1-D8 輪流點亮,點亮?xí)r間為 100ms,當(dāng)按鍵停下后,停止輪換,再次按下后繼續(xù)輪換。2、編程思路進(jìn)行初始化工作,包括設(shè)置堆棧指針 SP,將 P2 口所有位設(shè)置為 1,使 P2 口所接發(fā)光二極管全部熄滅。將顯示緩沖單元(設(shè)為 20H 單元)初始化為 FEH。 從 P1 口讀數(shù)據(jù),查看 P1.0 位,如果 P1.0 位為 0,則執(zhí)行如下循環(huán):將顯示緩沖單元的值送給 P2 口,調(diào)用 100ms 延時程序,將顯示緩沖單元的值循環(huán)左移 1 位,再送回顯示緩沖單元。如果 P1.
2、0 位不為 0 則不執(zhí)行上述循環(huán)。重復(fù)上面的操作3、實驗步驟 根據(jù)上述實驗內(nèi)容,參考 1.2.2,在 Proteus 環(huán)境下建立圖 3.5 所示原理圖,并將其保 存為 basicIO_self.DSN 文件。 根據(jù)(2)和(3)編寫控制源程序,將其保存為 basicIO_self.asm。 將源程序添加到 U1 中,并構(gòu)造(build)該程序。 執(zhí)行仿真過程觀察 D1-D8 的指示,查看程序功能是否正確。 修改延時程序延時參數(shù),重新執(zhí)行和。4、源程序ORG 0000HAJMP MAINORG 0030HMAIN:MOV SP,#60HMOV P2,#0FFHMOV A,#0FEHMOV 20H
3、,A;緩沖單元LOOP:JNB P1.0,LOOP1; ;如果P1.0=0,跳轉(zhuǎn)SJMP LOOP ;否則循環(huán)不斷檢測LOOP1:MOV P2,20H ;將緩沖單元內(nèi)的值給P2口LCALL DELAY100MS ;延時100ms;MOV A,20HRL A ;左移一位MOV 20H,AJB P1.0,LOOP;如果P1.0=1,跳轉(zhuǎn)到LOOP處LJMP LOOP1;否則循環(huán)DELAY100MS:MOV R7,#200;1usDL:MOV R6,#248 ;1us DJNZ R6,$;248*2=496us NOP;1us DJNZ R7,DL;2us RET;(496+1+1+2)*200+1
4、=100.001msEND5、電路圖6、仿真結(jié)果當(dāng)按鍵 SW1 按下之后,D1-D8 輪流點亮,點亮?xí)r間為 100ms,當(dāng)按鍵停下后,停止輪換,再次按下后繼續(xù)輪換。實驗二 擴(kuò)展并行I/O口實驗 自我完成實驗1、實驗要求仿真實現(xiàn)交通信號燈控制功能??刂祈樞驗椋?南北綠燈亮,同時東西紅燈亮 10s; 南北黃燈亮,同時東西紅燈亮 2s; 南北紅燈亮,同時東西綠燈亮 10s; 東西黃燈亮,同時南北紅燈亮 2s; 重復(fù)。2、編程思路進(jìn)行初始化工作,包括設(shè)置堆棧指針 SP,將兩個 373 的輸出口所有位均設(shè)置為 1,使所有發(fā)光二極管全部熄滅。分析兩個 373 的地址:假定所有無關(guān)地址均定義為 1,那么 U
5、4 的鎖存地址為:#0FE00H,U5 的鎖存地址為:#0FD00H。分析 4 個狀態(tài)下兩個 373 的輸出數(shù)據(jù)值:假定“南北綠燈亮,同時東西紅燈亮”為狀態(tài) 1,即:Stat1;“南北黃燈亮,同時東西紅燈亮”為狀態(tài) 2,即:Stat2;“南北紅燈亮,同時東西綠燈亮”為狀態(tài) 3,即:Stat3;“東西黃燈亮,同時南北紅燈亮”為狀態(tài) 4,即:Stat4。3、實驗步驟 根據(jù)上述實驗內(nèi)容,參考 1.2.2,在 Proteus 環(huán)境下建立圖 3.7 所示原理圖,并將其保存為 expandIO_self.DSN 文件。 根據(jù)(2)和(3)編寫控制源程序,將其保存為 expandIO_self.asm。 將
6、源程序添加到 U1 中,并構(gòu)造(build)該程序。 執(zhí)行仿真過程觀察各個方向的交通信號燈指示,查看程序功能是否正確。4、源程序ORG 0000HAJMP MAINORG 0030HMAIN:MOV SP,#60HMOV A,#0FFHMOV DPTR,#0FE00HMOVX DPTR,AMOV DPTR,#0FD00HMOVX DPTR,ASTAT1:MOV A,#0F3HMOV DPTR,#0FE00HMOVX DPTR,AMOV A,#0CHMOV DPTR,#0FD00HMOVX DPTR,ALCALL DELAY10SSTAT2:MOV A,#0C3HMOV DPTR,#0FE00H
7、MOVX DPTR,AMOV A,#0FHMOV DPTR,#0FD00HMOVX DPTR,ALCALL DELAY2SSTAT3:MOV A,#0FCHMOV DPTR,#0FE00HMOVX DPTR,AMOV A,#03HMOV DPTR,#0FD00HMOVX DPTR,ALCALL DELAY10SSTAT4:MOV A,#3CHMOV DPTR,#0FE00HMOVX DPTR,AMOV A,#0FHMOV DPTR,#0FD00HMOVX DPTR,ALCALL DELAY2SLJMP STAT1DELAY2S:MOV R7,#20DL2:MOV R6,#200DL1:MOV
8、R5,#250DJNZ R5,$DJNZ R6,DL1DJNZ R7,DL2RETDELAY10S:MOV R7,#100DL3:MOV R6,#200DL4:MOV R5,#250DJNZ R5,$DJNZ R6,DL4DJNZ R7,DL3RETEND 5、電路圖6、實驗結(jié)果 南北綠燈亮,同時東西紅燈亮 10s; 南北黃燈亮,同時東西紅燈亮 2s; 南北紅燈亮,同時東西綠燈亮 10s; 東西黃燈亮,同時南北紅燈亮 2s;實驗三 靜態(tài)LED顯示實驗 自我完成實驗1、實驗要求圖中 7SEG2 為十位顯示數(shù)碼管,7SEG1 為個位顯示數(shù)碼管,KEY_LOAD 為倒計時初值按鈕,KEY_START
9、 為倒計時啟動按鈕。要求實現(xiàn)的功能是:當(dāng) KEY_LOAD 按鈕按下時加載倒計時初值(如:10s),當(dāng)按下 KEY_START 按鈕時,開始倒計時,每過 1s,計時器減 1,直到減到“00”為止。減到“00”時使 P3.0 引腳上的 LED 按 10Hz 頻率進(jìn)行閃爍,直到再次按下 KEY_LOAD 按鈕才重新加載初值,并熄滅 LED。再次按下 KEY_START 按鈕又一次開始倒計時,如此反復(fù)。2、編程思路分析兩個 373 的地址:假定所有無關(guān)地址均定義為 1,那么 U2 的鎖存地址為:#0FE00H,U3 的鎖存地址為:#0FD00H。程序流程圖:3、實驗步驟 根據(jù)上述實驗內(nèi)容,參考 1.
10、2.2,在 Proteus 環(huán)境下建立圖 3.9 所示原理圖,并將其保存為 staticLED_self.DSN 文件。 根據(jù)(2)和(3)編寫控制源程序,將其保存為 staticLED_self.asm。 將源程序添加到 U1 中,并構(gòu)造(build)該程序。 執(zhí)行仿真過程觀察秒表程序功能是否正確。4、源程序ORG 0000HAJMP MAINORG 0030HMAIN:MOV SP,#60H;堆棧初始化MOV R0,#0;各位MOV R1,#1;十位SETB P3.0;關(guān)掉LED1CLR F0LOOP:JB P1.1,LOOP2;如果P1.1=1,跳轉(zhuǎn)到LOOP2,LOOP1:CLR F0
11、MOV 30H,R0MOV 31H,R1;裝載初值SETB P3.0;關(guān)閉LED1LCALL DISPLAY;顯示LOOP2:JB P1.0,LOOP;如果P1.0=1,跳回LOOP,否則繼續(xù)執(zhí)行LOOP3:LCALL DISPLAY;刷新顯示LCALL DELAY1S;延時1sLCALL ADJUST2;調(diào)整計時器寄存器JB F0,LOOP4LJMP LOOP3LOOP4:CLR P3.0 ;LED閃爍程序LCALL DELAY100MSSETB P3.0LCALL DELAY100MSJB P1.1,LOOP4LJMP LOOP1DISPLAY: ;顯示子程序 MOV A,30HMOV D
12、PTR,#TABLEMOVC A,A+DPTRMOV DPTR,#D1ADDMOVX DPTR,AMOV A,31HMOV DPTR,#TABLEMOVC A,A+DPTRMOV DPTR,#D10ADDMOVX DPTR,ARETADJUST2:DEC 30HMOV A,30HCJNE A,#-1,GOTORETMOV 30H,#9DEC 31HMOV A,31HCJNE A,#-1,GOTORETSETB F0RETGOTORET:RETDELAY1S:MOV R7,#10DL2:MOV R6,#200DL1:MOV R5,#250DJNZ R5,$DJNZ R6,DL1DJNZ R7,D
13、L2RETDELAY100MS:MOV R7,#200DL:MOV R6,#248 DJNZ R6,$ NOP DJNZ R7,DL RETTABLE: DB 0C0H,0f9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HD1ADD EQU 0FE00H ;U3的鎖存地址D10ADD EQU 0FD00HEND5、電路圖6、仿真結(jié)果當(dāng) KEY_LOAD 按鈕按下時加載倒計時初值(如:10s),當(dāng)按下 KEY_START 按鈕時,開始倒計時,每過 1s,計時器減 1,直到減到“00”為止。減到“00”時使 P3.0 引腳上的 LED 按 10Hz 頻率進(jìn)行閃爍,直到再次
14、按下 KEY_LOAD 按鈕才重新加載初值,并熄滅 LED。再次按下 KEY_START 按鈕又一次開始倒計時,如此反復(fù)。實驗四 矩陣鍵盤掃描實驗 自我完成實驗1、實驗要求 D1D8 八個發(fā)光二極管構(gòu)成彩色旋轉(zhuǎn)燈,D9D13 為檔位指示燈,一檔旋轉(zhuǎn)速度最慢(周期 1s,D13 亮),二檔較快(周期 0.8s,D12 亮),三檔更快(周期 0.6s,D11 亮),四檔再快(周期 0.4s,D10 亮),五檔最快(周期 0.2s,D10 亮)。四個按鍵 KEY0-KEY1于設(shè)定旋轉(zhuǎn)方向為順時針旋轉(zhuǎn)或者逆時針旋轉(zhuǎn),KEY2-KEY3 用于增快或則減慢旋轉(zhuǎn)速度。2、編程思路按鍵掃描的方式可以采用前面示
15、例程序中的方法:線反轉(zhuǎn)法或行掃描法??梢杂脜R編語言實現(xiàn),也可以用 C 語言實現(xiàn)。建議如前面示例所示,匯編采用行掃描法,C 語言用線反法。程序控制流程是:首先初始化設(shè)置默認(rèn)運行參數(shù),然后讀取按鍵,識別鍵碼,并根據(jù)鍵碼的不同執(zhí)行運行參數(shù)調(diào)整,最后根據(jù)當(dāng)前的運行參數(shù)執(zhí)行發(fā)光二極管 D1-D8 的輪流旋轉(zhuǎn)。速度的控制通過控制調(diào)用延時程序的次數(shù)來決定,假設(shè)延時程序的延時長度為 5ms。延時程序可以按如下方式實現(xiàn)(假設(shè)晶振頻率為 12MHz):void delays()uchar t,ms;ms=5; /延時 5mswhile(ms-) for(t=0;t120;t+);或者采用內(nèi)嵌匯編來實現(xiàn):void
16、delays()#pragma asmMOV R2,#50 /;5ms 延時程序DL1:MOV R1,#48DL2:DJNZ R1,DL2 / ;內(nèi)循環(huán) 100usNOPDJNZ R2,DL1 /;中循環(huán) 10ms#pragma endasm旋轉(zhuǎn)彩燈線反轉(zhuǎn)法 C 語言程序控制流程圖(1)主控流程圖 (2)鍵盤掃描子程序 Keyscan 流程圖旋轉(zhuǎn)彩燈行掃描法匯編控制流程圖3、實驗步驟 根據(jù)上述實驗內(nèi)容,參考 1.2.2,在 Proteus 環(huán)境下建立圖 3.11 所示原理圖,并將其保存為 keyscan_self.DSN 文件。 根據(jù)(2)和(3)編寫控制源程序,將其保存為 keyscan_s
17、elf.asm 或 keyscan_self.c。 將源程序添加到 U1 中,并構(gòu)造(build)該程序。 執(zhí)行仿真過程觀察秒表程序功能是否正確。4、源程序#includereg52.h#includeintrins.h#define uchar unsigned char#define uint unsigned intsbit g0=P04;uchar code T_TABLE=200,160,120,80,40;/周期值表uchar code key_code=0x22,0x12,0x21,0x11;void delay()/延時5msuchar t,ms;ms=5;while(ms-)
18、for(t=0;t120;t+);void main()int aa=0xfe;uint dir=1;uint speed=0;int temp,temp2,keycode;int j,key;g0=0;while(1)P3=0x30;temp=P3;if(temp&0x30)!=0x30)/按鍵檢測delay();delay();P3=0x30;temp=P3;if(temp&0x30)!=0x30)P3=0x03;temp2=P3;keycode=temp|temp2;for(j=0;j4;j+)if(keycode=key_codej)key=j;if(key=0) dir=1;/正轉(zhuǎn)i
19、f(key=1) dir=0;/反轉(zhuǎn)if(key=2) speed+;if(speed=5) speed=4;/換檔if(key=3)if(speed=0) speed+;/換檔speed-;switch (speed)case 0:P0=0xef;break;case 1:P0=0xf7;break;case 2:P0=0xfb;break;case 3:P0=0xfd;break;case 4:P0=0xfe;break;default:break;P3=0x03;while(!(P3=0x03);if(dir=1)/正轉(zhuǎn)時執(zhí)行P1=aa;for(j=0;jT_TABLEspeed;j+)
20、delay();aa=_crol_(aa,1);/左移if(dir=0)/反轉(zhuǎn)時執(zhí)行P1=aa;for(j=0;j=4;tmp2=tmp&0x0f;/高半字節(jié)SBUF=led_tabletmp1;while(!TI); /等待發(fā)送是否完畢TI=0; /置發(fā)送標(biāo)志為零SBUF=led_tabletmp2;while(!TI);/等待發(fā)送是否完畢TI=0;/置發(fā)送標(biāo)志為零while(!P11);5、電路圖6、實驗結(jié)果當(dāng)按鍵按下時,DSW1 的開關(guān)數(shù)據(jù)能夠被單片機(jī)通過 74LS165串行讀取,并通過 74LS164 串行輸出至兩個 7 段數(shù)碼管 7SEG1 和 7SEG2 顯示,顯示的據(jù)和 DSW1
21、 的開關(guān)數(shù)據(jù)一致。實驗七 LCD1602顯示實驗 自我完成實驗1、 實驗要求要求點擊按鍵 KEY1 可以在 LCD1602(LM016L)第一行上顯示“Hello Everyone”,在第二行上顯示“Welcome to SDU”,并閃爍 3 次。點擊按鍵 KEY2 可以將 LCD1602 清屏。2、實驗步驟 根據(jù)上述實驗內(nèi)容,參考 1.2.2,在 Proteus 環(huán)境下建立圖 3.28 所示原理圖,并將其保存為 lcd1602.DSN 文件。 將上面(3)中控制源程序保存為 lcd1602.c。 運行 Keil uVision2 開發(fā)環(huán)境,按照 1.1.3 節(jié)介紹的方法建立工程 lcd160
22、2.uV2,CPU 為 AT89C51,包含啟動文件 STARTUP.A51。 按照 1.2.2 第(6)節(jié)介紹的方法將 C 語言源程序 lcd1602.c 加入工程 lcd1602.uV2,并設(shè)置工程 lcd1602.uV2 屬性,將其晶振頻率設(shè)置為 11.0592MHz,選擇輸出可執(zhí)行文件,仿真方式為選擇硬仿真,并選擇其中的“PROTEUS VSM MONITOR 51 DRIVER”仿真器。 構(gòu)造(Build)工程 lcd1602.uV2。如果輸入有誤進(jìn)行修改,直至構(gòu)造正確,生成可執(zhí)行程序 lcd1602.hex 為止。 為 AT89C51 設(shè)置可執(zhí)行程序 lcd1602.hex。 運行
23、程序,點擊圖 2.28 中各按鍵,觀察 1602 的顯示是否符合程序要求。3、編程思路 按鍵的掃描與識別可以參考“3.4.1 示例實驗”中的方法。LCD1602 的顯示控制可以參考“3.7.2 LCD1602 示例實驗”。編成時要有一個狀態(tài)變量,該變量用于記錄當(dāng)前是輸入的哪個變量。輸入第一個變量,遇到輸入運算符時結(jié)束第一個變量的輸入。輸入第二個變量,遇到“=”號時結(jié)束第二個變量的輸入,并且開始計算結(jié)果。計算結(jié)果由于是 16 進(jìn)制的,要將其轉(zhuǎn)換成十進(jìn)制,并將該十進(jìn)制的數(shù)轉(zhuǎn)換成字符串后逐位顯示出來。減法時要注意結(jié)果是否為負(fù),除法時要注意除數(shù)是否為 0,結(jié)果是否帶有余數(shù)。 另外,按鍵要注意去抖動處理
24、。4、源程序#include #define uint unsigned int #define uchar unsigned charsbit lcden=P15; sbit rs=P17;sbit rw=P16;sbit busy=P27;char i,j,temp,num,num_1;long a,b,c; float a_c,b_c;uchar flag,fuhao; uchar code table=0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0;uchar code table1=0,1,2,3,4,5,6,7,8,9,0x2b-0x30,0x2d-0x30,0x2a-0x30,0x2f-0x30,0x01-0x30,0x3d-0x30;void delay(uchar z) uchar y;for(z;z0;z-) for(y=0;y0) c=a-b; else c=b-a; while(c!=0) wr
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 匯報在項目管理中的重要作用
- 現(xiàn)代市場營銷中的網(wǎng)絡(luò)直播工具選擇與應(yīng)用
- 現(xiàn)代商業(yè)項目中的綠色建筑策略
- Unit 3 Transportation Period 1(說課稿)-2024-2025學(xué)年人教新起點版英語四年級上冊
- 2024-2025學(xué)年高中地理上學(xué)期第十三周 中國地理分區(qū) 第一節(jié) 北方地區(qū)說課稿
- 2024年三年級品社下冊《這周我當(dāng)家》說課稿 遼師大版
- 5 數(shù)學(xué)廣角 - 鴿巢問題(說課稿)-2023-2024學(xué)年六年級下冊數(shù)學(xué)人教版
- 16 表里的生物(說課稿)-2023-2024學(xué)年統(tǒng)編版語文六年級下冊
- 2023九年級數(shù)學(xué)下冊 第24章 圓24.4 直線與圓的位置關(guān)系第2課時 切線的判定定理說課稿 (新版)滬科版
- 7《花 果實 種子》說課稿-2023-2024學(xué)年科學(xué)三年級下冊人教鄂教版
- 幼兒園費用報銷管理制度
- 【7歷期末】安徽省宣城市2023-2024學(xué)年七年級上學(xué)期期末考試歷史試題
- 春節(jié)后安全生產(chǎn)開工第一課
- 2025光伏組件清洗合同
- 電力電纜工程施工組織設(shè)計
- 2024年網(wǎng)格員考試題庫完美版
- 《建筑與市政工程防水規(guī)范》解讀
- 審計合同終止協(xié)議書(2篇)
- 2024年重慶市中考數(shù)學(xué)試題B卷含答案
- 腰椎間盤突出癥護(hù)理查房
- 醫(yī)生給病人免責(zé)協(xié)議書(2篇)
評論
0/150
提交評論