安徽大学历次单片机实验报告 安徽工业大学单片机实验报告

时间:2023-08-15 16:28:08 文档下载 投诉 投稿

      单片机实验报告

      学号:____________  姓名:____________

      1、实验目的:

      1.实验一的目的:掌握汇编语言设计和调试方法,熟悉键盘操作;

      2.实验二的目的:掌握汇编语言设计和调试方法;

      3.实验三的目的:进一步掌握汇编语言设计和调试方法。

      二、实验设备:装有Keil uVision的计算机1(本人用的是装有Keil uVision2

          计算机)

      3、实验内容:

实验一 清零程序

      1.实验内容:把2000H20FFH的内容清零

      2.我的流程图、源程序及调试结果:

        流程图(用Edraw Mind Map 7.8制作):

                      源程序:

       ORG 0000H

              LJMP START     

        ORG 0100H

        START:  MOV R0,#0FFH

                MOV DPTR,#2000H

                MOV A,#00H

        MAIN:    MOVX @DPTR,A

                INC DPTR

                DJNZ R0,MAIN

        SJMP $  END

       调试结果:

       将源程序中的MOV A,#00H改为MOV A,#0FFH,以便观察上述程序是否能够实现清零

       功能。

               

      实验二 拆字程序

      1.实验内容:把2000H的内容拆开,高位送2001H,低位送2002H2001H2002H高位清零,一般本程序用于把数据送显示缓冲区时用。

      2.我的流程图、源程序及调试结果:

       流程图(用Edraw Mind Map 7.8制作):

                      源程序:

        ORG 0000H

              LJMP START     

        ORG 0100H

        START: MOV DPTR,#2000H

              MOV A,#0A3H  ;给累加器A赋一个值

              MOVX @DPTR,A  ;将累加器A中的内容作为2000H的内容

              MOV R0,A

              ANL A,#0F0H

              SWAP A        INC DPTR

              MOVX @DPTR,A

              MOV A,R0

              ANL A,#0FH

              INC DPTR

              MOVX @DPTR,A

        SJMP $

        END

       调试结果:

                 

      实验三 拼字程序

      1.实验内容:把2000H2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成一字节。

      2.我的流程图、源程序及调试结果:

      流程图(用Edraw Mind Map 7.8制作):

                  源程序:

       ORG 0000H

            LJMP START     

        ORG 0100H

        START: MOV DPTR,#2000H

            MOV A,#0B2H    ;给累加器A赋一个值

            MOVX @DPTR,A    ;将累加器A中的内容作为2000H的内容

            ANL A,#0FH

            SWAP A

            MOV R0,A      INC DPTR

            MOV A,#0E5H    ;给累加器A赋一个值

            MOVX @DPTR,A    ;将累加器A中的内容作为2001H的内容

            ANL A,#0FH

            ORL A,R0

            INC DPTR

            MOVX @DPTR,A

        SJMP $

        END

       调试结果:     

      4、实验小结

      此次实验让我基本掌握了MOVXSWAP这两条从未用过的指令的用法,理解了地址高位与低位的含义,16位地址与8位地址的记法,DPTR作为地址指针的重要作用,并让我注意到了DECINC少一种用法,即有INC DPTR,却没有DEC DPTR

      一、实验目的:

       l)学习P1口的使用方法;

       2)学习延时子程序的编写。

      2、实验必备知识:

       lPl口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1,该位才能作为输入。

       2)本实验中延时子程序采用指令循环来实现。

      3、实验设备:

        装有Keil uVisionSTC_ISP的计算机1

        单片机芯片1  单片机综合实验箱1

        杜邦线若干

      4、实验内容:

        P1口输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。

      5、我的电路原理图、流程图及源程序:

      1.电路原理图:

          因为没有用实验室的设备完成实验,所以我用的是自己的计算机和单片机完成实验的。其起作用的部分的电路图如下图用(Proteus 7.8绘制)所示:

         

       

         

        2. 流程图(用Edraw Mind Map 7.8制作):                 

        3.源程序:

      ORG 0000H                   

          MOV A,#01111111B   

              JMP START          ORG 0100H                   

      START:  MOV  P1,A               

              CALL  DEL100ms     

              RR  A          ;A中的内容右移一位,相应地,发光二极管中低电平所处位置左移一位             

              JMP START         

      DEL100ms:MOV R7,#250       

      DEL1:    MOV R6,#200         

      DEL2:    DJNZ R6,DEL2       

              DJNZ R7,DEL1       

              RET               

      END                       

      六、思考:

      1.改变延时常数,使发光二极管闪亮时间改变。

      答:如下两图所示,将晶振频率和时钟频率均选为12MHz,则一个机器周期为1us,执行一条DJNZ指令需要两个机器周期,即2us.R6R7分别表示其各自存储的立即数,则上述DEL100ms的延时子程序所延长的时间T=2*R6*R7us,故改变R6R7中存储的立即数即可改变延时子程序延长的时间,从而使发光二极管闪亮时间改变。如:将DEL100ms的延时子程序中的MOV R7,#250改为MOV R7,#125,则DEL100ms的延时子程序延时的时间变为原来100ms的一半,即50ms.但立即数的大小有范围,对于8位单片机而言,其大小不能超过256,所以若想延长更长的时间,需要在延时程序中多加几个循环,或同时调用多个延时子程序。

      Keil uVision2中的选项对话框

             

      Proteus 7.8中的选项对话框

      2.修改程序,使发光二极管闪亮移位方向改变。

      答:将上述源程序中的 RR A 改为RL A则可将发光灯泡流动的方向由向左改为向右。

                       

      继续生产过程的控制称顺序控制,象注塑机工艺过程大致按“合模→注射→延时→开模→产伸→产退”顺序动作,用单片机最易实现。

      三、实验设备:

          装有Keil uVisionSTC_ISP的计算机1

          单片机芯片1

          单片机综合实验箱1

          杜邦线若干

      四、实验内容:

          P1.01.6控制注塑机的七道工序,现模拟控制七只发光二极的点亮,设定每道工序时间转换为延时,P3.4为开工启动开关,低脉冲有效。INT1为外部故障输入模拟,低电平报警。P1.7为报警声音输出。(可设置声光报警)

      五、我的电路原理图、流程图及源程序:

      1.电路原理图:

          因为没有用实验室的设备完成实验,所以我用的是自己的计算机和单片机完成实验的。现在根据题意用Proteus 7.8仿真如下,其中,AT89C51的晶振已设置为12MHz,蜂鸣器的驱动电压已改为较低的1V,蜂鸣器的低电平端接红色超亮发光二级光的正极:

         

      图一 原理图

                图二 蜂鸣器的参数

          2. 流程图(用Edraw Mind Map 7.8制作):              3.源程序:

      1)仿真时用的程序,其原理图如图一所示:

      ORG 0000H

            JMP START

      ORG 0013H

            JMP INT_1

      ORG 0100H

            JMP LIGHT

      START: MOV  A,#0FEH

            MOV  R0,#7H

            SETB IT0      SETB EX1

            SETB EA

            MOV  R1#1H     

      HERE:  JB  P3.4,HERE    ;保证只有开工启动开关按下时才执行后续程序

      LIGHT: MOV  P1,A        ;按键按下开始工序

            CALL DEL

            RL  A

           

            DJNZ R0,LIGHT

            MOV  P1,#0FFH      JMP $            ;等待中断

      INT_1: PUSH PSW          ;中断工序并声光报警      PUSH ACC

            MOV  P1,#7FH

            POP  ACC

            POP  PSW

            RETI

      DEL:  MOV R7,#25        ;延时1s

      DEL1:  MOV R6,#200

      DEL2:  MOV R5,#100

      DEL3:  DJNZ R5,DEL3

            DJNZ R6,DEL2

            DJNZ R7,DEL1      RET 

      END

      2)做实验时用的程序(此程序是在以前写作业和自己训练时编写的程序上改编而成,因而不太简洁),其原理图未画出,但注释中已解释得很明白:

      ORG 0000H

            JMP START

      ORG 0013H

            JMP KEY1

      ORG 0100H

            JMP MAINSTART: SETB IT0

            SETB EX1

            SETB EA

            MOV  A,#0FEH

      HERE:  JB  P3.4,HERE    ;保证只有开工启动开关按下时才执行后续程序

            MOV  R3,#7H

      MAIN:  MOV  R1,#248      ;可与下一条语句及延时程序搭配,使2ms的延时程序变为延时1s的程序 

            MOV  R2,#2

      LIGHT: MOV  P1,A        ;按键按下开始工序      CALL DEL

            DJNZ R1,LIGHT

            MOV  R1,#248

            DJNZ R2,LIGHT

            RL  A

            DJNZ R3,MAIN

            MOV  P1,#0FFH

            JMP $            ;等待中断

      KEY1:  PUSH PSW

            PUSH ACC

            MOV  P1,#7FH      ;中断工序,光报警,我用的单片机的P1口全都接了发光二极管

            CLR  P2.3        ;声报警。我用的单片机的P2.3接的是蜂鸣器,低电平有效

            POP  ACC

            POP  PSW

            RETI

      DEL:  MOV R7,#25        ;延时2ms

      DEL1:  MOV R6,#40         

      DEL2:  DJNZ R6,DEL2         

            DJNZ R7,DEL1       

            RET         

      END           

      6、思考:若报警解除后,工序需从头开始等待开机信号,如何编程?

      答:加一个标志来表明是否是刚从中断中退出来,然后设置一个分支程序即可(由于RETI不同于RET,所以没有简单地将RETI换成相应的JMP指令跳转到程序的起始处)。如下(在仿真时用的程序上加了三条指令):

      ORG 0000H

            JMP START

      ORG 0013H

            JMP INT_1

      ORG 0100H

            JMP LIGHT

      START: MOV  A,#0FEH

            MOV  R0,#7H

            SETB IT0

            SETB EX1

            SETB EA

            MOV  R1,#1H        ;此处为添加的LIGHT: MOV  P1,A       

            CALL DEL

            RL  A

            CJNE R1,#1H,START  ;此处为添加的      MOV  R1,#0H        ;此处为添加的      RET 

      END

             

【安徽大学历次单片机实验报告 安徽工业大学单片机实验报告】相关文章:

计算机辅助设计CAD-实验报告 道路工程计算机辅助设计实验报告08-15

工程制图CAD实验报告 制图cad实训报告08-15

工作报告之大学单片机实验报告 石家庄铁道大学单片机实验报告08-15

单片机课程设计实验报告 单片机实验课实验报告08-15

单片机实验报告 单片机实验报告怎么写08-15

单片机实验报告 单片机实验报告keil软件的使用08-15

安徽大学历次单片机实验报告 安徽工业大学单片机实验报告08-15

2023电子商务运营实习报告范文08-15

电子商务的实习报告三篇08-15

电商运营助理实习报告08-15

食品饮料行业电子商务实习报告08-15

电商运营实习报告范文 电商运营实训报告总结08-15

电子商务实习报告2000字 电子商务实习报告08-15