实验一 IO开关量输入输出实验

合集下载

硬件实验一 I_O控制实验

硬件实验一 I_O控制实验

硬件实验一I/O控制实验1.实验目的①掌握基本IO输入输出操作指令;②熟练运用keil环境对硬件接口进行调试。

2.预习要求①理解51单片机IO的输入、输出控制方式;理解P0、P1、P2、P3口做为普通的IO口有何区别。

②理解实现软件延时程序设计的延时时间估算;③认真预习本节实验内容,设计出器件之间的实验连接线,自行编写程序,填写实验报告。

3.实验设备计算机1台;ZDGDTH-1型80C51实验开发系统1套;2号导线4条;8P数据线1条。

4.基础型实验内容①8位逻辑电平显示的接口电路设计如图1-1所示,用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。

用8P数据线将D2区80C51/C8051F020MCU模块的 JD1(P1口)与A5区8位逻辑电平显示模块JD1A5相连。

在Keil环境运行该程序,观察发光二极管显示情况。

图1-1 8位八位逻辑电平显示接口电路ORG 0LOOP: MOV A, #0FEHMOV R2,#8OUTPUT: MOV P1,ARL AACALL DELAYDJNZ R2,OUTPUTLJMP LOOPDELAY: MOV R6,#0 ;延时程序MOV R7,#0DELAYLOOP: DJNZ R6,DELAYLOOPDJNZ R7,DELAYLOOPRETEND实验现象及分析:通过该程序实现了发光二极管从右到左轮流循环点亮。

程序中,首先对A附初值,点亮一盏灯,然后左移实现循环点亮,在该过程中需要调用延时程序从而实现延时,一共8个发光二极管当依次点亮后进行循环。

②8位拨动开关的接口电路设计如图1-2所示,假设采用P1口控制LED显示,P2口接收拨码开关的输入值,用8P数据线将D2区80C51/C8051F020MCU模块的 JD1(P1口)、JD1(P2口)分别与A5区八位逻辑电平显示模块JD1A5、C6区8位拨动开关模块JD1 C6相连。

在Keil环境运行该程序,观察实验结果。

实验一 简单I0口扩展实验.

实验一 简单I0口扩展实验.

实验一简单I/0口扩展实验一、实验目的利用74LS244和74IS273扩展I/0口。

二、实验内容1、熟悉74LS273,74LS244的应用接口方法。

2、掌握用锁存器、三态门扩展简单并行输入、输出口的方法。

三、实验原理图四、实验步骤1、连线:将74LS244(IC25)的输入SI0~SI7分别与逻辑电平开关电路的KI~K8相连,从I/0地址片选信号CS0~ CS7\中任选一个与74LS244的片选信号(CSU10\)相连(例如CS0\)。

将74LS273(IC24)的输出S00~S07分别与发光二极管电路的Ll~L8相连。

从I/O地址片选信号CS0\~CS7\中任选一个与74LS273的片选信号(CSU8\)相连(如CS1\)。

2、编辑程序,单步运行,调试程序。

3、调试通过后,全速运行,观察实验结果。

4、编写实验报告。

五、实验说明用逻辑电平开关作为74LS244(IC25)的输入,用发光二极管作为74L S273(IC24)的输出编程序,使得逻辑电平开关的输入状态从发光二极管上显示出来。

逻辑电平开关拨上时为5V,拨下时为0V。

发光二极管输入“1”为亮、“0”为灭。

从74LS244读入的数据应求反后从输出口输出。

在8086CPU中有四个16位通用数字寄存器,其中仅AX(AH,AL)有输入输出功能。

本实验通过输入语句(IN),将开关运输入存到AL中,再通过输出语句(OUT)将AL值输出到发光二极管,从而实现开关控制发光二极管。

当开关量换作其他形式控制输入,发光二极管换作其他形式控制对象,输入数据后对输入最作一定的运算处理再输出时,就实现了计算机控制。

同时这些输入输出点均为I /O扩展口,当输入和输出的点位较多时,这种扩展十分必要。

六、实验程序框图(实验程序名T1.ASM)七、实验程序1 assume cs:code2 0000 code segment public3 org 100h4 0100 BA 04A0 start: mov dx, 04a0h ;74LS244地址5 0103 EC in al, dx ;读输入开关量6 0104 BA 04B0 mov dx, 04b0h ;74LS273地址7 0107 EE out dx, al ;写发光二极管8 0108 EB F6 jmp srart9 010A code ends10 end start实验二 8255并行口实验一、实验目的利用8255A实现并行口实验。

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

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

