实验2+++并行IO口的使用

合集下载

单片机原理与应用 实验二 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的例子进行修改。

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

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

实验二并行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键,拖动鼠标到总线的合适位置,再点击左键。

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

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

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、按下面图(2)简单并行输出接口电路图连接线路(74LS273 插通用插座,74LS32 用实验台上的“或门”)。

74LS273 为八D 触发器,8 个D 输入端分别接数据总线D0~D7,8 个Q输出端接LED 显示电路L0~L7。

2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8 个发光二极管发光情况验证正确性。

3、按下面图(3)简单并行输入接口电路图连接电路(74LS244 插通用插座,74LS32 用实验台上的“或门”)。

74LS244 为八缓冲器,8 个数据输入端分别接逻辑电平开关输出K0~K7,8 个数据输出端分别接数据总线D0~D7。

4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。

图2 图34三、编程提示1、上述并行输出接口的地址为2A8H,并行输入接口的地址为2A0H,通过上述并行接口电路输出数据需要3 条指令:MOV AL, 数据MOV DX,2A8HOUT DX,AL通过上述并行接口输入数据需要2 条指令:MOV DX,2ADHIN AL,DX2编程code segmentassume cs:codestart:mov ah,2 ;回车符mov dl,0dhint 21hmov ah,1 ;等待键盘输入int 21hcmp al,27 ;判断是否为ESC键je exit ;若是则退出mov dx,2a8h ;若不是,从2A8H输出其ASCII码out dx,aljmp start ;转startexit: mov ah,4ch ;返回DOSint 21hcode endsend15号董大明。

实验二_并行I_O口

实验二_并行I_O口

一、实验目的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、编写程序:要求在灯移动的同时,蜂鸣器逐位报警。

三、电路原理图四、实验程序流程框图和程序清单/***********(1)LED0~LED7以秒速率循环右移**************/MAIN: MOV A, #11111110BLOOP: MOV P1, A ;LED0灯亮,其他全灭LCALL DELAY1s ;调用1s延时子程序RL A ;累加器内容循环左移LJMP LOOP ;继续循环/***********1s延时子程序*******************/DELAY1s:MOV R7, #0A7HDL1: MOV R6, #0ABHDL0: MOV R5, #10HDJNZ R5, $DJNZ R6, DL0DJNZ R7, DL1NOPRETEND/***********(2)LED0~LED7以秒速率循环左移**************/ORG 0000HMAIN: MOV A, #01111111BLOOP: MOV P1, A ;LED7灯亮,其他全灭LCALL DELAY1s ;调用1s 延时子程序RR A ;累加器内容循环右移 LJMP LOOP ;继续循环 /********************1s 延时子程序**********************/ DELAY1s:MOV R7, #0A7HDL1: MOV R6, #0ABHDL0: MOV R5,#10HDJNZ R5, $DJNZ R6, DL0DJNZ R7, DL1NOP RETEND/**********(3)要求在灯循环移动的同时,蜂鸣器逐位报警 **************/ORG 0000HMAIN: MOV A, #11111110BLOOP: MOV P1, A ;LED0灯亮,其他全灭CPL P3.0 ;开蜂鸣器 LCALL DELAY05s ;调用0.5秒延时子程序 SETB P3.0 ;关蜂鸣器 LCALL DELAY05s ;调用0.5秒延时子程序 RL A ;累加器内容循环左移 LJMP LOOP ;继续循环/*********0.5s 延时子程序****************/DELAY05s:MOV R7, #17H DL1: MOV R6, #98HDL0: MOV R5, #46H DJNZ R5, $DJNZ R6, DL0DJNZ R7, DL1RETEND六、实验总结通过本次实验,我熟悉了Proteus软件和Keil软件的使用方法,熟悉了单片机应用电路的设计方法。

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

实验二 IO口的输入与输出

实验二  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 置位时所有端口引脚的上拉电阻都被禁止。
端口引脚配置图

并行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口输入输出实验.

