单片机并行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口控制实验是单片机学习中的重要实践环节。

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

2.4 单片机并行IO口(实验2)

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

实验9并行IO口

实验9并行IO口

三、实验原理
51单片机有 单片机有P0,P1,P2,P3四个并行 四个并行I/O 单片机有 四个并行 其中P0用作地址线低 用作地址线低8位和数据 口,其中 用作地址线低 位和数据 线使用, 口用作地址线高 口用作地址线高8位 线使用,P2口用作地址线高 位,P3 口是双功能口,一般使用第二功能。 口是双功能口,一般使用第二功能。 所以真正作为用户使用的就是P1口 所以真正作为用户使用的就是 口。 面对这种问题,资源不足, 面对这种问题,资源不足,我们要对 I/O口进行扩展。 口进行扩展。 口进行扩展
单片机及接口技术 并行I/O口扩展实验 实验九 并行 口扩展实验
实验指导教师: 实验指导教师:孙歆钰 一 、 实验目的 1 、掌握 掌握MCS-51单片机系统扩展 口的方法。 单片机系统扩展I/O口的方法 单片机系统扩展 口的方法。 2、熟悉仿真软件 的使用方法。 、熟悉仿真软件Proteus的使用方法。 的使用方法 3、熟悉编辑软件操作 ,实验箱操作 、 实验箱操作 二 、 实验器材 1、PC一台 、 一台 2、HK-51软件 、 软件 3、Proteus软件 、 软件
元件名称 AT89C51 74LS373 LED-RED NOR 74LS Active Active 所属类 Microprocessor ICs 所属子类 8051 Family Generic Generic -
2. 电路原理图 元件全部添加后, 元件全部添加后,在Proteus ISIS的编辑区域 的编辑区域 中按图9-2所示的原理图连接硬件电路 所示的原理图连接硬件电路。 中按图 所示的原理图连接口扩展两个 O 口扩展两个I 如图:采用P0口扩展两个I/O口,并实现 16个发光二极管的流水灯的点亮。 个发光二极管的流水灯的点亮。 个发光二极管的流水灯的点亮

8155可编程并行IO扩展接口实验

8155可编程并行IO扩展接口实验

实验八、8155可编程并行I/O扩展接口实验一、实验目的1.熟悉8155并行接口芯片的基本工作原理及应用2.掌握单片机与8155的接口电路设计和编程二、实验设备1.仿真器2.8155可编程并行I/O扩展接口模块3.单片机最小系统模块4.数码管动态扫描显示模块5.矩阵式键盘模块三、实验要求连接单片机最小系统、8155扩展接口实验模块、数码管动态扫描显示模块、矩阵式键盘模块,要求在键盘按下时,8位LED动态显示器上最低位显示相应的字符,以前的各位字符向高位推进1位。

四、实验原理8155芯片内包含有256字节RAM,2个8位、1个6位的可编程并行I/O口,和1个14位定时器/计数器。

由于8155既具有RAM又具有I/O口,因而是单片机系统中最常用的外围接口芯片之一。

4.1引脚说明8155共40个引脚,采用了双列直插的封装,主要引脚功能如下:◆AD7—AD0:地址数据总线;单片机和8155之间的地址、数据、命令、状态信息都是通过它来传送的。

◆CE:片选信号线,低电平有效。

◆RD:存储器读信号线,低电平有效。

◆WR:存储器写信号线,低电平有效。

◆ALE:地址及片选信号锁存信号线,高电平有效。

在下降沿时将地址及片选信号锁存到器件中。

◆IO/M:IO接口与存储器选择信号线,高电平选择I/O,低电平选择存储器。

◆PA7—PA0:A口输出/输入线。

◆PB7—PB0:B口输出/输入线。

◆PC5—PC0:C口输出/输入或控制信号线,用作控制信号时其功能如下:◆PC0:A INTR(A口中断信号线)◆PC1:A BF(A口缓冲器满信号线)◆PC2:ASTB(A 口选通线)◆PC3:B INTR(B口中断信号线)图8-1 8155引脚与逻辑图◆PC4:B BF(B口缓冲器满信号线)◆PC5:BSTB(B 口选通线)表8-1 地址与寄存器映射◆TIMER OUT:定时器/计数器输出端;◆RESET:复位信号线。

