標(biāo)題: 一些51單片機(jī)的簡單學(xué)習(xí)實(shí)驗(yàn)程序 [打印本頁]

作者: zbyshen    時(shí)間: 2019-7-29 11:02
標(biāo)題: 一些51單片機(jī)的簡單學(xué)習(xí)實(shí)驗(yàn)程序
實(shí)驗(yàn)項(xiàng)目目錄
實(shí)驗(yàn)1:μVision集成開發(fā)環(huán)境的操作使用和匯編程序設(shè)計(jì)實(shí)驗(yàn). 1
實(shí)驗(yàn)2:匯編語言設(shè)計(jì)實(shí)驗(yàn)  2
實(shí)驗(yàn)3:C51程序設(shè)計(jì)實(shí)驗(yàn). 3
實(shí)驗(yàn)4:鍵盤與顯示編程實(shí)驗(yàn). 4
實(shí)驗(yàn)5:單片機(jī)外部中斷實(shí)驗(yàn). 5
實(shí)驗(yàn)6:中斷及定時(shí)系統(tǒng)綜合應(yīng)用之電子鐘實(shí)驗(yàn). 7
實(shí)驗(yàn)8:串行通信實(shí)驗(yàn). 8
實(shí)驗(yàn)9:A/D轉(zhuǎn)換實(shí)驗(yàn). 9
實(shí)驗(yàn)10:D/A轉(zhuǎn)換實(shí)驗(yàn). 10
實(shí)驗(yàn)11:簡易數(shù)字信號發(fā)生器設(shè)計(jì). 11
實(shí)驗(yàn)12:簡易數(shù)字電壓表的設(shè)計(jì). 12

實(shí)驗(yàn)1:μVision集成開發(fā)環(huán)境的操作使用和匯編程序設(shè)計(jì)實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康呐c要求
1.掌握匯編語言指令格式,熟練常用匯編指令的含義及使用方法;
2.熟悉基本程序的結(jié)構(gòu),熟悉編寫匯編程序的基本方法;
3.掌握使用uVision3創(chuàng)建應(yīng)用項(xiàng)目方法和步驟和使用uVision3調(diào)試應(yīng)用程序的基本方法。
二、實(shí)驗(yàn)內(nèi)容與任務(wù)
在uVision3環(huán)境下,采用匯編語言,分別編程實(shí)現(xiàn):
1. 求取存儲在50H~5FH區(qū)間的16個(gè)無符號二進(jìn)制數(shù)的最大值和最小值,并將最大值存入60H內(nèi),最小值存入61H內(nèi)。
2. 求片內(nèi)連續(xù)50H~5FH 這16個(gè)單元的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í)驗(yàn)儀器與設(shè)備
     計(jì)算機(jī),uVision3軟件
四、實(shí)驗(yàn)設(shè)計(jì)方案與程序
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

五、實(shí)驗(yàn)結(jié)果與分析
1.結(jié)果;存儲在50H~5FH區(qū)間的16個(gè)無符號二進(jìn)制數(shù)的最大值存入60H內(nèi),最小值存入61H內(nèi)。
2結(jié)果;程序執(zhí)行后,16個(gè)數(shù)的平均值放入60H,
3.結(jié)果:兩個(gè)加數(shù)的高、中、低三位分別在40H、41H、42H和50H、51H、52H中,和分別放在40H、41H、42H中。
六、回答問題及體會
遇到的問題:對匯編語言的不熟悉及程序設(shè)計(jì)的問題
解決:多看書,多實(shí)驗(yàn)
體會:基礎(chǔ)最重要,要重視基礎(chǔ)


實(shí)驗(yàn)2:匯編語言設(shè)計(jì)實(shí)驗(yàn) 2一、實(shí)驗(yàn)?zāi)康呐c要求
1.掌握匯編語言程序結(jié)構(gòu)及其使用方法;
2.學(xué)會用匯編語言編寫應(yīng)用程序;
3.熟悉LED的工作特性及控制方法。
4.熟悉單片機(jī)實(shí)驗(yàn)板的工作原理。
二、實(shí)驗(yàn)內(nèi)容與任務(wù)
實(shí)驗(yàn)參考電路圖如下圖所示(實(shí)際電路圖以自己手中的單片機(jī)實(shí)驗(yàn)板為準(zhǔn)),要求采用匯編語言編寫程序,控制數(shù)碼管跑馬顯示0-9。
file:///C:/Users/22284/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg

