實驗項目目錄 實驗1:μVision集成開發(fā)環(huán)境的操作使用和匯編程序設(shè)計實驗. 1 實驗2:匯編語言設(shè)計實驗 2 實驗3:C51程序設(shè)計實驗. 3 實驗4:鍵盤與顯示編程實驗. 4 實驗5:單片機外部中斷實驗. 5 實驗6:中斷及定時系統(tǒng)綜合應(yīng)用之電子鐘實驗. 7 實驗8:串行通信實驗. 8 實驗9:A/D轉(zhuǎn)換實驗. 9 實驗10:D/A轉(zhuǎn)換實驗. 10 實驗11:簡易數(shù)字信號發(fā)生器設(shè)計. 11 實驗12:簡易數(shù)字電壓表的設(shè)計. 12
實驗1:μVision集成開發(fā)環(huán)境的操作使用和匯編程序設(shè)計實驗
一、實驗?zāi)康呐c要求1.掌握匯編語言指令格式,熟練常用匯編指令的含義及使用方法; 2.熟悉基本程序的結(jié)構(gòu),熟悉編寫匯編程序的基本方法; 3.掌握使用uVision3創(chuàng)建應(yīng)用項目方法和步驟和使用uVision3調(diào)試應(yīng)用程序的基本方法。 二、實驗內(nèi)容與任務(wù) 在uVision3環(huán)境下,采用匯編語言,分別編程實現(xiàn): 1. 求取存儲在50H~5FH區(qū)間的16個無符號二進制數(shù)的最大值和最小值,并將最大值存入60H內(nèi),最小值存入61H內(nèi)。 2. 求片內(nèi)連續(xù)50H~5FH 這16個單元的8位無符號數(shù)的平均值,并將結(jié)果存入60H中。 3 求多字節(jié)無符號數(shù)的加法。40H,41H和42H中分別存入被加數(shù)的低8位,中8位和高8位,50H,51H和52H中分別存入加數(shù)的低8位,中8位和高8位,要求,將兩者相加,結(jié)果按低到高位存入40H至43H中,并將結(jié)果的字節(jié)數(shù)存入R3中。 三、實驗儀器與設(shè)備 計算機,uVision3軟件 四、實驗設(shè)計方案與程序
1. ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV A,#0FFH CLR C MOV R2,#08H
LOOP1: RLC A MOV P0,A ACALL DEL DJNZ R2,LOOP1 MOV R2,#08H
LOOP2: RRC A MOV P0,A ACALL DEL DJNZ R2,LOOP2 JMP MAIN
DEL: MOV R5,#05H DEL1: MOV R6,#0F0H DEL2: MOV R7,#0F0H DEL3: DJNZ R7, DEL3 DJNZ R6, DEL2 DJNZ R5, DEL1 RET END
2 ORG 0000H LJMP MAIN ORG 1000H MAIN:MOV R0,#50H MOV R1,#51H MOV R3,#15 MOV R4,#10H CLR C LOOP:MOV A,@R0 ADDC A,@R1 MOV @R0,A INC R1 DJNZ R3,LOOP MOV A,@R0 DIV A10H MOV 60H,A SJMP $ END
3. ORG 0000H LJMP MAIN ORG 1000H MAIN:MOV R0,#40H MOV R1,#50H MOV R2,#3 CLR C LOOP:MOV A,@R0 ADDC A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R2,LOOP SJMP $ END
五、實驗結(jié)果與分析 1.結(jié)果;存儲在50H~5FH區(qū)間的16個無符號二進制數(shù)的最大值存入60H內(nèi),最小值存入61H內(nèi)。 2結(jié)果;程序執(zhí)行后,16個數(shù)的平均值放入60H, 3.結(jié)果:兩個加數(shù)的高、中、低三位分別在40H、41H、42H和50H、51H、52H中,和分別放在40H、41H、42H中。 六、回答問題及體會遇到的問題:對匯編語言的不熟悉及程序設(shè)計的問題 解決:多看書,多實驗 體會:基礎(chǔ)最重要,要重視基礎(chǔ)
實驗2:匯編語言設(shè)計實驗 2一、實驗?zāi)康呐c要求1.掌握匯編語言程序結(jié)構(gòu)及其使用方法; 2.學(xué)會用匯編語言編寫應(yīng)用程序; 3.熟悉LED的工作特性及控制方法。 4.熟悉單片機實驗板的工作原理。 二、實驗內(nèi)容與任務(wù) 實驗參考電路圖如下圖所示(實際電路圖以自己手中的單片機實驗板為準),要求采用匯編語言編寫程序,控制數(shù)碼管跑馬顯示0-9。 file:///C:/Users/22284/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
三、實驗儀器與設(shè)備 計算機,單片機實驗板 四、實驗設(shè)計方案與程序 ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV A,#0FFH CLR C MOV R2,#08H
LOOP1: RLC A MOV P0,A ACALL DEL DJNZ R2,LOOP1 MOV R2,#08H
LOOP2: RRC A MOV P0,A ACALL DEL DJNZ R2,LOOP2 JMP MAIN
DEL: MOV R5,#05H DEL1: MOV R6,#0F0H DEL2: MOV R7,#0F0H DEL3: DJNZ R7, DEL3 DJNZ R6, DEL2 DJNZ R5, DEL1 RET END 五、實驗結(jié)果與分析 小燈顯示0到9,如下圖所示 file:///C:/Users/22284/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
六、回答問題及體會 遇到的問題:對匯編語言的不熟悉及程序設(shè)計的問題 解決:多看書,多實 驗 體會:基礎(chǔ)最重要,要重視基礎(chǔ)
實驗3:C51程序設(shè)計實驗 一、實驗?zāi)康呐c要求1.掌握C51程序結(jié)構(gòu)及其使用方法; 2.學(xué)會用C51編寫應(yīng)用程序; 3.掌握LED的工作特性及控制方法。 4.掌握單片機實驗板的工作原理。 二、實驗內(nèi)容與任務(wù) 實驗參考電路圖如下圖所示(實際電路圖以自己手中的單片機實驗板為準),要求使用C51編寫程序,使小燈從左到右移動 file:///C:/Users/22284/AppData/Local/Temp/msohtmlclip1/01/clip_image005.jpg
三、實驗儀器與設(shè)備 計算機,單片機實驗板 四、實驗設(shè)計方案與程序 #include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int //加黑的都是定義頭文件
void DelayMS(uint x) //延時
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
void main() //主程序
{
uchar i;
P2=0x01;
while(1)
{
for(i=0;i<7;i++)
{
P2=_crol_(P2,1); //左循環(huán)移動
DelayMS(150);
}
for(i=0;i<7;i++)
{
P2=_cror_(P2,1); //右循環(huán)移動
DelayMS(150);
}
}
} 五、實驗結(jié)果與分析
file:///C:/Users/22284/AppData/Local/Temp/msohtmlclip1/01/clip_image007.jpg六、回答問題及體會
問題:C語言知識的缺乏以及編程遇到的困難
解決方案:多練習(xí),多編程,有自己的編程風(fēng)格
體會;編程是個很有意思的東西,一串串代碼就能讓燈按順序亮起來,很有意思
實驗4:鍵盤與顯示編程實驗一、實驗?zāi)康呐c要求 1. 進一步掌握單片機通用IO接口的編程方法。 2.掌握單片機矩陣鍵盤電路的設(shè)計方法。 3.掌握單片機讀取矩陣鍵盤狀態(tài)的編程方法。 4.掌握數(shù)碼管動靜態(tài)掃描控制方法。 二、實驗內(nèi)容與任務(wù) 1、實驗電路圖如圖所示,按鍵信號由P2口進行識別,上電后左一數(shù)碼管顯示“P”,按下某按鍵后,在左一數(shù)碼管顯示對應(yīng)鍵值。 file:///C:/Users/22284/AppData/Local/Temp/msohtmlclip1/01/clip_image009.jpg
三、實驗儀器與設(shè)備 計算機,單片機實驗板 四、實驗設(shè)計方案與程序 #include"reg52.h" typedef unsigned int u16; typedef unsigned char u8; #define GPIO_DIG P0 #define GPIO_KEY P1 sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; u8 KeyValue; u8 code smgduan[17]={0xf3,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void delay(u16 i) { while(i--); } void KeyDown(void) { char a=0; GPIO_KEY=0x0f; if(GPIO_KEY!=0x0f) { delay(1000); if(GPIO_KEY!=0x0f) { GPIO_KEY=0X0F; switch(GPIO_KEY) { case(0X07): KeyValue=1;break; case(0X0b): KeyValue=2;break; case(0X0d):KeyValue=3;break; case(0X0e): KeyValue=4;break; } GPIO_KEY=0XF0; switch(GPIO_KEY) { case(0X70): KeyValue=KeyValue;break; case(0Xb0): KeyValue=KeyValue+4;break; case(0Xd0):KeyValue=KeyValue+8;break; case(0Xe0): KeyValue=KeyValue+12;break; } while((a<50)&&(GPIO_KEY!=0xf0)) //檢測按鍵松手檢測 { delay(1000); a++; }
} } } void main() { LSA=1; LSB=1; LSC=1; while(1) { KeyDown(); GPIO_DIG=smgduan[KeyValue]; } } 五、實驗結(jié)果與分析
上電后左一數(shù)碼管顯示“P”,按下某按鍵后,在左一數(shù)碼管顯示對應(yīng)鍵值。
如圖 |