◆8155引脚与逻辑如图8-1所示。

并行IO接口实验报告

并行IO接口实验报告

并行I/O接口实验报告一、实验目的1.掌握GPIO IP 核的工作原理和使用方法。

2.掌握IO接口程序控制方法3.掌握中断控制方式的IO接口设计原理4.掌握中断程序设计方法二、实验任务使用查询、中断两个方式做独立式开关输入,将开关的状态显示到console。

三、硬件平台建立1.硬件框图2.通过xps建立最小系统,打开system.xmp文件3.添加和配置GPIO核,并改写ucf文件4添加和配置中断控制器IP核5产生外部GPIO连接四、软件平台建立1.软件流程图2.查询代码/** gpio.c** Created on: 2017-5-24* Author: 201511*/#include "xparameters.h"#include "xgpio.h"#include "xintc.h"#include "stdio.h"void Initialize();void Delay_50ms();void PushBtnHanler(void*CallBackRef);void SwitchHandler(void*CallBackRef);XGpio Dips;XIntc intCtr1;int pshDip;int state1;int main(){Initialize();xil_printf("\r\nRunning GpioInputInterrupt!\r\n");while(1){if(pshDip) //若按下按键,则打印信息{xil_printf("Switch Interrupt Trigger!!!the state is 0x%X\n\r",state1);pshDip=0;}}return 0;}void Initialize(){//初始化Dips实例,并设定其为输入方式XGpio_Initialize(&Dips,XPAR_DIP_DEVICE_ID);XGpio_SetDataDirection(&Dips,1,0xff);//初始化intCtrl实例XIntc_Initialize(&inCtrl,XPAR_AXI_INTC_0_DEVICE_ID);//GPIO中断使能XGpio_InterruptEnable(&Dips,1);XGpio_InterruptGlobalEnable(&Dips);//对中断控制器进行中断源使能XIntc_Enable(&intCtrl,XPAR_AXI_INTC_0_DIP_IP2INTC_IRPT_INTR);//注册中断服务函数XIntc_Connect(&intCtrl,XPAR_AXI_INTC_0_DIP_IP2INTC_IRPT_INTR,(XInterruptHandler)SwitchHandler,(void*)0);microblaze_enable_interrupts(); //允许处理器处理中断;//注册中断控制器处理函数microblaze_register_handler((XInterruptHandler)XIntc_InterruptHandler,(void*) &intCtrl);XIntc_Start(&inCtrl,XIN_REAL_MODE); //启动中断控制器}void Delay_50ms(){int i;for(i=0;i<5000000;i++);}void SwitchHandler(void*CallBackRef){state1=XGpio_DiscreteRead(&Dips,1); //读取Switch开关的状态值pshDip=1;XGpio_InterruptClear(&Dips,1); //清除中断位置}3.端口修改3.五、实验小结在这个实验中,主要分为两个部分,一个部分是硬件设计,另一个部分是软件设计,对我来说在硬件设计部分容易在操作步骤上出问题,很容易点错,而软件上,虽然代码比较少,但是不太容易一理解,由于采用API函数,所以会持续性的调用函数。

单片机并行I O口应用

单片机并行I O口应用

循环变量增值
for的下一条语句
for(循环变量赋初值;循环继续条件;循环变量增值 ) { 循环体语句组; }
C语言数据与运算



1. 赋值运算符 2. 算术运算符和算术表达式 3. 关系运算符和关系表达式 4. 逻辑运算符和逻辑表达式
分隔符 为分号
赋值运算符