贵州大学实验报告纸系别电科班级电科091班姓名学号课程名称单片机成绩评定教师签名实验时间2012年 5 月5 日实验一 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.0ORG 0000HLJMP STARTORG 0100HSTART: Output1: mov a, #0fEH mov r5, #8 loop1:CLR Cmov C,DIR JC Output2 mov P1, arl aAcall Delay djnz r5, loop1 Sjmp Output1 Output2: mov a, #07fH mov r5, #8 loop2:CLR Cmov C,DIR JNC Output1 mov P1, arr aAcall Delay djnz r5,loop2 Sjmp Output2 Delay:mov r6,#0mov r7,#0DelayLoop2:NOPNOPdjnz r7,DelayLoop2djnz r6,DelayLoop1retend2、修改后的程序为:ORG 0000HLJMP STARTORG 0100HSTART:Output1:mov a, #0fEHmov R5, #8loop1:MOV R2,P3CJNE R2,#0FFH,Output2mov P1, arl aAcall Delaydjnz R5, loop1Sjmp Output1Output2:mov R5, #8loop2:MOV R2,P3CJNE R2,#0FEH,Output3 mov P1, arr aAcall Delaydjnz R5,loop2Sjmp Output2Output3:mov a, #0FFHmov R5, #9loop3:MOV R2,P3CJNE R2,#0FDH,Output4 CLR Cmov P1, aRRC aAcall Delaydjnz R5, loop3mov R5, #8loop4:SETB CRLC AMOV P1,AAcall Delaydjnz R5, loop4Sjmp Output3Output4:MOV R2,P3CJNE R2,#0FCH,Output1MOV R3,#00HMOV R4,#08HMOV DPTR, #tab ; 表首址loop5:MOV A,R3MOVC A, @A+DPTR ; 查表读取第一个字节MOV P1,AINC R3ACALL DELAYDJNZ R4,loop5SJMP Output4Delay:mov r6,#0 ;延时程序DelayLoop1:mov r7,#0DelayLoop2:NOPNOPdjnz r7,DelayLoop2djnz r6,DelayLoop1rettab:DB 0FFH,0E7H,0C3H,81H,00H,81H,0C3H,0E7H End㈡系统各跳线器处在初始设置状态。

单片机IO开关输入输出实验报告

单片机IO开关输入输出实验报告

单片机实验报告
学院: 物电学院
专业: 电子科技与技术
班级: 2013级2班
学号: 201310530229
姓名: xxx
指导老师: xx
实验一 IO开关输入输出实验
1.实验目的
目的:学习单片机读取IO引脚状态的的方法。

2.试验环境及设备
EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。

3.实验内容
ORG 0000H
LJMP MAIN
ORG 30H
MAIN: MOV P0,#0FFH
MOV A ,P0
SWAP A
MOV P0,A
NOP
SJMP MAIN
DEALY:MOV R7,#20H
D1:MOV R6,#0F0H
DJNZ R6,0
DJNZ R7,D1
RET
END
4.实验结果:
用导线将试验箱上的IO接口(I0~I8)与拨码开关输出端(K1~K8)相连,通过拨码开关来控制发光二极管。

运行程序,并使程序处于不断运行状态,开关都打开是,二极管全发光,关闭一些开关后,I0~I3上的开关开对应K4~K7的二极管灯亮,I4~I7上相对应的开光开对应K4~K7的二极管亮。

5.实验结论
在运行程序后,单片机实现了用输入与输出之间高地位的转换。

实验一简单IO口扩展实验

实验一简单IO口扩展实验
六、实验提示
8255a是比较常用的一种并行接口芯片,其特点在许多教科书中均有介绍。8255a有三个8位的输入输出端口,通常将a端口作为输入用,b端口作为输出用,c端口作为辅助控制用,本实验也是如此。实验中,8255a工作于基本输入输出方式(方式0)
七、实验结果
程序全速运行后,逻辑电平开关的状态改变应能在led上显示出来。例如:
四、实验原理介绍
本实验用到两部分电路:开关量输入输出电路和8255可编程并口电路
五、实验步骤
1.实验接线
cs0 cs8255;pa0~pa7平推开关的输出k1~k8;pb0~pb7发光二极管的输入led1~led8
2.编程并全速或单步运行
3.全速运行时拨动开关,观察发光二极管的变化。当开关某位置于l时,对应的发光二极管点亮,置于h时熄灭。
四、实验原理介绍
本试验用到两部分电路:脉冲产生电路、8253定时器/计数器电路
五、实验步骤
1.试验连线
CS0<->CS8253OUT0<->8253CLK2OUT2<->LED1CLK3<->8253CLK0,
2.编程调试程序
3.全速运行,观察试验结果
六、实验提示
8253是计算机系统中经常使用的可编程定时器/计数器,其内部有三个相互独立的计数器,分别称为T0,T1,T2。8253有多种工作方式,其中方式3为方波方式。当计数器设好初值后,计数器递减计数,在计数值的前一半输出高电平,后一半输出地电平。试验中,T0、T1的时钟由CLK3提供,其频率为750KHz。程序中,T0的初值设为927CH(37500十进制),则OUT0输出的方波周期为(37500*1/750000=0.05s)。T2采用OUT0的输出为时钟,则在T2中设置初值为n时,则OUT2输出方波周期为n*0.05s。n的最大值为FFFFH,所以OUT2输出方波最大周期为3276.75s(=54.6分钟)。可见,采用计数器叠加使用后,输出周期范围可以大幅度提高,这在实际控制中是非常有用的。

i0口输入输出实验报告

i0口输入输出实验报告

竭诚为您提供优质文档/双击可除i0口输入输出实验报告篇一:实验二I-o口输入、输出实验报告单片机实验报告2姓名学号时间地点实验题目I/o口输入、输出实验一、实验目的1.学习I/o口的使用方法。

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

二、实验仪器和设备pc机、wAVe软件、仿真器+仿真头、实验板、电源等。

