单片机实验报告

南大校徽

单片机实验报告

                学    院:信息工程学院

    专业班级:生物医学工程111班

                姓    名:

                学    号:

 南昌大学实验报告

学生姓名:   学    号: 班级:     生医111班              

实验类型:□ 验证 □ 综合 ■ 设计 □ 创新 实验日期: 2013.11.26 实验成绩:          

实验一 I/O 口输入、输出实验

一、实验目的

掌握单片机P1口、P3口的使用方法。

二、实验内容

以 P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。以 P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。

三、实验说明和电路原理图

P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。因为内部上拉电阻阻值是20K~40K,故不会对外部输入产生影响。若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。

四、实验步骤

1)系统各跳线器处在初始设置状态。

用导线连接八位逻辑电平输出模块的 K0 到 CPU 模块的 RXD(P3.0 口);

用 8 位数据线连接八位逻辑电平显示模块的 JD4B 到 CPU 模块的 JD8(P1 口)。

2)启动 PC 机,打开 THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。

3)观察发光二极管显示跑马灯效果,拨动 K0 可改变跑马灯的方向。

五、实验程序

       DIR    BIT   P3.0                    Delay:

       ORG   0000H                                              mov   r6,#0

       LJMP  START                                         DelayLoop1:

       ORG   0100H                           mov   r7,#0                 

                                                             DelayLoop2

START:                                                                  NOP

Output1:                                                                 NOP

       mov   a, #0fEH                                      djnz  r7,DelayLoop2

       mov   r5, #8                                           djnz  r6,DelayLoop1

loop1:                                                                         ret 

       CLR   C                                                        end  

       mov   C,DIR

       JC    Output2

       mov   P1, a

       rl    a

       Acall  Delay

       djnz  r5, loop1

       Sjmp  Output1

      

Output2:   

       mov   a, #07fH

       mov   r5, #8 

loop2:

       CLR   C

       mov   C,DIR

       JNC   Output1

       mov   P1, a

       rr    a

       Acall Delay

       djnz  r5,loop2

       Sjmp  Output2

六、实验总结

    本次试验初步了解了实验箱的模块部分,对单片机接线也有了解,实验程序也看的懂,对阅读一个完整的程序有很大帮助,一些常用的语句有更深的掌握,例如CLR,ORG,LJMP,JC等语句。

    

 南昌大学实验报告

学生姓名:     学    号:班级:     生医111班              

实验类型:□ 验证 □ 综合 ■ 设计 □ 创新 实验日期: 2013.12.03 实验成绩:          

实验二 交通灯控制实验

一、实验目的

掌握十字路口交通灯控制方法。

二、实验内容

利用系统提供的双色 LED 显示电路,和四位静态数码管显示电路模拟十字路口交通信号灯。4位LED数码管显示时间,LED显示红绿灯状态。

三、实验说明和电路原理图

交通信号灯控制逻辑如下:假设一个十字路口为东西南北走向。开始为四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后(20 秒),东西路口的绿灯,闪烁若干次后(3 秒),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2 秒),东西路口的红灯亮,南北路口的绿灯亮,南北路口方向通车,延时一段时间后(20 秒),南北路口的绿灯闪烁若干次后(3 秒),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2 秒),再切换到东西路口的绿灯亮,南北路口的红灯亮,之后重复以上过程。

四、实验步骤

1)系统各跳线器处在初始设置状态。

P10 同时接 G1、G3;P11 同时接 R1、R3;P1.2 同时接 G2、G4;P1.3 同时接 R2、R4; P1.6、P1.7 分别接静态数码显示的 DIN、CLK。

2)启动 PC 机,打开 THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。

3)观察十字路口交通灯效果。

五、实验程序

      7个状态的程序:

STATE0:                 ;状态0          STATE4:         ;状态4

       MOV    P1,#0                            CLR    LED_G1

       CLR    LED_G1                          SETB   LED_R1   ;东西红灯亮

       SETB   LED_R1    ;东西红灯亮                     SETB   LED_G2   ;南北绿灯亮

       CLR    LED_G2                                              CLR     LED_R2

       SETB   LED_R2    ;南北红灯亮                     RET

       RET                                   STATE5:        ;状态5

                                                                                      CLR    LED_G1

