实验二 I-O口输入、输出实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

姓名学号

时间地点

实验题目I/O口输入、输出实验

一、实验目的

1. 学习I/O口的使用方法。

2. 学习延时子程序、查表程序的编写和使用。

二、实验仪器和设备

PC机、WA VE软件、仿真器+仿真头、实验板、电源等。

三、实验说明

本实验1通过单片机的I/O口控制LED的亮灭,从而观察I/O口的输出。实验2通过单片机的I/O口接受按键动作信息,然后通过LED和数码管指示。通过本实验学生可以掌握单片机I/O口输入输出的控制方法,同时也可以掌握单片机延时子程序、查表程序的编写和调试方法。要求预先编写好程序并通过伟福仿真软件调试。

四、实验内容

1、P0口做输出口,接八只LED,编写程序,使LED循环点亮,间隔0.5秒。

2、P1.0--P1.7作输入口接拨动开关S0--S7;P0.0--P0.7作输出口,接发光二极管L1—L8,编写程序读取开关状态,将此状态在对应的发光二极管上显示出来,同时将开关编号(0—7)显示在LED数码管上。编程时应注意P1作为输入口时应先置1,才能正确读入值。

五、实验电路连线

P0.0 ---- LED0 P1.0 ----- S0

P0.1 ---- LED1 P1.1 ----- S1

P0.2 ---- LED2 P1.2 ----- S2

P0.3 ---- LED3 P1.3 ------ S3

P0.4 ---- LED4 P1.4 ------ S4

P0.5 ---- LED5 P1.5 ------ S5

P0.6 ---- LED6 P1.6 ------ S7

P0.7 ---- LED7 P1.7 ------ S8

实验1:P0口循环点灯实验2:P1、P0口输入输出

a b c

d

e

f g

h(dp)

a b c d e f g h(dp)

P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7

实验2: LED 数码管各段与I/O 的连接

六、程序框图及程序

P0口循环点灯

ORG 0000H

;设定程序汇编起始地址 MOV A,#07FH ;设置初始值01111111 LP: MOV P0,A ;点亮LED0

RR A ;将A 里面的值循环右移一位 LCALL DELAY ;调用延时子程序 LCALL DELAY SJMP LP ;循环点亮LED 灯

DELAY: MOV R2,#0FAH ;0.25S 的延时程序 L1: MOV R3,#0FAH L2: DJNZ R3,L2 ;2*250=500us

DJNZ R2,L1 ;500*250*2=250000us RET ;返回主程序

P1口输入/输出

ORG 0000 ;设定起始地址

MOV P1,#0FFH ;P1口置1

LOOP: MOV A,P1 ;读P1口

CJNE A,0FFH,LED ;查询是否有按键按下

SJMP LOOP ;等待

LED: MOV P0, A ;有键按下,将值读入P0

ACALL DELAY ;调用延时子程序

MOV R5 ,#00H ;置计数初值=0

LOOP1: RRC A ;输入右移1位

JNC LOOP2 ;若Cy=0,则数码显示

INC R5 ;Cy=1,则计数加1

SJMP LOOP1 ;跳回继续移位

LOOP2: MOV DPTR,#TAB ;所查表的首地址赋给DPTR

MOV A,R5 ;计数值做偏移量

MOVC A,@A+DPTR

MOV P2,A ;显示相应按键值

SJMP LOOP

TAB:DB 60H,0DAH,0F2H,66H ;

DB 0B6H,0BEH,0E0H,0FEH ;

DELAY: MOV R2,#0FAH ;0.25S的延时程序

L1: MOV R3,#0FAH

L2: DJNZ R3,L2 ;2*250=500us

DJNZ R2,L1 ;500*250*2=250000us

RET ;返回主程序

七、思考题

1、实验1欲改变LED循环的方向程序应如何修改?循环的时间间隔由什么决定?写出间隔时间为1秒的延时程序并说明计算方法。

答:改变LED循环的方向仅需要将(RR A)改成(RL A)即可。

循环的时间间隔由单条语句执行的时间和执行次数共同决定。

DELAY: ;1S的延时程序

DEL: MOV R7,#20

DEL1: MOV R6,#246

DEL2: MOV R5,#100

DEL3:DJNZ R5,DEL3 ;2*100=200μS

DJNZ R6,DEL2 ;(200+1+2)*246=49938μS

DJNZ R7,DEL1 ;(49938+1+2)*20=998820us

2、51单片机I/O口的输入/输出逻辑电平是多少?其负载能力有多大?若用I/O 口控制一个继电器(工作电压12V,工作电流100mA)电路该如何设计?

答:51单片机I/O口的输入/输出逻辑电平是5V。若要用I/O口控制一个继电器,可串接一个100欧的降压电阻实现驱动。

相关文档
最新文档