实验二 I/O口输入、输出实验10通信工程A 班 1015231026 林飞翔P0口循环点灯ORG 0000H ; 设定程序汇编起始地址 MOV A ,#03H ; 设置初始值00000011 LOOP:MOV P0,A ;点亮LED0和LED1 ACALL DELAY ; 调用延时子程序RL A ; 将A 里面的00000011左移一位成00000110 SJMP LOOP ; 循环点亮LED 灯 DELAY : ;0.5S 的延时程序 DEL: MOV R7,#10 DEL1:MOV R6,#246 DEL2:MOV R5,#100DEL3:DJNZ R5,DEL3 ;2*100=200μS DJNZ R6,DEL2 ; (200+1+2)*246=49938μS DJNZ R7,DEL1 ; (49938+1+2)*10=499410us RET ; 返回主程序P1口输入/输出ORG 0000 ; 设定起始地址 SJMP MAINMAIN: MOV P1,#0FFH ;P1口置1 SEARCH:MOV A,P1 ; 读P1口CJNE A,0FFH,LED ; 查询是否有按键按下 SJMP SEARCH ; 等待LED: MOV P0, A ; 有键按下,将值读入P0 ACA LL DELAY ; 调用延时子程序MOV R5 ,#00H ; 置计数初值=0 SHIFT: RRC A ; 输入右移1位JNC LOOKFOR ; 若Cy=0,则数码显示 INC R5 ;Cy=1,则计数加1 SJMP SHIFT ; 跳回继续移位LOOKFOR:MOV DPTR,#TAB ; 所查表的首地址赋给MOV A,R5 ; 计数值做偏移量 MOVC A,@A+DPTRMOV P2,A ; 显示相应按键值 SJMP SEARCH TAB:DB 60H,0DAH,0F2H,66H ; DB 0B6H,0BEH,0E0H,0FEH ;DELAY : ;0.5S 的延时程序 DEL: MOV R7,#10 DEL1: MOV R6,#246 DEL2: MOV R5,#100DEL3:DJNZ R5,DEL3 ;2*100=200μS DJNZ R6,DEL2 ; (200+1+2)*246=49938μS DJNZ R7,DEL1 ; (49938+1+2)*10=499410us RET ; 返回主程序SJMP $ END。

实验二 IO 口实验

实验二 IO 口实验

