文档库

最新最全的文档下载
当前位置:文档库 > 实验一 IO口输入、输出实验

实验一 IO口输入、输出实验

贵州大学实验报告纸

实验一  IO口输入、输出实验

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

一、实验目的

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

二、实验要求

根据实验内容编写一个程序,并在实验仪上调试和验证。

三、实验内容

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

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

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

本实验需要用到CPU模块(F3区)和八位逻辑电平输出模块(E4区)和八位逻辑电平显示模块(B5区),八位逻辑电平输出电路原理图参见图1-1。八位逻辑电平显示电路原理图参见图1-2。

实验一  IO口输入、输出实验

图1-2 八位逻辑电平显示

实验一  IO口输入、输出实验

图1-1 八位逻辑电平输出

五、实验步骤

㈠实验程序编写

1、实验程序:

;//******************************************************************

;文件名: Port for MCU51

;功能: I/O口输入、输出实验

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

;到CPU模块的P3.1口;

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

;//****************************************************************** DIR BIT P3.0

ORG 0000H

LJMP START

ORG 0100H

START:

Output1:

mov a, #0fEH

mov r5, #8

loop1:

CLR C

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

Delay:

mov r6,#0

DelayLoop1:

mov r7,#0

DelayLoop2:

NOP

NOP

djnz r7,DelayLoop2

djnz r6,DelayLoop1

ret

end

2、修改后的程序为:

ORG 0000H

LJMP START

ORG 0100H

START:

Output1:

mov a, #0fEH

mov R5, #8

loop1:

MOV R2,P3

CJNE R2,#0FFH,Output2

mov P1, a

rl a

Acall Delay

djnz R5, loop1

Sjmp Output1

Output2:

mov a, #07fH

mov R5, #8

loop2:

MOV R2,P3

CJNE R2,#0FEH,Output3

mov P1, a

rr a

Acall Delay

djnz R5,loop2

Sjmp Output2

Output3:

mov a, #0FFH

mov R5, #9

loop3:

MOV R2,P3

CJNE R2,#0FDH,Output4

CLR C

mov P1, a

RRC a

Acall Delay

djnz R5, loop3

mov R5, #8

loop4:

SETB C

RLC A

MOV P1,A

Acall Delay

djnz R5, loop4

Sjmp Output3

Output4:

MOV R2,P3

CJNE R2,#0FCH,Output1

MOV R3,#00H

MOV R4,#08H

MOV DPTR, #tab ; 表首址

loop5:

MOV A,R3

MOVC A, @A+DPTR ; 查表读取第一个字节 MOV P1,A

INC R3

ACALL DELAY

DJNZ R4,loop5

SJMP Output4

Delay:

mov r6,#0 ;延时程序

DelayLoop1:

mov r7,#0

DelayLoop2:

NOP

NOP

djnz r7,DelayLoop2

djnz r6,DelayLoop1

ret

tab:

DB 0FFH,0E7H,0C3H,81H,00H,81H,0C3H,0E7H

End

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

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

模块的TXD(P3.1口);

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

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

㈣观察发光二极管显示跑马灯效果

六、实验现象和分析

1、实验现象

对于原来的程序,运行程序后,拨动开关K0,可以实现两种流水灯方式的选择,即可以实现左移和右移,而修改程序后,可以实现四种方式的选择,选择通过

K1和K0来实现,除了左移和右移,还实现了从左到右逐次亮再从右到左逐次灭

和从中间到两边亮,在从两边倒中间灭。

2、实验分析

对于实验程序,通过检测P3.0和P3.1的状态来实现跳转,这样就可以对于不同的K0K1状态来实现不同流水灯方式调用。在设置流水灯的的方式时,

可以采用累加器的移动来实现,也可以用查表发来实现。在发光二极管的显示

是还要采用延时程序设计来实现,这样才可以避免因为时间太短而观察不到流

水灯现象。实验中可以看到四种流水灯方式的选择是正确的,因此,程序的设

计也是正确的。

七、实验总结

通过实验基本上掌握了单片机的输入输出使用方法,在单片机中有四组并行输入输出口,都可以作为一般的输入输出口来用,程序中用MOV 指令可以实现输入输出。

通过实验还学会了流水灯的实现方法和实现延时的程序编写方法。这为下面的实验做好了准备。