单片机---简单IO口扩展实验一.
- 格式:doc
- 大小:21.00 KB
- 文档页数:6
简单的单片机I/O口扩展实例扩展实例 简单的I/O口扩展通常是采用TTL或CMOS电路锁存器、三态门等作为扩展芯片,通过P0口来实现扩展的一种方案。
它具有电路简单、成本低、配置灵活的特点。
下图为采用74LS244作为扩展输入、74LS273作为扩展输出的简单I/O口扩展。
芯片及连线说明 图中电路中采用的芯片为TTL电路74LS244、74LS273。
其中,74LS244为8缓冲线驱动器(三态输出),、为低电平有效的使能端。
当二者之一为高电平时,输出为三态。
74LS273为8D触发器,为低电平有效的清除端。
当=0时,输出全为0且与其它输入端无关;CP端是时钟信号,当CP由低电平向高电平跳变时刻,D端输入数据传送到Q输出端。
P0口作为双向8位数据线,既能够从74LS244输入数据,又能够从74LS273输出数据。
输入控制信号由P2.0和相或后形成。
当二者都为0时,74LS244的控制端有效,选通74LS244,外部的信息输入到P0数据总线上。
当与74LS244相连的按键都没有按下时,输入全为1,若按下某键,则所在线输入为0。
输出控制信号由P2.0和相或后形成。
当二者都为0后,74LS273的控制端有效,选通74LS273,P0上的数据锁存到74LS273的 输出端,控制发光二极管LED,当某线输出为0时,相应的LED发光。
 I/O口地址确定 因为74LS244和74LS273都是在P2.0为0时被选通的,所以二者的口地址都为FEFFH(这个地址不是惟一的,只要保证P2.0=0,其它地址位无关)。