三、实验说明本实验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----LeD0p1.0-----s0p0.1----LeD1p1.1-----s1p 0.2----LeD2p1.2-----s2p0.3----LeD3p1.3------s3p 0.4----LeD4p1.4------s4p0.5----LeD5p1.5------s5 p0.6----LeD6p1.6------s7p0.7----LeD7p1.7------s8 实验1:p0口循环点灯实验2:p1、p0口输入输出agfbabcdefgh(dp)eh(dp)实验2:LeD数码管各段与I/o的连接dcp2.0p2.1p2.2p2.3p2.4p2.5p2.6p2.7六、程序框图及程序p0口循环点灯oRg0000hmoVA,#07FhLp:moVp0,ARRALcALLDeLAYLcALLDeLAYsJmpLpDeLAY:moVR2,#0FAhL1:moVR3,#0FAhL2:DJnZR3,L2DJnZR2,L 1ReT;设定程序汇编起始地址;设置初始值01111111;点亮LeD0;将A里面的值循环右移一位;调用延时子程序;循环点亮LeD灯;0.25s的延时程序;2*250=500us;500*250*2=250000us;返回主程序p1口输入/输出oRg0000Loop:moVA,p1cJneA,0FFh,LeDsJmpLoopLeD:moVp0, AAcALLDeLAYmoVR5,#00hLoop1:RRcAJncLoop2IncR5sJmpLoo p1Loop2:moVDpTR,#TAbmoVA,R5;设定起始地址;读p1口;查询是否有按键按下;等待;有键按下,将值读入p0;调用延时子程序;置计数初值=0;输入右移1位;若cy=0,则数码显示;cy=1,则计数加1;跳回继续移位;所查表的首地址赋给DpTR;计数值做偏移量moVp1,#0FFh;p1口置1moVcA,@A+DpTRmoVp2,A;显示相应按键值sJmpLoopTAb:Db60h,0DAh,0F2h,66h;Db0b6h,0beh,0e0h,0Feh;DeLAY:moVR2,#0FAhL1:moVR3,#0FAhL2:DJnZR3,L2DJnZR2,L1ReT;0.25s的延时程序;2*250=500us;500*250*2=250000us;返回主程序七、思考题1、实验1欲改变LeD循环的方向程序应如何修改?循环的时间间隔由什么决定?写出间隔时间为1秒的延时程序并说明计算方法。

实验一 开关量输入输出实验

实验一  开关量输入输出实验

实验一开关量输入输出实验
一、实验要求
1.利用ATC89C51单片机的P1口作开关量输出口,连接8个LED发光二极管;
2.在单步模式(debug菜单下的step over,F10)下,循环点亮这8个LED管(流水灯);
3.画出AT89C51实现上述功能的完整电路图,包括单片机电源、复位电路、晶振电路和控制电路。

4.完成全部程序和电路调试工作。

5. 先在proteus下运行程序,有时间再尝试用keil 与proteus联调。

二、实验目的
1.掌握AT89C51单片机的最基本电路的设计;
2.了解单片机I/O端口的使用方法;
三、设计提示
1. 硬件电路图
可参考switch controll.DSN,请删除无关电路。

2. 程序框架
start:
mov r0,0
again:
….. ;从tab表中获取相应数值(请补充相应指令)
mov p1,a
inc r0 ;r0+=1
jmp again
tab: db 01h,02h,04h,08h,10h,20h,40h,80h; 数值表(具体数值可自行修改)
feh,fdh,fbh,f7h,efh,dfh,bfh,7fh
(db是伪指令,定义一个byte的内容单元,上述的语句是定义了包含8个元素的数组,每个元素占据1个byte)。

end
四、主要元件。

实验一IO的实验

实验一IO的实验

昆明理工大学信息工程与自动化学院学生实验报告(2011 —2012 学年第 2 学期)课程名称:嵌入式技术基础与实验开课实验室:信自楼234 2012 年 5 月 10 日年级、专业、班自动化092 学号姓名成绩实验项目名称I/O口的实验指导教师教师评语教师签名:年月日注:报告内容按实验须知中七点要求进行。

一、实验目的1.熟悉MCU的第一个汇编/C程序框架结构。

2.掌握I/O口的编程方法。

3.了解最小系统的测试方法。

4.模仿小灯驱动程序,编写I/O口的开关程序5.了解源程序工程中添加新模块的方法。

二、实验原理及基本技术路线图(方框原理图)AW60 MCU的I/O口有A、B、C、D、E、F、G等7个端口能接收外界开关量信号MCU处理,也能将MCU内部的信号输出给外部设备,显示数据或者控制对象。

I/O口的使用涉及方向寄存器、上拉允许寄存器和数据寄存器。

(1)方向寄存器决定该口的引脚时输入还是输出。

(2)接收或发送信息的缓冲有数据寄存器完成。

(3)接收信息的正确与上拉允许寄存器有关,是否设置寄存器取决于外部电路。

若外部电路有上拉电阻可以不需要,否则MCU内部一定需要设置。

引脚的接线如下图3-1图3-1 I/O口引脚的连接图三、所用仪器、材料(设备名称、型号、规格等)飞思卡尔试验箱四、实验方法、步骤1、资源使用用B口的0号引脚连接小灯,用B口的1号引脚连接开关,开关通过MCU控制小灯,开关向上拨,小灯亮,开关向下拨,小灯暗,放在主循环中,则形成开关随时开,小灯随亮的效果。

2、硬件设计先阅读源程序,查看相应的端口的宏定义,再根据端口号来接线。

