单片机IO口控制实验

合集下载

单片机IO口控制实验

单片机IO口控制实验

单片机IO口控制实验单片机IO口控制实验是一项基础的实验课程,它涉及到单片机的硬件接口和软件编程,是学习单片机的重要环节之一。

本文将详细介绍单片机IO口控制实验的环境搭建、实验步骤和实验结果等方面。

环境搭建1. 单片机开发板:如STC89C52,AT89C52等。

2. 软件集成开发环境:如Keil,IAR等。

3. 通信工具:USB转串口转换器,串口线等。

4. 其他相关组件:电阻、LED灯、导线等。

实验步骤1. 准备工作将单片机开发板进行电源供应,检查是否正常。

在电脑上安装Keil和STC-ISP等软件工具,安装好后打开Keil,新建一个工程。

3. 写入程序进入Keil中,选择打开工程,新建一个文件,并编写程序。

下面是一个简单的程序示例:#include <reg52.h>void delay(int i) //延时函数{while(i--);}4. 烧录程序在编写好程序后,选择编译,生成一个HEX文件。

将单片机开发板接入电脑,选择工具,打开STC-ISP软件。

选择好COM口和需要烧录的HEX文件,连接单片机开发板和电脑,点击下载。

等待下载成功后,即可将程序烧录到单片机中。

5. 实验验证实验时,可以将LED灯和几个外设连接到单片机的IO口,通过程序控制IO口的电平,达到控制LED灯、外设等的效果。

实验结果实验成功后,可以通过单片机控制LED灯的亮灭、外设的工作状态等,验证程序的正确性。

此外,实验成功还可以提高学生的动手实践能力和编程能力,为后续单片机应用开发打下基础。

结论单片机IO口控制实验是单片机学习中的重要实践环节。

通过实验,可以让学生了解单片机的硬件接口和软件编程,提高学生的实践能力和编程能力,培养学生独立思考和解决问题的能力。

实验三流水灯实验(io口和定时器实验)

实验三流水灯实验(io口和定时器实验)

实验三流水灯实验(I/O口和定时器实验)一、实验目的1.学会单片机I/O口的使用方法和定时器的使用方法;2.掌握延时子程序的编程方法、内部中断服务子程序的编程方法;3.学会使用I/O口控制LED灯的应用程序设计。

二、实验内容1.控制单片机P1口输出,使LED1~LED8右循环轮流点亮(即右流水),间隔时间为100毫秒。

2.控制单片机P1口输出,使LED1~LED8左循环轮流点亮(即左流水),间隔时间为100毫秒。

3.使用K1开关控制上面LED灯的两种循环状态交替进行;4. 用定时器使P1口输出周期为100ms的方波,使LED闪烁。

5.使用定时器定时,使LED灯的两种循环状态自动交替,每一种状态持续1.6秒钟(选作)。

三、实验方法和步骤1.硬件电路设计使用实验仪上的E1、E5和E7模块电路,把E1区的JP1(单片机的P1口)和E5区的8针接口L1~L8(LED的驱动芯片74HC245的输入端)连接起来,P1口就可以控制LED 灯了。

当P1口上输出低电平“0”时,LED灯亮,反之,LED灯灭。

E7区的K1开关可以接单片机P3.0口,用P3.0口读取K1开关的控制信号,根据K1开关的状态(置“1”还是置“0”),来决定LED进行左流水还是右流水。

综上,画出实验电路原理图。

2.程序设计实验1和实验2程序流程图如图3-1实验3程序流程图如图3-2所示。

图3-1 实验1,2程序流程图图3-2 实验3程序流程图实验4程序流程图如图3-3,3-4所示。

实验5程序流程图如图3-5,3-6所示。

图3-5 实验5主程序流程图图3-6 定时器中断服务子程序流程图图3-4 定时器中断服务子程序流程图图3-3 实验4主程序流程图编程要点:(1)Pl,P3口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1”,该位才能作为输入。

