贵州大学实验报告纸
实验一I/O口输入、输出实验
一、实验目的
掌握单片机P1口、P3口的使用方法。
二、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
三、实验内容
以P1口为输出口,接八位逻辑电平显示,LED显示跑马灯效果。
以P3口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。
四、实验说明和电路原理图
P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。
因为内部上拉电阻阻值是20K~40K,故不会对外部输入产生影响。
若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。
本实验需要用到CPU模块(F3区)和八位逻辑电平输出模块(E4区)和八位逻辑电平显示模块(B5区),八位逻辑电平输出电路原理图参见图1-1。
八位逻辑电平显示电路原理图参见图1-2。
图1-2 八位逻辑电平显示
图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 指令可以实现输入输出。
通过实验还学会了流水灯的实现方法和实现延时的程序编写方法。
这为下面的实验做好了准备。