STATE1:                  ;状态1                                SETB   LED_R1

       SETB   LED_G1   ;东西绿灯亮                        CLR    LED_R2

       CLR    LED_R1                                                RET

       CLR    LED_G2                                        STATE6:       ;状态6

       SETB   LED_R2    ;南北红灯亮                       CLR    LED_G1

       RET                                                                    SETB   LED_R1  ;东西红灯亮

                                                                                       SETB   LED_G2

STATE2:                  ;状态2                                SETB   LED_R2  ;南北黄灯亮

       CLR    LED_R1                                                 RET

       CLR    LED_G2

       SETB   LED_R2    ;南北红灯亮

       RET

STATE3:                  ;状态3

       SETB    LED_G1

       SETB    LED_R1   ;东西黄灯亮

       CLR     LED_G2

       SETB   LED_R2    ;南北红灯亮

       RET

六、实验总结

    实验中LED_R为高电平红灯亮,LED_G为高电平绿灯亮,LED_R,LED_G都为高电平则两个灯都亮,即为黄灯,LED_R,LED_G为低电平则不亮。状态0为开机状态全红,状态1,2,3,4,5,6为工作状态,循环执行。

    本实验程序比较长,花了很长时间理解,其工作过程已了解,对学习单片机程序有了很大帮助。

    

 南昌大学实验报告

学生姓名:     学    号: 班级:     生医111班              

实验类型:□ 验证 □ 综合 ■ 设计 □ 创新 实验日期: 2013.12.10 实验成绩:          

实验三  定时计数器实验

一、实验目的

学习 MCS-51 内部计数器的使用和编程方法。

二、实验内容

使用 MCS-51 内部定时/计数器,定时一秒钟,CPU 运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。

三、实验说明和电路原理图

定时器有关的寄存器有工作方式寄存器 TMOD 和控制寄存器 TCON。TMOD 用于设置定时器/计数器的工作方式 0-3,并确定用于定时还是用于计数。TCON 主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是 12 个振荡器周期。假设实验系统的晶振是 12MHZ,程序工作于方式 2,即 8 位自动重装方式定时器, 定时器 100uS中断一次, 所以定时常数的设置可按以下方法计算:

机器周期=12÷12MHz=1uS

(256-定时常数)×1uS=100uS

定时常数=156。然后对 100uS 中断次数计数 10000 次,就是 1 秒钟。

四、实验步骤

1)系统各跳线器处在初始设置状态,用导线连接 CPU 模块 P10 到八位逻辑电平显示模块的L0。

2)启动 PC 机,打开 THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。

3)运行程序观察发光二极管隔一秒点亮一次,点亮时间为一秒。

五、实验程序

      Tick    equ  10000    ; 10000 x 100us = 1s

       T100us  equ  156      ; 100us时间常数(6M)

       C100us  equ  30h      ; 100us记数单元

       LEDBuf  bit  20h

       org     0

       ljmp    Start

       org     000bh

T0Int:

       push    PSW

       mov     a, C100us+1

       jnz     Goon

       dec     C100us

Goon:

       dec     C100us+1

       mov     a, C100us

       orl     a, C100us+1

       jnz     Exit            ; 100us 记数器不为0, 返回

       mov     C100us, #27H    ; #high(Tick)

       mov     C100us+1, #10H  ; #low(Tick)

       cpl     LEDBuf          ; 100us 记数器为0, 重置记数器

                               ; 取反LED

Exit:

       pop     PSW

       reti

Start:

       mov     TMOD, #02h         ; 方式2, 定时器

       mov     TH0, #t100us

       mov     TL0, #t100us

       mov     IE, #10000010b     ; EA=1, IT0 = 1

       setb    TR0                ; 开始定时

       clr     LEDBuf

       clr     P1.0

       mov     C100us, #27H       ;#high(Tick)

       mov     C100us+1, #10H     ;#low(Tick)