例如:MOV P1,A; P1口做输出MOV P1,#0FFHMOV A,P1;P1口做输入SETB P3.0MOV C,P3.1;从P3.1口读入数据(2)每个端口对应着一个寄存器,例:P1→90H(P1寄存器地址);P3→B0H(P3寄存器地址);寄存器的每一位对应着一个引脚,例:B0H.0→P3.0(3)对寄存器写入“0”、“1”,对应的外部引脚则输出“低电平”、“高电平”。

实验二 IO 口方式基础应用实验

实验二  IO 口方式基础应用实验

电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:单片机原理与接口技术实验班级:姓名:学号:组别:实验名称:实验二I/O 口方式基础应用实验实验时间:成绩:一、实验目的和任务1、掌握80C51单片机程序的调试与下载方法。

2、掌握80C51单片机并口的特性及程序控制方法。

3、掌握步进电机转向、转速和角度控制原理。

4、掌握步进电机与单片机的接口及程序控制方法。

二、实验原理简介P0口控制8个发光管的电路结构,P0口某口线输出低电平时,相应的发光管点亮,口线输出高电平时发光管熄灭。

在做发光管相关实验时,应将实验箱上LED101~LED108发光管右上侧的拨码开关JUMP2拨到ON一侧,使发光管限流电阻公共端连接到MCU1电源正极(即Vcc端)。

VccMCU1JUMP2STC12C5A60S239 L101 470ΩP0.038 L102 470ΩP0.137 L103 470ΩP0.236 L104 470ΩP0.335 L105 470ΩP0.434 L106 470ΩP0.533 L107 470ΩP0.632 L108 470ΩP0.7图2-1 发光管控制电路步进电机是一种将电脉冲转化为角位移的执行机构,可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

由于步进电动机能直接接受数字量,所以特别适合利用单片机进行控制。

ZSC-1实验箱MCU1利用P2口的高4位控制一个四相步进电机(其最小步距角为5.625°/64),如图3-1所示。

某口线输出低电平时,相应的功率三极管导通,其所连接的一相线圈通电,口线输出高电平时线圈断电。

程序以单4拍、双4拍或4-8拍方式依次输出各相序字,就可控制步进电机转动,颠倒相序顺序,可改变步进电机的转向。

改变各相序字之间的时间间隔可控制步进电机的转速。

图3-1中4个独立按键可用于电机控制命令的输入。

io的原理及应用单片机实验

io的原理及应用单片机实验

IO的原理及应用单片机实验1. IO简介IO(Input/Output)是指计算机与外界设备进行信息交互的接口。

在单片机中,IO端口是与外部设备进行数据输入和输出的重要通路。

它充当着信息传输的桥梁,实现单片机与外部设备的连接和数据的交互。

了解IO的原理及应用对于进行单片机实验和开发非常重要。

2. IO的原理IO端口主要包括输入端口和输出端口。

通过配置相应的寄存器和引脚状态,可以实现外部设备与单片机的数据输入和输出。

•输入端口:将外部设备的信号输入到单片机中。

输入端口通常和外部器件的开关量信号相连,如按钮、开关等。

•输出端口:将单片机中的数据输出给外部设备。

输出端口通常和外部器件的执行元件相连,如LED灯、马达等。

3. IO的应用IO的应用非常广泛,涵盖了很多领域。

下面以单片机实验为例,介绍IO的常见应用。

3.1 LED闪烁实验LED闪烁实验是单片机实验中最基础的实验之一。

通过控制IO口的电平,可以控制LED的亮灭。

实验步骤: 1. 连接硬件电路,将LED的正极连接到单片机的输出口,负极连接到地。

2. 在单片机的程序中配置输出端口为高电平或低电平。

3. 运行程序,观察LED的亮灭情况。

3.2 数码管显示实验数码管显示实验是单片机实验中常见的应用之一。

通过IO口的输出控制,可以实现数字的显示。

实验步骤: 1. 连接硬件电路,将数码管的引脚连接到单片机的输出端口。

2.在单片机的程序中配置输出端口的电平,根据不同的情况控制数码管的显示。

3.运行程序,观察数码管的显示结果。

3.3 温度传感器实验温度传感器实验是单片机实验中涉及到模拟信号输入的应用之一。

