最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

51单片机实验报告

来源:动视网 责编:小OO 时间:2025-09-24 14:48:51
文档

51单片机实验报告

硬件实验:实验一:定时器中断实验实验内容:fosc=11.0592MHz,T0方式2产生定时中断实现秒表功能:数码管后两位显示10ms;前两位显示秒数;K1/K2/K3键分别启动/停止/清零,按键操作不分先后实验程序流程图:主程序流程图:中断程序流程图:实验程序:ORG0000HLJMPMAINORG000BHLJMPINTT0ORG0100HMAIN:MOVSP,#70HCALLINI_ALLLOOP:CALLDISPLAYMOVDPTR,#8000HMOVXA,@DPTRJBACC.7,N
推荐度:
导读硬件实验:实验一:定时器中断实验实验内容:fosc=11.0592MHz,T0方式2产生定时中断实现秒表功能:数码管后两位显示10ms;前两位显示秒数;K1/K2/K3键分别启动/停止/清零,按键操作不分先后实验程序流程图:主程序流程图:中断程序流程图:实验程序:ORG0000HLJMPMAINORG000BHLJMPINTT0ORG0100HMAIN:MOVSP,#70HCALLINI_ALLLOOP:CALLDISPLAYMOVDPTR,#8000HMOVXA,@DPTRJBACC.7,N
硬件实验:

实验一:定时器中断实验

实验内容:fosc=11.0592MHz,T0方式2产生定时中断实现秒表功能:数码管后两

位显示10ms;前两位显示秒数;K1/K2/K3键分别启动/停止/清零,按键操作不

分先后

实验程序流程图:

主程序流程图:                            中断程序流程图:

             

实验程序:

ORG 0000H

        LJMP MAIN

        ORG 000BH

        LJMP INTT0

        ORG 0100H

MAIN:    MOV SP,#70H

        CALL INI_ALL

LOOP:    CALL DISPLAY

        MOV DPTR,#8000H

        MOVX A,@DPTR

        JB ACC.7,NEXT

        SETB TR0

NEXT:    JB ACC.6,NEXT1

        CLR TR0

NEXT1:    JB ACC.5,LOOP

        MOV R7,#0H

        MOV R6,#0H

        MOV R5,#0H

        LJMP LOOP

    /*INTT0*/

INTT0:    PUSH PSW

        PUSH ACC

        INC R5

        CJNE R5,#40,CMP1

CMP1:    JC GOON

        MOV R5,#0H

        INC R6

        CJNE R6,#100,CMP2

CMP2:    JC GOON

        MOV R6,#0H

        INC R7

        CJNE R7,#100,CMP3

CMP3:    JC GOON

        MOV R7,#0H

GOON:    POP ACC

        POP PSW

        RETI

    /*INIALL*/

INI_ALL:MOV R7,#0H

        MOV R6,#0H

        MOV R5,#0H

        MOV IE,#82H

        MOV TMOD,#02H

        MOV TH0,#25

        MOV TL0,#25

        RET

    /*DISPLAY*/

DISPLAY:MOV DPTR,#TABLE

        MOV A,R7

        MOV B,#10

        DIV AB

        MOVC A,@A+DPTR

        MOV 33H,A

        MOV A,B

        MOVC A,@A+DPTR

        MOV 32H,A

    /**/

        MOV A,R6

        MOV B,#10

        DIV AB

        MOVC A,@A+DPTR

        MOV 31H,A

        MOV A,B

        MOVC A,@A+DPTR

        MOV 30H,A

    /**/

        MOV DPTR,#8000H

        MOV A,33H

        MOVX @DPTR,A

        MOV DPTR,#8100H

        MOV A,32H

        MOVX @DPTR,A

        MOV DPTR,#8200H

        MOV A,31H

        MOVX @DPTR,A

        MOV DPTR,#8300H

        MOV A,30H

        MOVX @DPTR,A

        RET

TABLE:     DB 88H,0AFH,0C4H,86H,0A3H,92H,90H,8FH,80H,82H

        END

实验结果:数码管后两位显示ms计数,前两位显示s计数,按K1键启动计数,K2键停止计数,K3键清零。可实现秒表功能。

实验二:驱动蜂鸣器实验

实验内容:使P3.5端口输出周期为1S的方波信号。并通过三极管驱动一个直流小喇叭,使其发出断续的鸣响。

实验程序:

ORG 0H

           LJMP MAIN

           ORG 0100H

MAIN:  MOV SP,#70H

START:     CPL P3.5

           LCALL DELAY

           LJMP START

DELAY:     MOV R7,#200

Y:         MOV R6,#100

X:         NOP

           DJNZ R6,X

           DJNZ R7,Y

           RET

           END

实验结果:蜂鸣器发出声响。

实验三:显示管增一显示

实验内容:编写程序,使数码管从0000自增一加至9999,然后再自动清零循环。

实验程序:

       ORG 0H

       LJMP MAIN

       ORG 0100H

MAIN:  MOV 30H,#0H

       MOV 31H,#0H

       MOV 32H,#0H

       MOV 33H,#0H

       MOV R0,#1

