单片机并行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扩展实验

单片机并行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口应用实验

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

单片机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口应用及键盘实验

单片机实验报告二 单片机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。

实验7 并行IO接口82C55应用

实验7 并行IO接口82C55应用

上海电力学院单片机实验报告实验名称:并行I/O接口82C55应用试验日期:2012年12月13日专业:电子科学与技术专业姓名:李名扬班级:2010142学号:20102466(一)基本实验一、实验目的了解8255芯片的结构及编程方法。

二、实验内容用8255的PA口做输入口,PB口做输出口,控制PA口状态从PB口输出显示。

三、实验说明通过PA口接8个开关K1~K8,PB口接8个发光二极管,从PA口读入8位开关的状态送PB口显示,拨动K1~K8,PB口上接的8个发光二极管L0~L7对应显示K1~K8的状态。

图(7-1)五、实验程序框图六、实验步骤1、8255 芯片的PA(PA0~PA7)插座用8芯线连接开关JK(K1~K8)。

2、8255 芯片的PB(PB0~PB7)连接发光二极管JL(L0~L7)。

3、8255芯片的片选8255CS插孔接译码输出Y0。

4、调试、运行程序test3中8255.ASM。

拨动开关,相对应的发光二极管显示其状态。

七、试验程序(二)提高实验一、实验内容用82C55控制LED显示器。

82C55的PA口以静态方式控制8个数码管显示器的显示内容,PB口控制数码管显示器的选通输端口。

通过PC口读入按键控制信息。

K1按下,数码管LED0显示数字:0K2按下,数码管LED1显示数字:1K3按下,数码管LED2显示数字:2K4按下,数码管LED3显示数字:3K5按下,数码管LED4显示数字:4K6按下,数码管LED5显示数字:5K7按下,数码管LED6显示数字:6K8按下,数码管LED7显示数字:7二、LED显示器的线路图三、实验步骤1、82C55芯片的PC0~PC7插孔依次接在开关K1~K8。

2、82C55芯片的PB0~PB7连接LED显示区BIT。

3、82C55芯片的PA0~PA7连接LED显示区CODE。

4、82C55芯片的片选82C55CS插孔接译码输出Y0。

5、调试运行程序,拨动开关,相对应的LED显示器显示其状态。

25124-项目2单片机的并行IO口应用实践

25124-项目2单片机的并行IO口应用实践

· 求连乘积的流程图如图2-11所示。
· 程序代码如下:
· 【例】用for循环求累加和 sum=1+2+3+4+……+100。 · 程序代码如下:
(4)goto语句
· goto语句是一条无条件转向语句,它 的一般形式如下:
· 其中,语句标号是一个带有冒号(:) 的标识符,语句的含义是无条件地转移至 标号处。 · goto语句与if语句一起可以构成循环。
· 其中,sum的值超过了255,应定义成 unsigned int型变量。
· 循环初值:sum=0,i=1。
· 用i作循环控制变量,则循环条件为i≤100, 每次循环后应将i值加1。 · 求累加和的流程图如图2-10所示。
· 程序代码如下:
· 【例】用do-while循环求连乘积 product=1 × 2 × 3 × … × 10。
(2)程序代码
· 实现本任务要求的程序代码如下:
任务4 制作跑马灯
【相关知识】
1.算术运算
· C51提供了8种算术运算符,如表2-10 所示。
2.位操作运算
· C51中有6种位操作运算,如表2-11所示。
· 用X表示一位取值任意的二进制数,位 运算的法则如表2-12所示。
3.循环结构
· 由于滥用goto语句将会使程序流程无 规律、可读性差,所以在C51程序设计中 一般不用goto语句构成循环,如果是为了 提高程序执行的效率,可以用goto语句从 多层循环的内层循环跳至外层。
· 用goto语句构成do-while循环的一般形 式如下:
【任务实施】
1.搭建硬件电路
· 任务4的硬件电路如图2-12所示。
(1)一维数组的定义

单片机并行口IO的应用实验

单片机并行口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(查询方式)。

扩展82C55并行IO接口实验

扩展82C55并行IO接口实验

扩展82C55并行I/O接口实验
一、实验要求
8个开关按钮分别对应8个LED指示灯,按下按钮1,指示灯1亮,按下按钮2,指示灯2亮……按下按钮8,指示灯8亮
二、实验目的
1、了解82C55芯片结构及编程设置方法
2、进行单片机扩展82C55的接口实验
3、单片机控制82C55输入输出的编程
三、实验程序如下:
MOV DPTR,#0003H ;8255控制地址传送到dptr
MOV A,#82H ;初始化8255,D2置1
MOVX @DPTR,A ;控制字写入控制寄存器
DD:MOV A,#0FFH
MOV DPTR,#0001H ;输入地址送至dptr
MOVX A,@DPTR ;按键输入状态送a
MOV DPTR,#0000H ;输出地址送dptr
MOVX @DPTR,A ;a数据送至输出端
SJMP DD
四、实验原理图
仿真截图
五、实验总结
实验是通过8255PB口检测八个开关的状态,进而输入单片机,单片机再把PB口输入的信息传送到PA口,从而显示在led灯。

实验2 并行IO口的使用(包涵程序答案)

实验2   并行IO口的使用(包涵程序答案)

实验二并行I/O端口的应用一一、实验目的1.进一步熟悉Kiel C软件的使用方法。

2.掌握proteus软件的使用方法。

3.熟悉C语言数据与运算4.熟悉C语言程序结构二、实验内容1.程序一:当按下按键K1~K4时,对应D1~D4点亮。

2.程序二:用循环语句实现P0口的多值输出。

3.程序三:用数组方式控制跑马灯。

4.程序四:在P2口连接的LED数码管上循环显示“0”,“1”,“2”,“3”,“4”。

三、实验仿真硬件图在Proteus软件中建立如下图2-1所示仿真模型并保存。

需要注意的是,当用Proteus来绘制比较复杂的电路时,经常会因为线太乱而影响美观,也不方便检查,使用总线方式绘制电路能很好地避免这一问题。

图2-1 并行I/O端口应用原理图在单线上点击右键编辑属性。

在线型中选择“BUS WIRE”,画出所需要的总线,连分支线时,不要直接画到总线上,先将光标靠近上面画的单线的末端(离总线近的一段),光标会出现一个选中的符号,先单击左键,再按住Ctrl键,拖动鼠标到总线的合适位置,再点击左键。

然后右键点击分支线,放置网络标号即可。

四、编程提示程序一:⒈可选用用if语句、if-else-if语句、switch语句来实现当按下按键K1~K4时,对应D1~D4点亮。

if语句的一般形式:if ( 表达式1 ){语句组1;}if ( 表达式 2){语句组2;}...if-else-if语句的一般形式:if ( 表达式 1){语句组1;}else if( 表达式 2){语句组2;}...else if( 表达式 n){语句组n;}else{语句组n+1;}switch语句的一般形式为:switch(表达式){case常量表达式1: 语句序列1;break;case常量表达式2: 语句序列2;break;...case常量表达式n: 语句序列n;break;default : 语句序列n+1}2.可采用运用三种基本的循环语句: for语句、while语句和do-while语句,实现D1~D8循环点亮。

  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、。

相关文档
最新文档