赋值语句的作用是把某个常量或变量或 表达式的值赋值给另一个变量。
C语言的基本语句
C语言程序的执行部分由语句组成。C语言提供了丰富 的程序控制语句,按照结构化程序设计的基本结构:顺 序结构、选择结构和循环结构,组成各种复杂程序。这 些语句主要包括表达式语句、复合语句、选择语句和循 环语句等。
表达式语句和复合语句
表达式语句是最基本的C语言语句。表达式语句由表 达式加上分号“;”组成,其一般形式如下: 表达式; 执行表达式语句就是计算表达式的值。 在 C 语言中有一个特殊的表达式语句,称为空语句。 空语句中只有一个分号“;”,程序执行空语句时需要 占用一条指令的执行时间,但是什么也不做。在C51程 序中常常把空语句作为循环体,用于消耗CPU时间等待 事件发生的场合。
P1口的结构
P1口逻辑电路
P1口的结构
P1口是准双向口,只能作为通用I/O口使用。 P1口作为输出口使用时,无需再外接上拉电阻。 P1口作为输入口使用时,应区分读引脚和读端口。读 引脚时,必须先向电路中的锁存器写入“1”,使输出级 的FET截止。
P2口的结构
P2口逻辑电路
P2口的结构
单片机系统扩展时,P2口还可以用来作为高8位地址 线使用,与P0口的低8位地址线共同组成16位地址总线, 此时多路开关应接通“地址”端。 P2口是准双向口,在实际应用中,可以用于为系统提 供高8位地址,也能作为通用I/O口使用。 P2口作为通用I/O口的输出口使用时,与P1口一样无 需再外接上拉电阻。 P2口作为通用I/O口的输入口使用时,应区分读引脚 和读端口。读引脚时,必须先向锁存器写入“1”。

单片机并行IO口8255扩展实验

实验一并行I/O口8255扩展实验
一、实验目的
了解8255芯片的结构及编程方法,学习模拟交通灯控制的实现方法。

二、实验内容
用8255做输出口,控制十二个发光二极管燃灭,模拟交通灯管理。

三、实验说明
因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化情况和规律。

假设一个十字路口为东西南北走向。

初始状态0为东西红灯,南北红灯。

然后转状态1东西绿灯通车,南北红灯。

过一段时间转状态2,东西绿灯灭,黄灯闪烁几次,南北仍然红灯。

再转状态3,南北绿灯通车,东西红灯。

过一段时间转状态4,南北绿灯灭,黄灯闪烁几次,东西仍然红灯,最后循环至状态1。

四、实验原理图
五、实验程序框图(8255.ASM)
六、实验步骤
①8255 PC0-PC7、
PB0-PB3分别接L0~L11
红、黄、绿发光二极管;
②8255CS接Y0(在仿
真插头所在扩展总线区);
③打开8255接口区中的
电源开关S1;
④调试、运行程序(内
程序,外数据);
⑤初始态为四个路
口的红灯全亮之后,东西
路口的绿灯亮南北路口的
红灯亮,东西路口方向通
车。

延时一段时间后东西
路口的绿灯熄灭,黄灯开
始闪烁。

闪烁若干次后,
东西路口红灯亮,而同时
南北路口的绿灯亮,南北
路口方向开始通车,延时
一段时间后,南北路口的
绿灯熄灭,黄灯开始闪烁。

闪烁若干次后,再切换到东西路口方向,之后重复以上过程。

.。

51单片机IO口应用实验

计算机学院名称:单片机原理及接口技术专业:计算机科学与技术班级:计科131班学号:201300814126学生姓名:郑泽然指导教师:薛滨2016年 4 月16 日实验二51单片机I/O口应用实验一、实验目的1、掌握单片机P3口、P1口简单使用。

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

二、实验内容1、P3.3口做输入口,外接一脉冲,每输入一个脉冲,P1口按十六进制加一输出。

2、P1口做输出口,编写程序,使P1口接的8个发光二极管L0—L7按16进制加一的方式点亮发光二极管。

三、实验说明1、P1口是准双向口,它作为输出口时与一般的双向口使用方法相同,由准双向口结构可知:当P1口作为输入口时,必须先对它置高电平,使内部MOS管截止,因内部上拉电阻是20KΩ—40KΩ,故不会对外部输入产生影响。

若不先对它置高,且原来是低电平,则MOS管导通,读入的数据不正确。

2、延时子程序的延时计算。

对于延时的程序DELAY :MOV R6,#00HDELAY1:MOV R7,#80HDJNZ R7,$DJNZ R6,DELAY1查指令表可知MOV、DJNZ指令均需用两个机器周期,而一个机器周期时间长度为12/ 6.0MHZ,所以该段指令执行时间为:(((128+1)×256)+1)×2×(12÷6000000)=132.1ms。