Loop:

       mov     c, LEDBuf

       mov     P1.0, c

       ljmp    Loop

       end

六、实验总结

   实验中T0Int,Goon两个模块完成计数10000次,时间常数2710H即10000,Start模块启动计时器方式2,时间常数156,完成计数100次,晶振是 12MHZ所以机器周期为12÷12MHz=1uS,完成一次循环需要10000*100*1uS=1s。

   实验应用定时计数器完成时间的计时,对TMOD格式,工作方式等有了更多的学习。

    

 南昌大学实验报告

学生姓名:      学    号: 班级:     生医111班              

实验类型:□ 验证 □ 综合 ■ 设计 □ 创新 实验日期: 2013.12.17 实验成绩:          

实验四 串行 AD 转换实验

一、实验目的

1.熟悉八位串行AD转换器TLC549的性能及转换过程。

2.掌握单片机和TLC549硬件联接及软件编程。

二、实验内容

使用 TLC549 实现单片机模数转换。模拟信号为 0~5V 电位器分压输出,单片机读取模拟信号,并在数码管上用十六进制形式显示出来。

三、实验说明和电路原理图

内部系统时钟和I/O CLOCK可独立使用。应用电路的设计只需利用I/O时钟启动转换或读出转换结果。当CS为高电平时,DATA OUT处于高阻态且I/O时钟被禁止。

当CS变为低电平时,前次转换结果的最高有效位(MSB)开始出现在DATA OUT端。在接下来的7个I/O CLOCK周期的下降沿输出前次转换结果的后7位,至此8位数据已经输出。然后再将第8个时钟周期加至I/O CLOCK,此时钟周期的下跳沿变使芯片进行下一轮的AD转换。在第8个I/O CLOCK周期之后,CS必须变为高电平,并且保持高电平直至转换结束为止(>17uS),否则CS的有效高电平至低电平的转换将引起复位。

四、实验步骤

1)系统各跳线器处在初始设置状态。

用导线对应连接串行模数转换模块的 CS_549、DATA、CLK 到 CPU 模块的 P12、P10、P11;电位器模块的输出端接串行模数转换模块的 AIN; CPU 模块的 P16、P17 接串行静态数码显示模块 DIN、CLK。

2)启动 PC 机,打开 THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。

3)数码管以十六进制形式显示模拟量,手动调节输入电位器,改变输入模拟量电压的大小,数码管显示将随之变化。

五、实验程序                                              

       DAT      BIT     P1.0                                       

        CLK      BIT     P1.1                                     

        CS       BIT     P1.2             

        DBUF     EQU     30H                                   

        TEMP     EQU     40H                                   

        AD_DATA  EQU     50H                                  

        DIS_DOUT BIT     P1.6                                    

        DIS_CLK  BIT     P1.7                                     

        ORG   0000H                                                     

       LJMP  START                                                       

        ORG   0100H                                                     

START:                                                                              

    MOV       DBUF+3,#0AH ;显示“A”                      

    MOV    DBUF+2,#0DH ;显示“D”                          

     MOV    SP,#60H                                                     

      ACALL  TLC549_ADC                                 

      MOV    AD_DATA,A  ;存转换结果                       

    MOV       B,A                                                 

    SWAP   A                                                                

      ANL    A,#0FH                                                    

    MOV    DBUF+1,A ;                                                

    INC         R0                                                            

    MOV    A,B                                                             I

     ANL    A,#0FH                                                      

    MOV       DBUF,A ;                                  

    ACALL  DISPLAY  ;    

    ACALL  DELAY                

    SJMP   START                                                       

TLC549_ADC:                                

        CLR   A                                             

        CLR   CLK                      

        CLR   CS                                               

        MOV   R6,#8                                      

ADLOOP:                                                               

        SETB  CLK                                   

        NOP

        NOP                                      

        MOV   C,DAT

        RLC   A

