并行输入及输出实验
- 格式:doc
- 大小:439.50 KB
- 文档页数:16
d a转换器实验报告DA转换器实验报告引言:DA转换器(Digital-to-Analog Converter)是一种将数字信号转换为模拟信号的设备。
在现代电子技术中,DA转换器被广泛应用于各种领域,如通信、音频处理、自动控制等。
本实验旨在通过搭建DA转换器电路并进行实际测试,来深入了解其工作原理和性能特点。
一、实验目的本实验的目的是通过搭建DA转换器电路,了解其工作原理以及性能特点,并通过实际测试来验证其转换准确性和稳定性。
二、实验原理DA转换器的基本原理是将输入的数字信号转换为模拟信号输出。
常见的DA转换器有两种类型:并行式和串行式。
并行式DA转换器将输入的二进制数字信号同时转换为相应的模拟信号,而串行式DA转换器则是逐位地将二进制数字信号转换为模拟信号。
在本实验中,我们将使用串行式DA转换器。
串行式DA转换器由一个计数器和一个数字模拟转换器组成。
计数器用于逐位地将二进制数字信号输出,而数字模拟转换器则将二进制数字信号转换为相应的模拟信号输出。
三、实验步骤1. 搭建DA转换器电路:按照实验指导书上的电路图,连接计数器和数字模拟转换器。
2. 设置输入信号:通过调节计数器的输入信号,设置所需的二进制数字信号。
3. 测试输出信号:将数字模拟转换器的输出信号连接到示波器上,并观察输出信号的波形和幅度。
4. 记录实验数据:记录不同输入信号对应的输出信号波形和幅度,并进行分析。
四、实验结果与分析通过实验,我们得到了不同输入信号对应的输出信号波形和幅度数据。
根据实验数据,我们可以得出以下结论:1. 准确性:通过比对输入信号和输出信号的对应关系,可以发现DA转换器在转换过程中几乎没有误差,转换准确性非常高。
2. 稳定性:在实验过程中,我们发现无论输入信号如何变化,输出信号始终保持稳定,没有明显的波动或漂移现象。
五、实验总结通过本次实验,我们深入了解了DA转换器的工作原理和性能特点。
DA转换器在现代电子技术中起着重要的作用,广泛应用于各个领域。
2.4.1 并行输入串行输出移位寄存器实验1.步骤:(1)新建工程SHIFT8R;(2)新建VHDL文件SHIFT8R.vhd,编写程序如下:--带有同步并行预置功能的8位右移移位寄存器:SHIFT8R.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHIFT8R ISPORT( CLK , LOAD : IN STD_LOGIC ; --CLK是移位时钟信号、LOAD是并行数据预置使能信号DIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0); --DIN是8位并行预置数据端口QB : OUT STD_LOGIC ); --QB是串行输出端口END ENTITY SHIFT8R;ARCHITECTURE BEHAV OF SHIFT8R ISBEGINPROCESS(CLK,LOAD)VARIABLE REG8 : STD_LOGIC_VECTOR( 7 DOWNTO 0);BEGINIF CLK'EVENT AND CLK='1' THENIF LOAD='1' THENREG8 := DIN; --装载新数据ELSEREG8(6 DOWNTO 0):= REG8(7 DOWNTO 1);-- 此语句表明:一个时钟周期后将上一时钟周期移位寄存器中的高7位-- 二进制数赋给此寄存器的低7位END IF;END IF;QB <= REG8(0);END PROCESS; -- 输出最低位END ARCHITECTURE BEHAV;(3)保存后编译;(4)新建波形图SHIFT8R.vwf,编辑输入波形;(5)进行功能仿真;(6)进行时序仿真;(7)资源分配;(8)编译后,生成可以配置到CPLD的POF文件。
2.功能仿真结果及分析:输入:DIN[7:0]8为并行输入信号输出:QB为串行输出信号控制:CLK为时钟信号LAOD并行数据预置使能信号(1)功能仿真:波形分析:LOAD=1,CLK=1,输入并行信号“01001101”LOAD=0,每输入一个脉冲,右移一位并从QB 端输出,依次为“01001101” 因此,该设计可以实现并行输入串行输出的右移移位功能。
微机原理实验---并行接口实验
并行接口(Parallel Port)是一种广泛使用的计算机外围设备接口。
它通常用于连接打印机、扫描仪、摄像头等设备,以实现数据的传输和控制。
本实验旨在教授学生使用并行接口实现数据输入和输出的基本功能,以提高学生对计算机外围设备的理解和应用能力。
具体实验步骤如下:
材料及设备:
1. 一台计算机
2. 并行数据线(Parallel Data Cable)
3. 并口测试器(Parallel Port Tester)
4. 8位开关(8-bit Switch)
5. LED 灯(LED Light)
实验步骤:
1. 将并行数据线连接至计算机的并行接口,并将另一端连接至并口测试器。
2. 使用并口测试器测试并行接口是否正常。
若测试失败,可检查并行接口是否损坏或驱动程序是否正确安装。
3. 将 8 位开关连接至并口测试器的数据输出端,连接正确后,将 8 位开关的位置设置为 0。
4. 运行实验程序,将数据从计算机输出至并口测试器。
5. 将 LED 灯连接至并口测试器的数据输入端,将计算机输入的数据传输至 LED 灯并输出。
寄存器实验报告一、实验目的1. 了解寄存器的分类方法,掌握各种寄存器的工作原理;2. 学习使用Verilog HDL 语言设计两种类型的寄存器。
二、实验设备PC 微机一台,TD-EDA 实验箱一台,SOPC 开发板一块。
三、实验内容寄存器中二进制数的位可以用两种方式移入或移出寄存器。
第一种方法是以串行的方式将数据每次移动一位,这种方法称之为串行移位(Serial Shifting),线路较少,但耗费时间较多。
第二种方法是以并行的方式将数据同时移动,这种方法称之为并行移位(Parallel Shifting),线路较为复杂,但是数据传送的速度较快。
因此,按照数据进出移位寄存器的方式,可以将移位寄存器分为四种类型:串行输入串行输出移位寄存器(Serial In- Serial Out)、串行输入并行输出移位寄存器(Serial In- Parallel Out)、并行输入串行输出移位寄存器(Parallel In- Serial Out)、并行输入并行输出移位寄存器(Parallel In-Parallel Out)。
本实验使用Verilog HDL 语言设计一个八位并行输入串行输出右移移位寄存器(Parallel In- Serial Out)和一个八位串行输入并行输出寄存器(Serial In- Parallel Out),分别进行仿真、引脚分配并下载到电路板进行功能验证。
四、实验步骤1.并行输入串行输出移位寄存器实验步骤1). 运行Quartus II 软件,选择File New Project Wizard 菜单,工程名称及顶层文件名称为SHIFT8R,器件设置对话框中选择Cyclone 系列EP1C6Q240C8 芯片,建立新工程。
2.) 选择File New 菜单,创建Verilog HDL 描述语言设计文件,打开文本编辑器界面。
3.) 在文本编辑器界面中编写Verilog HDL 程序,源程序如下:module SHFIT8R(din,r_st,clk,load,dout);input [7:0]din;input clk,r_st,load;output dout;reg dout;reg [7:0]tmp;always @(posedge clk)if(!r_st)begindout<=0;endelsebeginif(load)begintmp=din;endelsebegintmp[6:0]=tmp[7:1];tmp[7]=0;enddout<=tmp[0];endendmodule4). 选择File Save As 菜单,将创建的VHDL 设计文件保存为工程顶层文件名SHIFT8R.V。
实验七8255 并行I/O扩展实验一、实验要求利用8255 可编程并行口芯片,实现输入、输出实验,实验中用8255PA 口作读取开关状态输入,8255PB 口作控制发光二极管输出。
二、实验目的1、了解8255 芯片结构及编程方法。
2、了解8255 输入、输出实验方法。
三、实验电路及连线1、Proteus 实验电路2、硬件验证实验硬件连接表四、实验说明1、8255A 芯片简介:8255A 可编程外围接口芯片是INTEL 公司生产的通用并行接口芯片,它具有A、B、C 三个并行接口,用+5V 单电源供电,能在以下三种方式下工作:方式0:基本输入/ 输出方式方式l:选通输入/ 输出方式方式2:双向选通工作方式2、使8255A 端口A 工作在方式0 并作为输入口,读取Kl-K8 个开关量,PB 口工作在方式0作为输出口。
五、实验程序流程图六、实验步骤1、Proteus 仿真a.在Proteus 中打开设计文档8255_STM.DSN;b.建立实验程序并编译,仿真;c.如不能正常工作,打开调试窗口进行调试。
参考程序:CODE SEGMENTASSUME CS:CODEIOCON EQU 8006HIOA EQU 8000HIOB EQU 8002HIOC EQU 8004H START:MOV AL,90HMOV DX,IOCONOUT DX,ALNOPSTART1:NOPNOPMOV AL,0MOV DX,IOAIN AL,DXNOPNOPMOV DX,IOBOUT DX,ALJMP START1 CODE ENDSEND START2、实验板验证a.通过USB 线连接实验箱b.按连接表连接电路c.运行PROTEUS 仿真,检查验证结果。
实验六---8255并行输入输出一、实验目的1.了解并熟悉8255并行输入输出控制器的功能和工作原理;二、实验原理1.8255芯片介绍8255是一种常用的并行输入/输出接口芯片,可用于微处理机系统中的输入/输出控制输出,根据中文名可以看出,8255有三种工作方式即口A、口B和控制口。
8255所有的输入/输出都是双向的,它可以通过输入输出口的命令字来在不同的模式下工作。
在输出模式下,82555可以通过端口A、B控制外围设备的输出操作,在输入模式下,8255可以通过端口A、B实现对外围设备的输入操作。
控制口是用来控制8255写作模式或读作状态字,并对端口进行初始化操作。
8255在不同的模式下有不同的编程方法和操作方法,因此需要在实际应用中选择不同的工作模式。
8255有三个I/O端口A、B、C,每个端口都有8位。
这里解释一下控制端口的意义,地址为0B4H的控制端口是连续读或写8255内部状态寄存器的地址,而后面的一个读或写就表示读或写操作的类型,如果该端口被写入了“控制字”则8255按照控制字工作,否则会在该端口读出输入状态字。
在读或写操作的时候向控制端口写入的二进制数在图3-8中给出了。
表3-2:8255访问口定义地址口分类名称端口A0B0H输出Port A输入ControlCout端口Cin端口2.8255的编程方式方式0:即I/O挂接方式,这种方式下A、B、C三个端口为并行I/O口时,其与MCU的接线和编程方式与单片机内部I/O端口的连接和编程方式相同。
方式1:即输入输出口不一样。
在这种片内Ram中的地址空间0~7地址单元内写入相应的端口或方式的控制字后,该8255工作在相应的方式。
即:方式0:读出的是8位端口A的状态,写操作为将数据送到端口A;方式2:是把C口分配为两部分——高4位为输入,低4位为输出,它与方式1类似。
端口C的所有状态和很多控制功能都由C口寄存器存储。
方式2:“端口C字符型输入输出方式”,在这种方式下,端口C的8个位分成两部分,4个位作为输入的,4个位作为输出的。
并行输入串行输出移位寄存器原理移位寄存器是一种常见的数字电路元件,用于将数据进行移位操作。
它具有并行输入和串行输出的特点,可以将多个输入同时加载到寄存器中,并按照一定的顺序输出。
本文将介绍并行输入串行输出移位寄存器的原理及其工作方式。
一、移位寄存器的基本原理移位寄存器是由一组触发器组成的,每个触发器都具有数据输入D、时钟输入CLK和数据输出Q。
在并行输入串行输出移位寄存器中,触发器的数据输入D与并行输入数据相连,时钟输入CLK相连,数据输出Q与下一个触发器的数据输入D相连,最后一个触发器的数据输出Q为寄存器的串行输出。
当时钟信号到达时,触发器会将输入数据加载到自身,并将输出作为下一个触发器的输入。
通过多个触发器的串联,数据可以在寄存器中进行移位操作。
当所有输入数据加载完成后,通过寄存器的串行输出可以得到移位后的结果。
二、移位寄存器的工作方式1. 并行输入:将要移位的数据同时输入到寄存器的多个触发器中。
每个触发器都会将输入数据保存到自身。
这样可以实现一次性输入多个数据,提高了数据输入的效率。
2. 串行输出:通过触发器的串行输出将移位后的数据输出。
每当时钟信号到达时,触发器将自身的数据输出,并将输出作为下一个触发器的输入。
这样数据就会从一个触发器传递到下一个触发器,最终得到移位后的结果。
3. 移位操作:通过时钟信号的不断触发,移位寄存器中的数据可以进行移位操作。
每当时钟信号到达,数据会从一个触发器传递到下一个触发器,实现数据的移位。
当所有数据都完成移位后,可以通过最后一个触发器的串行输出得到移位后的结果。
三、应用场景并行输入串行输出移位寄存器常用于串行通信中的数据传输。
在串行通信中,数据需要按照一定的顺序进行传输,而移位寄存器可以实现数据的有序移位,保证数据的正确传输。
例如,在串行通信中,发送端需要将要发送的数据按照一定的格式进行编码,并通过串行方式发送出去。
接收端则需要将接收到的数据进行解码并按照相应的格式进行处理。
实验三 4.1 P3.3口输入、P1口输出实验系别专业:电子系12级电信2班学号:3121003210姓名:李书杰指导老师:刘志群老师4.1.1 实验要求1. 复习Keil C51调试硬件的操作方法。
2. 复习单片机作为通用I/O口的注意事项。
3. 复习单片机操作I/O口的程序设计方法。
4.1.2 实验设备PC 机一台,TD-NMC+教学实验系统4.1.3 实验目的1. 熟悉单片机仿真实验软件Keil C51调试硬件的方法。
2. 了解P3、P1口作通用I/O口的使用方法。
3. 掌握延时子程序的编写和使用方法。
4. 了解单片机对简单I/O的扩展方法。
4.1.4 实验内容实验1根据TD-NMC+实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能:将P1口的低4位定义为输出,高4位定义为输入,数字量从P1口的高4位输入,从P1口的低4位输出控制发光二极管的亮灭。
程序如下:KEY:MOV P1,#0F0H ;令所有行为低电平KEY1:MOV R7,#0FFH ;设置计数常数DJNZ R7,KEY1 ;延时MOV A, P1 ;读取P1口的列值ANL A,#0F0H ;判别有键值按下吗?CPL A ;求反后,有高电平就有键按下JZ EKEY ;无键按下时退出LCALL DEL20 ms ;延时20 ms去抖动SKEY:MOV A,#00 ;下面进行行扫描,1行1行扫MOV R0,A ;R0作为行计数器,开始为0MOV R1,A ;R1作为列计数器,开始为0MOV R3 #0FEH ;R3暂存行扫描字,低4位为行扫描字SKEY2:MOV A,R3MOV P1,A ;输出行扫描字,高4位全1NOPNOPNOPMOV A,P1 ;读列值MOV R1,A ;暂存列值ANL A,#0F0H ;取列值CPL A ;高电平则有键闭合S123:JNZ SKEY3 ;有键按下转SKEY3INC R0 ;行计数器加1SETB C ;准备将行扫描左移1位,;形成下一行扫描字,C=1保证输出行扫描字中高4位全为1,;为列输入作准备,低4位中只有1位为0MOV A,R3 ;R3带进位C左移1位RLC AMOV R3,A ;形成下一行扫描字→R3MOV A,R0CJNE A,#04H,SKEY1 ;最后一行扫(4次)完了吗?EKEY:RET;列号译码SKEY3:MOV A,R1JNB ACC.4,SKEY5JNB ACC.5,SKEY6JNB ACC.6,SKEY7JNB ACC.7,SKEY8AJMP EKEYSKEY5:MOV A,#00HMOV R2,A ;存0列号AJMP DKEYSKEY6:MOV A,#01HMOV R2,A ;存1列号AJMP DKEYSKEY7:MOV A,#02HMOV R2,A ;存2列号AJMP DKEYSKEY8:MOV A,#03HMOV R2,A ;存3列号AJMP DKEY;键位置译码DKEY:MOV A,R0 ;取行号ACALL DECODEAJMP EKEY;键值(键号)译码DECODE:MOV A,R0 ;取行号送AMOV B,#04H ;每一行按键个数MUL AB ;行号×按键数ADD A,R2 ;行号×按键数+列号=键值RET实验2根据TD-NMC+实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能:将P3.3口作状态输入口(接一个逻辑开关,即拨码开关),P1口做输入口(接八只发光二极管D0~D7)。
实验一I/O口输入输出实验一、实验目的1. 掌握单片机的并行I/O口的接口结构、驱动能力特点和应用处理方法;2. 掌握单片机I/O引脚作为输出引脚的使用方法;3. 掌握单片机I/O口配置方法4. 掌握利用单片机I/O口设计单片机应用程序用输入控制输出的方法;5. 掌握单片机控制程序的结构。
二、实验原理及实验内容实验要求:利用单片机并行口做不规则花样流水灯,流水花样不低于16个。
实验原理:1.LED原理图2.STC15的IO口原理P6m0为0时,P6m1为0时,IO口模式为准双向口(传统8051 I/O口模式,弱上拉)灌电流可达20mA,拉电流为270微安,由于制造误差,实际为270~150微安* P6m0为0时,P6m1为1时,为推挽输出(强上拉输出,可达20mA,要加限流电阻)* P6m0为1时,P6m1为0时,(为高阻输出电流既不能流入也不能流出)P6m0为1时,P6m1为1时,为开漏(Open Drain),内部上拉电阻断开。
开漏模式即可读取外部状态也可以对外输出(高低电平)。
按照表格寄存器内容,我们对8个LED1,也就是P6口进行配置,当P6输出低电平时LED被点亮。
所以配置如下:P6M1 &= 0x00;P6M0 &= 0x00; //作为普通IO口,为弱上拉sbit KEY1=P2^0;sbit KEY2=P2^1;//定义两个按键由于STC15F2K60S2寄存器初始化时默认是:P6M1=0x00;P6M0 = 0x00;3.程序流程图主循环程序流程图三、实验程序#include <STC15.h>#include <intrins.h>#define Uchar unsigned char#define Uint unsigned intint LED[]={0xfc,0xf3,0xcf,0x3f,0xe7,0xdb,0xbd,0x7e,0x7e,0xbd,0xdb,0xe7, 0xfe,0xfb,0xef,0xbf,0xfd,0xf7,0xdf,0x7f};void P6Init()//IO口初始化函数{P6M0=0X00;P6M1=0X00;}void delay3s(void) //误差0us{unsigned char a,b,c;for(c=189;c>0;c--)for(b=230;b>0;b--)for(a=33;a>0;a--);}void main(){Uchar i=0;P0Init();while(1){for(i=0;i<20;i++){P6=LED[i];delay3s();}}}四、实验仪器和设备4.使用了keil软件Proteus 8 Professional软件。
实验一51单片机并行输入/输出实验——查询和中断方式
班级:车辆151 学号:姓名:
一、实验目的:掌握51单片机并行口输入/输出功能,并对比查询和中断方式编程方法。
二、实验内容:采用51单片机并行口P0~P3,通过1路或2路开关或按钮的状态,切换4个或8个LED的闪烁规律。
规律可以是循环点亮、全闪全灭、交替闪烁等。
并对比查询和中断方式对输入编程的区别。
实验题目:查询方式,P1.0~P1.3作为按钮输入,P0.0~P0.3作为输出到LED同步显示三、实验原理图:
四、实验源程序
五、流程框图
六、总结
程序设计思路是不断查询P1.0~P1.3的状态,从而决定P0.0~P0.3的电平高低,由于是准双向口,读入时应该写1再读。
使用查询方式时,CPU一直在查询输入信号的状态,从而决定输出信号,而使用中断方式时,则只需要等待事件触发,未触发时,CPU可以执行其它操作,效率高。
由于人眼的辨别能力有限,使用延时观察LED灯的状态时应该保证时间足够长。
单片机并行口实验报告实验二并行口实验报告班级:学号:姓名:教师:一、实验目的通过实验了解8051并行口输入方式和输出方式的工作原理及编程方法。
二、实验内容1、输出实验如图4-1所示。
以8031的P2口为输出口。
通过程序控制发光二极管的亮灭。
2、输入实验如图4-1所示。
以8031的P1口为输入口。
用开关向P1.0~P1.3输入不同的状态,控制P2口P2.4~P2.7发光二极管的亮灭。
3、查询输入输出实验如图1-1所示。
以8051的P1.6或P1.0为输入位,以P2口为输出,二进制计数记录按键的次数。
图1-1三、编程提示1、输出实验程序(1)设计一组显示花样,编程使得P2口按照设计的花样重复显示。
(2)为了便于观察,每一状态加入延时程序。
2、输入实验程序开关打开,则输入为1;开关闭合,则输入为0。
读取P1.0~ P1.3的状态,并将它们输出到P2.4~ P2.7,驱动发光二极管。
所以发光二极管L1~L4的亮灭应与开关P1.0~ P1.3的设置相吻合。
3、查询输入输出程序(1)编程计数P1.0按键次数,按键不去抖动。
(2)编程计数P1.6按键次数,按键不去抖动。
(3)编程计数P1.0按键次数,按键软件延时去抖动。
观察(1)、(2)、(3)、的结果。
四、实验器材计算机,目标系统实验板五、实验步骤1、在KEILC中按要求编好程序,编译,软件调试,生成.HEX文件。
2、断开电源,按图1-1所示,连好开关及发光二极管电路。
3、下载程序。
4、调试运行程序,观察发光二极管状态。
六、C源程序清单1、#include <STC12C5A60S2.h>#define uchar unsigned char#define ON 0#define OFF 1sbit led1=P2^0;sbit led2=P2^1;sbit led3=P2^2;sbit led4=P2^3;sbit led5=P2^4;sbit led6=P2^5;sbit led7=P2^6;sbit led8=P2^7;void delay1(void);void main(void){led1=led2=led3=led4=led5=led6=led7=led8=O FF;while(1){led1=led8=ON;delay1();led2=led7=ON;delay1();led3=led6=ON;delay1();led4=led5=ON;delay1();led1=led8=OFF;delay1();led2=led7=OFF;delay1();led3=led6=OFF;delay1();led4=led5=OFF;delay1();}}void delay1(void){uchar i,j,k;for(i=0;i<10;i++)for(j=0;j<100;j++)for(k=0;k<255;k++);}2、#include<STC12C5A60S2.H>#define uchar unsigned charsbit k8=P1^0; sbit k7=P1^1; sbit k6=P1^2; sbit k5=P1^3; sbit led5=P2^4; sbit led6=P2^5; sbit led7=P2^6; sbit led8=P2^7; void main(void) {while(1){if(!k8)led5=0;if(!k7)led6=0;if(!k6)led7=0;if(!k5)led8=0;if(k8)led5=1;if(k7)led6=1;if(k6)led7=1;if(k5)led8=1;}}3、(1)和(2)#include<STC12C5A60S2.H>#define uchar unsigned char sbit k8=P1^0;sbit k2=P1^6;void main(void){uchar num1,num2;n um1=0;num2=0;while(1){if(!k8){num1++;P2=~num1;}if(!k2){num2++;P2=~num2;}}}3、(3)#include<STC12C5A60S2.H>#define uchar unsigned charvoid delay(uchar);sbit k8=P1^0;sbit k7=P1^1;sbit k6=P1^2;sbit k5=P1^3;sbit k4=P1^4;sbit k3=P1^5;sbit k2=P1^6;sbit k1=P1^7;void main(void){uchar num;n um=0;while(1){if(!k3||!k4||!k5||!k6||!k7){num++;P2=~num;delay(100);}if(!k8){num=0;P2=~num;delay(100);}}}void delay(uchar k ){uchar x,y,z;for(x=k;x>0;x--)for(y=20;y>0;y--)for(z=250;z>0;z--);}七、总结对于这次的实验来说,还是不难的,因为看懂了图1-1后,在加上原来学过的C语言,所以这三个程序还是很容易搞定的,在按键去抖动的程序中,由于k1和k2和其他的键并不一样,这两个键在硬件上已经去抖动了,。
微机原理实验报告微机原理实验报告班级:自动化72组员梁慕佳 07054031张乐 07054033张林鹏 07054034实验一:8255 并行接口实验1 实验目的1. 学习并掌握8255 的工作方式及其应用;2. 掌握8255 典型应用电路的接法。
2 实验设备PC机一台,TD-PITE 实验装置一套。
3 实验内容1. 基本输入输出实验。
编写程序,使8255 的A口为输入,B口为输出,完成拨动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就发生相应改变。
2. 流水灯显示实验。
编写程序,使8255 的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。
4 实验原理并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8 位、16 位或32 位等。
8255可编程外围接口芯片是Intel公司生产的通用并行I/O 接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图2-6-1 所示,8255工作方式控制字和C口按位置位/复位控制字格式如图2-6-2所示。
图2-6-1 8255内部结构及外部引脚图图2-6-2 8255控制字格式5 实验步骤1. 基本输入输出实验本实验使8255 端口A工作在方式0 并作为输入口,端口B工作在方式0 并作为输出口。
用一组开关信号接入端口A,端口B 输出线接至一组数据灯上,然后通过对8255 芯片编程来实现输入输出功能。
具体实验步骤如下述:(1)实验接线图如图2-6-3所示,按图连接实验线路图;(2)编写实验程序,经编译、连接无误后装入系统;(3)运行程序,改变拨动开关,同时观察LED 显示,验证程序功能。
实验一并行口输入、输出实验一、实验目的1、学习并行口的使用方法2、学习延时子程序的编写和使用二、实验说明并行口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。
三、实验内容及步骤实验(一):用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管按照自己设计的花样点亮。
1、使用单片机最小应用系统1模块。
关闭该模块电源,用扁平数据线连接单片机P1口与八位逻辑电平显示模块。
2、连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加P1_A.c源程序,进行编译,直到编译无误。
4、进行软件设置,首先选择软件仿真,仿真调试通过后,选择硬件仿真,设置波特率为串口38400(COM1),USB口115200(COM3或COM4)。
5、打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。
发光二极管单只从右到左轮流循环点亮。
实验(二):用P1.0、P1.1作输入接两个拨断开关,P1.2、P1.3作输出接两个发光二极管。
程序读取开关状态,并在发光二极管上显示出来。
1、用导线分别连接P1.0、P1.1到两个拨断开关,P1.2、P1.3到两个发光二极管。
2、添加 P1_B.c源程序,编译无误后,运行程序,拨动拨断开关,观察发光二极管的亮灭情况。
向上拨为熄灭,向下拨为点亮。
实验(三):P1口做通用I/O输出口,控制8只发光二极管从左到右依次点亮并循环(同一时刻只有一盏灯亮)。
尝试采用头文件#include<intrins.h>;用函数_crol_(a,n)【将字符型变量a循环左移n位】来实现。
实验二 P1、P3口输入输出实验一、实验目的进一步熟悉keil仿真软件、proteus仿真软件的使用。
了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。
掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。
二、实验原理MCS-51系列单片机有四组8位并行I/O口,记作P0、P1、P2和P3。
每组I/O口内部都有8位数据输入缓冲器、8位数据输出锁存器及数据输出驱动等电路。
四组并行I/O端口即可以按字节操作,又可以按位操作。
当系统没有扩展外部器件时,I/O端口用作双向输入输出口;当系统作外部扩展时,使用P0、P2口作系统地址和数据总线、P3口有第二功能,与MCS-51的内部功能器件配合使用。
P1口的位结构如图1所示。
P1口用作双向输入输出端口。
这时图中多路开关的控制信号为低电平,输出与锁存器的反向输出端相连,同时上面的场效应管由于与门输出为低电平而截止。
三、实验设备与器件硬件:微机、单片机仿真器、单片机实验板、连线若干软件:KEIL C51单片机仿真调试软件,Proteus系列仿真调试软件四、实验内容及结果分析用Proteus仿真软件设计流水灯电路,分别实现下列功能:P3口作为输入口读取开关状态,P1口作为输出口,连续运行程序,发光二极管显示开关状态。
如果是下载式实验仪,在程序装载前,必须使P3口的拨动开关处于高电平状态。
并且不能单步调试,只能连续执行。
完整的电路图如图所示。
2)利用keil软件编写相应的程序:a、运行keil 2软件,启动后,点击Project菜单新建项目,如图6所示。
b 、新建项目后,选择仿真单片机的型号,如图7所示:c、单击File菜单的“New”新建程序文件,再右击“Source Group1”添加文件,如图 8、图9所示:d、在软件的程序编写界面编写相应的程序。
点击按钮运行程序,确认无误后,点击,图5 完整电路图图6 新建项目界面图7 单片机型号选择图8 新建程序文件图9 添加文件在弹出的窗口中选择Output 选项卡,勾选选项,之后点击按钮,最后再点击按钮,生成hex 文件。
学习情景四并行输入与输出
学习目标:
了解并行通信的基本概念;
掌握键盘的基本组成及工作原理;
掌握七段LED显示器的基本组成及工作原理。
技能目标:
能够正确在AT89S52外连接键盘和显示设备。
能够灵活应用典型键盘、显示电路构成各种实际电路。
在数据通信与计算机领域中,有两种基本的数据传送方式,即串行数据传送方式与并行数据传送方式,也称串行通信与并行通信。
串行通信将在以后介绍。
数据在多条并行传输线上各位同时传送的方式,称为并行传送方式,多用于近距离传送,如图4.1(a)所示;而数据在单条一位宽的传输线上按时间先后一位一位地传送,称为串行数据传送方式,常用于远距离传送,如图4.1(b)所示。
在单片机应用系统中,通常都有操作面板。
操作人员通过操作面板实现与应用系统的信息交流,包括下达命令、修改程序和参数、干预应用系统的状态、显示运行状态和运行结果。
本学习环境主要介绍人机对话通道中常用的输入设备――键盘,输出设备――LED 显示器。
a)并行通信方式
(b)串行通信方式
第一部分项目要求
设计一个4×4矩阵键盘与AT89S52接口电路。
要求用查询法读取行列键盘键码,并将键码存入内部RAM 32H单元。
第二部分相关知识
键盘是由若干个按键组成的开关矩阵,它是最简单的单片机输入设备,操作员可以通过键盘输入数据或命令,实现简单的人机通信。
若键盘闭合键的识别是由专用硬件实现的,则称为编码键盘;若用软件实现闭合键识别的,则称为非编码键盘。
非编码键盘又分为行列式和独立式两种。
本项目主要讨论,非编码键盘的工作原理、接口技术和程
序设计。
键盘接口应有以下功能:
✓ 键扫描功能,即检测是否有键闭合;
✓ 键识别功能,确定被闭合键所在的行列位置;
✓ 产生相应的键值功能;
✓ 消除按键抖动功能。
一、 键盘工作原理
1.按键去抖动
常用键盘的按键是一个
机械开关结构,被按下时,由
于机械触点的弹性及电压突
跳等原因,在触点闭合或断开的瞬间会出现电压抖动,如图4.2所示。
抖动时间长短与按键的结构和机械特性有关,一般为5~10 ms 。
而按健的闭合时间和操作者的按键动作有关,大约为十分之几秒到几秒不等。
去抖动有硬件和软件两种方法。
硬件方法就是在键盘中附加去抖动电路,从根本上消除抖动产生的可能性,图4.3为利用双稳电路的去抖动电路;而软件方法则是采用时间延迟以躲过抖动(大约延时20-30ms 即可),待行线上状态确定之后,再进行状态输入。
一般为简单起见多采用软件方法。
图4.3去抖动电路 2.按键连接方式
键盘和CPU 的连接方式可分为独立式键盘和矩阵式键盘。
① 独立式键盘
独立式是一组相互独立的按健,这些按键可直接与单片机的I/O 口连接,即每个按键独占一条口线,接口简单。
独立式键盘因占用单片机的硬件资源较多,只适合按键较少的场合。
图4.4(a)是一个具有4个按键的独立式键盘,每一个按键的一端都接地,另一端接AT89S52的I/O 口。
从图中可以看出,独立式键盘每一按键都需要一根I/O 线,占用AT89S52的硬件资源较多。
② 矩阵式键盘 也称行列式键盘,因为键的数目较多,所以按键按行列组成矩阵。
图7.4(b)是由4根行线和4根列线组成的16个按键的键盘。
与独立式键盘相比,16个按键只占用了8个I/O 口线,因此适用于按键较多的场合。
矩阵式键盘接口处理的内容:
图4.2 键闭合和断开时的电压抖动 图4.4独立式键盘和矩阵式键盘
A.键扫描
键盘上的键按行列组成矩阵,在行列的交点上都对应有一个键。
为判定有无键被按下(闭合健)以及被按键的位置,可使用扫描法说明查找闭合健的方法。
首先是判定有没有键被按下。
如图4.5所示,键盘的行线一端经电阻接+5V 电源,另一端接单片机的输入口线。
各列线的一端接单片机的输出口线,另一端悬空。
为判定有没有键被按下,可先经输出口向所有列线输出低电平,然后再输入各行线状态。
若行线状态皆为高电平,则表明无健按下;若行线状态中有低电平,则表明有健被按下。
图4.5键扫描示意图
然后再判定被按键的位置。
判定键位置的扫描是这样进行的:先使输出口输出0FEH,即Y0为低电平“0”,其它列线为高电平“1”,然后输入行线状态,测试行线状态中是否有低电平的。
如果没有低电平,再使输出口输出0FDH,即Y1为“0”,其它列线为“1”,再测试行线状态。
以次类推,直检测到行线中有低电平,则闭合健找到,通过此次扫描的列线值和行线值就可以知道闭合健的位置。
B.去抖动
判断有键按下后,延时一段时间,再判断键盘状态,如果仍为有键按下状态,则认为有键按下,否则按抖动处理。
C.确定按键的键值
如图4.6所示,以键的排列顺序安排健号,则键值的计算公式为:
键值=行首号+列号
图4.6键值表
D.判断闭合键是否释放
计算键值之后,等待键释放是为了保证键的一次闭合仅进行一次处理。
二、键盘接口的控制方式
在单片机的运行过程中,扫描键盘只是CPU的工作任务之一,何时执行键盘扫描和处理,可以有两种方式:程序扫描方式和中断扫描方式。
程序扫描是指CPU空闲时执行键盘扫描,或每隔一定时间执行一次键
盘扫描,定时可由单片机的定时器完成。
中断扫描是指,当有键闭合时才向CPU
发出中断请求,中断响应后执行键盘扫
描程序。
三、应用举例
【例4.1】硬件连接如图4.7所示,
编程完成如下功能:按键按下后,对应的小灯亮,再按下,对应的小灯灭。
图4.7硬件连接示意图89S52。