实验一 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开关输入输出实验报告

单片机实验报告
学院: 物电学院
专业: 电子科技与技术
班级: 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开关量输入输出实验学院: 物理与机电工程学院专业: 电子科学与技术班级: 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 0000HLJMP MAINORG 0030HMAIN:MOV P0,#0FFHMOV A,P0SWAP AMOV P0,ASJMP MAINEND程序分析:从上面的程序可以看出我们需要用导线将试验箱上的的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一一对应的接发光二极管。
实验一简单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口输入输出实验报告篇一:实验二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秒的延时程序并说明计算方法。
实验一 简单I O 端口实验

实验一简单I/O口扩展一、实验目的1.学习单片机系统中扩展简单I/O口的方法。
2.学习数据输入输出程序的编制的方法。
二、实验内容利用74LS244作为输入口,读取开关状态,通过74LS273再驱动发光二极管显示出来。
三、电路原理图1.程序流程2.实验电路图四、程序清单CODE SEGMENTCS:CODE,DS:CODE,ES:CODEORG 3380H ;273,244PIO1 EQU 0FFE0HPIO2 EQU 0FFE4HP4: MOV DX,PIO1IN AL,DXMOV DX,PIO2OUT DX,ALJMP P4CODE ENDSEND P4五、实验步骤1、实验连线⑴74LS244的输入端PI0-PI7接K1-K8,74LS273的输出端PO0-PO7接L1-L8。
用8芯扁平电缆将I/O IN区、I/O OUT区的数据总线插座与数据总线单元任一插座相连。
⑵连接138译码输入端A.B.C,其中A连A2,B连A3,C连A4,138使能控制输入端G 与总线单元上方的GS相连。
⑶74LS02门电路的①脚接缓冲输出单元的CLK,02门电路②脚接系统单元IOW,02门电路的③脚接译码单元的Y1;02门电路的④脚与⑨脚相连,02门电路的的⑤脚接译码单元的Y0,02门电路⑥脚接系统单元IOR,02门电路的⑧脚接GND,02门电路的⑩脚接缓冲输入单元的G。
2、LED环境(1)在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。
(2)在“P.”状态下键入3380,然后按“EXEC”进入实验项目的运行。
3、PC环境在与PC联机状态下,编译、连接、下载PH88.asm,用连续方式运行程序。
4、观察运行结果以连续方式运行程序,拨动K1-K8,观察L1-L8点亮情况。
5、终止运行按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出该程序的运行返回监控状态。
六、实验心得本次实验学习了单片机系统中扩展简单I/O口的方法,掌握了扩展简单I/O口的方法,学习数据输入输出程序的编制的方法。
实验一 开关量输入输出实验

实验一开关量输入输出实验
一、实验要求
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的实验

昆明理工大学信息工程与自动化学院学生实验报告(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五、实验过程原始记录(数据、图表、计算等)六、实验结果、分析和结论(误差分析与数据处理、成果总结等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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一一对应的接发光二极管。