六、实验总结

   本次实验学习了怎样通过改变输入的电压值,TLC549转换器相应的输出值变化的过程,并且显示模块也有了更多的学习,对一些常用寄存器,A,C,R等都更加熟悉。

 

第二篇:单片机实验报告2

单片机原理及应用

实验报告

班级:电子0911 

学号:0720106114 

姓名:征安杰

20##年12月

实验一 P1口输入/输出实验

一、实验目的

1、掌握P1口简单使用,程序的简单编程。

2、学习延时程序的编写和使用。

二、实验内容

P1口做输出口,编写程序,使P1口接的8个发光二极管L1—L8按16进制加一方式点亮发光二极管。

三、实验说明

1P1口是准双向口,它作为输出口时与一般的双向口使用方法相同,由准双向口结构可知:当P1口作为输入口时,必须先对它置高电平,使内部MOS管截止,因内部上拉电阻是20KΩ—40KΩ,故不会对外部输入产生影响。若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。

2延时子程序的延时计算问题。对于延时程序

    DELAY :MOV  R6, #00H

    DELAY1:MOV  R7, #80H

    DJNZ  R7, $

     DJNZ  R6, DELAY1

查指令表可知MOV、DJNZ指令均需用两个机器周期,而一个机器周期时间长度为12/ 6.0MHZ,所以该段指令执行时间为:((80+1)×256+1)×2×(12÷6000000)=132.1ms

四、实验步骤

 ①P33用插针连至K1, P10—P17用插针连至L1—L8。

 ②从起始地址0540H开始连续运行程序(输入0540后按EXEC键)。

 ③开关K1每拨动一次,L1—L8发光二极管按16进制方式加一点亮。〖LM〗

五、实验原理图

六、实验程序

ORG 0540h

HA1S:   MOV A,#00H

HA1S1:  JB P3.3,HA1S1

    MOV R2,#20H

    LCALL DELAY

    JB P3.3,HA1S1

HA1S2:  JNB P3.3,HA1S2

    MOV R2,#20H

    LCALL DELAY

    JNB P3.3,HA1S2

    INC A

    PUSH ACC

    CPL A

    MOV P1,A

    POP ACC

    AJMP HA1S1

DELAY:  PUSH 02H

DELAY1:  PUSH 02H

DELAY2: PUSH 02H

DELAY3: DJNZ R2,DELAY3

    POP 02H

    DJNZ R2,DELAY2

    POP 02H

    DJNZ R2,DELAY1

    POP 02H

    DJNZ R2,DELAY

    RET

    END

七、实验感想

通过本实验,我掌握了P1口简单使用,程序的简单编程以及学会了延时程序的编写和使用。实验中,当P1口用作输入口时,必须先对它置“1”。若不先对它置“1”,读入的数据不一定正确。

实验二外部中断实验

一、实验目的

掌握工业顺序控制程序的简单编程,中断的使用。

二、实验内容

8032的P10—P16控制注塑机的七道工序,现模拟控制七只发光二极管的点亮,高电平有效,设定每道工序时间转换为延时,P3.4为开工启动开关,低电平启动。P3.3为外故障输入模拟开关,P3.3为0时不断告警。P1.7为报警声音输出,设定6道工序只有一位输出,第七道工序三位有输出。

三、实验说明

    实验中用外部中断0,编中断服务程序的关键是:

   1保护进入中断时的状态,并在退出中断之前恢复进入的状态。

   2必须在中断程序中设定是否允许中断重入,即设置EX0位。

一般中断程序进入时应保护PSW、ACC以及中断程序使用但非其专用的寄存器,本实验中未涉及。

四、实验步骤

   ①P3.4连K1,P3.2连K2,P1.0—P1.6分别连到L1—L7,P1.7连SIN(电子音响输入端)。

 ②K1开关拨在上面,K2拨在上面。

 ③用连续方式从起始地址0580H开始运行程序(输入0580后按EXEC键),此时应在等待开工状态。

 ④K1拨至下面(显低电平),各道工序应正常运行。

   ⑤K2拨至下面(低电平),应有声音报警(人为设置故障)。⑥K2拨至上面(高电平),即排除故障,程序应从刚才报警的那道工序继续执行。