通过IO口的输入控制,可以获取温度传感器的模拟信号,并进行处理。

实验步骤: 1. 连接硬件电路,将温度传感器的输出引脚连接到单片机的模拟输入端口。

2. 在单片机的程序中配置输入端口为模拟转换模式,并进行相应的模拟信号转换。

3. 运行程序,获取温度传感器的模拟信号,并进行显示或者其他处理。

电气化自动技术 实验2 IO口开关量输入-实验指导书

电气化自动技术 实验2  IO口开关量输入-实验指导书

实验二 IO开关量输入实验一、实验概述使用按键来控制单片机IO口的高低电平。

二、实验目的熟悉单片机的最小系统,了解单片机I/O的结构;掌握按键键值的读入和处理;学习简单程序的编写。

三、实验预习要求1、单片机最小系统电路构成;2、I/O口的内部结构;3、简单程序指令熟悉;四、实验原理图:AT89C52本实验使用了单片机AT89C52来做实验,该单片机有4组IO口。

单片机总的IO 会分为这几类:电平可变化的IO口和VCC、GND两类。

其中电平可变化的IO有P0口、P1口、P2口、P3口。

本实验就是读取了P1口的电平从而读取按键输入的值,P0口来输出高低电平来控制LED的亮或灭。

图:P1口的电路R1、R2是上拉电阻,拉高了P10和P11两个端口的电平,当按下按键的时候,相应的端口变为低电平。

图:P0口的电路P0口接了8个LED,RP1是限流电阻,保护LED,避免电流过高,烧坏LED;RP2是上拉电阻,将P0口的电平拉高。

五、Proteus使用的元器件1.AT89C51 //51单片机。

2.BUTTON //按键,用于最小系统复位;实现输入功能。

3.CAP //电容,用于搭建复位电路。

4.CAP-ELEC //电解电容,用于搭建复位电路。

5.CRYSTAL //晶振,给单片机提供时钟信号。

6.LED-YELLOW //黄色LED灯。

7.RES //电阻。

8.RESPACK-8 //排阻;RP1是限流电阻,RP2是上拉电阻。

六、实验要求1、利用单片机,按键和发光二极管,构成一个LED灯控制电路;2、上电时, 点亮LED,按下K1时, LED向左移一位,按下K2时, LED向右移一位。

七、硬件连接图1. 硬件电路图:8位独立LED图:8位独立按键2.硬件连接表3.Proteus仿真图图:Proteus仿真图八、实验程序/******************************************************************** ****文件名称: main.c作者:版本: V1.00说明: IO开关量输入实验修改记录:-------------------------------------------------------------------------* 功能描述: 按键扫描程序* 上电时, 点亮P00口LED ,按下K1时, LED向右移一位,按下K2时, LED向左移一位-------------------------------------------------------------------------* 接线说明:P10-K1,P11-K2,P00~P07——D1~D8********************************************************************** ****/#include <reg52.h>#include <intrins.h>#define uchar unsigned char //数据类型宏定义#define uint unsigned int/**********单片机IO口引脚定义********************************************/#define LED P0sbit K1 = P1^0;sbit K2 = P1^1;/**********函数定义******************************************************/uchar scan_key();void proc_key(uchar key_v);void delayms(uchar ms);/**********主函数********************************************************/void main(void){uchar key_s,key_v;key_v = 0x03; //初始化IO口LED = 0xfe;while(1){key_s = scan_key();if(key_s != key_v) //判断按键是否按下{delayms(10); //延时消抖key_s = scan_key();if(key_s != key_v){key_v = key_s;proc_key(key_v);}}}}/**********键盘扫描函数**************************************************/ uchar scan_key(){uchar key_s;key_s = 0x00;key_s |= K2;key_s <<= 1;key_s |= K1;return key_s; //返回按键号}/**********键盘处理函数**************************************************/ void proc_key(uchar key_v){if((key_v & 0x01) == 0){LED = _cror_(LED,1); //循环右移一位}else if((key_v & 0x02) == 0){LED = _crol_(LED, 1); //循环左移一位}}/***********延时函数*****************************************************/void delayms(uchar ms)// 延时子程序{uchar i;while(ms--){for(i = 0; i < 120; i++);}}九、实验步骤1、打开Proteus 8环境,在快捷工具栏中点击源代码按纽,然后在菜单栏选择系统-编译器配置。