START: LCALL DELAY

       LCALL CONVERT

       LCALL DISPLAY

       INC R0

       CJNE R0,#255,XX

       LJMP START

XX:    JC START

       JNC MAIN

CONVERT:MOV A,R0

        MOV B,#10

        DIV AB

        MOV 30H,B

        MOV B,#10

        DIV AB

        MOV 31H,B

        MOV 32H,A

        RET

DISPLAY:MOV A,30H

        MOV DPTR,#TABLE

        MOVC A,@A+DPTR

        MOV DPTR,#8300H

        MOVX @DPTR,A

        MOV A,31H

        MOV DPTR,#TABLE

        MOVC A,@A+DPTR

        MOV DPTR,#8200H

        MOVX @DPTR,A

        MOV A,32H

        MOV DPTR,#TABLE

        MOVC A,@A+DPTR

        MOV DPTR,#8100H

        MOVX @DPTR,A

        MOV A,33H

        MOV DPTR,#TABLE

        MOVC A,@A+DPTR

        MOV DPTR,#8000H

        MOVX @DPTR,A

        RET

DELAY: MOV R7,#100

Y:      MOV R6,#50

X:      NOP

        DJNZ R6,X

        DJNZ R7,Y

        RET

TABLE: DB 88H,0AFH,0C4H,86H,0A3H,92H,90H,8FH,80H,82H

           END

实验结果:八段数码显示管如题目要求所示自增一显示。

●软件实验

实验一:数据传送实验

实验内容:编写程序,将内部RAM中的30H-5FH中的数据设置为55H;

(1)将其中内容传送到90H开始的内部RAM中去。

    (2)将其中内容传送到200H开始的外部RAM中去。

实验程序流程图:

实验程序:ORG 0000H

             LJMP MAIN 

          ORG 0100H

MAIN:     MOV SP,#70H

             MOV R0,#30H

          MOV R7,#30H

          MOV A,#55H

LOOP1:       MOV @R0,A

              INC R0

              DJNZ R7,LOOP1   

      

              MOV R0,#30H

              MOV R7,#30H     

              MOV R1,#90H

LOOP2:        MOV A,@R0

              MOV @R1,A

              INC R0

              INC R1

              DJNZ R7,LOOP2         

WAIT:        SJMP WAIT         /*SJMP $*/

              END

实验结果:

内部RAM,30H-5FH单元内都为55H。

内部RAM,90H开始的单元内都为55H。

外部RAM,200H开始的单元内都为55H

实验二:数据分类与校验实验

实验内容:编写程序,将内部RAM中30H-5FH中的数据设置为1-48;并将其中奇数传送到90H开始的内部RAM中;将30H-5FH中的数据设置按照奇校验设置最高位。

实验程序流程图:

实验程序:      

          ORG 0000H

           LJMP MAIN 

          ORG 0100H

MAIN:     MOV SP,#70H

          MOV R0,#30H

          MOV R7,#30H

          MOV A,#1

LOOP1:    MOV @R0,A

          INC R0

          INC A

          DJNZ R7,LOOP1 

          MOV R0,#30H

          MOV R7,#30H

          MOV R1,#90H

LOOP2:    MOV A,@R0

          INC R0

          JB  0E0H,TRANS

          JMP NTRANS

TRANS:    MOV @R1,A

          INC R1

NTRANS:DJNZ R7,LOOP2     

END

实验结果:

内部RAM中30H-5FH中的数据为1-48;其中奇数传送到90H单元。 

30H-5FH中的数据设置按照奇校验设置最高位送到90H单元内。

程序段如下:

 //奇校验设置最高位  

           MOV R0,#30H

          MOV R7,#30H

          MOV R1,#90H

LOOP3:    MOV A,@R0

          INC R0

          JNB P,TRANS2

          JMP NTRANS2

TRANS2:SETB 0E7H

         MOV @R1,A

         INC R1

NTRANS2:DJNZ R7,LOOP3  

实验三:简单算术运算

实验内容:编写程序,计算1-100的累加和。结果存放于内部RAM的30H、31H中,低字节在前。

实验程序流程图:

实验程序:

ORG 0000H

       LJMP MAIN 

       ORG 0100H

MAIN:  MOV SP,#70H

       MOV R0,#30H

       MOV R1,#31H

       MOV @R0,#0

       MOV @R1,#0

       MOV B,#1

        MOV R7,#100

L1:        MOV A,@R1

        ADD A,B

       MOV @R1,A

        MOV A,@R0

        ADDC A,#0

        MOV @R0,A

        INC B

        DJNZ R7,L1

END

实验结果:

(30H)=13H,(31H)=0BAH,即结果为13BAH=5050D。

实验四:定点数算术运算实验

实验内容:编写2字节乘2字节子程序。乘数位于R2R3,被乘数位于R4R5。结果存放于R4R5R6R7内。

实验说明:

实验程序:

         ORG 0H

       LJMP MAIN

       ORG 0100H

MAIN:  MOV R2,#04H

       MOV R3,#03H

       MOV R4,#02H

       MOV R5,#01H

       MOV R6,#0H

       MOV R7,#0H

       MOV R0,#16D/*JISHU*/

       CLR C