五、实验原理图

六、实验程序


   


ORG 0013H

    LJMP HA2S3

    ORG 0580H        

HA2S:   MOV P1,#07FH

    ORL P3,#00H

HA2S1:  JNB P3.4,HA2S1

    ORL IE,#84H

    ORL IP,#04H

    MOV PSW,#00H

    MOV SP,#53H

HA2S2:  MOV P1,#07EH

    ACALL HA2S7

    MOV P1,#07DH

    ACALL HA2S7

    MOV P1,#07BH

    ACALL HA2S7

    MOV P1,#077H

    ACALL HA2S7

    MOV P1,#06FH

    ACALL HA2S7

    MOV P1,#05FH

    ACALL HA2S7

    MOV P1,#03FH

    ACALL HA2S7

    SJMP HA2S2

HA2S3:  MOV B,R2

HA2S4:  MOV P1,#07FH

    MOV 20H,#0A0H

HA2S5:  SETB P1.7

    ACALL HA2S6

    CLR P1.7

    ACALL HA2S6

    DJNZ 20H,HA2S5

    CLR P1.7

    ACALL HA2S6

    JNB P3.2,HA2S4

    MOV R2,B

    RETI

HA2S6:  MOV R2,#06H

    ACALL DELAY

    RET

HA2S7:  MOV R2,#30H

    ACALL DELAY

    RET

DELAY:  PUSH 02H

DELAY1: PUSH 02H

DELAY2: PUSH 02H

DELAY3: DJNZ R2,DELAY3

    POP 02H

    DJNZ R2,DELAY2

    POP 02H

    DJNZ R2,DELAY1

    POP 02H

    DJNZ R2,DELAY

    RET

    END

七、实验感想

通过本实验,我掌握了工业顺序控制程序的简单编程,中断的使用。学会了外部中断技术的基本使用方法,以及学会中断处理程序的编程方法。并按要求修改了程序代码,改变触发方式后也能正常工作。一开始程序中出现错误,在和同学商讨并结合书本后才找出问题所在。


实验三 定时器实验

一、实验目的

    掌握单片机定时器/计数器的工作方式和编程原理。

二、实验内容

8253A的0通道工作在方式3产生方波。

三、实验步骤

    ①用插针把8253的CLK0插孔和分频输出端T2插孔相连。

    ②8253的GATE0插孔和+5V插孔相连。

    ③8253的片选信号8253CS和译码输出端Y4相连。

    ④KBB拨在左边OFF位置。

    ⑤用排线将SIO区的D0—D7连到BUS2区XD0—XD7。

    ⑥在“P.....”状态下,从起始地址08C0H开始连续运行程序,用示波器测8253的0通道输出端OUTO,应有方波产生。

四、实验原理图

五、实验程序

   


ORG 08C0H      

L8253:  MOV DPTR,#0C003H

    MOV A,#36H

    MOVX @DPTR,A

    MOV DPTR,#0C000H

    MOV A,#00H

    MOVX @DPTR,A

    MOV A,#10H

    MOVX @DPTR,A

   


SJMP $

    END


六、实验感想

通过本实验,我掌握单片机定时器/计数器的工作方式和编程原理。本次试验比较简单,通过8253A的0通道工作在方式3产生方波。只有在仿真时出现了一些小问题,我们需要不断发现,总结,运用,掌握一些技巧可以大大提高实验中连接电路的速度。

实验四:串行通信实验

一、实验目的

1掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。

2了解实现串行通信的硬环境,数据格式的协议,数据交换的协议。

二、实验内容

1利用8031单片机串行口,实现双机通信。

   2本实验实现以下功能,将1号实验机键盘上键入的数字、字母显示到2号机的数码管上。