3、软件设计(主要的程序流程图)开关驱动程序流程图:4、编程(关键性程序段)用开关控制小灯亮暗主程序:#include "Includes.h" //在此添加全局变量定义void main(void){//1 关总中断DisableInterrupt(); //禁止总中断//2 芯片初始化MCUInit();//3初始化//3.1指示灯初始化Light_Init(Light_Run_PORT,Light_Run,Light_OFF);//3.2开关初始化Key_Init(Key_PORT,Key_Pin);//4 主循环while (1){i f(Get_Key_State(Key_PORT,Key_Pin)==Key_ON){Light_Control(Light_Run_PORT,Light_Run,Light_ON);}elseLight_Control(Light_Run_PORT,Light_Run,Light_OFF);}}2)指示灯驱动程序代码://-------------------------------------------------------------------------*// 文件名: Light.h// 说明: 指示灯驱动程序头文件//-------------------------------------------------------------------------*#ifndef Light_H //防止重复定义#define Light_H//1 头文件#include "GPIO.h" //包含GPIO头文件//2 灯控制宏定义//2.1 灯控制引脚定义#define Light_Run_PORT PORT_B //运行指示灯使用的端口#define Light_Run 7 //运行指示灯使用的引脚//2.2 灯状态宏定义#define Light_OFF 1 //灯亮(对应低电平)#define Light_ON 0 //灯暗(对应高电平)//3 灯控制相关函数声明//-----------------------------------------------------------------------*//函数名: Light_Init *//功能: 初始化指示灯状态* //参数: port:端口名* // name:指定端口引脚号*// state:初始状态,1=高电平,0=低电平*//返回: 无* //说明: 调用GPIO_Init函数* //-----------------------------------------------------------------------*void Light_Init(uint8 port,uint8 name,uint8 state);//-----------------------------------------------------------------------*//函数名: Light_Control *//功能: 控制灯的亮和暗* //参数: port:端口名*// name:指定端口引脚号* // state:状态,1=高电平,0=低电平*//返回: 无* //说明: 调用GPIO_Set函数* //-----------------------------------------------------------------------*void Light_Control(uint8 port,uint8 name,uint8 state);//-----------------------------------------------------------------------*//函数名: Light_Change *//功能: 状态切换:原来"暗",则变"亮";原来"亮",则变"暗" *//参数: port:端口名*// name:指定端口引脚号* //返回: 无* //说明: 调用GPIO_Get、GPIO_Set函数* //-----------------------------------------------------------------------*void Light_Change(uint8 port,uint8 name);#endif3)指示开关驱动程序代码://-------------------------------------------------------------------------*// 文件名: Key.h (指示开关驱动程序头文件) *//-------------------------------------------------------------------------*#ifndef Key_H //防止重复定义#define Key_H//1 头文件#include "GPIO.h" //包含GPIO头文件//2 开关控制//2.1 开关控制引脚定义#define Key_PORT PORT_A //B口#define Key_Pin 7 //引脚//2.2 开关状态宏定义#define Key_ON 0 //开关连通(对应低电平)#define Key_OFF 1 //开关断开(对应高电平)//2.3 开关控制相关函数声明//---------------------------------------------------------------------*//函数名: Key_Init *//功能: 初始化指示开关*//参数: port:端口名; *// name:指定端口引脚号; *//返回: 无*//---------------------------------------------------------------------*void Key_Init(uint8 port,uint8 name);//---------------------------------------------------------------------*//函数名: Get_Key_State *//功能: 获取开关的状态(断开还是连通) *//参数: port:端口名; *// name:指定端口引脚号; *//返回: 无*//---------------------------------------------------------------------*uint8 Get_Key_State(uint8 port,uint8 name);#endif五、实验过程原始记录(数据、图表、计算等)六、实验结果、分析和结论(误差分析与数据处理、成果总结等。

IO口输入、输出实验

IO口输入、输出实验

实验一I/O口输入、输出实验2010.04.20一、实验目的:了解LED二极管的工作原理。

掌握LED二极管亮灭左右移的编程方法。

二、实验原理:八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮。

我们可以运用输出端口指令MOV P1,A或MOV P1,#DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。

表1三、实验电路原理图四、程序框图实验程序:START: MOV ACC,#0FEH ;ACC中先装入LED1亮的数据(二进制的11111110)MOV P1,ACC ;将ACC的数据送P1口MOV R0,#7LOOP1: RL A ;将ACC中的数据左移一位MOV P1,A ;把ACC左移后的数据送p1口显示ACALL DELAY ;调用延时子程序DJNZ R0,LOOP1 ;没有移动够7次继续移动MOV R1,#7LOOP2: RR A ;将ACC中的数据右移一位MOV P1,A ;把ACC右移后的数据送p1口显示ACALL DELAYDJNZ R1,LOOP2AJMP START ;移动完7次后跳到开始重来,以达到循环流动效果;----- 延时子程序 -----DELAY: MOV R2,#255D1: MOV R3,#255DJNZ R3,$DJNZ R2,D1RET ;延时子程序结束,返回到调用处的下一句END ;程序结束实验现象:实验实现了单一灯的左移右移。

开始时P1.0口的LED点亮,然后P1.1→P1.2→P1.3→┅→P1.7的LED依次点亮,实现了右移。

当P1.7的LED点亮后,P1.6→P1.5→P1.4→┅→P1.0口的LED又依次点亮,实现了左移。

然后循环,从而实现灯的循环左右移。

实验结论:通过单片机对P1口赋值,然后利用移位RL和RR指令使相应的LED点亮,可以实现灯的左右移。

单片机实验实验01开关量输入输出控制设计

单片机实验实验01开关量输入输出控制设计

实验一、开关量输入/输出控制设计1、实验目的MCS-51单片机的输入/输出有两种基本方式,直接端口方式与总线方式。

通过本实验可以掌握MCS-51单片机直接端口方式的输入/输出,特别是学会运用MCS-51单片机的位操作功能。

2、实验条件实验系统与设备上位机(PC )+G6W 仿真器+G2010实验平台3、实验模块硬件描述本实验使用开关量发生器与发光二极管组模块。

开关量发生器是一组8位单刀双掷开关,如图 1.1所示,开关上推接Vcc(+5V),下拨接地。