四、实验原理图五、 实验程序框图主程序:延时子程序:六、实验步骤1、系统板上P3.3用插针连至K1,JU2(P1.0~P1.7)用8芯线连至JL(L0~L7)。

2、调试、运行程序test1中的MCUIO.ASM。

3、开关K1每拨动一次,L0~L7发光二极管按16进制方式加一点亮。

七.程序代码ORG 0000hAJMP HA1SORG 0030HHA1S: MOV A,#00HHA1S1: JB P3.3,HA1S1MOV R2,#20HLCALL DELAYJB P3.3,HA1S1HA1S2: JNB P3.3,HA1S2MOV R2,#20HLCALL DELAYJNB P3.3,HA1S2INC APUSH ACCMOV P1,APOP ACCAJMP HA1S1DELAY: PUSH 02H DELAY1: PUSH 02H DELAY2: PUSH 02H DELAY3: DJNZ R2,DELAY3POP 02HDJNZ R2,DELAY2POP 02HDJNZ R2,DELAY1POP 02HDJNZ R2,DELAYRETEND八.实验结果图。

单片机--第六章:并行接口及应用

读锁存器 2 地址/数据 控制=1 3 4
Q /Q
Vcc
内部 总线
写锁 存器
D CK
引脚P0.X
1 读引脚 =1 控制=1时,此脚作地址/数据复用口: (3)输入数据时,输入指令将使引脚与内部总线直通6
单片机的引脚(P1口)

P1.0—P1.7: 准双向I/O口(内置了上拉电阻) 输出时一切照常,仅在作输入口用时要先对其 写“1”。
内部 总线 写锁 存器
=1 引脚P2.X
D CK
1
3
0
截 止
1 读引脚 =0 控制=1 时,此脚作高8位地址A8—A15输出口: 当输出 =1 时
单片机的引脚(P2口)

P2.0—P2.7: 双向I/O (内置了上拉电阻) 寻址外部程序存储器时输出高8位地址;不接外 部程序存储器时可作为8位准双向I/O口使用。
CK
控制 =0 地址/数据 控制 3 4
Q
/Q
Vcc
引脚P0.X
1 读引脚 控制=0 时,输出口,开漏输出
单片机的引脚(P0口)

P0.0—P0.7: 双向I/O (内置场效应管上拉) 寻址外部程序存储器时分时作为双向8位数据口 和输出低8位地址复用口;不接外部程序存储器 时可作为8位准双向I/O口使用。
第二功能输出 读锁存器 2 Vcc 内部上拉电阻
内部 总线 写锁 存器
D CK
Q /Q
3
引脚 P3.X
1 读引脚 第二功能输入
4
单片机的引脚(P3口)

P3.0—P3.7: 双功能口(内置了上拉电阻) 它具有特定的第二功能。在不使用它的第二功 能时它就是普通的通用准双向I/O口。

单片机IO口应用及键盘实验4-1

由程序和电路直接相应(预先设定功能,采用相应指令)
其他:
通道0作为I/O输出时,需要上拉电阻。驱动 MOS电路时,阻值为4.7K欧姆,驱动LED 显示器时为470欧姆;
通道0作为数据/地址线工作时,不需要上拉 电阻;
并口输出应用举例
VCC
R
VCC 220
2k Px.x
OUT LED
继电器
2 键盘扩展原理
消除键抖:JNB P口,分支
延迟程序
JB
P口,分支
按下一次键,在很短时间内弹起,算一次键抖
K3,K4处理程序结构
按键按下 消抖
寄存器加一/减一
寄存器判断
没有达到要求, 寄存器值赋值给A
达到要求, 寄存器值修改, 再把值送入A
查表显示
逻辑分析
先制一张表,表里面放入要显示的数值0~9共 十个数,表中数值地址也为0~9
KeyDown: CLR UpDown ;第四个键按下后的处理 KEY_RET: RET
采用中断方式 ?如何编程?
3 键盘实验(独立键盘)
键盘硬件连接如图 实验要求: 编写程序实现: 1)按K1,数码管显示0;按K2,数码管显示9 2)按K3,数码管当前数值加一 按K3,数码管当前数值减一
键盘的按键有触点式和非触点式 ; 按键开关的抖动问题 数字、功能、命令 键号、键值 重键
图2
键盘
键盘的类型: 独立式 行列式(或矩阵式) 键盘的工作方式 编程扫描(查询法) 定时扫描 中断
键盘和单片机的连接
和I/O相连:将每个按键的一端接到单片机的I/O口,另 一端接地,如图3所示是实验板上按键的接法,四个 按键分别接到P3.0 、P3.1、P3.2和P3.3
单片机I/O口应用及键盘实验
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验目的
1、熟悉Proteus软件与Keil软件的使用方法。

