实验二单片机IO口的使用
单片机的IO口配置与操作技巧
单片机的IO口配置与操作技巧单片机是一种集成电路,其中包含了处理器、存储器和各种输入输出接口。
其中,IO口是单片机最重要的部分之一,它可以用于连接和控制外部设备,实现数据输入和输出。
本文将介绍单片机IO口的配置和操作技巧,帮助读者更好地理解和应用单片机。
一、IO口的基本概念IO口是单片机与外部设备进行数据交互的接口,它可以用于输入数据或输出数据。
在单片机中,IO口通常由多个引脚(Pin)组成,每个引脚都可作为一个IO口使用。
二、IO口的配置方法1. 硬件配置IO口的硬件配置是指通过设置相关硬件连接器的方式来配置IO口的功能。
根据具体的单片机型号和规格,硬件配置方法可能会有所不同。
一般来说,可以通过连接跳线和选择器等方式将特定的引脚配置为IO口,并设置相应的电平逻辑,以实现输入输出功能。
2. 软件配置软件配置是通过单片机内部的寄存器来配置IO口的功能。
可以通过写入特定的数值或位操作来设置IO口的输入输出状态、电平逻辑和控制方式等。
通常,可以使用特定的编程语言或软件工具来实现软件配置。
三、IO口的操作技巧1. 输入操作当将IO口配置为输入状态时,可以使用读取寄存器的方式来获取外部设备传递的数据。
读取寄存器时需要注意数据的有效性和稳定性,可采用轮询、中断等方式进行读取。
2. 输出操作当将IO口配置为输出状态时,可以使用写入寄存器的方式将特定的数据发送至外部设备。
输出操作需要注意数据的正确性和稳定性,可以通过设置特定的输出保护电路来防止因输出电流过大而引起的电源电流波动等问题。
3. 状态检测与改变IO口的状态检测和改变可以通过读取和写入寄存器来实现。
当需要检测IO口的当前状态时,可以通过读取相应的寄存器来获取IO口的电平状态。
而当需要改变IO口的状态时,可以通过修改寄存器的数值或位操作来改变IO口的电平状态。
四、常见问题与解决方法1. 输入输出电平不稳定当IO口输入输出电平不稳定时,可能会导致外部设备无法正常工作。
单片机 io口工作方式
单片机IO口的使用对所有单片机玩家来说都是“家常便饭”,但是你真的了解IO口吗?你真的能按你的需要配置IO口吗?一、准双向口输出准双向口输出类型可用作输出和输入功能而不需重新配置口线输出状态。
这是因为当口线输出为1时驱动能力很弱,允许外部装置将其拉低。
当引脚输出为低时,它的驱动能力很强,可吸收相当大的电流。
(准双向口有3个上拉晶体管适应不同的需要)准双向口读外部状态前,要先锁存为‘1’,才可读到外部正确的状态.二、强推挽输出推挽输出配置的下拉结构与开漏输出以及准双向口的下拉结构相同,但当锁存器为1时提供持续的强上拉。
推挽模式一般用于需要更大驱动电流的情况。
三、仅为输入(高阻)输入口带有一个施密特触发输入以及一个干扰抑制电路。
四、开漏输出配置(若外加上拉电阻,也可读)当口线锁存器为0时,开漏输出关闭所有上拉晶体管。
当作为一个逻辑输出时,这种配置方式必须有外部上拉,一般通过电阻外接到Vcc。
如果外部有上拉电阻,开漏的I/O口还可读外部状态,即此时被配置为开漏模式的I/O口还可作为输入I/O口。
这种方式的下拉与准双向口相同。
开漏端口带有一个施密特触发输入以及一个干扰抑制电路。
关于I/O口应用注意事项:1.有些是I/O口由低变高读外部状态时,读不对,实际没有损坏,软件处理一下即可。
因为1T的8051单片机速度太快了,软件执行由低变高指令后立即读外部状态,此时由于实际输出还没有变高,就有可能读不对,正确的方法是在软件设置由低变高后加1到2个空操作指令延时,再读就对了.有些实际没有损坏,加上拉电阻就OK了有些是外围接的是NPN三极管,没有加上拉电阻,其实基极串多大电阻,I/O口就应该上拉多大的电阻,或者将该I/O口设置为强推挽输出.2.驱动LED发光二极管没有加限流电阻,建议加1K以上的限流电阻,至少也要加470欧姆以上做行列矩阵按键扫描电路时,实际工作时没有加限流电阻,实际工作时可能出现2个I/O 口均输出为低,并且在按键按下时,短接在一起,我们知道一个CMOS电路的2个输出脚不应该直接短接在一起,按键扫描电路中,此时一个口为了读另外一个口的状态,必须先置高才能读另外一个口的状态,而8051单?片机的弱上拉口在由0变为1时,会有2时钟的强推挽高输出电流输出到另外一个输出为低的I/O口,就有可能造成I/O口损坏.建议在其中的一侧加1K限流电阻,或者在软件处理上,不要出现按键两端的I/O口同时为低.一种典型三极管控制电路:如果用弱上拉控制,建议加上拉电阻R1(3.3K~10K),如果不加上拉电阻R1(3.3K~10K),建议R2的值在15K以上,或用强推挽输出。
单片机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口控制实验是单片机学习中的重要实践环节。
通过实验,可以让学生了解单片机的硬件接口和软件编程,提高学生的实践能力和编程能力,培养学生独立思考和解决问题的能力。
【实验2io口实现流水灯】
实验二IO口实现LED灯闪烁一、实验目的:1.正确安装keil软件2.正确安装调试驱动,熟悉实验板的用法3.学习IO口的使用方法。
二、实验设备:单片机开发板、学生自带笔记本电脑三、实验内容:利用单片机IO口做输出,接发光二极管,编写程序,使发光二极管按照要求点亮。
四、实验原理:1.LPC1114一共有42个GPIO,分为4个端口,P0、P1、P2口都是12位的宽度,引脚从Px.0~Px.11,P3口是6位的宽度,引脚从P3.0~P3.5。
引脚的内部构造如图所示。
其中Rpu为上拉电阻、Rpd为下拉电阻。
2.为了节省芯片的空间和引脚的数目,LPC1100系列微处理器的大多数引脚都采用功能复用方式,用户在使用某个外设的时候,要先设置引脚。
控制引脚设置的寄存器称之为IO配置寄存器,每个端口管脚PIOn_m都分配一个了一个IO配置寄存器IOCON_PIOn_m,以控制管脚功能和电气特性。
3.IOCON_PIOn_m寄存器其位域定义如表所列。
4.各引脚IOCON寄存器的位[2:0]配置不同的值所相应功能。
5.GPIO寄存器GPIO数据寄存器用于读取输入管脚的状态数据,或配置输出管脚的输出状态,表5-5对GPIOnDATA寄存器位进行描述。
GPIO的数据方向的设置是通过对GPIOnDIR寄存器的位进行与或操作实现的,LPC1100微处理器和8051单片机的GPIO不同,在使用前一定要先设置数据方向才能使用,6.发光二级管的工作电压和工作电流如何?___________________________________________________________________________ ___________________________________________________________________________ _________________________________________________________________________。
实验二 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口的使》课件
PART 02
单片机IO口的基本概念
IO口ቤተ መጻሕፍቲ ባይዱ定义
01
IO口是单片机与外部设备进行信 息交互的接口,具有输入和输出 两种功能。
02
IO口能够读取外部设备的状态信 息,并将单片机的控制信号输出 到外部设备,实现控制功能。
IO口的分类
按功能分类
普通IO口、特殊功能IO口(如PWM、ADC等)。
解决噪声干扰问题的方法包括:增加去耦电容,减少电源和地线的干扰;使用差 分信号线,提高信号的抗干扰能力;对IO口进行适当的滤波和抗干扰处理。
按数据传输方式分类
并行IO口、串行IO口。
按配置方式分类
推挽输出、开漏输出、推挽输入/输出、开漏输入/输出。
IO口的基本操作
设置IO口的工作模式
读写IO口数据
根据实际需求,设置IO口为输入或输 出模式。
通过读写IO口数据寄存器,实现数据 的输入和输出。
配置IO口的寄存器
通过配置寄存器,设置IO口的各种参 数,如数据位、停止位、奇偶校验等 。
详细描述
单片机是一种集成电路芯片,它将中央处理器、存储器、输入输出接口等集成 在一块芯片上,具有微型计算机的基本功能。单片机体积小、功耗低、可靠性 高,广泛应用于各种智能控制、工业自动化等领域。
单片机的应用领域
要点一
总结词
单片机的应用领域非常广泛,包括智能家居、智能仪表、 工业控制、汽车电子等。
要点二
输出数据格式化
根据需要,单片机IO口可以输出不同 格式的数据,如PWM波形、串行数据 等。
双向模式的使用
数据读写切换
在双向模式下,单片机IO口既可以读取数据,也可以写入数据。例如,在串行通 信中,IO口既作为发送数据的输出端,也作为接收数据的输入端。
2.4 单片机并行IO口(实验2)
College of Communication Engineering, Jilin University
9
2.4 并行I/O模块
实验二 I/O+IRQ应用实例
任务:(1) 在PORTB口的小灯上循环显示跑马灯。 (2) 将PORTA口接8位DIP开关,在PORTB口的小灯上显示其状态。 (3) 利用IRQ作为中断源,采用中断方式,按动IRQ键后显示跑马灯。 (4) 利用IRQ作为中断源,采用中断方式, 利用8位DIP开关控制跑马 灯的循环速度。 (5) 利用XIRQ作为中断源,采用中断方式, 利用8位DIP开关控制跑马 灯的循环速度。 (6) 将PORTA口低4位接DIP开关,高4位接LED,将开关的状态显示在 LED灯上,重复(5)。
数据方向寄存器
DDRT:$0242
DDRS:$024A
DDRM:$0252
DDRP:$025A
DDRH:$0262
DDRJ:$026A
按位控制:0->输入 1->输出,复位后清0,默认为输入口
数据寄存器
PTT:$0240
PTS:$0248
PTM:$0250
PTP:$0258
PTH:$0260
3、程序 IO-IRQ.doc ① 跑马灯实现的算法(查表、移位) ② 可变时间的延时 ③ 端口状态的LED显示 ④ 中断
College of Communication Engineering, Jilin University
14
PTIS:$0249 PTIJ:$0269
PTIM:$0251
PTIP:$0259
低功耗驱动寄存器
RDRT:$0243
RDRS:$024B
单片机原理及应用实验二报告
单片机原理及应用实验二报告实验二:单片机IO口的输入输出实验一、实验目的:1.理解并掌握单片机IO口的输入输出原理;2.掌握基础的输入输出编程技巧;3.熟悉单片机实验的基本流程和实验报告格式。
二、实验器材:1.STM32F103C8T6开发板2.LED灯3.电阻(220Ω)4.面包板、杜邦线等。
三、实验原理:单片机的IO口是实现与外部器件进行通信的重要接口,通过编程,我们可以控制IO口的状态(低电平或高电平)来实现对外部器件的控制或检测。
IO口的输入输出原理主要有两种:1.三态输出方式:通过设置IO口的DDR寄存器来将IO口设置为输出模式(推挽输出),并通过设置IO口的ODR寄存器来控制IO口的输出状态为低电平或高电平;2.上拉输入方式:通过设置IO口的DDR寄存器来将IO口设置为输入模式,同时设置IO口的CR寄存器的PUPD位为上拉使能,通过读取IO口的IDR寄存器可以获取IO口的输入状态。
四、实验步骤:1.连接电路:将STM32F103C8T6开发板的VDD和VSS(即5V和GND)分别连接到面包板的3V3和GND,将LED的阳极(长脚)连接到STM32F103C8T6开发板的PA0引脚,将LED的阴极(短脚)通过一个220Ω的电阻连接到GND。
2. 打开Keil uVision5软件,创建一个新的工程,并选择适合的芯片型号(STM32F103C8T6)。
3.编写代码实现将PA0引脚设置为输出模式,并控制LED的亮灭。
五、实验代码:```c#include "stm32f10x.h"void GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);int main(void)GPIO_Configuration(;while (1)GPIO_SetBits(GPIOA, GPIO_Pin_0); // 点亮LEDGPIO_ResetBits(GPIOA, GPIO_Pin_0); // 关闭LED}```六、实验结果与分析:七、实验心得:本次实验主要学习了单片机IO口的输入输出原理,了解了三态输出方式和上拉输入方式,并通过实际编写代码的方式,在STM32F103C8T6开发板上实现了控制LED的亮灭。
实验二 IO口的输入与输出
主讲人:
宋淇
一、实验目的:
了解IO口的结构 熟源自IO口的特性 掌握IO口的控制二、实验仪器:
ATmage16实验板 一块 ISP单片机下载线 一条 PC机 一台
三、实验原理:
作为通用数字I/O 使用时,AVR 所有的I/O 端口都具有真正的读- 修改 - 写功能。这意味着用SBI 或CBI 指令改变某些管脚的方向( 或者是端口电 平、禁止/ 使能上拉电阻) 时不会改变其他管脚的方向( 或者是端口电平、 禁止/ 使能上拉电阻)。输出缓冲器具有对称的驱动能力,可以输出或吸收 大电流,直接驱动LED。所有的端口引脚都具有与电压无关的上拉电阻。 并有保护二极管与VCC 和地相连,如 Figure23 所示。在控制I/O时,分别 由方向寄存器DDRX与数据寄存器PORTX控制I/O的状态,如下表。
Figure 23. I/O 引脚等效原理图
所有的寄存器和位以通用格式表示:小写的“x” 表示端口的序号, 而小写的“n” 代表位的序号。但是在程序里要写完整。例如,PORTB3 表示端口B 的第3 位,而本节的通用格式为PORTxn。物理I/O 寄存器和 位定义列于P63“I/O 端口寄存器的说明” 。 每个端口都有三个I/O 存储器地址: 数据寄存器 – PORTx、 数据方向 寄存器 – DDRx 和端口输入引脚地址– PINx。数据寄存器和数据方向寄 存器为读/ 写寄存器,而端口输入引脚为只读寄存器。但是需要特别注 意的是,对PINx 寄存器某一位写入逻辑"1“ 将造成数据寄存器相应位的 数据发生"0“ 与“1“ 的交替变化。当寄存器MCUCR 的上拉禁止位PUD 置位时所有端口引脚的上拉电阻都被禁止。
端口引脚配置图
电气化自动技术 实验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端口扩展实验
单片机程序实验报告姓名:陈曦学号23320082203998系别:通信工程系实验二简单I/O端口扩展实验一、实验目的1.学习8051单片机扩张数据存储的方法;2.学习61C256芯片的接口方法。
二、实验设备微型计算机、单片机仿真器、实验仪、示波器(各一台)实验连线:若干三、实验原理图四、实验内容编写并调试一段程序,功能是把8051内部数据存储器中50H~6FH的内容复制到外部数据存储器中0500H开始的区域中。
要求加入数据读写校验的功能,对写入外部RAM的区域先进行写入、读取校验操作。
汇编语言程序如下:ADDER E QU 50HADDER1 EQU 0500HBYTE EQU 20HORG 0000HAJMP STARTORG 0030HSTART:MOV R2,#BYTEMOV R0,#ADDERMOV DPTR,#ADDER1MOV @R0,#12H ;先写入标志性的数据INC R0MOV @R0,#34HINC R0MOV @R0,#56HINC R0MOV @R0,#78HINC R0MOV @R0,#9AHINC R0MOV @R0,#0BCHINC R0MOV @R0,#0DEHINC R0MOV R0,#ADDERMOV R1,#00HLOOP:MOV A,#00HMOVX @DPTR,AMOVX A,@DPTRSUBB A,#00HJNZ ERRORMOV A,#0FFHMOVX @DPTR,AMOVX A,@DPTRSUBB A,#0FFHJNZ ERRORMOV A,@R0MOVX @DPTR,AINC R0INC DPTRDJNZ R2,LOOPAJMP $ERROR:INC DPTRINC R1DJNZ R2,LOOPAJMP $ENDC语言源程序:#include<reg51.h>data unsigned char ADDER1 _at_ 0x50; xdata unsigned char ADDER2 _at_ 0x0500; main(){unsigned char i,temp=0,count=0;unsigned char *sadd1,*sadd2;SP=0x70;sadd1=&ADDER1;sadd2=&ADDER2;for(i=0;i<0x20;i++){*sadd2=0x00;temp=*sadd2;temp=temp-0x00;if(temp!=0){count++;sadd2++;continue;}*sadd2=0xff;temp=*sadd2;temp=temp-0xff;if(temp!=0){count++;sadd2++;continue;}*sadd2=*sadd1;sadd1++;sadd2++;}while(1){;}}五、实验小结通过实验是我们了解如何扩展外部存储器,并熟练掌握了内外存储器的数据的传送、指针的使用,获悉了读写校验的原理,为下一步学习打下了坚实的基础。
单片机实验 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 。
单片机io口控制实验报告
单片机io口控制实验报告单片机实验报告实验名称:I/O 口控制姓名:张昊学号:110404247 班级:通信 2 班时间:20__.11.19南京理工大学紫金学院电光系一、实验目的1、学习 I/O 口的使用。
2、学习延时子程序的编写和使用。
3、掌握单片机编程器的使用和芯片烧写方法。
二、实验原理1、广告流水灯实验(1)做单一灯的左移右移,八个发光二极管 L1~L8 分别接在单片机的P1.0~P1.7 接口上,输出“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。
P1 口广告流水灯实验原理图如下程序设计流程:流程图如下2、模拟开关实验(1)监视开关 K1(接在 P3.0 端口上),用发光二极管 L1(接在单片机P1.0 端口上)显示开关状态,如果开关合上,L1 亮,开关打开,L1 熄火。
(2)系统板上硬件连线:把“单片机系统”A2 区的 P1.0 端口用导线连接到 D1 区的 LED1 端口上;把“单片机系统”A2 区的P3.0 端口用导线连接到 D1 区的 KEY1 端口上;实验原理图如下图程序设计流程否是二、实验内容1、流水灯#include<reg51.h> sbit p10=P1^0; sbit p11=P1^1; sbit p12=P1^2; sbit p13=P1^3; sbit p14=P1^4; sbit p15=P1^5; sbit p16=P1^6; sbit p17=P1^7;unsigned char count=0; bit flag; void main { 开始开关闭合否 L1 灭 L1 亮P1=0_ff; TMOD=0_01; TH0=55536/256; TL0=55536%256;EA=1; ET0=1; TR0=1; while(1) { p10=0; while(flag==0);flag=0; p10=1;p11=0; while(flag==0); flag=0; p11=1;p12=0; while(flag==0); flag=0; p12=1;p13=0; while(flag==0);flag=0; p13=1;p14=0; while(flag==0); flag=0; p14=1;p15=0; while(flag==0); flag=0; p15=1;p16=0; while(flag==0);flag=0; p16=1;p17=0; while(flag==0); flag=0; p17=1; } } void t0_srv interrupt 1 { TH0=55536/256; TL0=55536%256; count++; if(count==10) { flag=1;count=0; } } 2、模拟开关#include<reg51.h> sbit p30=P3^0; sbit p10=P1^0; void main {while(1) { if(p30==0)p10=0; elsep10=1; } }三、小结与体会通过本次实验学会了 I/O 口的使用,学会了延时子程序的编写和使用以及掌握了单片机编程器的使用和芯片烧写方法。
单片机io口实验结论
单片机io口实验结论单片机IO口实验结论单片机IO口是单片机与外部设备交互的重要接口,通过IO口可以实现输入输出功能。
在进行单片机IO口实验的过程中,我们得出了以下几点结论。
1. 单片机IO口具有输入和输出功能。
通过设置相应的寄存器,可以将IO口配置为输入或输出模式。
输入模式时,可以读取外部信号的状态;输出模式时,可以向外部设备发送信号。
2. 单片机IO口具有高低电平控制能力。
通过设置相应的寄存器,可以将IO口输出高电平或低电平信号。
高电平一般表示逻辑1,低电平表示逻辑0。
通过控制IO口的高低电平,可以与其他设备进行通信。
3. 单片机IO口具有上拉和下拉功能。
当IO口配置为输入模式时,可以通过上拉或下拉电阻来确保输入信号的稳定性。
上拉电阻使得输入信号在未连接时保持高电平,下拉电阻使得输入信号在未连接时保持低电平。
4. 单片机IO口具有中断功能。
通过配置相应的寄存器和中断向量表,可以使IO口在特定条件下触发中断。
当IO口输入信号满足中断触发条件时,可以立即响应中断并执行相应的中断服务程序。
5. 单片机IO口的电流限制。
在使用IO口时,需要注意IO口的电流限制。
如果连接的外部设备需要较大的电流驱动能力,可以通过外部电流放大器或继电器等方式来实现。
6. 单片机IO口的电压范围。
在使用IO口时,需要了解IO口的电压范围。
不同的单片机IO口电压范围可能有所不同,需要根据具体的需求选择合适的单片机型号和IO口。
7. 单片机IO口的电平转换。
当单片机与其他设备进行通信时,可能存在电平不匹配的情况。
可以通过电平转换电路来实现不同电平之间的转换,以确保通信的稳定性。
8. 单片机IO口的使用限制。
在使用IO口时,需要遵守单片机的使用规范和限制。
例如,不同的IO口可能有不同的功能限制、电流限制和电压范围限制,需要根据具体的芯片手册进行配置。
总结:单片机IO口是单片机与外部设备交互的重要接口,通过IO 口可以实现输入输出功能。
单片机实验报告二 单片机IO口实验
南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期:2019.4.16 实验成绩:实验二单片机I/O口实验(一)实验目的1.掌握单片机最小系统的构成,学习如何控制I/O口来驱动发光二极管,掌握移位和软件延时程序的编写。
2.熟练掌握STC型开发板的使用方法和注意事项。
3.掌握应用STC_ISP烧录过程;(二)设计要求利用51单片机及4个LED发光二极管,设计一个单片机流水灯程序,P4.7 /P4.6/ P1.6/ P1.7 来演示跑马灯。
其中流水灯的变化形式多样。
(三)实验原理STC实验箱单片机型号为IAP15W4K32S4-Student,其在线编程与在线仿真可由Keil uVision4集成开发环境和STC系列单片机在线可编程(ISP)电路实现:1.设置STC仿真器:运行STC-ISP在线编程软件,选择“keil 仿真设置”选项,如图1所示,单击“添加型号和头文件到keil中/ 添加STC仿真器驱动到keil中”,弹出“浏览文件夹”对话框,在浏览文件夹中选择keil的安装目录,单击“确定”按钮即完成添加。
根据所用芯片,单击“将IAP15W4K32S4-Student设置为仿真芯片”。
图12.Keil uVision4环境设置:选择菜单命令Project →Options for Target →Debug,选中“STC Monitor-51 Driver”,勾选“Load Application at Startup”选项和“Run to main()”选项,如图2所示。
单击图2右上角的“settings”按钮,弹出硬件参数设置对话框,如图2所示,根据仿真电路所使用的串口号(本机所用为串口5)选择串口端口,如图3所示:图2图33.STC15单击串口TTL电平通信模块结构如图4所示,P1.6、P1.7、P4.6、P4.7所连接的LED灯为共阳极LED,控制对应I/O口为低电平即可点亮LED。
单片机实验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口操作是什么吗?不知道的话跟着店铺一起来学习了解单片机IO口操作。
单片机IO口操作单片机中有四个i/o口,分别是P1,P2,P3和P4,每个引脚不止一种功能(如P3.2既是i/o口又是外部中断INT0引脚)。
下面用一个闪烁灯的例子来说明51单片机单个i/o口的用法:/************************************************************** ***************晶振:11.0593MHzLED接P1.0引脚实验结果:LED每隔0.5s闪烁一次*************************************************************** ****************/#include<reg51.h> //包含头文件#define LED P1.0 //定义LED为P1.0口void delay(unsigned int i) //延时1ms函数{for(;i>0;i--)for(int j=0;j<110;j++);}void main() //主函数{while(1){LED=1; //熄灭LEDdelay(500); //延时0.5sLED=0; //点亮LEDdelay(500);}}下面再用一个流水灯例子说明51单片机整体I/O的用法:/************************************************************** ***************晶振:11.0593MHz8个LED1~LED8分别接接P1.0~P1.7引脚实验结果:从LED1至LED8逐个点亮,呈现流水灯效果*************************************************************** ****************/#include<reg51.h>void delay(unsigned int i) //延时1ms函数{for(;i>0;i--)for(int j=0;j<110;j++);}void main(){while(1){P1=0xFF; //就是二进制中的11111111,全部熄灭delay(100); //延时0.1sP1=0xFE; //就是二进制中的11111110,点亮LED1delay(100); //延时0.1sP1=0xFD; //就是二进制中的11111101,点亮LED2delay(100); //延时0.1sP1=0xFB; //就是二进制中的11111011,点亮LED3delay(100); //延时0.1sP1=0xF7; //就是二进制中的11110111,点亮LED4delay(100); //延时0.1sP1=0xEF; //就是二进制中的11101111,点亮LED5 delay(100); //延时0.1sP1=0xDF; //就是二进制中的11011111,点亮LED6 delay(100); //延时0.1sP1=0xBF; //就是二进制中的10111111,点亮LED7 delay(100); //延时0.1sP1=0x7F; //就是二进制中的01111111,点亮LED8 delay(100); //延时0.1s}}。
单片机并行口IO的应用实验
单片机并行I/O口的应用实验一、实验目的1、熟悉Proteus软件和Keil软件的使用方法。
2、熟悉单片机应用电路的设计方法。
3、掌握单片机并行I/O口的直接应用方法。
4、掌握单片机应用程序的设计和调试方法。
二、实验内容或原理1、利用单片机并行I/O口控制流水灯。
2、利用单片机并行I/O口控制蜂鸣器。
三、设计要求1、用Proteus软件画出电路原理图。
要求在P1.0至P1.7口线上分别接LED0至LED7八个发光二极管,在P3.0口线上接一蜂鸣器。
2、编写程序:要求LED0至LED7以秒速率循环右移。
3、编写程序:要求LED0至LED7以秒速率循环左移。
4、编写程序:要求在灯移动的同时,蜂鸣器逐位报警。
四、实验报告要求1、实验目的和要求。
2、设计要求。
3、实验程序流程框图和程序清单。
4、电路原理图。
5、实验结果6、实验总结。
7、思考题。
五、思考题1、编程实现LED0至LED7以十六进制计数规律亮灯?参考实验图:程序参考:ORG 0000HLJMP MAINORG 00B0HLJMP LOOP1MAIN:MOV SP,#10HMOV A,#01HLOOP:MOV P1,ACLR P3.0LCALL DELAYRL ALJMP LOOPLOOP1:SETB P3.0MOV TH0,#3CHMOV TL0,#0B0HINC R2CJNE R2,#20,LOOP2CLR TR0LOOP2:RETIDELAY:MOV R2,#00HMOV TMOD,#01HMOV TH0,#0FCHMOV TL0,#03HSETB EASETB ET0SETB TR0DEL:CJNE R2,#20,DEL1LJMP DEL2DEL1:SJMP DELDEL2:RETEND(中断方式)ORG 0000HMOV R0,#2000MOV P1,#0FFHMOV A,#0FEHCPL ALOOP:MOV P1,AMOV P3,#01HLCALL DELRL A ;左移(右移用RR A)SJMP LOOPDEL:MOV SP,#10HMOV TMOD,#00HMOV TH0,#1EH MOV TL0,#0CH CLR EACLR ET0SETB TR0MOV P1,AMOV P3,#01HDEL1:JNB TF0,DEL1 CLR TF0MOV TH0,#1EH MOV TL0,#0CH MOV P3,#00H DJNZ R0,DEL1RETEND思考题参考:ORG 0000HMOV R1,#0FH MOV R0,#2000 MOV P1,#0FFH MOV A,#0FEHCPL ALOOP:MOV P1,A MOV P3,#01H LCALL DELINC ADJNZ R1,LOOP SJMP LOOPDEL:MOV SP,#10H MOV TMOD,#00H MOV TH0,#1EH MOV TL0,#0CH CLR EACLR ET0SETB TR0MOV P1,AMOV P3,#01HDEL1:JNB TF0,DEL1 CLR TF0MOV TH0,#1EH MOV TL0,#0CH MOV P3,#00H DJNZ R0,DEL1RETEND(查询方式)。
实验二单片机IO口的使用
实验二单片机IO口的使用实验目的:掌握单片机IO口的使用方法,了解IO口的输入输出功能。
一、实验介绍在单片机系统中,IO口是通过端口来实现与外部设备的通信。
IO口可以用来输入控制信号或者输出数据信号,是单片机与外部世界交互的重要接口。
二、实验器材与工具1.单片机开发板2.扁平灯泡3.蜂鸣器4.电阻、电容等元器件5.逻辑分析仪三、实验步骤1.简单的IO口输出实验将一个扁平灯泡连接到单片机的一个IO口上,并将该IO口配置为输出模式。
实验中,可以通过控制该IO口的高低电平来控制灯泡的亮灭。
2.IO口输入实验将一个开关连接到单片机的一个IO口上,并将该IO口配置为输入模式。
实验中,可以读取该IO口的电平状态,来判断开关的状态。
3.组合实验将多个扁平灯泡和开关连接到单片机的IO口上,并通过控制和读取IO口的电平状态来实现各种功能。
可以实现灯泡的闪烁、扁平灯泡的亮度调节、蜂鸣器的控制等功能。
四、实验原理1.IO口模式设置单片机内部有寄存器用于控制IO口的工作模式。
通过设置相应的寄存器来将指定的IO口配置为输入或者输出模式。
2.IO口输出控制IO口的输出控制是通过操作相应的寄存器来实现的。
输出操作可以将指定的IO口设置为高电平或者低电平。
3.IO口输入读取IO口的输入读取也是通过操作相应的寄存器来实现的。
读取操作可以获取指定IO口的电平状态,以判断外部设备的状态。
五、实验总结通过这次实验,我学会了单片机IO口的配置与使用方法。
IO口是单片机与外部设备交互的重要接口,掌握了IO口的使用方法后,可以实现各种功能,如灯光控制、开关检测等。
同时,我也了解到了IO口的原理和应用场景,为以后的电子设计打下了基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
姓名:学号:日期:
实验二单片机I/O口的使用
一、实验名称:单片机I/O口的使用
二、实验目的
1.掌握在Keil环境下建立项目、添加、保存源文件文件、编译源程序的方法;
2.掌握运行、步进、步越、运行到光标处等几种调试程序的方法;
3.掌握在Proteus环境下建立文件原理图的方法;
4.实现Proteus与Keil联调软件仿真。
三、使用仪器设备编号、部件及备件
1.实验室电脑;
2.单片机实验箱。
四、实验过程及数据、现象记录
1.在Proteus环境下建立如下仿真原理图,并保存为文件;
原理图中常用库元件的名称:
无极性电容:CAP 极性电容:CAP-ELEC 单片机:AT89C51
晶体振荡器:CRYSTAL 电阻:RES 按键:BUTTON
发光二极管:红色LED-RED 绿色LED-GREEN 蓝色LED-BLUE 黄色LED-YELLOW
2.在Keil环境下建立源程序并保存为.ASM文件,生成.HEX文件;
参考程序如下:
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV A,# H
LOOP: MOV P2,A
CALL DELAY
SJMP LOOP
DELAY: MOV R1,# H
DL1: MOV R2,# H
DL2: MOV R3,# H
DJNZ R3,$
DJNZ R2,DL2
DJNZ R1,DL1
RET
END
将以上程序补充完整,流水时间间隔为50ms。
3.将.HEX文件导入仿真图,运行并观察结果;
4.利用Keil软件将程序下载至实验箱,进行硬件仿真,观察实验结果。
五、实验数据分析、误差分析、现象分析
现象:进行软硬件仿真时,观察到8支LED发光二极管流水发光。
六、回答思考题
1.如何让改变流水方向?
2.若将R3至R10上拉电阻省略,8支LED还能正常发光吗?
3.如果将LED接到P0口与接到P2口硬件设计时应注意什么问题?
Keil软件建立项目的方法:
1.新建项目
2.新建文件
3.添加文件
4.设置选项
5.重建所有目标文件
6.调试仿真。