因而可以通过开关设置逻辑“1”与逻辑“0”状态。

对于需要手动设置预置参数值的情况,这是一种比较简单的方式。

开关量的输出插孔分别标示为K7-K0。

发光二极管组的阳极经限流电阻接74LS245的输出,阴极接地,电路见图1.2。

发光二极管由74LS245驱动, 74LS245的输入端分别接至L7-L0插孔。

因此向L7-L0插孔送“1”电平就可以点亮对应的发光二极管。

74LS245是双向的总线驱动芯片,在本电路中其门控G 与方向控制DIR 已设置为单向导通。

74LS245的引脚见图1.3,连接时应注意引脚与LED 位置的关系。

图1.1 开关量发生器图1.2 发光二极管组图1.3 74LS245的引脚图3 、实验内容与要求:实验主要内容:用P1口的8位,以及P3.0-P3.5对开关K0-K7和发光二极管组L0-L7进行检测与控制。

具体要求如下:(1)本实验是第一次实验,要求在实验中熟悉仿真器与实验系统的使用。

(2)设计硬件连接与应用程序,检测K0-K5,将读到的状态输出到L0-L5。

(3)设计硬件连接与应用程序,控制L0-L5按某一方向依次轮流点亮(同一时间只有一盏灯亮),并不断循环。

要求:①由K6控制灯移动的方向,K6 =1左移,K6=0则右移。

用L7反映K6的状态,1亮0灭。

②由K0-K2(3位二进制数)设置8个速度档,以其控制灯的移动速度。

③ K7做总开关,K7=0全部灯灭,K7 =1时按上面的要求正常工作。

实验一IO口输出实验LED流水灯实验

实验一IO口输出实验LED流水灯实验
注意事项:
我公司提供的 ISP 下载器采用 SPI 串行通信方式与单片机的 P15、P16、P17 引脚相连,下 载代码时占用单片机的这三个引脚,实验过程中如果用到这三个引脚时请先下载代码,下载 完成后再连接导线。部分用户在使用过程中若出现下载不了代码,FLASH 校验失败,就是 上述引起的。
实验一 I /O口输出实验—LED流水灯实验
四、 实验说明
1、主要知识点概述:
本实验涉及到三个知识点:单片机最小系统的构成、单片机 I/O 口的使用以及软件延时 程序的编写。 (1)单片机最小系统由单片机芯片、时钟电路以及复位电路构成。 (2)I/O 口的正确使用。 (3)延时子程序的延时计算问题。根据晶振时钟的大小以及指令周期,计算延时时间所 要执行的指令数目。
一、运行 WWISPSetup.exe,安装 ISP 下载软件。 二、将 USB 下载器连接 PC 及目标板(USB 接口端连接到 PC 的 USB 接口,ISP 端连 接到 MCU 模块 ISP 插槽)。在连接 USB 下载器之前,MCU 模块应先接通电源。 三、连接 USB 到 PC 后,将提示“发现新硬件 USBasp”,如下图所示:
一、 实验要求
利用单片机及 8 个发光二极管等器件,构成一个流水灯单片机系统。
二、 实验目的
1、掌握单片机最小系统的构成; 2、掌握 I/O 口的使用及驱动能力的概念; 3、熟悉移位指令和软件延时程序。
三、 实验电路及连线
硬件连接表
MCU 模块
PB-EDU-011
P20~P27
D1~D8
+5V
+5V
GND
GND
注意事项: (1)实验箱上各模块是独立供电,实验时需要用到的模块都要给它提供电源,即+5V 接

开关量输入输出IO实验

开关量输入输出IO实验

TmpVar rmb 1 Light_BC rmb 1
;变量TmpVar,缓冲使用 ;BC口灯的状态
8
*------主程序————————————————
org FlashStartAddr
;程序起始地址
MainInit:
NOP
;初始化——————
SEI
;禁止所有中断
LDHX #$023F TXS
PTC1
PTB0
PTC0
vcc
vcc
红线为学生接线
4
程序功能:
开关PTA7-4分别控制着指示灯PTA3-0 亮暗
开关PTB0\PTC0 其中之一闭合,指示灯 PTB7-1与PTC1交替暗亮; 若两个均未闭合,则指示灯PTB1与PTC1 均不亮; 若两个均闭合,则两个指示灯均亮.
5
程序清单:
程序说明 口地址定义 变量定义 主程序 初始化子程序 复位矢量
*
②开关PTB0、PCT0其中之一闭合指示PTB7-1
*
与PTC1交替暗亮,若两个均未闭合则指示灯
*
PTB1与PTC1均不亮,若两个均闭合则两排
*
指示灯均亮。
*目的:I/O口的基本使用方法
*说明:仅作为基本教学例程
*----------------------------------------------*
;读取A口状态 ;A口7-4输入控制A口3-0输出 ;刚好为A.7-4->A.3-0
;取开关PTB0状态,0-闭合 ;剩下PTB0位 ;放入变量TmpVar
11
NOP
LDA PTC
;取开关PTC0状态,0-闭合
AND #%00000001 ;剩下PTC0位

单片机《输入输出口》实验报告

单片机《输入输出口》实验报告

实验一I/O口输入输出实验一、实验目的1. 掌握单片机的并行I/O口的接口结构、驱动能力特点和应用处理方法;2. 掌握单片机I/O引脚作为输出引脚的使用方法;3. 掌握单片机I/O口配置方法4. 掌握利用单片机I/O口设计单片机应用程序用输入控制输出的方法;5. 掌握单片机控制程序的结构。