2、熟悉单片机应用电路的设计方法。

3、掌握单片机并行I/O口的直接应用方法。

4、掌握单片机应用程序的设计与调试方法。

二、设计要求
1、用Proteus软件画出电路原理图。

要求在P1、0至P1、7口线上分别接LED0至LED7八个发光二极管,在P3、0口线上接一蜂鸣器。

2、编写程序:要求LED0至LED7以秒速率循环右移。

3、编写程序:要求LED0至LED7以秒速率循环左移。

4、编写程序:要求在灯移动的同时,蜂鸣器逐位报警。

三、实验程序流程框图与程序清单
延时程序流程框图:
实验程序流程框图:
汇编程序:
ORG 0000H
MOV A, #11111110B
MOV P3, #0FFH MAIN : MOV R0, #07H LOOP1: LCALL DELAY
MOV P3, A
RL A
CLR P2、0
LCALL DELAY
SETB P2、0
DJNZ R0, LOOP1
MOV R0, #07H LOOP2: LCALL DELAY
MOV P3, A
RR A
CLR P2、0
LCALL DELAY
SETB P2、0
DJNZ R0, LOOP2
LJMP MAIN
DELAY: M OV R7, #17H DL1: MOV R6, #98H
DL0: MOV R5, #46H DJNZ R5, $
DJNZ R6, DL0
DJNZ R7, DL1
RET
END
C语言程序:
#include<reg52、h>
#include<intrins、h>
unsigned char temp;
int i;
void delay(void);
sbit speaker=P2^0;
void main()
{ temp=0xfe;
P3=temp;
while(1)
{
for(i=0;i<7;i++)
{
temp=_crol_(temp,1);
speaker=0;
delay();
speaker=1;
delay();
P3=temp;
}
for(i=0;i<7;i++)
{
speaker=0;
temp=_cror_(temp,1);
delay();
speaker=1;
delay();
P3=temp;
}
}
}
void delay(void)
{
unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
_nop_;
}
四:电路原理图:
五:实验结果
1、2、3、4、5、6、7、8、9、10、11、12、13、14、
15、16、
六、实验总结
通过本次实验,我复习了Proteus软件的使用方法,学习了更多的对KEIL的调试方法,对keil与Proteus的使用更加熟悉了,通过用Proteus软件画图,熟悉了单片机电路基本的设计方法,掌握了单片机并行I/O口的直接应用方法,对子程序的调用左移、右移指令可以灵活的运用,同时对keil产生的HEX型的文件的有了新的认识与应用
七、思考题
1、编程实现LED0至LED7以十六进制计数规律亮灯?
程序设计流程框图如下:
开始
初始化
#FF P1,#FF A,
(A) P1
P3.0清零 延迟 再将
P3.0置1 再延时
A的内容自减1
汇编实验程序:
ORG 0000H
MAIN: MOV P3, #256
MOV A, #0FFH
LOOP: MOV P3, A
CLR P2、0
LCALL DELAY
SETB P2、0
LCALL DELAY
DEC A
LJMP LOOP
DELAY: MOV R7, #17H DL1: MOV R6, #98H DL0: MOV R5, #46H DJNZ R5, $
DJNZ R6, DL0
DJNZ R7, DL1
RET
END
C语言程序:
#include<reg52、h>
#include<intrins、h>
unsigned char temp;
int i;
void delay(void);
sbit speaker=P3^1;
void main()
{ P3=0X00;
temp=0xFF;
while(1)
{
for(i=0;i<0XFF;i++)
{speaker=0x00;
delay();
speaker=0x01;
P3=temp ;
temp=temp-1;
}
}
}
void delay(void)
{
unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
_nop_;
}
结果如下图所示:
1.2、3.4、5.6、7.8、9.10、11、12、。

相关文档
最新文档