三、实验说明

    1本实验系统中考虑用户可以方便使用串行口实现双机或和上位机通信,系统设计有用户专用串行接口,只要配上用户专用通信电缆线就可以实现和上位机通信,不影响监控系统和上位机的联机工作。J10就是用户专用串行接口,将J10用用户专用通信线连到上位机的串口上。注意不要和上位机系统用串行口冲突。

    2实验时需将1号机8031串行接收信号线P3.0(RXD)连到2号机8031串行口发送信号线P3.1(TXD)。

四、实验步骤

   1.按图连好线路。

    2.在DVCC实验系统处于"P."状态下。

    3.1号机输入四位起始地址0D00后,按EXEC键连续运行程序。

    4.2号机输入四位起始地址0E30后,按EXEC键连续运行程序。

    5.从1号机上的键盘输入数字键,会显示在2号机的数码管上。

五、实验原理图

六、实验程序


;系统晶振是 6.0 MHz

    ORG 0E30H

START:

    MOV SP,#60H

    mov A,#02H

    MOV R0,#79H

    MOV @R0,A

    INC R0

    MOV A,#10H

    MOV @R0,A

    INC R0

    MOV A,#01H

    MOV @R0,A

    INC R0

    MOV A,#03H

    MOV @R0,A

    INC R0

    MOV A,#00H

    MOV @R0,A

    INC R0

    MOV A,#08H

    MOV @R0,A

    MOV A,#7EH

    MOV DPTR,#1FFFH

    MOVX    @DPTR,A

        MOV SCON,#50H   ;串口 方式 1

    MOV TMOD,#20H   ;T1 方式 1

    MOV TL1,#0CCH   ;波特率 9600 的常数

    MOV TH1,#0CCH

    SETB    TR1     ;开中断

    CLR ET1

    CLR ES

WAIT:

    JBC RI,DIS_REC  ;是否接收到数据

    LCALL   DISP        ;

    SJMP    WAIT        ;

DIS_REC:

    MOV A,SBUF      ;读串口接收到的数据

    LCALL   DATAKEY     ;显示输入的数字(0-F)

    DB 79H,7EH

    AJMP    WAIT

DATAKEY:MOV R4,A

    MOV DPTR,#1FFFH

    MOVX A,@DPTR

    MOV R1,A

    MOV A,R4

    MOV @R1,A

    CLR A

    POP 83H

    POP 82H

    MOVC A,@A+DPTR

    INC DPTR

    CJNE A,01H,DATAKEY2

    DEC R1

    CLR A

    MOVC A,@A+DPTR

DATAKEY1:PUSH 82H

     PUSH 83H

     MOV DPTR,#1FFFH

     MOVX @DPTR,A

     POP 83H

     POP 82H

     INC DPTR

     PUSH 82H

     PUSH 83H

     RET

DATAKEY2:DEC R1

     MOV A,R1

     SJMP DATAKEY1

DISP:   SETB 0D4H

    MOV R1,#7EH

    MOV R2,#20H

    MOV R3,#00H

DISP1:

    MOV DPTR,#DATACO

    MOV A,@R1

    MOVC A,@A+DPTR

    MOV DPTR,#0FF22H

    MOVX @DPTR,A

        MOV DPTR,#0FF21H

    MOV A,R2

    MOVX @DPTR,A

        LCALL DELAY

    DEC R1

    CLR C

    MOV A,R2

    RRC A

    MOV R2,A

    JNZ DISP1

    CLR 0D4H

    RET

DELAY:  MOV R7,#03H

DELAY0: MOV R6,#0FFH

DELAY1: DJNZ R6,DELAY1

        DJNZ R7,DELAY0

        RET

 DATACO: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

    DB 88H,83H,0C6H,0A1H,86H,8EH,0BFH,0CH,89H,0DEH

    END

七、实验感想

通过本次实验,我掌握了串行口工作方式的程序设计,掌握单片机通信程序编制方法。并了解了实现串行通信的硬环境,数据格式的协议,数据交换的协议。初步了解到实现两机通信的原理和方式,以及计算机的串行通信中数据位、校验位的关系。

相关推荐