二、实验原理及实验内容实验要求:利用单片机并行口做不规则花样流水灯,流水花样不低于16个。

实验原理:1.LED原理图2.STC15的IO口原理P6m0为0时,P6m1为0时,IO口模式为准双向口(传统8051 I/O口模式,弱上拉)灌电流可达20mA,拉电流为270微安,由于制造误差,实际为270~150微安* P6m0为0时,P6m1为1时,为推挽输出(强上拉输出,可达20mA,要加限流电阻)* P6m0为1时,P6m1为0时,(为高阻输出电流既不能流入也不能流出)P6m0为1时,P6m1为1时,为开漏(Open Drain),内部上拉电阻断开。

开漏模式即可读取外部状态也可以对外输出(高低电平)。

按照表格寄存器内容,我们对8个LED1,也就是P6口进行配置,当P6输出低电平时LED被点亮。

所以配置如下:P6M1 &= 0x00;P6M0 &= 0x00; //作为普通IO口,为弱上拉sbit KEY1=P2^0;sbit KEY2=P2^1;//定义两个按键由于STC15F2K60S2寄存器初始化时默认是:P6M1=0x00;P6M0 = 0x00;3.程序流程图主循环程序流程图三、实验程序#include <STC15.h>#include <intrins.h>#define Uchar unsigned char#define Uint unsigned intint LED[]={0xfc,0xf3,0xcf,0x3f,0xe7,0xdb,0xbd,0x7e,0x7e,0xbd,0xdb,0xe7, 0xfe,0xfb,0xef,0xbf,0xfd,0xf7,0xdf,0x7f};void P6Init()//IO口初始化函数{P6M0=0X00;P6M1=0X00;}void delay3s(void) //误差0us{unsigned char a,b,c;for(c=189;c>0;c--)for(b=230;b>0;b--)for(a=33;a>0;a--);}void main(){Uchar i=0;P0Init();while(1){for(i=0;i<20;i++){P6=LED[i];delay3s();}}}四、实验仪器和设备4.使用了keil软件Proteus 8 Professional软件。

单片机实验IO口的输入输出实验

单片机实验IO口的输入输出实验

单片机实验IO口的输入输出实验单片机实验是一种很好的学习方式,通过对单片机的实验可以快速地提高对单片机的了解,这对于工程师来说是非常有用的。

本文将主要介绍单片机实验中的IO口的输入输出实验。

IO口是单片机上一个非常重要的部分,在单片机实验中,IO口的输入输出是一个非常常见的实验。

IO口可以接收和发送电信号,它可以连接到开关、LED灯、继电器等,可以实现很多功能。

当我们需要将一个信号输入到单片机中时,我们需要使用IO口的输入功能。

当我们需要从单片机中输出一个信号时,我们需要使用IO口的输出功能。

在单片机实验中,我们需要测试IO口的输入功能是否正常。

测试IO口的输入功能有很多方法,其中一个方法是使用开关。

我们需要将一个开关连接到单片机的某个IO口上,当开关打开时,单片机能够获取到一个高电平信号,当开关关闭时,单片机能够获取到一个低电平信号。

通过这种方法我们可以测试单片机的IO口的输入功能是否正常。

我们可以通过编写一个程序,来判断单片机是否正常地读取到开关状态。

下面是一个范例程序:上面的程序中,我们通过判断P2口的高低电平状态,来控制P0口的输出状态。

当P2口接到高电平时,P0口的输出引脚变为高电平,LED灯就会亮。

当P2口接到低电平时,P0口的输出引脚变为低电平,LED灯就会灭。

与IO口的输入实验类似,我们也可以测试IO口的输出功能。

我们可以将一个LED灯连接到单片机的某个IO口上,当我们需要将信号输出时,单片机会控制IO口的输出引脚,从而控制LED灯的亮灭。

下面是一个范例程序:四、总结IO口的输入输出实验是单片机实验中非常常见的实验。

通过这个实验,我们能够测试单片机的IO口的输入输出功能是否正常。

在实际工作中,我们也经常需要控制开关、LED 灯、继电器等,这时候就需要使用IO口来实现控制。

因此,对于工程师来说,掌握IO口的输入输出实验是非常重要的。

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

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

接口实验一IO口输入、输出实验贵州大学实验报告纸实验一 I/O 口输入、输出实验一、实验目的学习单板方式下扩展简单I/O 接口的方法。

学习微处理器的编程技术。

二、实验内容数据口扩展74LS244输入数据,数据口扩展74LS273输出数据。

输入端接八位逻辑电平输出,输出端接八位逻辑电平显示,编写一个程序,读入开关状态并输出显示。

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

四、实验说明和电路原理图1、74LS244介绍:74LS244是三态输出的八缓冲器,由2组、每组四路输入、输出构成。

每组有一个控制端,由控制端的高或低电平决定该组数据被接通还是断开。

74LS244的引脚如图1-1A 所示。

图1-1A 74LS244 图1-1B 74LS2732、74LS273介绍:74LS273是八D 型触发器,带清除端。

本实验用74LS273输出数据,通过片选信号和写信号将数据总线上的值锁存在74LS273中,同时在74LS273的输出端口输出数据,当数据总线上的值撤消以后,由于74LS273能锁存信号,74LS273的输出端保持不变,直到有新的数据被锁存。

74LS273的引脚如图1-1B 所示。

图1-2 74LS244扩展输入电路本实验需要用到CPU模块(F3区)、八位逻辑电平输出模块(E4区)、八位逻辑电平显示模块(B5区)、扩展输入模块(F2区)、扩展输出模块(F1区)。