单片机流水灯实验总结

单片机流水灯实验总结

单片机流水灯实验总结引言流水灯是单片机实验中最基础的实验之一,通过控制单片机的IO口,让灯泡按照一定的顺序或方式依次点亮和熄灭,从而形成灯光的流动效果。

本篇文档将总结单片机流水灯实验的原理、实验步骤和实验结果,并对其中的关键点进行说明和分析。

实验原理单片机流水灯实验的原理主要涉及到两方面:单片机的IO口和时序控制。

单片机的IO口单片机的IO口是其与外部设备进行数据交换和控制的接口,通过设置IO口的电平状态,可以控制外部设备的操作。

在流水灯实验中,我们将使用单片机的多个IO口分别控制多个灯泡的点亮和熄灭。

时序控制流水灯的效果是通过按照一定的时序来依次点亮和熄灭灯泡。

在单片机中,我们可以通过控制程序中的延时和循环来实现灯泡的时序控制。

实验步骤以下将详细介绍单片机流水灯实验的步骤:1.准备材料和工具:单片机、灯泡、电阻、面包板、导线等。

2.连接电路:将单片机和灯泡通过导线连接起来,同时将电阻与灯泡串联,用以限流。

3.编写程序:使用相应的编程软件,编写控制流水灯的程序。

程序主要包括初始化IO口、控制时序、循环控制灯泡的点亮和熄灭等。

4.烧录程序:将编写好的程序烧录到单片机中。

5.调试和测试:将单片机连接到电源,观察灯泡是否按照预定的流水灯效果点亮和熄灭。

如果效果不符合预期,可以通过修改程序和调整电路进行调试。

实验结果经过以上步骤,我们成功搭建了单片机流水灯的实验电路,并编写了控制流水灯的程序。

经过测试,实验效果良好,灯泡按照预定的顺序和方式点亮和熄灭。

实验中的关键点分析在单片机流水灯实验中,有几个关键点需要特别注意:1.IO口的选择:根据需要控制的灯泡个数,选择合适数量的IO口。

如果使用的IO口数量较多,可以考虑使用扩展芯片或IO口拓展模块。

2.电路的设计:在电路设计中,需要合理选择电阻的阻值,以确保灯泡正常工作,并保护单片机和其他电路。

3.程序的编写:程序的编写需要注意控制流水灯的循序和时序,以及延时和循环的设置。

51单片机-IO口实验报告

51单片机-IO口实验报告

《信息技术综合实践》课程实验报告
1.打开KeiluVision2应用程序,新建一个工程,将IO.c文件添加到新建的工程中(将头文件中的头文件中的regx修改为reg),在输出中选择生成相应的HEX文件并保存到相应文件夹中
2.打开KeiluVision2应用程序,新建一个工程,将IO.c文件添加到新建的工程中(将头文件中的头文件中的regx修改为reg),在输出中选择生成相应的HEX文件并保存到相应文件夹中,进行文件的编译和调试。

3.进行实验箱的连线。

4.打开下载器,擦除并将生成的HEX文件调入Flash,然后选择“自动”。

5.通过示波器观察实验现象
5.1 示波器波形图
5.1.1(i的范围是小于500,波形图如下所示)
由图可知:当不修改i的范围时,波形的频率比较高,约在150Hz左右。

5.1.2(将代码中i的范围修改为小于20000,波形图如下所示)
由图可知:将i的范围变大以后,波形的频率变低并且稳定在5Hz左右。

5.2 小灯闪烁视频
(灯亮时的图片)。

