单片机实验-单片机并行IO口的应用实验
单片机原理与应用 实验二 IO口的使用实验

1.实验二单片机输入及输出实验(1)实验要求1)由于实验学时很少,请提前预习和思考实验内容,将流程图及程序准备好,到实验室进行调试和验证。
2)由于实验室计算机C盘和D盘被保护,所以开始实验前在计算机E盘建立自己的文件夹,文件夹最好为英文名称。
实验中及时保存自己的源文件。
3)P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮,每个发光二极管点亮时间为1秒;仔细思考,画出程序流程图;编写程序并写清注释;4)P2.0、P2.1作输入口接两个拨动开关,P1作输出口,接八个发光二极管,编写程序读取开关状态,根据此状态,改变八个发光二极管的点亮方式(至少两种)。
编程时应注意P2.0、P2.1作为输入口时应先置1,才能正确读入值。
仔细思考,画出程序流程图;编写程序并写清注释;5)考虑使用定时器完成需要的延时,可以采用查询或是中断的方式。
首先根据延时时间确定定时器的工作方式(13位、16位还是8位),然后据此计算出定时器初值,最后确定选择使用T0还是T1,并设置相应特殊功能寄存器(TMOD、TCON)。
可根据课件中的例子进行修改。
(2)实验目的1)学习单片机的I/O口的使用方法;2)学习延时子程序的编写和使用;3)学习分支指令的使用;4)学习使用定时器完成延时的方法。
(3)实验电路及连线连线连接孔1 连接孔21 P1.0 L02 P1.1 L13 P1.2 L24 P1.3 L35 P1.4 L46 P1.5 L57 P1.6 L68 P1.7 L79 P2.0 S010 P2.1 S1(4)实验说明1)对于MCS51MCU,P2口是准双向口。
它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P2口用为输入口时,必须先对它置“1”。
若不先对它置“1”,读入的数据是不正确的。
2)8051延时子程序的延时计算问题,需要考虑系统晶振和延时时长,对于较长的延时需要采用多重循环的方式得到。
如实验要求发光二极管点亮1秒,请参考课件上延时50ms的例子进行修改。
单片机io口实验[单片机IO口控制实验实验报告]
![单片机io口实验[单片机IO口控制实验实验报告]](https://img.taocdn.com/s3/m/7470e10d77c66137ee06eff9aef8941ea76e4bd4.png)
单片机io口实验[单片机IO口控制实验实验报告]一、实验目的1、熟悉MCS-51的I/O结构;2、掌握MCS-51I/O的使用方法;3、掌握MCS-51的中断机制。
二、实验原理1、MCS-51单片机的硬件结构片内结构:2、内部数据存储器:3、SFR的名称及其分布:4、I/O端口地址:5、P0P3端口功能总结:P0P3口都是并行I/O口,但P0口和P2口,还可用来构建系统的数据总线和地址总线,所以在电路中有一个MU某以进行转换。
而P1口和P3口无构建系统的数据总线和地址总线的功能,因此,无MU某P0口的MU某的一个输入端为“地址/数据〞信号。
P2口的MU某勺一个输入信号为“地址〞信号。
在4个口中只有P0口是一个真正的双向口,P1P3口都是准双向口。
原因:P0口作数据总线使用时,需解决芯片内外的隔离问题,即只有在数据传送时芯片内外才接通;不进行数据传送时,芯片内外应处于隔离状态。
为此。
P0口的输出缓冲器应为三态门。
P0口中输出三态门是两只场效应管组成,所以是一个真正的双向口。
P1P3口,上拉电阻代替P0口中的场效应管,输出缓冲器不是三态的一准双向口。
P3口的口线具有第二功能,为系统提供一些控制信号。
因此P3口增加了第二功能控制逻辑。
这是P3口与其它各口的不同之处。
6、P0口结构及特点:⑴P0口结构与运作1个输出锁存器,用于进行输出数据的锁存;2个三态输入缓冲器,分别用于锁存器和引脚数据的输入缓冲;1个多路开关MU某它的一个输入来自锁存器,另一个输入是地址/数据信号的反相输出。
在控制信号的的控制下能实现对锁存器输出端和地址/数据线之间的切换;两只场效应管组成的输出驱动电路。
⑵P0口的特点P0口是一个双功能的端口:地址/数据分时复用口和通用I/O口;具有高电平、低电平和高阻抗3种状态的I/O端口称为双向I/O端口。
P0口作地址/数据总线复用口时,相当于一个真正的双向I/O口。
而用作通用I/O口时,于引脚上需要外接上拉电阻,端口不存在高阻状态,此时P0口只是一个准双向口;为保证引脚上的信号能正确读入,在读入操作前应首先向锁存器写1;单片机复位后,锁存器自动被置1;一般情况下,如果P0口已作为地址/数据复用口时,就不能再用作通用I/O口使用;P0口能驱动8个TTL负载。
单片机并行I O口应用

关系运算符
关系运算符 优先级
高
<
<=
>
>=
== !=
低
关系表达式
用关系运算符将两个表达式(可以是算术表达 式、关系表达式、赋值表达式或逻辑表达式) 连接起来的式子,称为关系表达式。 关系表达式的值为逻辑值“真”或“假”,以 1代表“真”,以0代表“假”。 例如: (1)关系表达式“8==4”的值为 ,表达式的 值为 。 (2) 关系表达式“5>0”的值为 ,表达式的 值为 。
选择语句
基本if语句的格式如下: if (表达式) { 语句组; } if语句执行过程:当“表达式”的结果为“真”时,执 行其后的“语句组”,否则跳过该语句组,继续执行下 面的语句。
表达式 真(非0) 假(0)
语句组
选择语句
if语句中的“表达式”通常为逻辑表达式或关系表达式, 也可以是任何其他的表达式或类型数据,只要表达式的 值非0即为“真”。以下语句都是合法的: if(3){……} if(x=8){……} if(P3_0){……} 在if语句中,“表达式”必须用括号括起来。 在if语句中,花括号“{ }”里面的语句组如果只有一条 语句,可以省略花括号。如“if (P3_0==0) P1_0=0;”语 句,但是为了提高程序的可读性和防止程序书写错误, 建议读者在任何情况下,都加上花括号。
下一条语句
while执行过程
循环语句
循环体 格式:do { 循环体语句组; 绝对不能少分号! 花括号不 } while(循环继续条件); 能丢掉! 请问:下述程序实现了什么功能? do-while语句用来实现“直到型”循环 main( ) 执行过程:先无条件执行一次循环体, { int i,sum=0; 然后判断条件表达式,当表达式的值 do 为真(非0)时,返回执行循环体直 { sum=sum+i; 到条件表达式为假(0)为止。 i++; }while(i<=100); }
单片机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口的应用

P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
89C51
开关应用接口电路
四.独立式按键的程序处理
键盘实质上是一组开关,常用的按键都为机械弹 性开关,利用机械触点的断、合作用来实现按键功 能。当按键或键松开时,由于机械撞击的作用,开 关的动作会产生抖动,时间在5~10mS,若不作处 理,很容易误把一次按键当多次按键。 解决的办法是: A: 加去抖动硬件电路。 B:用软件延时,待键稳定后再作键输入处理
A AB B BC C CA
注:若按6、5、4、3、2、1方向输出,则电机反方向运行
输出波形图:
P1.0
P1.1
P1.2
(2)转速显示: 设最快转速时相序输出周期为1ms,可用按键调 节,调节分10档,每档周期增加1ms,档位用LED数 码管显示0~9来指示。 (3)键盘电路:如右图
系统采用其中四个按键, 安排如下: K1: 正转启动 K2:反转启动 K3:停机 K4:速度循环调节
1.特性 4个口可以字节输入、输出,也可以位输入、输出。 P0口作输出口使用时要加上拉电阻,阻值约0.5K~10K, 视负载而定。 P0口最大负载能力为8个TTL负载;P1~P3口最大负载能 力为4个TTL负载(注:指的是高电平输出,若低电平 输出负载能力可加大)。 4个都是准双向I/O口,作输入时,必须先向端口写入 “1”,使端口处于高阻状态。 单片机复位时,所有端口全为“1”。
二、静态LED数码管显示与驱动 1.LED显示器结构及其工作原理 LED显示器是由发光二极管组成的用来显示特定字 段的显示器。常用的有7段码和“米”字形两种,当 然也可以由用户根据自己的需要定制。 发光二极管分共阳极和共阴极两种,如图所示。
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的原理及应用单片机实验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. 运行程序,获取温度传感器的模拟信号,并进行显示或者其他处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机并行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以十六进制计数规律亮灯?
原理图:
程序清单:
/*(1)LED0~LED7以秒速率循环右移
蜂鸣器逐位报警*/
ORG 0000H
MAIN:MOV A, #11111110B;赋初值
LOOP:MOV P1,A ;赋值给P1口
CPL P3.0 ;低电平有效
LCALL DELAY ;调用延时电路
SETB P3.0 ;控制蜂鸣器叫的时间间隔
LCALL DELAY
RL A
LJMP LOOP
DELAY:MOV R7,#0FFH
LOOP1:MOV R6,#0F4H
LOOP2:MOV R5,#02H
DJNZ R5,$ ;"$"当前的PC值,R5的内容减1不为零,继续执行该语句
DJNZ R6,LOOP2
DJNZ R7,LOOP1
RET
END
/*(2)LED0~LED7以十六进制计数规律亮灯*/
ORG 0000H
MOV A,#0FFH
LOOP: MOV P1,A
LCALL DELAY
DEC A
CJNE A, #0FFH,LOOP
MOV A, #0FFH
LJMP LOOP
DELAY:MOV R7, #0A7H
LOOP1:MOV R6, #0ABH
LOOP2:MOV R5, #10H
DJNZ R5, $ ;"$"当前的PC值。
R5的内容减1不为零
DJNZ R6, LOOP2
DJNZ R7, LOOP1
RET
END。