扩展输入电路原理图参见图1-2,扩展输出电路原理图参见图1-4,八位逻辑电平输出电路原理图参见图1-3,八位逻辑电平显示电路原理图参见图1-5。

图1-3 八位逻辑电平输出图1-4 74LS273扩展输出电路图1-5 八位逻辑电平显示五、实验程序1、实验修改后程序:;//************************************************************ **** ;文件名: In_Out for 8088;功能: I/O口输入、输出实验;接线: 用8位数据线连接八位逻辑电平输出模块的JD1E到扩展输入模块的JD2C;; 八位逻辑电平显示模块的JD4B到扩展输出模块的JD1C;; 用导线连接CPU模块的8000H到扩展输入模块的CS_244;; 8100H到扩展输出模块的CS_273。

单片机实验一,I/O端口实验报告(3)

单片机实验一,I/O端口实验报告(3)

单片机原理与接口技术实验实验一 I/O端口实验(3)系别:通信工程系专业:通信工程系11级学号:233201122041姓名:实验时间:2014年3月6日撰写日期:2014年3月9日实验一 I/O端口实验(3)一、实验目的1、掌握单片机通用I/O端口的使用方法;2、掌握I/O端口数据输入/输出的方法。

二、实验内容(与本次实验报告标题括号中的数字对应)3、模拟汽车转向指示灯:【提高,选做】P3.0接K5作为左转向开关,P3.1接开关K6作为右转向开关,P3.4接LED1作为左转向指示灯,P3.5接LED4作为右转向指示灯。

编程:当K5K6状态为01时,左转向灯以1秒/次的频率闪烁;当K5K6状态为10时,右转向灯以1秒/次的频率闪烁;当K5K6状态为00或11时,左右转向灯全灭。

三、实验设计思路对于该题,与上一题的主要区别在于使用位操作比较简单,便于对开关情况的判别及对LED灯闪烁情况的处理,其余设计方法同上在while里添加if-else 语句进行判别分类;对于延时一秒,当晶振为12MHz时,在原来的延时程序里再添加一个while循环,可延时大约0.8s,近似于1s。

四、电路原理图及接线说明P3.0连接K5,P3.1连接K6;P3.4连接LED1,P3.5连接LED4。

五、实验流程图六、调试过程及实验现象对于第该题,一开始运行程序后,发现除了指示灯没有闪烁外,其他功能都没问题。

后来仔细检查程序后发现是我的程序逻辑问题,忘记编写使灯由亮到灭的语句,经修改后程序运行结果良好,大约为每隔0.8s闪一次。

七、总结本次实验的实验难度不大,位操作可以很容易地解决。

但却因为一开始自己不够细心导致的延时函数运用地不大到位影响到了自己的实验进度,像这样的错误今后一定要避免。

第一次接触单片机,感觉还挺有趣意思的。

附录:实验源程序以压缩包提供整个项目文件例如: s03-lab01-1a.rar。

单片机实验-IO口的输入输出实验

单片机实验-IO口的输入输出实验

实验二I/O口输入、输出实验一、实验目的1. 学习I/O口的使用方法。

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

二、参考程序框图三、程序设计1、P0口循环点亮程序ORG 0030HSTART : MOV P2,#00H; //消影MOV A ,#01H; //LOOP : MOV P2 ,A; //点亮一个led灯ACALL DELAY; //延时500msRL A; //左移一位AJMP LOOP; //跳转循环DELAY : MOV R7,#10; //延时程序DE1 : MOV R6,#200;DE2 : MOV R5,#123;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1;RETEND2、I/O口输入输出(方法一)ORG 0000H;START : MOV P2,#00H; //初始化MOV P0,#00H;MOV P1,#0FFH; //p1口初始化给ffh值MOV DPTR,#TABLE; //表地址存入DPTRMOV 50H,#0FEH; //比较初值载入地址50hL0 :MOV A,P1; //按键消抖CJNE A,#0FFH,L1;AJMP L0;L1 :MOV A,P1;CJNE A,#0FFH,LL1;AJMP L0;LL1 :CJNE A,50H,LL2; //是否与地址50h中数据相等MOV P0,A; //相等输出对应led灯MOV A,#00H;MOVC A,@A+DPTR;MOV P2,A; //输出表格数据到数码管LCALL DELAY; //延时LJMP START; //返回程序开头LL2 :XCH A,50H; //交换数据RL A; //左移XCH A,50H; //再次交换,此时地址50h中数据左移一位INC DPTR; //表格数据地址加一LJMP LL1; //返回继续比较DELAY : MOV R7,#01H; //延时程序DE1 : MOV R6,#28H;DE2 : MOV R5,#5AH;DJNZ R5,$;DJNZ R7,DE1;RETTABLE : ;//DB 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H;DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH; //表格数据END程序二(方法二)ORG 0000HMOV P2,#00H; //I./O口初始化MOV P1,#0FFH; //P1口赋FFH初值MOV P0,#00H;START : MOV P2,#00H; //P2清0;MOV P0,#00H; //P0清0;MOV R1 ,P1;MOV A,R1; //读P1口CJNE A,#0FFH,L1; //是否有数据输入AJMP START; //无输入则跳转,继续查询LCALL DELAY;L1 : MOV R1,P1; //消除按键抖动MOV A,R1;CJNE A, #0FFH,LL1;AJMP START;LL1 : CJNE A,#0FEH,LL2; //是否按键1输入MOV P2,#06H; //是则P2输出相应的按键号码CPL A; //A取反MOV P0,A; //输出到P0口LCALL DELAY; //延迟AJMP LP; //跳转到LPLL2 : CJNE A,#0FDH,LL3; //是否按键2输入MOV P2,#5BH; //以下同上CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL3 : CJNE A,#0FBH,LL4; //判断按键3是否按下MOV P2,#4FH;CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL4 : CJNE A,#0F7H,LL5; //判断按键4是否按下CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL5 : CJNE A,#0EFH,LL6; //判断按键5是否按下MOV P2,#6DH;CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL6 : CJNE A,#0DFH,LL7; //判断按键6是否按下MOV P2,#7DH;CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL7 : CJNE A,#0BFH,LL8; //判断按键7是否按下MOV P2,#07H;CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL8 : CJNE A,#7FH,LP; //判断按键8是否按下MOV P2,#7FH;CPL A;MOV P0,A;LCALL DELAY;LP : AJMP START; //跳转回程序开头DELAY : MOV R7,#01H; //延时程序DE1 : MOV R6,#28H;DE2 : MOV R5,#5AH;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1;RETEND四、思考题1、LED循环方向更改:RL A; 改成RR A;1S的延时程序: DELAY : MOV R7,#20; //延时程序DE1 : MOV R6,#200;DE2 : MOV R5,#123;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1;RET2、提高电阻阻值3、一般为5V或者3.3V。

