logo资料库

I/O口输入、输出实验.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
单片机实验报告 姓名 张晓波 学号 1115104059 时间 11 月 14 地点 机电大楼 实验题目 实验二 I/O 口输入、输出实验 评 阅 一、实验目的 1. 学习 I/O 口的使用方法。 2. 学习延时子程序、查表程序的编写和使用。 二、实验主要仪器和环境 PC 机、WAVE 软件、仿真器+仿真头、实验板、电源等。 三、实验说明 本实验第一部分通过单片机的 I/O 口控制 LED 的亮灭,从而观察 I/O 口的输出。实验第二部 分通过单片机的 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 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 ---- LED0 ---- LED1 ---- LED2 ---- LED3 ---- LED4 ---- LED5 ---- LED6 ---- LED7 实验 1:P0 口循环点灯 P1.0 P1.1 P1.2 P1.3 P1.0 P1.0 P1.0 P1.0 ----- S1 ----- S2 ----- S3 ------ S4 ------ S5 ------ S6 ------ S7 ------ S8 实验 2:P1、P0 口输入输出
a g d b c f e a b c d e f g h(dp) P2.0 P2.1 P2.2 P2.3P2.4 P2.5P2.6 P2.7 h(dp) 实验 2: LED 数码管各段与 I/O 的连接 六、实验程序流程框图、实验程序 第一部分程序: ;调用延时子程序 ;将 A 里面的 00000011 左移一位成 00000110 ;循环点亮 LED 灯 ;0.5S 的延时程序 ;设定程序汇编起始地址 ;设置初始值 00000011 ORG 0000H MOV A ,#03H LOOP: MOV P0,A ;点亮 LED0 和 LED1 ACALL DELAY RL A SJMP LOOP DELAY: MOV DEL: DEL1:MOV DEL2:MOV DEL3:DJNZ DJNZ DJNZ R7,DEL1 ;(49938+1+2)*10=499410us RET R7,#10 R6,#246 R5,#100 R5,DEL3 ;2*100=200μS R6,DEL2 ;(200+1+2)*246=49938μS ;返回主程序 开始 设置初始值 数据输出 左移一位 延时
第二部分程序: ORG 0000 SJMP MAIN MAIN: MOV P1,#0FFH SEARCH:MOV A,P1 ;设定起始地址 ;P1 口置 1 ;读 P1 口 LED: CJNE A,0FFH,LED ;查询是否有按键按下 SJMP SEARCH MOV P0, A ACALL DELAY MOV R5 ,#00H ;等待 ;有键按下,将值读入 P0 ;调用延时子程序 ;置计数初值=0 ;输入右移 1 位 ;若 Cy=1,则数码显示 ;Cy=1,则计数加 1 ;跳回继续移位 SHIFT: RRC A JC LOOKFOR INC R5 SJMP SHIFT LOOKFOR:MOV DPTR,#TAB ;所查表的首地址赋给 DPTR ;计数值做偏移量 ;显示相应按键值 MOV A,R5 MOVC A,@A+DPTR MOV P2,A SJMP SEARCH 06H,5bH,4fH,66H ; 6dH,7dH,07H,7fH ; ;0.5S 的延时程序 R7,#10 R6,#246 R5,#100 R5,DEL3 R6,DEL2 R7,DEL1 TAB:DB DB DELAY: DEL: MOV DEL1: MOV DEL2: MOV DEL3:DJNZ DJNZ DJNZ RET SJMP $ END Y Y 开始 P1 口置 1 读入 P1 口值 P1=0FFH? N 将读入的值输出到 P0 置计数初值=0 输入值右移 1 位到 Cy Cy=0? N 计数值+1 以计数值查段码表 段码输出到 P2
七、 实验及程序的分析和讨论(结合思考题) 1、实验 1 欲改变 LED 循环的方向程序应如何修改?循环的时间间隔由什么决定?写出间隔时 间为 1 秒的延时程序并说明计算方法。 答:要改变 LED 循环的方向,只需将程序中的“RL A”换成指令“RR A” 循环的时间间隔由延时子程序决定 间隔时间为 1 秒的延时程序如下: DELAY: DEL: MOV DEL1: MOV DEL2: MOV DEL3: DJNZ DEL4: DJNZ DJNZ RET R7,#20 R6,#246 R5,#100 R5,DEL3 ;2*100=200μS R6,DEL2 ;(200+1+2)*246=49938μS R7,DEL1 ;(49938+1+2)*20=998820 ;指令执行时间 1μS 计算方法是:998820+1+1=99822us 2、结合实验板线路,说明如何调整 LED 的亮度。 答:可以通过改变限流电阻的大小或适当改变供电直流电压来调整 LED 的亮度。 3、MCS—51 单片机 I/O 口的输入/输出逻辑电平是多少?其负载能力有多大?若用 I/O 口控制 一个继电器(工作电压 12V,工作电流 100mA)电路该如何设计? 答:MCS—51 单片机 I/O 口的输入逻辑低电平是-0.5V—0.8V;输入高电平是 2.0V—(VCC+0.5V) 输出低电平是 0.45V;输出高电平是 2.4V。P0 口的驱动能力较大,每位可驱动 8 个 LSTTL 输 入,即当其输出高电平时可提供 400μA 的电流;当其输出低电平时则可提供 3.2mA 的灌电流, 如低电平允许提高,灌电流可相应加大。P1、P2、P3 口的每一位只能驱动 4 个 LSTTL,即可 提供的电流只有 P0 口的一半。 如下图所示即为 I/O 口控制继电器的电路图 8051 P1.0 7407 R1 12V K 9013 计算方法如下:由于工作电流为 100mA 而 9013 放大倍数大于 50 所以通过 R1 的电流约 2mA。 则 R1 的计算方法如下:输出最大为 5V,R1=(5-0.6)/2=2.2 千欧姆。
九、程序测试报告: 经测试实验一可实现 LED 灯循环点亮; 实验二按键后,LED 可正确显示,并且数码管可正确显示按键编号。比如当按下第四个键 时,LED3 灯亮,其余灯均熄灭,数码管显示 4。 十、体会 一开始时程序写成 SHIFT: RRC A JNC LOOKFOR INC R5 SJMP SHIFT 结果为低电平触发,测试时关闭开关时灯灭, 其他灯都亮,后改为 SHIFT: RRC A 为高电平触发,符合实验要求,打开开关后,对应 JC LOOKFOR INC R5 SJMP SHIFT 的灯亮,其他灯灭,数码管也显示对应的编号。
分享到:
收藏