硬件实验一 IO控制实验.docx
- 文档编号:3753104
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:15
- 大小:201.87KB
硬件实验一 IO控制实验.docx
《硬件实验一 IO控制实验.docx》由会员分享,可在线阅读,更多相关《硬件实验一 IO控制实验.docx(15页珍藏版)》请在冰豆网上搜索。
硬件实验一IO控制实验
硬件实验一I/O控制实验
1.实验目的
1掌握基本IO输入输出操作指令;
2熟练运用keil环境对硬件接口进行调试。
2.预习要求
1理解51单片机IO的输入、输出控制方式;理解P0、P1、P2、P3口做为普通的IO口有何区别。
2理解实现软件延时程序设计的延时时间估算;
3认真预习本节实验内容,设计出器件之间的实验连接线,自行编写程序,填写实验报告。
3.实验设备
计算机1台;
ZDGDTH-1型80C51实验开发系统1套;
2号导线4条;
8P数据线1条。
4.基础型实验内容
18位逻辑电平显示的接口电路设计如图1-1所示,用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。
用8P数据线将D2区80C51/C8051F020MCU模块的JD1(P1口)与A5区8位逻辑电平显示模块JD1A5相连。
在Keil环境运行该程序,观察发光二极管显示情况。
图1-18位八位逻辑电平显示接口电路
ORG0
Loop:
mova,#0FEh
movr2,#8
Output:
movP1,a
rla
AcallDelay
djnzr2,Output
LjmpLoop
Delay:
movr6,#0;延时程序
movr7,#0
DelayLoop:
djnzr6,DelayLoop
djnzr7,DelayLoop
ret
end
实验现象及分析:
通过该程序实现了发光二极管从右到左轮流循环点亮。
程序中,首先对A附初值,点亮一盏灯,然后左移实现循环点亮,在该过程中需要调用延时程序从而实现延时,一共8个发光二极管当依次点亮后进行循环。
28位拨动开关的接口电路设计如图1-2所示,假设采用P1口控制LED显示,P2口接收拨码开关的输入值,用8P数据线将D2区80C51/C8051F020MCU模块的JD1(P1口)、JD1(P2口)分别与A5区八位逻辑电平显示模块JD1A5、C6区8位拨动开关模块JD1C6相连。
在Keil环境运行该程序,观察实验结果。
图1-2拨码开关接口电路
ORG0000H
LL:
MOVP2,#0FFH
NOP
MOVA,P2
NOP
MOVP1,A
SJMPLL
END
实验现象及分析:
该实验观察到通过C6区的K0-K7开关可以控制A5区的L0-L7发光二极管的亮灭。
当开关向上拨时发光二极管点亮,而开关向下拨时发光二极管灭。
程序中,首先将P2都设置为1,然后将P2口赋给A,再将A赋给P1,从而实现了用P2控制P1的功能。
3如图1-3所示,假设采用P1.0口控制外部LED,拨动开关控制外部中断,用二号导线将D2区80C51/C8051F020MCU模块的P1.0、P3.2口分别与A5区八位逻辑电平显示模块的L0、C8区单次脉冲输出相连。
并在Keil环境运行程序,观察实验现象。
图1-3外部中断及LED显示电路
流程图为:
源程序:
ORG0000H
LJMPMAIN
ORG0003H
LJMPINTERRUPT
ORG0030H
MAIN:
CLRP1.0
MOVTCON,#01H
MOVIE,#81H
SJMP$
INTERRUPT:
PUSHPSW;保护现场
CPLP1.0
POPPSW;恢复现场
RETI
END
实验现象以及分析:
在该实验中可以观察到现象当按一次按钮就使其闪烁一次。
程序中,主程序实现初始状态的设置、中断控制寄存器的设置、中断允许以及等待中断,首先清零,然后选择下降沿方式,最后允许外部中断;子程序实现保护现场、状态位取反以及输出、恢复现场、中断返回。
4在上述步骤中,如果改变中断的触发方式为电平触发方式,试改动程序,并在Keil环境运行程序,观察实验现象,说明实验结果。
ORG0000H
LJMPMAIN
ORG0003H
LJMPINTERRUPT
ORG0030H
MAIN:
CLRP1.0
MOVTCON,#00H
MOVIE,#81H
SJMP$
INTERRUPT:
PUSHPSW;保护现场
CPLP1.0
POPPSW;恢复现场
RETI
END
实验现象以及分析:
在该实验中可以看到按一次按钮闪烁数次。
程序中只要将TCON设置为00H,就可以改变为电平触发方式。
5关于双色LED
双色发光二极管,即在一个LED发光二极管中是由二个单独的PN结构成,可通过控制达到简单的“彩色”显示效果。
Ø当发红光的PN结被点亮,发绿光PN结不点亮时,发光二极管发出的光显示为红色;
Ø当发红光的PN结不点亮,发绿光的PN结被点亮时,发光二极管发出的光呈绿色;
Ø当发红光和发绿光的PN结同时被点亮时,发光二极管发出的光呈橙色;
Ø当控制双色LED红、绿两个PN结流过不同比例的电流时,可以发出粉红、淡绿、淡黄、黄色等不同彩色来。
双色LED连接电路
5.设计型实验
1画出流程并设计程序实现8位逻辑电平显示模块的奇偶位的亮灭闪烁显示,闪烁间隔为1S。
设计思路:
首先将a附初值,使其奇位显示(或偶位),然后调用延时程序实现1s延时,使其循环从而实现该功能。
………………………………………………………………………………………………
ORG000H
LOOP:
MOVA,#55H
MOVR2,#8
OUTPUT:
MOVP1,A
RLA
ACALLDELX
DJNZR2,OUTPUT
LJMPLOOP
DELX:
MOVR5,#20
DEL:
MOVR7,#200
DEL1:
MOVR6,#123
NOP
DEL2:
DJNZR6,DEL2;2*123=246ms
DJNZR7,DEL1;(246+1+1+2)*200+1+2=50.003ms
DJNZR5,DEL;50.003*20+1+2=1003.06
RET
END
………………………………………………………………………………………………
实验现象:
通过该程序的运行,实现了8位逻辑电平显示模块的奇偶位亮灭闪烁显示。
2设计硬件连接图,画出流程并设计程序实现当拨码开关K0往上拨时,实现设计型实验内容步骤①,否则LED全灭;当开关K1往上拨时,实现设计型实验内容步骤②,否则LED全灭;当K0、K1同时往上拨的时候,LED全亮。
设计思路及流程:
为实现通过k0k1控制led灯的亮灭,需要将其编码,分成四种情况。
而每种情况假定为零时灭,为1时亮。
可以将P2口传输到a,通过检测a的第零位和第一位的状态从而判断应该是何种情况。
该实验的硬件连接和例题2相同,即用8p数据项将d2区的jd1(p1)/jd2(p2)分别于a5区八位逻辑电平显示模块jd1a5、c6区8位拨动开关模块jd1c6相连。
(该题流程如上所述,具体不再画出)
…………………………………………………………………………………………………
ORG0000H
MAIN:
MOVP2,#0FFH;初始设置
NOP
MOVA,P2;将p2的状态传入A
JBACC.0,zhuang1;检查k0状态,如果K0=1则转向zhuang1
JBACC.1,zhuang2;当k0=0时,检查K1状态,如果K1=1则转向zhuang2
LJMPtai00;否则,转向tai00实现全灭
zhuang1:
JBACC.1,tai11;检查k1状态,如果k1=1,则转向tai11,实现全亮
ACALLtai10;如果k0向上拨而k1向下拨,则实现内容步骤1
LJMPMAIN
tai11:
MOVP1,#0FFH;如果k0k1同时向上拨,则使LED全亮
LJMPMAIN
zhuang2:
ACALLtai01;如果k1向上拨而k0向下拨,则实现0.5s延时
LJMPMAIN
tai00:
MOVP1,#00H;如果k0k1同时向下拨,则使LED全灭
LJMPMAIN
tai10:
MOVA,#55H;实现内容步骤1的程序
LOOP1:
MOVP1,A
RLA
ACALLDELAY1
MOVR7,A
MOVA,P2
JBACC.1,tai11
JNBACC.0,tai00
MOVA,R7
LJMPLOOP1
DELAY1:
MOVR7,#32H;1s延时子程序
DELAY11:
MOVR6,#64H
DELAY12:
MOVR5,#64H
DELAYLOOP1:
DJNZR5,DELAYLOOP1
DJNZR6,DELAY12
DJNZR7,DELAY11
RET
tai01:
MOVA,#55H;实现内容步骤2的程序
LOOP2:
MOVP1,A
RLA
ACALLDELAY2
MOVR7,A
MOVA,P2
JBACC.0,tai11
JNBACC.1,tai00
MOVA,R7
LJMPLOOP2
DELAY2:
MOVR7,#19H;0.5s延时子程序
DELAY21:
MOVR6,#64H
DELAY22:
MOVR5,#64H
DELAYLOOP2:
DJNZR5,DELAYLOOP2
DJNZR6,DELAY22
DJNZR7,DELAY21
RET
END
…………………………………………………………………………………………………
实验现象:
通过该程序的运行,可以通过k0k1来控制就位亮灭闪烁:
当当拨码开关K0往上拨时,实现设计型实验内容步骤①,否则LED全灭;当开关K1往上拨时,实现设计型实验内容步骤②,否则LED全灭;当K0、K1同时往上拨的时候,LED全亮。
3累计INT0按键的中断次数,保存到内部RAM的30H单元。
设计思路:
仿照例题3,但需要在每次中断时使计数器加一从而实现累计中断次数的功能。
硬件连接:
用二号导线将D2区80C51/C8051F020MCU模块的P1.0、P3.2口分别与A5区八位逻辑电平显示模块的L0、C8区单次脉冲输出相连。
…………………………………………………………………………………………………
ORG0000H
LJMPMAIN
ORG0003H
LJMPINTERRUPT
ORG0030H
MAIN:
MOVA,30H
CLRA
CLRP1.0
MOVTCON,#01H
MOVIE,#81H
MOV30H,A
SJMP$
INTERRUPT:
PUSHPSW
CPLP1.0
INCA
MOV30H,A
POPPSW
RETI
END
…………………………………………………………………………………………………
实验现象:
首先将程序运行,然后在硬件上按键数次,然后再按reset键,可以在软件上观察到30h单元的数据即为按键次数。
6.综合型实验
1交通灯控制程序设计。
要求:
◆东西向亮红灯时,南北向亮绿灯,时间为5s;
◆两个方向均为黄灯亮2s;
◆红绿灯显示交换方向;
◆两个方向均为黄灯亮2s;如此循环反复。
设计思路:
假设LED灯依次代表东南西北方向,则可以通过循环还不断实现交通灯的交替变化;而循环内部分为4个大步骤分别如上题意所示,而延时可以通过调用子程序实现。
…………………………………………………………………………………………………
ORG0000H
MOVA,#5AH;假设灯的设置为东南西北顺序,设定其初始状态
LOOP:
MOVP1,A;输出红绿信号
ACALLDEL1;调用延时5s
MOVP1,#0FFH;输出黄灯信号
ACALLDEL2;调用延时2s
CPLA;取反
MOVP1,#0FFH;输出黄灯信号
ACALLDEL2;延时2s
LJMPLOOP
DEL1:
MOVR7,#32H;延时5s子程序
DEL11:
MOVR6,#0C8H
DEL12:
MOVR5,#0FAH
DELAYLOOP1:
DJNZR5,DELAYLOOP1
DJNZR6,DEL12
DJNZR7,DEL11
RET
DEL2:
MOVR7,#32H;延时2s子程序
DEL21:
MOVR6,#64H
DEL22:
MOVR5,#0C8H
DELAYLOOP2:
DJNZR5,DELAYLOOP2
DJNZR6,DEL22
DJNZR7,DEL21
RET
END
………………………………………………………………………………………………
实验现象:
该程序实现了题目中的要求,即循环显示
东西向亮红灯时,南北向亮绿灯,时间为5s;
两个方向均为黄灯亮2s;
红绿灯显示交换方向;
两个方向均为黄灯亮2s;
2采用外部中断的电平触发方式,编写并运行程序,观察运行结果。
记录一次按键动作,进入中断的次数。
实验心得:
1.第一次做微机原理的硬件实验,所以对于软硬件的连接并不是很熟悉,只能通过模仿例题中的连接而进行。
有必要对于硬件的连接进行总结:
1对于发光二极管的控制,可以在程序中运用MOVP1,A,使p1作为输入口,将JD1(P1)与A5区8位逻辑电平显示模块JD1A5相连。
2对于开关电路的控制,一般要用到P1、P2两个接口,一个作为输入,一个作为输出。
C6区的8位波动开关模块JD1C6需要与入口相接。
3对于单次脉冲,需要用到c8区,而如果想要通过按键控制,则需要与P3.2口相连。
2.在实验过程中,对于分支结构要求较多,需要我们通过对不同的选择进行不同的程序,因此编程时需要较多的运用JB、JNB等指令。
3.另一个较为多用的是初始值的确定,主要在延时程序中。
而延时程序有一定的时间限制,如果想要较长时间的延时则需要多个程序套用或者是软硬件结合。
而该实验中组要还是运用了多程序套用的方式进行延时。
4.对于P3口各位的功能总结如下:
口线
第二功能
名称及作用
P3.0
RXD
串行口输入信号
P3.1
TXD
串行口输出信号
P3.2
INT0
外部中断0请求信号
P3.3
INT1
外部中断1请求信号
P3.4
T0
定时计数器0外部输入
P3.5
T1
定时计数器1外部输入
P3.6
WR
片外数据存储器写信号
P3.7
RD
片外数据存储器读信号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硬件实验一 IO控制实验 硬件 实验 IO 控制