简单输入输出口扩展实验.

简单输入输出口扩展实验.

实验一简单 I/O口扩展实验一、实验目的1、熟悉 74LS273, 74LS244的应用接口方法。

2、掌握用锁存器、三态门扩展简单并行输入、输出口的方法。

二、实验设备MUT —Ⅲ型实验箱、 8086CPU 模块。

三、实验原理1. 开关量输入输出电路(1电路原理:开关量输入电路由 8只开关组成,每只开关有两个位置 H 和 L ,一个位置代表高电平,一个位置代表低电平。

对应的插孔是:K1~K8。

开关量输出电路由 8只 LED 组成,对应的插孔分别为 LED1~LED8,当对应的插孔接低电平时 LED 点亮。

原理图如下图所示。

(2电路测试:开关量输入电路可通过万用表测其插座电压的方法测试,即开关的两种状态分别为低电平和高电平;开关量输出电路可通过在其插孔上接低电平的方法测试,当某插孔接低电平时相应二极管发光。

2. 简单 I/O口扩展电路(1电路原理:输入缓冲电路由 74LS244组成,输出锁存电路由上升沿锁存器74LS273组成。

74LS244是一个扩展输入口, 74LS273是一个扩展输出口,同时它们都是一个单向驱动器,以减轻总线的负担。

74LS244的输入信号由插孔 IN0~IN7输入,插孔 CS244是其选通信号,其它信号线已接好; 74LS273的输出信号由插孔O0~O7输出,插孔 CS273是其选通信号,其它信号线已接好。

其原理图如下:(2电路测试:当 74LS244的 1、 19脚接低电平时, IN0~IN7与 DD0~DD7对应引脚电平一致;当 74LS273的 11脚接低电平再松开 (给 11脚一上升沿后, O0~O7与DD0~DD7对应引脚电平一致。

或用简单 I/O口扩展实验测试:程序执行完读开关量后, 74LS244的 IN0~IN7与 DD0~DD7对应引脚电平一致; 程序执行完输出开关量后, 74LS273 的 O0~O7与 DD0~DD7对应引脚电平一致。

3. 程序框图4. 程序源代码(T244273.ASMassume cs:codecode segment publicorg 100hstart: mov dx,04a0h ;74LS244地址in al,dx ; 读输入开关量mov dx,04b0h ;74LS273地址out dx,al ; 输出至 LEDjmp startcode endsend start四、实验内容及步骤逻辑电平开关的状态输入 74LS244, 然后通过 74LS273锁存输出,利用 LED 显示电路作为输出的状态显示。

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

单片机原理实验报告
实验一:IO开关量输入输出实验
学院: 物理与机电工程学院
专业: 电子科学与技术
班级: 2013 级 2 班
学号: 201310530208
姓名: 何丽丽
指导老师: 柳妮
实验一IO开关量输入输出实验
目的:
学习单片机读取IO引脚状态的的方法。

内容:
编程读取IO引脚状态。

设备:
EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。

编程:
首先要把相关的引脚设置在IO的输入状态,然后写一个循环,不停地检测引脚的状态。

步骤:
1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。

2、连线:用导线将试验箱上的的IO1--- IO8分别连接到SWITCH 的8个拨码开关的K1---K8的输出端子K1---K8上,连接好仿真器。

3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹IO_INPUT下的工程文件IO_INPUT.Uv2编译程序,上电,在程序注释处设置断点,进入调试状态,打开窗口Peripherals-->IO-Port-->P0,改变开关状态,运行程序到断点处,观察窗口的数值与开关的对应关系。

程序:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV P0,#0FFH
MOV A,P0
SWAP A
MOV P0,A
SJMP MAIN
END
程序分析:
从上面的程序可以看出我们需要用导线将试验箱上的的IO1--- IO8分别连接到SWITCH的8个拨码开关的K1---K8的输出端子K1---K8上,连接好仿真器。

在通过SWAP A MOV P0,A这组指令来对P0口所接的对应的发光二极管对应的状态通过拨码开关的开关来控制发光二极管。

结论:
通过上面这段程序,我们实现了用拨码开关来控制P0口所接的发光二极管的亮灭。

通过I\O口P0.0—P0.3接拨码开关,P0.4—P0.7一一对应的接发光二极管。

相关文档
最新文档