实验原理
• GPIO(General Purpose I/O,通用输入 输出接口) ( 输出接口) ,通用输入/输出接口 也称为并行I/O(parallel I/O),是最基本的I/O形式, 也称为并行 ( ),是最基本的 形式, ),是最基本的 形式 由一组输入引脚、输出引脚或输入/输出引脚组成 输出引脚组成, 由一组输入引脚、输出引脚或输入 输出引脚组成, CPU对它们能够进行存取操作。有些 对它们能够进行存取操作。 对它们能够进行存取操作 有些GPIO引脚能够通 引脚能够通 过软件编程改变输入/输出方向 输出方向。 过软件编程改变输入 输出方向。 • 一个双向 一个双向GPIO端口(D0)的简化功能逻辑图如图所 端口( ) 端口 图中PORT为数据寄存器和 为数据寄存器和DDR(Data 示,图中 为数据寄存器和 ( Direction Register)为数据方向寄存器。 )为数据方向寄存器。
IO 口实验
实验目的
• 掌握 掌握S3C2410X 芯片的 芯片的I/O 控制寄存器 的配置; 的配置; • 通过实验掌握 通过实验掌握ARM 芯片使用 芯片使用I/O 口控 显示; 制LED 显示; • 了解 了解ARM 芯片中复用 芯片中复用I/O 口的使用方 法。
实验设备
• ฀ 硬件:Embest EduKit-III 实验平台, Embest ARM 标准/增强型仿真器套件, • PC 机。 • ฀ 软件:Embest IDE for ARM 集成开发 环境,Windows 98/2000/NT/XP。
1. S3C2410X I/O 口控制寄存器
• 端口控制寄存器(G中,大多数的管脚都复用, 所以必须对每个管脚进行配置。端口控制 寄存器(PnCON)定义了每个管脚的功能。 • 如果GPF0-GPF7 和GPG0-GPG7 在掉电 模式使用了弱上拉信号,这些端口必须在 中断模式配置。

模块2 并行IO接口的应用

模块2 并行IO接口的应用

(P1)=01010101B =55H
任务2
软件设计
一、控制流程图 ORG 0000H LJMP START ORG 0030H
MOV P1,#0AAH
LCALL DELAY MOV P1,#55H LCALL DELAY LJMP START
任务2
软件设计
二、控制功能源程序 START: MOV P1,#0AAH LCALL DELAY MOV P1,#55H LCALL DELAY LJMP START DELAY: ORG 0000H LJMP START ORG 0030H
任务1
软件设计
步骤:
1、熟读控制要求,理解题意;
2、根据控制要求画出流程图;
3、根据流程图编写程序。
任务1
软件设计
一、控制流程图 ORG 0000H LJMP START ORG 0030H CLR P1.0
DELAY: MOV R7,#255 DL0: MOV R6,#100 DJNZ R6,$ DJNZ R7,DL0
任务3
软件设计
★有穷循环体控制 ORG 0000H LJMP START ORG 0030H MOV A,#0FEH
MOV R0,#8
OUT
MOV P1,A
RL A LCALL DELAY DJNZ R0,OUT
LJMP START
任务3
软件设计
★有穷循环体控制 ORG 0000H LJMP START ORG 0030H START: MOV A,#0FEH MOV R0,#8 OUT: MOV P1,A RL A LCALL DELAY DJNZ R0,OUT LJMP START DELAY: … …(略) END

单片机实验报告二 单片机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接口的扩展实验报告一、实验目的1、了解并行IO接口的扩展方法2、掌握可编程接口芯片8255A的工作原理、编程方式和使用方法二、实验条件1、DOS操作系统平台2、8255A接口芯片三、实验原理1、并行IO口的扩展方法:(1)通过通用的IO扩展芯片实现(2)通过TTL、CMOS 锁存器、缓冲器芯片实现。

如74LS377、74LS273、74LS244、74LS245 等。

(3)通过串行通信口扩展并行I/O 口。

2、8255A 扩展I/O 端口:(1)8255A 具有三种基本工作方式,即方式0、方式1、方式2。

各端口的工作方式及输入输出方向都由方式控制字设定(通过写入控制寄存器)。

8255A 的控制字有方式控制字和C 口置位/复位控制字两种。

3、8255A 的工作方式:(1)方式0 是一种基本I/O 方式。

在这种工作方式下,三个端口都可由程序设定为输入或输出,这种方式不使用联络信号,其基本功能为:a. 两个8 位端口(A、B) 和两个4 位端口(C)。

b. 任一个端口可以作为输入或输出。

c. 输出锁存,输入不锁存。

d. 在方式0 时,各端口都可以作为数据端口,CPU 用简单的输入或输出指令来进行读或写。

(2)方式1 是一种选通I/O 方式。

在这种方式下,端口A 和B 可作为数据端口,但C 口的某口的其它位仍可工作于方式0。

方式1 的基本功能为:a. 用作一个或两个选通端口。

b. 每个选通端口包含有:8 位数据瑞口,3 条控制线,提供中断逻辑。

c. 任一端口可输入或输出。

d. 若只有一个端口工作于方式1,余下的13 位可以工作于方式0。

e. 若两个端口工作于方式1,C 口余下2 位可以工作于方式0。

(3)方式2 是一种双向I/O 方式,只有端口 A 具有这种工作方式,其基本功能为:a. 一个8 位双向数据端口(A)和一个5 位控制端口(C)。

b. 输入和输出锁存。

c. 5 位控制端口用作端口A 的状态和控制信息。

并行io口的工作原理

并行io口的工作原理

并行io口的工作原理咱们今天来聊聊并行 I/O 口这个有趣的玩意儿。

并行 I/O 口就像是一个多面手,能同时处理好多事情。

想象一下,它就像是一个有好多只手的小超人,可以一下子抓住好多东西。

比如说,它可以同时接收好几个数据,就像一只手抓一个苹果,另一只手抓一个香蕉,还有的手抓着橙子、草莓啥的。

这可太厉害了,一下子就能处理好多信息,速度那叫一个快!那它是怎么做到的呢?其实啊,并行 I/O 口里面有好多小通道,就像是一条条小路。

这些小路可以让数据同时通过,就像好多辆车在不同的车道上一起跑。

当我们要给并行 I/O 口发送数据的时候,就像是给它送礼物。

这些数据会排好队,一个一个地走进对应的小通道,然后一下子就都到了并行 I/O 口那里。

反过来,如果并行 I/O 口要把数据送出去,那就像是它把自己的宝贝分享给大家。

数据们也会整整齐齐地通过那些小通道,快速地跑出去。

而且哦,并行 I/O 口还很聪明呢。

它能知道哪些数据是重要的,哪些可以先放一放。

就像它能分辨出哪个是最甜的水果,先尝尝那个。

比如说,如果有紧急的数据需要处理,它会优先照顾这些数据,让它们快点通过。

还有啊,并行 I/O 口还得和其他小伙伴好好配合。

比如说,和处理器呀、内存呀等等。

它们就像是一个团队,一起完成各种各样的任务。

有时候,并行 I/O 口可能会有点忙不过来,就像一个人手里拿了太多东西,有点手忙脚乱。

这时候,就得靠其他小伙伴来帮帮忙,一起把事情搞定。

总的来说,并行 I/O 口就像是我们生活中的超级小能手,能快速又高效地处理好多数据,让我们的电子设备变得更加聪明和厉害!怎么样,是不是觉得并行 I/O 口很有趣呀?。

实验二 8051单片机IO口输出操作实验

实验二 8051单片机IO口输出操作实验

实验二8051单片机I/O口输出操作实验一实验目的:通过实验了解和学习8051单片机I/O口作为输出方式使用时,CPU对I/O口的操作方法。

二实验原理:8051单片机有4个8位的并行口,记作P0、P1、P2和P3,共32根I/O线。

每个口主要由四部分组成:端口锁存器、输入缓冲器、输出驱动器和引至芯片外的端口引脚。

它们都是双向通道,每一条I/O线都能独立地用作输入或输出。

作为输出口用时,内部带锁存器,故可以直接和外设相连,不必加锁存器。

这四个接口特性上的差别主要是P0、P2和P3都还有第二功能,而P1口只能用作I/O 口。

三实验内容:实验中P1.0脚上连一个发光二极管和一个限流电阻。

端口送低电位时,发光二极管点亮,送高电位时,发光二极管熄灭。

编写程序控制发光二极管,使之每隔大约0.5秒钟点亮一次。

四实验电路图:图2-1五实验方法:1.根据如上电路图连接好实验电路。

在实验板中将P1.0的管脚和LED的管脚相连。

也可以照这个电路图用实验面包板自己搭一个电路,VCC用直流5V,也可以用三节碱性电池串联。

2.按照实验要求编写实验程序,建立新工程,保存为OUTPUT。

图2-23.调试程序,根据调试结果,调整软件延时的时间。

图2-34.图2-2是软件编译成功的窗口;图2-3是软件仿真窗口,可以拉开外设菜单观察P1口状态。

5.将keilC51产生的output.hex文件通过在线下载ISP或商用编程器写入芯片中,将芯片插入实验板(如果是在线下载就可以省略这步,因为芯片就在实验板上),复位后运行程序观察结果。

六参考程序:1.汇编源程序ORG 0000HSTART: SETB P1.0 ;P1.0口置位ACALL DLAY ;调用延时子程序DLY0.5S CLR P1.0 ;P1.0口清位ACALL DLAYSJMP START ;程序循环执行DLAY: MOV R0,#0FFH ;延时子程序,延时约0.5S D1: MOV R1,#0FFHD2: MOV R2,#6HDJNZ R2,$DJNZ R1,D2DJNZ R0,D1RETEND2.C语言源程序/*************************************************** 文件名: output.c* 描述: P1口输出,点亮发光二极管**************************************************/#include <reg51.h>sbit LED=P1^0; //引脚定义void main(void){int i;while(1){LED=1;for(i=0;i<=30000;i++); //空循环延时LED=0;for(i=0;i<=30000;i++);}}思考题:观察汇编语言和C语言控制单片机的过程,有哪些相同和不同的地方。

实验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循环点亮。

单片机IO口实验

单片机IO口实验

微机原理实验报告实验名称:单片机IO口控制实验姓名:学号:座位号:指导教师:实验原理:MCS-51单片机的内部结构:Mcs-51单片机的内部结构图如上所示,而且IO口作为单片机的重要组成部分,是连接单片机与外部设备的桥梁。

单片机IO口双列直插封装的管脚图:并行IO接口及其应用:MCS-5系列单片机内部有4个8位的并行I/O接口i,分别命名为P0,P1,P2和P3。

每个并行I/O接口的各位均可作为输入或者输出。

由于他们都属于地址号可被8整除的特殊功能寄存器,故可以通过位寻址或者直接寻址方式对其进行按位或字节型的I/O操作。

印象位地址或字节地址表:PO口的结构及其功能:(1)1个输出锁存器,用于进行输出数据的锁存;(2)2个三态输入缓冲器,分别用于锁存器和引脚数据的输入缓冲;(3)1个多路开关MUX,它的一个输入来自锁存器,另一个输入是地址/数据信号的反相输出。

在控制信号的的控制下能实现对锁存器输出端和地址/数据线之间的切换;(4)由两只场效应管组成的输出驱动电路。

(5)除具有与P1口相同的功能外,在系统扩展时作为低8位地址与数据分时复用总线,既此时P0为地址/数据分时复用端口。

低8位由ALE信号的下跳沿锁存到外部地址锁存器中,而高8位地址由P2口输出。

P0口的特点:(1)P0口是一个双功能的端口:地址/数据分时复用口和通用I/O口;(2)具有高电平、低电平和高阻抗3种状态的I/O端口称为双向I/O端口。

P0口作地址/数据总线复用口时,相当于一个真正的双向I/O口。

而用作通用I/O口时,由于引脚上需要外接上拉电阻,端口不存在高阻(悬空)状态,此时P0口只是一个准双向口;(3)为保证引脚上的信号能正确读入,在读入操作前应首先向锁存器写1;(4)单片机复位后,锁存器自动被置1;(5)一般情况下,如果P0口已作为地址/数据复用口时,就不能再用作通用I/O口使用;(5)P0口能驱动8个TTL负载。

P1口的结构及其功能:(1)一个数据输出锁存器,用于输出数据的锁存;(2)两个三态输入缓冲器,BUF1用于读锁存器,BUF2用于读引脚;(3)数据输出驱动电路,由场效应管VT和片内上拉电阻R组成P1口的特点:(1)P1口由于有内部上拉电阻,没有高阻抗输入状态,所以称为准双向口。

实验二单片机IO口的使用

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

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

2.掌握分支结构语句、运算符和数组的运用。

3.掌握LED数码管的结构和静态显示工作原理。

二、实验内容
1.程序一:按键K0~K3,用分支语句实现P0口的多值输出。

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

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

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

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

图2-1 并行I/O端口应用原理图
四、编程提示
程序一:分别用if语句、if-else-if语句、switch语句来实现当按下按键K0~K3时,对应D1~D4点亮。

程序二:运用三种基本的循环语句: for语句、while语句和do-while语句,实现D1~D8循环点亮。

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

将跑马灯的全部状态用数组表达,然后用循环语句依次读取数组各元素,送P0口显示。

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

思路同程序一,只不过数组元素是由共阴极数码管所对应的字形码所组成。

五、调试运行
1.四个程序在proteus仿真通过。

分别用if语句、if-else-if语句、switch语句来实现当按下按键K0~K3时,对应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循环点亮。

for语句的一般形式:
for ( 循环变量赋初值;循环条件;修改循环变量 )
{
语句组; //循环体
}
while语句的一般形式:
while ( 表达式 )
{
语句组; //循环体
}
do-while语句的一般形式:
do
{
语句组; //循环体
}while ( 表达式 );
3.选做题:用switch语句实现当按下按键K0~K3时,对应D1~D8分别按四种不同的模式循环发亮。

(提示:一种模式用一个函数表达)
写出源程序,并注释
实验二并行I/O端口的应用
学院:专业:年级:实验时间:
姓名:学号:指导教师:
一、实验目的
1.进一步熟悉Keil C、proteus软件的使用方法。

2.掌握分支结构语句、运算符和数组的运用。

3.掌握LED数码管的结构和静态显示工作原理。

二、实验内容
1.程序一:按键K0~K3,用分支语句实现P0口的多值输出。

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

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

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

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

图2-1 并行I/O端口应用原理图
四、实验程序清单(附主要语句注释)
1)程序一
2)程序二
3)程序三
4)程序四
五、简答题
1)程序中如何设定P1.0为输入端口,为什么?
2)P0口与数码管之间的电阻起什么作用?
3)RST端的电路起什么作用?
4)XTAL1、XTAL2接的电路起什么作用?
六、体会(选做)。

相关文档
最新文档