三、實(shí)驗(yàn)儀器與設(shè)備
     計(jì)算機(jī),單片機(jī)實(shí)驗(yàn)板
四、實(shí)驗(yàn)設(shè)計(jì)方案與程序
  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
五、實(shí)驗(yàn)結(jié)果與分析
小燈顯示0到9,如下圖所示
file:///C:/Users/22284/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg

六、回答問題及體會  
遇到的問題:對匯編語言的不熟悉及程序設(shè)計(jì)的問題
解決:多看書,多實(shí) 驗(yàn) 體會:基礎(chǔ)最重要,要重視基礎(chǔ)


實(shí)驗(yàn)3:C51程序設(shè)計(jì)實(shí)驗(yàn)  一、實(shí)驗(yàn)?zāi)康呐c要求
1.掌握C51程序結(jié)構(gòu)及其使用方法;
2.學(xué)會用C51編寫應(yīng)用程序;
3.掌握LED的工作特性及控制方法。
4.掌握單片機(jī)實(shí)驗(yàn)板的工作原理。
二、實(shí)驗(yàn)內(nèi)容與任務(wù)
實(shí)驗(yàn)參考電路圖如下圖所示(實(shí)際電路圖以自己手中的單片機(jī)實(shí)驗(yàn)板為準(zhǔn)),要求使用C51編寫程序,使小燈從左到右移動
file:///C:/Users/22284/AppData/Local/Temp/msohtmlclip1/01/clip_image005.jpg

三、實(shí)驗(yàn)儀器與設(shè)備
     計(jì)算機(jī),單片機(jī)實(shí)驗(yàn)板
四、實(shí)驗(yàn)設(shè)計(jì)方案與程序
#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int //加黑的都是定義頭文件

void DelayMS(uint x) //延時(shí)

{

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);

}

}

}
五、實(shí)驗(yàn)結(jié)果與分析
file:///C:/Users/22284/AppData/Local/Temp/msohtmlclip1/01/clip_image007.jpg
六、回答問題及體會
問題:C語言知識的缺乏以及編程遇到的困難

解決方案:多練習(xí),多編程,有自己的編程風(fēng)格

體會;編程是個(gè)很有意思的東西,一串串代碼就能讓燈按順序亮起來,很有意思


實(shí)驗(yàn)4:鍵盤與顯示編程實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康呐c要求
    1. 進(jìn)一步掌握單片機(jī)通用IO接口的編程方法。
     2.掌握單片機(jī)矩陣鍵盤電路的設(shè)計(jì)方法。
     3.掌握單片機(jī)讀取矩陣鍵盤狀態(tài)的編程方法。
     4.掌握數(shù)碼管動靜態(tài)掃描控制方法。
二、實(shí)驗(yàn)內(nèi)容與任務(wù)
    1、實(shí)驗(yàn)電路圖如圖所示,按鍵信號由P2口進(jìn)行識別,上電后左一數(shù)碼管顯示“P”,按下某按鍵后,在左一數(shù)碼管顯示對應(yīng)鍵值。
file:///C:/Users/22284/AppData/Local/Temp/msohtmlclip1/01/clip_image009.jpg

三、實(shí)驗(yàn)儀器與設(shè)備
     計(jì)算機(jī),單片機(jī)實(shí)驗(yàn)板
四、實(shí)驗(yàn)設(shè)計(jì)方案與程序
#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];   
    }      
}
五、實(shí)驗(yàn)結(jié)果與分析
上電后左一數(shù)碼管顯示“P”,按下某按鍵后,在左一數(shù)碼管顯示對應(yīng)鍵值。
如圖

新建 Microsoft Word 文檔.docx

14.25 KB, 下載次數(shù): 4, 下載積分: 黑幣 -5






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1