但是由于分别由和控制,因而两个信号不可能同时为0(执行输入指令,如MOVX A,@DPTR或MOVX A,@Ri时,有效;执行输出指令,如MOVX @DPTR,A或MOVX @Ri,A时,有效),所以逻辑上二者不会发生冲突。
。
单片机原理与接口技术实验
实验二简单I/O端口扩展实验(1)
系别:通信工程系
专业:通信工程系11级
学号:
姓名:
实验时间:2014年3月13日
撰写日期:2014年m月n日
实验二简单I/O端口扩展实验(1)
一、实验目的
1、学习单片机扩展简单I/O端口的方法;
2、掌握通过总线输入/输出的编程方法;
3、掌握扩展总线接口芯片的地址分配方法。
二、实验内容(与本次实验报告标题括号中的数字对应)
1、先将8个开关量(K1~K8)从74244的输入端口读入,再把开关量的状态通过74273实时显示在发光二极管上。
【基础,周二/四下午每人做】
三、实验设计思路
通过中间变量,将244的内容传到273输出。
四、电路原理图及接线说明
74273接片选CS1,74244接片选CS2;开关状态接到244的输入;273的输出接到LED灯。
五、实验流程图
运行程序,拨动开关,LED
七、总结
此次实验一步到位。
附录:实验源程序以压缩包提供整个项目文件例如: s03_lab02_1a.rar。
简单io口扩展实验报告
简单IO口扩展实验报告
本次实验旨在学习如何通过简单IO口扩展模块对单片机的IO口进行扩展,实现多个IO口的输入输出功能。
我们需要了解简单IO口扩展模块的基本原理和工作方式。
简单IO 口扩展模块通过与单片机的SPI总线进行通信,实现对其内部寄存器的读写操作,从而实现对IO口的扩展。
在实验中,我们使用STM32F103C8T6开发板和简单IO口扩展模块,通过连接它们的SPI总线,可以将扩展模块的IO口与开发板的IO口进行连接,实现IO口的扩展。
具体连接方式如下图所示:
(此处省略图片)
接下来,我们需要进行程序设计。
在初始化时,需要设置SPI总线的相关参数,然后对扩展模块进行初始化,将其内部寄存器中的数据清零。
然后,通过读写寄存器的方式,可以对扩展模块的每个IO 口进行配置,设置其输入输出状态、上下拉电阻等参数。
在程序中,我们可以通过读取扩展模块的输入口状态,判断是否有外部信号输入,根据需要进行相应的操作。
例如,当输入口接收到高电平信号时,可以控制某个输出口输出高电平信号,从而实现控制设备的功能。
在实验中,我们可以通过连接LED和按键来进行简单的IO口扩展实验。
将LED连接到扩展模块的输出口,按键连接到扩展模块的输入口,通过控制按键输入信号,实现对LED的控制。
总的来说,本次实验通过学习简单IO口扩展模块的原理和工作方式,掌握了通过SPI总线进行IO口扩展的方法,实现了对单片机多个IO口的输入输出控制,为后续的硬件控制和应用开发打下了基础。
简单i o口扩展实验实验报告简单I/O口扩展实验实验报告引言:简单I/O口扩展实验是一项基础的电子实验,通过扩展I/O口,可以实现对外部设备的控制和数据交互。
本实验旨在通过实际操作,了解I/O口扩展的原理和应用。
实验目的:1. 了解I/O口的基本概念和工作原理;2. 学习使用I/O口扩展芯片实现对外部设备的控制;3. 掌握I/O口扩展的编程方法和应用技巧。
实验器材和材料:1. Arduino开发板;2. I/O口扩展芯片;3. 连接线;4. 外部设备(如LED灯、蜂鸣器等)。
实验步骤:1. 连接Arduino开发板和I/O口扩展芯片。
将I/O口扩展芯片的引脚与Arduino开发板的数字引脚相连,确保连接正确可靠。
2. 编写程序。
使用Arduino开发环境,编写程序代码,实现对I/O口扩展芯片的控制。
根据实际需求,可以选择控制外部设备的开关、亮度、频率等。
3. 上传程序。
将编写好的程序上传到Arduino开发板,确保程序能够正确运行。
4. 运行实验。
运行程序,观察外部设备的状态变化。
通过改变程序中的参数,可以实现对外部设备的不同控制效果。
实验结果与分析:通过实验,我们成功地实现了对外部设备的控制。
通过改变程序中的参数,我们可以控制外部设备的开关、亮度、频率等。
这说明I/O口扩展技术具有很大的应用潜力,可以实现对各种外部设备的控制和数据交互。
实验总结:通过本次实验,我们深入了解了I/O口扩展的原理和应用。
通过编写程序,我们掌握了I/O口扩展的编程方法和应用技巧。
通过实验,我们成功地实现了对外部设备的控制,这为我们进一步研究和应用I/O口扩展技术奠定了基础。
实验中遇到的问题和解决方法:在实验过程中,我们遇到了一些问题,如连接错误、程序错误等。
我们通过仔细检查连接和程序代码,逐一解决了这些问题。
这提醒我们在实验中要认真细致,仔细检查和排除错误,以保证实验的顺利进行。
实验的局限性和改进方向:本次实验只是简单地介绍了I/O口扩展的基本原理和应用,还有很多相关的知识和技术需要进一步学习和探索。
简单IO口扩展实验报告1. 背景在实际应用中,我们经常需要扩展计算机的输入输出(IO)接口,以满足不同的需求。
而简单IO口扩展就是一种常见且重要的扩展方式。
通过简单IO口扩展,我们可以将计算机连接到更多的外部设备,如传感器、执行器等,从而实现更多功能和应用。
2. 分析2.1 简单IO口介绍简单IO口是指通用输入输出接口,它可以通过数字信号来进行数据的输入和输出。
每个简单IO口通常包括一个输入引脚和一个输出引脚。
通过控制这些引脚的电平状态,我们可以实现数据的输入和输出。
2.2 简单IO口扩展方法简单IO口可以通过不同的方法进行扩展,常见的方法包括:•并行接口:使用并行接口可以同时传输多个位的数据。
它通常使用多条数据线和一些控制线来实现高速数据传输。
•串行接口:使用串行接口可以逐位地传输数据。
它通常使用一条数据线和一些控制线来实现较低速率但更简洁的数据传输。
•USB接口:USB(Universal Serial Bus)是一种常见的数字串行总线接口,它可以连接多种设备,并提供高速数据传输和供电功能。
•SPI接口:SPI(Serial Peripheral Interface)是一种常用的串行外设接口,它可以连接多个外设,并以主从模式进行数据传输。
•I2C接口:I2C(Inter-Integrated Circuit)是一种常见的串行通信接口,它可以连接多个外设,并使用两条线路进行数据传输。
2.3 简单IO口扩展实验本次实验旨在通过简单IO口扩展方法,将计算机与外部设备进行连接,并实现数据的输入和输出。
具体步骤如下:1.确定要使用的简单IO口扩展方法,如并行接口、串行接口等。
2.根据选择的扩展方法,准备相应的硬件模块和连接线缆。
3.将硬件模块与计算机进行连接,确保电气连通性。
4.编写相应的驱动程序或使用现有的驱动程序,以实现与硬件模块的通信。
5.运行程序并测试扩展功能。
3. 结果经过实验测试,我们成功地实现了简单IO口扩展,并达到了预期的结果。
简单i o口扩展实验报告简单I/O口扩展实验报告引言在现代科技发展的浪潮下,电子设备的功能和复杂性不断提升。
然而,对于初学者来说,了解和掌握电子设备的基本原理和操作方法是非常重要的。
本实验旨在通过简单的I/O口扩展实验,帮助初学者更好地理解和应用I/O口扩展技术。
一、实验目的本实验的主要目的是通过使用I/O口扩展技术,实现电子设备与外部设备的交互功能。
具体目标包括:1. 了解I/O口扩展的基本原理和应用场景;2. 学习使用I/O口扩展芯片进行输入输出控制;3. 实现简单的电子设备与外部设备的交互功能。
二、实验器材1. Arduino开发板;2. I/O口扩展芯片;3. 电阻、电容等基本电子元件;4. 连接线、面包板等实验工具。
三、实验步骤1. 连接电路将Arduino开发板与I/O口扩展芯片通过连接线连接起来,按照电路图进行正确的连接。
确保电路连接无误后,将其连接到电源。
2. 编写程序在Arduino开发环境中,编写程序以实现所需的输入输出控制功能。
通过调用相应的库函数,配置I/O口扩展芯片的输入输出模式,并编写相应的逻辑控制代码。
3. 烧录程序将编写好的程序烧录到Arduino开发板中,确保程序能够正确运行。
4. 实验验证运行程序后,通过操作外部设备,如按钮、LED灯等,验证I/O口扩展功能的正确性。
观察外部设备的状态变化,以及Arduino开发板的响应情况。
四、实验结果与分析通过实验,我们成功实现了I/O口扩展技术的应用。
通过编写程序,我们可以根据需要配置I/O口扩展芯片的输入输出模式,并通过控制逻辑实现与外部设备的交互功能。
在实验过程中,我们发现通过I/O口扩展技术,可以实现大量的输入输出控制。
例如,我们可以通过按钮控制LED灯的开关,通过传感器获取环境温度并进行相应的控制,通过继电器控制电机等。
这些功能的实现,不仅提高了电子设备的灵活性和可扩展性,也为我们提供了更多的创造空间。
然而,我们也发现在实际应用中,I/O口扩展技术还存在一些挑战和限制。
实验一简单I/O口扩展一、实验目的1.学习单片机系统中扩展简单I/O口的方法。
2.学习数据输入输出程序的编制的方法。
二、实验内容利用74LS244作为输入口,读取开关状态,通过74LS273再驱动发光二极管显示出来。
三、电路原理图1.程序流程2.实验电路图四、程序清单CODE SEGMENTCS:CODE,DS:CODE,ES:CODEORG 3380H ;273,244PIO1 EQU 0FFE0HPIO2 EQU 0FFE4HP4: MOV DX,PIO1IN AL,DXMOV DX,PIO2OUT DX,ALJMP P4CODE ENDSEND P4五、实验步骤1、实验连线⑴74LS244的输入端PI0-PI7接K1-K8,74LS273的输出端PO0-PO7接L1-L8。
用8芯扁平电缆将I/O IN区、I/O OUT区的数据总线插座与数据总线单元任一插座相连。
⑵连接138译码输入端A.B.C,其中A连A2,B连A3,C连A4,138使能控制输入端G 与总线单元上方的GS相连。
⑶74LS02门电路的①脚接缓冲输出单元的CLK,02门电路②脚接系统单元IOW,02门电路的③脚接译码单元的Y1;02门电路的④脚与⑨脚相连,02门电路的的⑤脚接译码单元的Y0,02门电路⑥脚接系统单元IOR,02门电路的⑧脚接GND,02门电路的⑩脚接缓冲输入单元的G。
2、LED环境(1)在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。
(2)在“P.”状态下键入3380,然后按“EXEC”进入实验项目的运行。
3、PC环境在与PC联机状态下,编译、连接、下载PH88.asm,用连续方式运行程序。
4、观察运行结果以连续方式运行程序,拨动K1-K8,观察L1-L8点亮情况。
5、终止运行按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出该程序的运行返回监控状态。
六、实验心得本次实验学习了单片机系统中扩展简单I/O口的方法,掌握了扩展简单I/O口的方法,学习数据输入输出程序的编制的方法。
单片机程序实验报告姓名:陈曦学号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){;}}五、实验小结通过实验是我们了解如何扩展外部存储器,并熟练掌握了内外存储器的数据的传送、指针的使用,获悉了读写校验的原理,为下一步学习打下了坚实的基础。
实验三简单 I/O口扩展实验一
——交通灯控制实验
一、实验目的:
1. 学习在单片机系统中扩展简单 I/O接口的方法。
2. 学习数据输出程序的设计方法。
3. 学习模拟交通灯控制的实现方法。
二、实验设备:
EL-8051-III 型单片机实验箱
三、实验内容:
扩展实验箱上的 74LS273做为输出口,控制八个发光二极管亮灭,模拟交通灯管理。
四、实验原理:
要完成本实验,首先必须了解交通路灯的亮灭规律。
本实验需要用到实验箱上八个发光二极管中的六个,即红、黄、绿各两个。
不妨将 L1(红、 L2(绿、 L3(黄做为东西方向的指示灯,将 L5(红、 L6(绿、 L7(黄做为南北方向的指示灯。
而交通灯的亮灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮, 东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。
闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。
闪烁若干次后,再切换到东西路口方向,重复上述过程。
各发光二极管的阳极通过保护电阻接到 +5V的电源上,阴极接到输入端上,因此使其点亮应使相应输入端为低电平。
五、实验原理图
六、实验步骤:
1. 实验箱 244/273 PORT单元的 O0~O7接实验箱上发光二极管 L1~L8;
2.74LS273的片选 CS273接片选信号 CSO (CPLD ENCODER UNIT ,此时74LS273的片选地址为 CFA0H ~CFA7H 之间任选 ;
3.运行实验程序,观察 LED 显示情况是否与实验内容相符 ;
七、程序框图:
八、参考程序:T3.ASM
NAME T3 ;I/O口扩展实验一PORT EQU 0CFA0H ;片选地址 CS0
CSEG AT 0000H
LJMP START
CSEG AT 4100H
START: MOV A,#11H ;两个红灯亮,黄灯、绿灯灭
ACALL DISP ;调用 273显示单元(以下雷同 ACALL DE3S ;延时 3秒
LLL: MOV A,#12H ;东西路口绿灯亮 ; 南北路口红灯亮
ACALL DISP
ACALL DE10S ;延时 10秒
MOV A,#10H ;东西路口绿灯灭 ; 南北路口红灯亮 ACALL DISP
MOV R2,#05H ;R2中的值为黄灯闪烁次数
TTT: MOV A,#14H ;东西路口黄灯亮 ; 南北路口红灯亮 ACALL DISP
ACALL DE02S ;延时 0.2秒
MOV A,#10H ;东西路口黄灯灭 ; 南北路口红灯亮 ACALL DISP
ACALL DE02S ;延时 0.2秒
DJNZ R2,TTT ;返回 TTT ,使东西路口黄灯闪烁五次 MOV A,#11H ;两个红灯亮,黄灯、绿灯灭
ACALL DISP
ACALL DE02S ;延时 0.2秒
MOV A,#21H ;东西路口红灯亮 ; 南北路口绿灯亮 ACALL DISP
ACALL DE10S ;延时 10秒
MOV A,#01H ;东西路口红灯亮 ; 南北路口绿灯灭 ACALL DISP
MOV R2,#05H ;黄灯闪烁五次
GGG: MOV A,#41H ;东西路口红灯亮 ; 南北路口黄灯亮 ACALL DISP
ACALL DE02S ;延时 0.2秒
MOV A,#01H ;东西路口红灯亮 ; 南北路口黄灯灭 ACALL DISP
ACALL DE02S ;延时 0.2秒
DJNZ R2,GGG ;返回 GGG ,使南北路口 ; 黄灯闪烁五次 MOV A,#03H ;两个红灯亮,黄灯、绿灯灭
ACALL DISP
ACALL DE02S ;延时 0.2秒
JMP LLL ;转 LLL 循环
DE10S: MOV R5,#100 ;延时 10秒
JMP DE1
DE3S: MOV R5,#30 ;延时 3秒
JMP DE1
DE02S: MOV R5,#02 ;延时 0.2秒 DE1: MOV R6,#200
DE2: MOV R7,#126
DE3: DJNZ R7,DE3
DJNZ R6,DE2
DJNZ R5,DE1
RET
DISP: MOV DPTR,#PORT ;273显示单元 CPL A MOVX @DPTR,A
RET
END。