单片机实验 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; //延时500ms RL A; //左移一位 AJMP LOOP; //跳转循环DELAY : MOV R7,#10; //延时程序 DE1 : MOV R6,#200; DE2 : MOV R5,#123; DJNZ R5,$; DJNZ R6,DE2; DJNZ R7,DE1; RET END2、I/O口输入输出(方法一)ORG 0000H;START : MOV P2,#00H; //初始化 MOV P0,#00H;MOV P1,#0FFH; //p1口初始化给ffh 值 MOV DPTR,#TABLE; //表地址存入DPTR MOV 50H,#0FEH; //比较初值载入地址50h L0 :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 : MOVR5,#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 初值 MOVP0,#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; MOVP0,A;LCALL DELAY;LP : AJMP START; //跳转回程序开头 DELAY : MOV R7,#01H; //延时程序DE1 : MOV R6,#28H; DE2 : MOV R5,#5AH; DJNZ R5,$; DJNZ R6,DE2; DJNZR7,DE1; RET END四、思考题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; RET 2、提高电阻阻值3、一般为5V 或者3.3V 。

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

单片机实验报告
实验名称:I/O口控制
姓名:高知明
学号:110404320
班级:通信3
时间:
理工大学紫金学院电光系
一、实验目的
1、学习I/O口的使用。

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

3、掌握单片机编程器使用和芯片烧写方法。

二、实验原理
1.灯闪烁实验
(1)在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。

电原理图如图3.1所示。

(2)系统板上硬件连线
把“单片机系统”A2区的J61接口的P1.0- P1.6端口与D1区的J52接口相连。

(3)程序设计流程
本实验程序设计可参考程序流程3.2
图3.1灯闪烁实验电路原理
图3.2程序流程图
2.广告流水灯实验
(1)做单一灯的左移右移,硬件电路图如图3.3所示,八个发光二极
管L1-L8分别接在单片机的接口上,输出“0”时,发光二极管亮,开始
时P1.0→P1.1→P1.2→P1.3→…→P1.7→P1.6→…P1.0亮,重复循环。

(2)系统板上硬件连线
把“单片机系统”A2区的J61接口的P1.0- P1.6端口与D1区的J52接口相连。

要求:P1.0对应着L1,P1.1对应着L2,…,P1.7对应着L8.
(3)程序设计流程
本实验程序设计可参考程序流程,如图3.4所示

3.3 P1口广告流水灯实验电路原理图
图3.4广告流水灯实验流程
3、模拟开关实验
(1)监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端
口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭,如图
3.5所示
(2)系统板上硬件连线
把“单片机系统”A2区的P1.0端口用导线连接到D1区的LED1端口上;
把“单片机系统”A2区的P3.0端口用导线连接到D1区的KEY1端口上;
(3)程序设计流程
本实验程序设计可参考程序流程,如图3.6所示
图3.6 程序流程图
图3.5模拟开关实验原理图
三、实验容
1.流水灯实验
C51程序:
#include<reg51.h>
void time()
{
long int i;
for(i=0;i<=10000;i++);}
void delay(unsigned char tmp)
{
unsigned char j;
while(tmp--){
j=255;
while(j--);
}
}
code unsigned char tmpled[8]={0Xfe,0Xfd,0Xfb,0Xf7,0xef,0xdf,0xbf,0x7f};
code unsigned char smpled[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
void main(void)
{
unsigned char i;
while(1){
for(i=0;i<8;i++)
{
P1=tmpled[i];
delay(100);
}
P1=0xff;
time();
for(i=0;i<8;i++)
{
P1=smpled[i];
delay(100);
}
P1=0xff;
time();
}
} }
}
硬件图
2.闪烁灯实验
C51程序:
#include<reg51.h>
#define uint unsigned int sbit led=P1^0;
void delay()
{
uint a;
a=50000;
while(a--);
}
main()
{
while(1)
{
led=0;
delay();
led=1;
delay();
}
}硬件图
3、模拟开关实验
C51程序:
#include<reg51.h>
void main()
{unsigned char a;
sbit key=P3^0;
sbit led=P1^0;
while(1)
{
if(key==0)
{
for(a=500;a>0;a--);
if(key==0)
led=0;
}
else led=1;
}
}
硬件图
四、小结与体会
通过这次实验,熟悉并掌握了proteus以及keil软件的使用,对I/O口的控制有所了解,学习延时子程序的编写和使用。

相关文档
最新文档