LOOP:  MOV A,R5

       RLC A

       MOV R5,A

       MOV A,R4

       RLC A

       MOV R4,A

       MOV A,R7

       RLC A

       MOV R7,A

       MOV A,R6

       RLC A

       MOV R6,A

       MOV 26H,R6

       MOV 27H,R7

       MOV A,R2

       CJNE A,26H,NEXT1

NEXT1: JNC NEXT2

       MOV A,R3

       CJNE A,27H,NEXT3

NEXT3: JNC NEXT2

       CLR C 

       MOV A,R7

       SUBB A,R3

       MOV R7,A

       MOV A,R6

       SUBB A,R2

       MOV R2,A

       SETB C

NEXT2: DJNZ R0,LOOP

WAIT:  SJMP WAIT

       END

实验结果:当(R4R5)=21H,(R2R3)=43H时,运算结果为(R4R5R6R7)=08A3H。

  

实验五:数制转换实验一

实验内容:编写程序,将内部RAM中30H中的二进制数据转换为十进制数据并存放在31H、32H、33H中。

实验程序流程图:

实验程序:

ORG 0H

       LJMP MAIN

       ORG 0100H

MAIN:     MOV 30H,#0ABH

       MOV A,30H

       MOV B,#100D

       DIV AB

       MOV 31H,A

       MOV A,B

       MOV B,#10D

       DIV AB

       MOV 32H,A

       MOV 33H,B

WAIT:  SJMP WAIT

       END

实验结果:假设(30H)=0ABH,则(31H、32H、33H)=(01、07、01)。

实验六:数制转换实验二

实验内容:编写程序,将内部RAM中30H-3FH中的16进制数据(0-F)转换为ASCII码并存放在40H-4FH中。

实验程序:

       ORG 0H

       LJMP MAIN

       ORG 0100H

MAIN:  MOV R0,#30H

       MOV A,#0H

       MOV R2,#16D

LOOP1: MOV @R0,A

       INC A

       INC R0

       DJNZ R2,LOOP1

       MOV R0,#30H

       MOV R1,#40H

       MOV R2,#16D

LOOP:  MOV A,@R0

       INC R0

       CLR C

       SUBB A,#10D

       JC SMALL

       ADD A,#7

SMALL: ADD A,#3AH

       MOV @R1,A

       INC R1

       DJNZ R2,LOOP

WAIT:  SJMP WAIT

       END

实验结果:

实验七:数据统计实验一

实验内容:编写程序,首先将内部RAM中30H-7FH中的数据设置为50H-9FH。然后编写程序统计该区域内大于80H的个数,结果存放在寄存器B内。

实验程序:

       ORG 0H

       LJMP MAIN

       ORG 0100H

MAIN:  MOV R0,#30H

       MOV A,#50H

       MOV R2,#80D

LOOP1: MOV @R0,A

       INC A

       INC R0

       DJNZ R2,LOOP1

       MOV R0,#30H

       MOV R1,#0H

       MOV R2,#80D

LOOP:  CJNE @R0,#81H,NEXT

NEXT:  JC NEXT1

       INC R1

NEXT1: INC R0

       DJNZ R2,LOOP

       MOV B,R1

WAIT:  SJMP WAIT

       END

实验结果:首先将30H-7FH中的数据设置为50H-9FH

统计该区域内大于80H的个数,结果存放在寄存器B内,(B)=20H。

实验八:数据统计实验二

实验内容:编写程序,首先将内部RAM中30H-7FH中的数据设置为50H-9FH;然后统计该区域内的奇数个数,存放在R6中,正数个数放在R7。

实验程序:

       ORG 0H

       LJMP MAIN

       ORG 0100H

MAIN:  MOV R0,#30H

       MOV A,#50H

       MOV R2,#80D

LOOP1: MOV @R0,A

       INC A

       INC R0

       DJNZ R2,LOOP1

       MOV R0,#30H

       MOV R6,#0H/*JI*/

       MOV R7,#0H/*ZHENG*/

       MOV R2,#80D

LOOP:  MOV A,@R0

       JNB ACC.0,NEXT1

       INC R6

NEXT1: JB ACC.7,NEXT2

       INC R7

NEXT2: INC R0

       DJNZ R2,LOOP

WAIT:  SJMP WAIT

       END

实验结果:

首先将30H-7FH中的数据设置为50H-9FH

统计的奇数个数存放在R6中,(R6)=28H

文档

51单片机实验报告

硬件实验:实验一:定时器中断实验实验内容:fosc=11.0592MHz,T0方式2产生定时中断实现秒表功能:数码管后两位显示10ms;前两位显示秒数;K1/K2/K3键分别启动/停止/清零,按键操作不分先后实验程序流程图:主程序流程图:中断程序流程图:实验程序:ORG0000HLJMPMAINORG000BHLJMPINTT0ORG0100HMAIN:MOVSP,#70HCALLINI_ALLLOOP:CALLDISPLAYMOVDPTR,#8000HMOVXA,@DPTRJBACC.7,N
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top