编码式键盘接口设计实验

编码式键盘接口设计实验
编码式键盘接口设计实验

一、实验目的和要求

①目的:

加深对VHDL语言的理解,提高对VHDL语言的应用能力,能够分析设计目标的电路特性,根据其设计合理的VHDL程序,并能在实验箱上实际操作所设计的电路,能够设计较为复杂的数字系统。

②要求:

(1)在FPGA内部设计4X4编码式键盘接口,其功能是将16个按键转化为4位二进制编码(如按K0键输出0000,K1键输出0001,····,K15键输出1111),同时给出键键有效信息,每次键有效时,产生由高到低的跳变。

(2)将键值和键有效次数通过LED数码管显示。

③实验条件:

(1)实验箱型号:伟福公司EDA6000实验箱

(2)CPLD型号:Altera公司的EPM7128SLC84-15

(3)开发环境: Quartus II +WAV2000

二、基本原理

三、程序流程

(1)分频电路FREDIV的设计

实际上是一个位二进制计数器(n的具体值由输入时钟频率确定),clk为时钟输入信号,计数器的最高位作为分频输出信号co,使其占空比为50%,本次实验分频系数为1024。

(2)列扫描计数器CNT4A的设计

是一个具有使能控制的4位二进制加法计数器

(3)2-4译码器DECODE的设计

(4)优先编码器ENCODE的设计

设I0~I3为键输入信号,低电平有效,设优先级次序I0最高,I3最低。Y1~Y0为编辑输出,KA为键值检测信号。

(5)具有清零和保持功能的十六进制加法计数器CNT16A的设计

(6)寄存器REG4的设计

(7)三态缓冲器TS4的设计

(8)计数器CNT4B的设计

(9)LED数码管显示译码DECODERS的设计

四、仿真与调试

分频电路FREDIV:

将发生器封装成一个元件,以便在更高层设计中调用。

列扫描计数器CNT4A:

将发生器封装成一个元件,以便在更高层设计中调用。程序代码见附页。

2-4译码器DECODE:

将发生器封装成一个元件,以便在更高层设计中调用。程序代码见附页。

优先编码器ENCODE:

将发生器封装成一个元件,以便在更高层设计中调用。程序代码见附页。

十六进制加法计数器CNT16A:

将发生器封装成一个元件,以便在更高层设计中调用。程序代码见附页。

寄存器REG4:

将发生器封装成一个元件,以便在更高层设计中调用。程序代码见附页。

三态缓冲器TS4:

将发生器封装成一个元件,以便在更高层设计中调用。程序代码见附页。

计数器CNT4B:

将发生器封装成一个元件,以便在更高层设计中调用。程序代码见附页。

LED数码管显示译码DECODERS

(假设数码管共阴。为了方便观察,未将DECODERS接入电路)

键盘接口顶层电路图ALL:

仿真波形:

键盘接口顶层电路图ALL2:

此处延时比较大

此处可以观察到,有键按下时,LED2显示的数值加1。K1变为低电平时,显示LED1显示的只能是0,1,2,3。K2变为低电平时,显示LED1显示的只能是4,5,6,7。K3变为低电平时,显示LED1显示的只能是8,9,10,11。K4变为低电平时,显示LED1显示的只能是12,13,14,15。【具体下载到硬件上时完全符合实验要求】

五、小结与体会

本次实验让我体会到了设计电路、仿真电路、调测电路中的苦与甜。电子系统设计是我们大学生必须掌握的技能。我们必须好好珍惜这次实验机会。在设计仿真的过程中,根据冯月琴老师的指导,参考了课本上的单片机与CPLD芯片结合的编码式键盘接口设电路。在调试电路时,出现错误,无从下手。只得请教老师。冯老师给我们演示了调试方法。最后,在电路图中多添加了几个引脚来观察中间过程产生的信号量,我成功解决错误问题。

完成紧张有序的设计实践后,我觉得自己的动手能力有了很大的提高。自己动脑筋解决了遇到的问题,不懂的地方向老师或者同学请教。这增强了自己对硬件描述语言理解,书本上的知识有了用武之地。

六、程序代码

分频电路FREDIV:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY FREDIV IS

PORT (clk:IN STD_LOGIC;

co:OUT STD_LOGIC);

END FREDIV;

ARCHITECTURE one OF FREDIV IS

SIGNAL q: STD_LOGIC_VECTOR(9 DOWNTO 0);

BEGIN

PROCESS(clk)

BEGIN

IF(clk'event AND clk='1')THEN

IF (q="1111111111")THEN

q<="0000000000";

ELSE

Q<=Q+1;

END IF;

END IF;

END PROCESS;

CO<=q(9);

END one;

列扫描计数器CNT4A:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CNT4A IS

PORT (clk:IN STD_LOGIC;

en:IN STD_LOGIC;

q:BUFFER STD_LOGIC_VECTOR(1 DOWNTO 0)); END CNT4A;

ARCHITECTURE one OF CNT4A IS

BEGIN

PROCESS(clk,en)

BEGIN

IF(clk'event AND clk='1')THEN

IF (en='1')THEN

q<=q+1;

END IF;

END IF;

END PROCESS;

END one;

2-4译码器DECODE:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY DECODE IS

PORT ( a:IN STD_LOGIC_VECTOR(1 DOWNTO 0);

y:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); END DECODE;

ARCHITECTURE one OF DECODE IS

SIGNAL q: STD_LOGIC_VECTOR(9 DOWNTO 0);

BEGIN

y(0)<='0'WHEN a=0 else '1';

y(1)<='0'WHEN a=1 else '1';

y(2)<='0'WHEN a=2 else '1';

y(3)<='0'WHEN a=3 else '1';

END one;

优先编码器ENCODE:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY ENCODE IS

PORT ( I0,I1,I2,I3:IN BIT;

y0,y1,ka:OUT BIT);

END ENCODE;

ARCHITECTURE one OF ENCODE IS

BEGIN

y1<=(I0 and I1 and (not I2)) or (I0 and I1 and (not I3)); y0<=(I0 and (not I1)) or (I0 and I2 and (not I3));

ka<=I0 and I1 and I2 and I3;

END one;

十六进制加法计数器CNT16A:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CNT16A IS

PORT ( clk,clr:IN STD_LOGIC;

DAV :OUT STD_LOGIC);

END CNT16A;

ARCHITECTURE one OF CNT16A IS

SIGNAL q: STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

process(clk,clr)

begin

if (clk'event and clk='1') then

if (clr='1') then

q<="0000";

elsif (q=15) then

q<="1111";

else

q<=q+1;

end if;

end if ;

end process;

process(q)

begin

if (q="1111") then

DAV<='0';

else

DAV<='1';

end if;

end process;

END one;

寄存器REG4:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY REG4 IS

PORT ( clk:IN STD_LOGIC;

d: IN STD_LOGIC_VECTOR(3 DOWNTO 0); q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );

END REG4;

ARCHITECTURE one OF REG4 IS

BEGIN

process(clk)

begin

if (clk'event and clk='0')then

q<=d;

end if;

end process;

END one;

三态缓冲器TS4:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY TS4 IS

PORT ( en:IN STD_LOGIC;

di: IN STD_LOGIC_VECTOR(3 DOWNTO 0); do: OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );

END TS4;

ARCHITECTURE one OF TS4 IS

BEGIN

process(en,di)

begin

if (en='0')then

do<=di;

else do<="ZZZZ";

end if;

end process;

END one;

计数器CNT4B:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CNT4B IS

PORT (clk:IN STD_LOGIC;

q:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));

END CNT4B;

ARCHITECTURE one OF CNT4B IS

BEGIN

PROCESS(clk)

BEGIN

IF(clk'event AND clk='0')THEN

q<=q+1;

END IF;

END PROCESS;

END one;

LED数码管显示译码DECODERS :

library ieee;

use ieee.std_logic_1164.all;

entity DECODERS is

port( I: in std_logic_vector(3 downto 0);

Q: out std_logic_vector(6 downto 0)

);

end DECODER;

architecture behv of DECODERS is

constant LED_SEGMAP0 : std_logic_vector(6 downto 0):= "0111111"; constant LED_SEGMAP1 : std_logic_vector(6 downto 0):= "0000110"; constant LED_SEGMAP2 : std_logic_vector(6 downto 0):= "1011011"; constant LED_SEGMAP3 : std_logic_vector(6 downto 0):= "1001111"; constant LED_SEGMAP4 : std_logic_vector(6 downto 0):= "1100111"; constant LED_SEGMAP5 : std_logic_vector(6 downto 0):= "1101101"; constant LED_SEGMAP6 : std_logic_vector(6 downto 0):= "1111101"; constant LED_SEGMAP7 : std_logic_vector(6 downto 0):= "0000111"; constant LED_SEGMAP8 : std_logic_vector(6 downto 0):= "1111111"; constant LED_SEGMAP9 : std_logic_vector(6 downto 0):= "1101111";

begin

process (I)

begin

case I is

when x"0" => Q <= LED_SEGMAP0;

when x"1" => Q <= LED_SEGMAP1;

when x"2" => Q <= LED_SEGMAP2;

when x"3" => Q <= LED_SEGMAP3;

when x"4" => Q <= LED_SEGMAP4;

when x"5" => Q <= LED_SEGMAP5;

when x"6" => Q <= LED_SEGMAP6; when x"7" => Q <= LED_SEGMAP7; when x"8" => Q <= LED_SEGMAP8; when x"9" => Q <= LED_SEGMAP9; when others=> Q <= "XXXXXXX";

end case;

end process;

end behv;

矩阵键盘设计实验报告

南京林业大学 实验报告 基于AT89C51 单片机4x4矩阵键盘接口电路设计 课程机电一体化设计基础 院系机械电子工程学院 班级 学号 姓名

指导老师杨雨图 2013年9月26日

一、实验目的 1、掌握键盘接口的基本特点,了解独立键盘和矩 阵键盘的应用方法。 2、掌握键盘接口的硬件设计方法,软件程序设计 和贴士排错能力。 3、掌握利用Keil51软件对程序进行编译。 4、用Proteus软件绘制“矩阵键盘扫描”电路,并用测试程序进行仿真。 5、会根据实际功能,正确选择单片机功能接线,编制正确程序。对实验结果 能做出分析和解释,能写出符合规格的实验报告。 二、实验要求 通过实训,学生应达到以下几方面的要求: 素质要求 1.以积极认真的态度对待本次实训,遵章守纪、团结协作。 2.善于发现数字电路中存在的问题、分析问题、解决问题,努力培养独立 工作能力。 能力要求 1.模拟电路的理论知识 2.脉冲与数字电路的理念知识 3.通过模拟、数字电路实验有一定的动手能力 4.能熟练的编写8951单片机汇编程序 5.能够熟练的运用仿真软件进行仿真 三、实验工具 1、软件:Proteus软件、keil51。 2、硬件:PC机,串口线,并口线,单片机开发板 四、实验内容

1、掌握并理解“矩阵键盘扫描”的原理及制作,了解各元器件的参数及格 元器件的作用。 2、用keil51测试软件编写AT89C51单片机汇编程序 3、用Proteus软件绘制“矩阵键盘扫描”电路原理图。 4、运用仿真软件对电路进行仿真。 五.实验基本步骤 1、用Proteus绘制“矩阵键盘扫描”电路原理图。 2、编写程序使数码管显示当前闭合按键的键值。 3、利用Proteus软件的仿真功能对其进行仿真测试,观察数码管的显示状 态和按键开关的对应关系。 4、用keil51软件编写程序,并生成HEX文件。 5、根据绘制“矩阵键盘扫描”电路原理图,搭建相关硬件电路。 6、用通用编程器或ISP下载HEX程序到MCU。 7、检查验证结果。 六、实验具体内容 使用单片机的P1口与矩阵式键盘连接时,可以将P1口低4位的4条端口线定义为行线,P1口高4位的4条端口线定义为列线,形成4*4键盘,可以配置16个按键,将单片机P2口与七段数码管连接,当按下矩阵键盘任意键时,数码管显示该键所在的键号。 1、电路图

Windows命令接口实验报告

Windows命令接口实验 一.实验题目: 第29题——操作系统接口:Windows命令接口。(3人) 4分 二.实验任务: 1.设计要求: ●为Windows操作系统建立兼容的DOS命令接口,文件与目录命令; ●具体命令:DIR, RD,CD,MD, DEL,MOVE,REN, COPY, XCOPY, TIME, DATE,SORT,重定向命令>,<.,|,MORE,TYPE ,CLS,EXIT命令格式可参照Windows的CMD.EXE或MS-DOS提供的命令; ●设计命令的名称、参数等格式; ●可以字符形式接收命令,执行命令,然后显示命令执行结果. 2.设计目的: (1)DIR命令:能够正确显示一个目录里面的子目录和文件 (2)RD命令:能够删除一个空目录 (3)CD命令:能够打开一个存在的目录 (4)MD命令:能够建立一个空目录 (5)DEL命令:能够删除一个文件 (6)MOVE命令:能够移动一个目录或文件 (7)REN命令:能够重命名一个目录或文件 (8)XCOPY命令:能够拷贝整个目录 (8)TIME命令:显示系统的时间 (8)DATE命令:显示系统的日期 (8)SORT命令:对文本内容进行分类 (8)MORE命令:逐步分屏显示 (8)TYPE命令:显示文本内容 (8)CLS命令:清楚屏幕显示 (8)EXIT命令:退出 三:实验环境: 1.PC机一台386以上 2.Microsoft Visual Studio2010 软件 3.实现语言:C语言

四:原理及算法描述: 1.基本原理: 用户利用联机命令接口实现与机器的交互时,先在终端的键盘上打入所需的命令,由终端处理程序接受该命令,并将它显示在终端屏幕上。当一条命令输入完后,由命令解释程序对命令进行分析,然后执行相应命令的处理程序。 2.算法描述: (1)存贮输入的各命令参数 void store_parameter(char *buffer,char *parameter[10],int *para_num) 说明:将输入的命令一条一条存储parameter[10]中,最大允许的参数个数为10个。 算法描述:为buffer设置一个指针buffer_point,如果该指针向下移动,碰到空格,继续向下移动,直到遇到字符,读进各存储变量中parameter[10],最后如果遇到’\0’,则结束。 (2)浏览一个路径下的目录和文件 void my_dir(char *a[],int *num) 说明:该命令只能显示当前目录中的文件和子目录和当前目录中子目录中的文件和子目录。并无如Windows中命令参数如此丰富。主要是考虑其复杂性,予以简化了。 算法描述:如果只接受到mydir命令,后面并无其他参数时,显示当前目录下文件和子目录。如果接受到两个参数,如果第二个参数(表示当前目录中子目录)存在,则显示该目录下文件和子目录,如果不存在,则报错。 (3)删除一个存在的目录,如果不存在,删除失败! void my_rd(char *a[],int *num) 算法描述:如果该目录存在且为空目录,则删除,否则失败。 (4)打开一个存在的目录,如果不存在,打开失败! void my_cd(char *a[],int *num) 算法描述:如果接受到两个参数,第二个参数表示要打开的目录。如果该目录存在,则成功,否则失败。 (5)创建一个目录 void my_md(char *a[],int *num) 算法描述:如果接受到两个参数,第二个参数表示要建立的目录。如果存在该目录,失败,否则成功。 (6)删除一个存在的文件,如果不存在,删除文件失败! void my_del(char *a[],int *num) 算法描述:如果接受到两个参数,第二个参数表示要删除的文件。如果该文件存在,则删除成功,否则失败。 (7)移动一个存在的文件,否则,移动失败 void my_move(char *a[],int *num)

编码器和译码器的应用

编码器、译码器及应用电路设计 一、实验目的: 1、掌握中规模集成编码器、译码器的逻辑功能测试和使用方法; 2、学会编码器、译码器应用电路设计的方法; 3、熟悉译码显示电路的工作原理。 二、实验原理: 1、什么是编码: 教材说:用文字、符号、或者数字表示特定对象的过程称为编码 具体说:编码的逻辑功能是把输入的每个高、低电平信号编成对应的二进制代码 2、编码器74LS147的特点及引脚排列图: 74LS147是优先编码器,当输入端有两个或两个以上为低电平,它将对优先级别相对较高的优先编码。其引脚排列图: 3、什么是译码:译码是编码的逆过程,把给定的代码进行“翻译”,变成相应的状态,使输出通道中相应的一路有信号输出,译码器广泛用于代码转换、终端的数字显示、数据分配、组合控制信号等。 译码器按照功能的不同,一般分为三类:二进制译码器、二—十进制译码器、显示译码器。 (1)变量译码器(用以表示输入变量的状态) 74LS138的特点及其引脚排列图:反码输出。 ABC是地址输入端,Y0—Y7是输出端,G1、G2A’、G2B’为 使能端,只有当G1=G2A’=G2B’=1时,译码器才工作。 (2)码制变换译码器:用于同一个数据的不同代码之间的相互转换,代表是4—10线译码器 译码器74LS42的特点及其引脚排列图: 译码器74LS42的功能是将8421BCD码译成10个对象 其原理与74LS138类同,只不过它有四个输入端, 十个输出端,4位输入代码0000—1111十六种状态组合

其中有1010—1111六个没有与其对应的输出端, 这六组代码叫做伪码,十个输出端均为无效状态。 (3)数码显示与七段译码驱动器:将数字、文字、符号的代码译成数字、文字、符号的电路 a、七段发光二极管数码显示管的特点:(共阴极) b、七段译码驱动器: 4、在本数字电路实验装置上已完成了译码器74LS48和数码管之间的连接图。 三四五脚接高电频,数码管的单独端接低电频。

实验报告七-键盘扫描及显示实验

信息工程学院实验报告 课程名称:微机原理与接口技术 实验项目名称:键盘扫描及显示实验 实验时间: 班级: 姓名: 学号: 一、实 验 目 的 1. 掌握 8254 的工作方式及应用编程。 2. 掌握 8254 典型应用电路的接法。 二、实 验 设 备 了解键盘扫描及数码显示的基本原理,熟悉 8255 的编程。 三、实 验 原 理 将 8255 单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。键盘采用 4×4 键盘,每个数码管显示值可为 0~F 共 16 个数。实验具体内容如下:将键盘进行编号,记作 0~F ,当按下其中一个按键时,将该按键对应的编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近 6 次按下的按键编号。 键盘及数码管显示单元电路图如图 7-1 和 7-2 所示。8255 键盘及显示实验参考接线图如图 7-3 所示。 图 7-1 键盘及数码管显示单元 4×4 键盘矩阵电路图 成 绩: 指导老师(签名):

图 7-2 键盘及数码管显示单元 6 组数码管电路图 图 7-3 8255 键盘扫描及数码管显示实验线路图 四、实验内容与步骤 1. 实验接线图如图 7-3 所示,按图连接实验线路图。

图 7-4 8255 键盘扫描及数码管显示实验实物连接图 2.运行 Tdpit 集成操作软件,根据实验内容,编写实验程序,编译、链接。 图 7-5 8255 键盘扫描及数码管显示实验程序编辑界面 3. 运行程序,按下按键,观察数码管的显示,验证程序功能。 五、实验结果及分析: 1. 运行程序,按下按键,观察数码管的显示。

电脑键盘接线图

电脑键盘接线图 判断键盘控制电路板上的四根线各起什么作用至关重要。将电路板翻过来后可以看到其背面已有明确的提示(图四):黄线Vcc为+5V高电平;红线为地线GND低电平;绿线为Keyboard DATA高电平;白线为Keyboard Clock低电平。不同的键盘连线颜色的定义可能也不同,因此如果不能根据提示正确识别的话可以用万用表测量一下或者参考图五中对于连线的定义(图五)。USB延长线中也是一组四根线,分

别为红、白、绿、黑四根。它们分别对应的是+5V电源、数据负线(DATA-)、数据正线(DATA+)及地线(GND)

电脑键盘的四根线如何接 罗技键盘,y-ss60 线的颜色:红,绿,白,黑 盼请解答,谢谢! 四根线分别是:电源,地,数据,时钟 你要把键盘拆出来,线的另一端焊在里面的电路板,上面标有v(电源),g(地),c(时钟),d(数据).再到网上找个键盘接口定义的图,对着另一端接上去就可以了 这是普通的ps/2的键盘接线图,图中是接口(ps/2插头)截面图。上面标的字母一般在键盘里的电路板上有印的,对照着焊就行了。如果没有标注字母,这个我就没办法了哈哈~多数键盘应该是按照dcgv的顺序排线的,没有写明的可优先考虑这个。 针脚定义如下: pinnamedirdescription 1n/cnotconnected 2data-keydata 3vccpower,+5vdc 4gndgnd 5n/cnotconnected 6clk-clock 键盘接线黄、红、白、绿对应的针脚如下 对应ps/2线对应ps/2针脚 黄3 红4 白6 绿2 对应的电线和针脚连接为: 对应ps/2线对应ps/2针脚 蓝3 白6 绿2 橙4 PS/2鼠标自己动手改USB接口 USB作为电脑外设的一种高速连接标准,目前已广泛应用到了各种外部设备上。电脑主机则在机箱上提供了前置USB接口,有的厂商甚至是在显示器与键盘都添加了USB接口,其目的就是为了能够让用户方便的进行连接鼠标、数码相机等耗电量小的USB外设而无须费力弯腰去机箱背后接插USB设备。键盘上这种体贴的设计让我等用户羡慕不已,我们能不能自己动手让普通键盘也能拥有一个USB接口呢? 答案当然是肯定的。由于键盘与USB同样提供的是5V电源,且同样有地线、

键盘实验报告

基于单片机4×4键盘的实现 成员:刘耀鹏、高攀、谢富田 2014年7月20日

理论分析 本实验是基于AT89C52单片机来实现4×4阵列键盘的输入,用七段数码管输出相应的键值,从而提供良好的人机接口。AT89C52单片机是一个8位的单片,与51系列单片机相比较,其最大的区别是多了一个计数定是中断。 采用12MHz的晶振,采用内接法,对电路提供一个时间基准,P1端口作为键盘的输入端口,P0端口为数据输出端口,P1端口输入的键值,在P0端口产生相应的输出。4×4键盘被抽象为16个开关按钮(每行4个共四行),那么久有4位行控制线,和列四位控制线,当开关接通时,则按键按下,数码管显示相应的键值,具体硬件电路如下: 电路中排阻限流作用,以达到对数码管保护作用,P2口作为位选端口,数码管8接P2.0端口,数码管7接P0.1端口。以达到位选

的作用,对于电路可编写一下程序: 2、程序如下: #include #include #define uint unsigned int #define uchar unsigned char //uchar code table[10] = {0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09}; uchar code table[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; /********************************************************** **** * 名称: Delay_1ms() * 功能: 延时子程序,延时时间为1ms * x * 输入: x (延时一毫秒的个数) * 输出: 无 *********************************************************** ****/ void Delay_1ms(uint x) { uint i; uchar j;

键盘及LED显示实验

实验三键盘及LED显示实验 一、实验内容 利用8255可编程并行接口控制键盘及显示器,当有按键按下时向单片机发送外部中断请求(INT0,INT1),单片机扫描键盘,并把按键输入的键码一位LED 显示器显示出来。 二、实验目的及要求 (一)实验目的 通过该综合性实验,使学生掌握8255扩展键盘和显示器的接口方法及C51语言的编程方法,进一步掌握键盘扫描和LED显示器的工作原理;培养学生一定的动手能力。 (二)实验要求 1.学生在实验课前必须认真预习教科书与指导书中的相关内容,绘制流程图,编写C51语言源程序,为实验做好充分准备。 2.该实验要求学生综合利用前期课程及本门课程中所学的相关知识点,充分发挥自己的个性及创造力,独立操作完成实验内容,并写出实验报告。 三、实验条件及要求 计算机,C51语言编辑、调试仿真软件及实验箱50台套。 四、实验相关知识点 1.C51编程、调试。 2.扩展8255芯片的原理及应用。 3.键盘扫描原理及应用。 4.LED显示器原理及应用。 5.外部中断的应用。 五、实验说明 本实验仪提供了8位8段LED显示器,学生可选用任一位LED显示器,只要按地址输出相应的数据,就可以显示所需数码。 六、实验原理图

P1口桥接。 八、实验参考流程图 1.主程序流程图

2.外中断服务程序流程图 外部中断0 外部中断1 定时器0中断程序,用于消抖动:

3.LED显示程序流程图 九、C51语言参考源程序 #include "reg52.h" unsigned char KeyResult; //存放键值 unsigned char buffer[8]; //显示缓冲区 bit bKey; //是否有键按下 xdata unsigned char P_8255 _at_ 0xf003; //8255的控制口 xdata unsigned char PA_8255 _at_ 0xf000; //8255的PA口 xdata unsigned char PB_8255 _at_ 0xf001; //8255的PB口 xdata unsigned char PC_8255 _at_ 0xf002; //8255的PC口 code unsigned char SEG_TAB[] = { //段码 0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x0}; sbit bLine0 = P3^2; sbit bLine1 = P3^3; //延时1ms void Delay1ms() { unsigned char i;

运用8255设计的键盘及显示接口-实验报告(含接线图+源程序)

运用8255设计的键盘及显示接口 图中用并行接口8255A作为微机与键盘间的接口,采用逐行扫描法识别键。将键盘中的列与PA0—PA3相连,A口为输出;将行与C口的PC0—PC1相连,C 口为输入口; PB0—PB7与七段代码显示器连接B口为输出。 程序执行过程如下:识别是否有键按下,方法是使PA0一PA3输出全0,读C 口(行值) 中只要有一位为0,就说明有键按下,在检测到有键按下后,延迟一段时间,根据找到的键号,转去执行显示七段代码显示器的程序,这时七段代码显示器就显示与该键相同的数值。 实验步骤 8255接口的应用键盘及显示接线图 注:圆圈处是要求接的连线。 (1)按图4接线。 (2)输入源程序,汇编、连接后装入系统。 (3)执行程序后,按一下键盘,7段代码就会显示相应的数字。

程序 STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS DATA SEGMENT TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,3000H MOV AL,00H MOV [SI],AL ;清空存放数据的缓冲区 MOV [SI+1],AL MOV [SI+2],AL MOV [SI+3],AL MOV DI,3003H MOV AL,81H ;8255方式字定义选择0方式,A口为输出; OUT 63H,AL;B口为输出;C口为输入 BEGIN: CALL DIS ;显示七段代码管数据的子程序 CALL CLEAR ;七段代码管清0子程序 CALL CCSCAN ;检测是否有键按下子程序 JNZ INK1 ;

数电实验 编码与译码显示电路

实验二:编码与译码显示电路 一:实验目的 1.掌握中规模集成编码器及译码器的逻辑功能测试方法。 2.掌握编码器译码器的使用方法, 3.熟悉仿真工具的使用。 二:实验设备与器件 直流稳压电源,数字多用表,数字电路实验箱,三位二进制优先编码器,七段译码器,二输入与非门,双四输入与非门,六反相器。 四:实验内容 1.测试电路: 通信工程2014117308 周童桐

2.多位显示电路,要求具有灭零功能。 3.依据题目设计电路并仿真。 题目:若将八路服务信号按轻重缓急安排优先级别后,作为医院病房的八个呼叫信号,在护士值班室放置数码管显示电路,这样,当病号按下呼叫按钮发出呼叫信号时,护士值班室显示相应呼叫号码,并产生提示声音,在护士的按下处理按钮后,电路又回到等待呼叫状态,等待新的呼叫,设计上述控制电路及声音提醒电路并测试结果并用报警电路报警。

真值表: K0 Y2 Y1 Y0 A3 A2 A1 A0 I0 K1 1 1 1 0 0 0 1 I1 K2 1 1 0 0 0 1 0 I2 K3 1 0 1 0 0 1 1 I3 K4 1 0 0 0 1 0 0 I4 K5 0 1 1 0 1 0 1 I5 K6 0 1 0 0 1 1 0 I6 K7 0 0 1 0 1 1 1 I7 K8 0 0 0 1 0 0 0 依据真值表列式并计算 化简后得: A0=Y0 A1=Y0Y1’+Y0’Y1 A2=Y0’Y1’Y2+Y0Y1’Y2’+Y1Y2’ A3=Y0’Y1’Y2’ 依据化简后,设计电路。 依据电路图进行仿真:

应用74LS148编码部分: 优先显示电路部分:蜂鸣器电路:

单片机 键盘接口实验

实验六键盘接口实验 一、实验目的 1、掌握Keil C51软件与Protues软件联合仿真调试的方法; 2、掌握单片机的键盘接口电路; 3、掌握单片机的键盘扫描原理; 4、掌握键盘的去抖原理及处理方法。 二、实验仪器与设备 1、微机一台 2、Keil C51集成开发环境 3、Protues仿真软件 三、实验内容 1、用Protues设计一矩阵键盘接口电路。要求利用P1口接一4×4矩阵键盘。串行口通过一74LS164接一共阴极数码管。用线反转法编写矩阵键盘识别程序,用中断方式,并将按键的键值0-F通过串行口输出,显示在数码管上。 2、将P1口矩阵键盘改成8个独立按键,重新编写识别和显示程序。 四、实验说明 矩阵键盘识别一般包括以下内容: ⑴判别有无键按下。 ⑵键盘扫描取得闭合键的行、列号。 ⑶用计算法或查表发的到键值; ⑷判断闭合键是否释放,如没释放则继续等待。 ⑸将闭合键的键值保存,同时转去执行该闭合键的功能。 五、实验步骤 1、用Protues设计键盘接口电路; 2、在Keil C51中编写键盘识别程序,编译通过后,与Protues联合调试; 3、按动任意键,观察键值是否能正确显示。 六、实验电路仿真图 矩阵键盘电路图见附录1。 独立按键电路图见附录2。 七、实验程序 实验程序见附录3、4。 八、实验总结 1、矩阵键盘常用的检测方法有线反转法、逐行扫描法。线反转法较简单且高效。在矩阵键盘的列线上接一与门,利用中断方式查询按键,可提高CPU的运行效率。 2、注意用线反转法扫描按键时,得到的键值不要再赋给temp,最好再设一新变量接收键值,否则再按下按键显示数字的过程中,再按按键会出现乱码。 3、学会常用与门、与非门的使用方法。 附录1:矩阵键盘实验电路图

实验五编码、译码、显示电路

实验五 编码、译码、显示电路 一、实验目的 1. 学习编码器原理及基本电路。 2. 熟悉七段译码器的逻辑功能和使用。 3. 掌握七段显示器的使用方法。 4. 进一步学习组合电路的应用。 二、实验用元器件 编码器74LS148×2 全加器74LS283×1 显示译码器4511×2 四2输入与非门74LS00×2 编码、译码、显示电路是由编码、译码器和显示器三部分电路组成的逻辑电路。下面分别加以介绍。 1. 编码器 实验中选用被广泛使用的74LS148集成8-3优先编码器。常用于优先中断系统、键盘编码等,引脚图如图2-1。共有9个输入引脚,一个使能端和8个编码输入,均为低电平有效,即输入“0”表示有输入,0~7输入的优先级 由低到高排列,优先级高的 输入有效时,优先级低的输入不起作用。输出为反码,如输入0号端有效时,如输出原码为“000”,实际输出“111”。功能见表2-1。可以将多片编码器扩展成更多二进制码,通过高位使能输出去控制低位编码器的使能输入,实现芯片之间的优先级,再将输出作相应处理,CS 是工作状态标志,如图2-2所示。 图2-1 74LS148的引脚图

表2-1 74LS148优先编码器的功能表 图2-2 优先编码器的扩展 2.全加器 实验中建议使用74LS283全加器,它将A0A1A2A3和B0B1B2B3相加,和由S0S1S2S3输出,C-1为进位输入,Co为进位输出。引脚图见图2-3。

图 2-3 74LS283全加器引脚图 图2-4 4511译码器 3. 译码器 这里所说的译码器是将二进制码译 成十进制数字符的器件。实验中选用的CD4511是一个BCD 码七段译码器,并兼有驱动功能,内部没有限流电阻,与数码管相连接时,需要在每段输出接上限流电阻,引脚排列见图2-4。表2—2是CD4511功能表, CD4511只能对0~9的数字译码,超出范围将无显示。 表3-2 CD4511功能表 4. LED 数码显示器 数码显示器采用八段发光二极管显示器,它可直接显示出译码器输出的十进制数。七段发光显示器有共阴接法和共阳接法两种:共阴接法就是把发光二极管的阴极都接在一个公共点 (接地),其引脚排列和内部原理如图2-5(a )所示, 配套的译码器为CD4511,

实验四 键盘扫描及显示设计实验报告

实验四键盘扫描及显示设计实验报告 一、实验要求 1. 复习行列矩阵式键盘的工作原理及编程方法。 2. 复习七段数码管的显示原理。 3. 复习单片机控制数码管显示的方法。 二、实验设备 1.PC 机一台 2.TD-NMC+教学实验系统 三、实验目的 1. 进一步熟悉单片机仿真实验软件 Keil C51 调试硬件的方法。 2. 了解行列矩阵式键盘扫描与数码管显示的基本原理。 3. 熟悉获取行列矩阵式键盘按键值的算法。 4. 掌握数码管显示的编码方法。 5. 掌握数码管动态显示的编程方法。 四、实验内容 根据TD-NMC+实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能: 1.扫描键盘输入,并将扫描结果送数码管显示。 2.键盘采用 4×4 键盘,每个数码管显示值可为 0~F 共 16 个数。 实验具体内容如下: 将键盘进行编号,记作 0~F,当按下其中一个按键时,将该按键对应的编号在一个数码 管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数 码管上可以显示最近 4 次按下的按键编号。 五、实验单元电路及连线 矩阵键盘及数码管显示单元

图1 键盘及数码管单元电路 实验连线 图2实验连线图 六、实验说明 1. 由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为 5~10ms。这是一个很重要的时间参数,在很多场合都要用到。 键抖动会引起一次按键被误读多次。为了确保 CPU 对键的一次闭合仅做一次处理,必须去除键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按

数字显示电路

数字电子技术综合实验一 数字显示电路 组员: 目录 一、实验目的…………………………………………………….

3 ●二、设计要求…………………………………………….. 4 ●三、各模块设计方案……………………………………. 5 ●四、电路的焊接成型及工作检测 (14) ●五、实验感想及问题………………………..…………. 14

六、元件清单及制作费 用 (21) 一、实验目的 数字显示电路实验将传统的4个分离的基本实验,即基本门电路实验,编码器、显示译码器、7段显示器实验,加法器实验和比较器实验综合为‘—个完整的设计型的组合电路综合实验。通过本实验,要求我们熟悉各种常用MSI组合逻辑电路的功能与使用方法,学会组装和调试各种MSI组合逻辑电路,掌握多片MSI、SSI组合逻辑电路的级联、功能扩展及综合设计技术,使我们具有数字系统外围电路、接口电路方面的综合设计能力。 本次实验的目的为: 1、掌握基本门电路的应用,了解用简单门电路实现控制逻辑。 2、掌握编码、译码和显示电路的设计方法。 3、掌握用全加器、比较器设计电路的方法。

二、设计要求 操作面板左侧有16个按键,编号为0到15,另正面板右侧配2个共阳7段显示器,操作面板图如图1所示。 图1:显示电路面板示意图 设计一个电路:当按下小于10的按键后,右侧低位7段显示器

显示数字,左侧7段显示器显示0;当按下大于9的按键后,右侧低位7段显示器显示个位数字,左侧7段显示器显示l。若同时按下几个按键,优先级别的顺序是15到0。现配备1个4位二进制加法器74LS283,2个8线-3线优先编码器74LSl48,2个四2输入与非门74LS00,一个非门7404,2个显示译码器74LS47。 三、各模块设计方案 该数字显示电路为组合逻辑电路,可分为编码、译码和显示电路以及基本门电路、全加器电路。实验采用的主要器件有1个4位二进制加法器74LS283,2个8线-3线优先编码器74LSl48,2个四2输入与非门74LS00,一个非门7404,2个显示译码器74LS47。 1.各种芯片的功能介绍如下: ①8—3线优先编码器74LSl48简介 在数字系统中,常采用多位二进制数码的组合对具有某种特定含义的信号进行编码。完成编码功能的逻辑部件称为编码器。编码器有

[实验四]定时器及键盘接口的应用 [实验目的] 了解定时器结构、功能及

[实验四]定时器及键盘接口的应用 [实验目的] 1.了解定时器结构、功能及应用。 2.熟悉基于状态机设计的软件设计方法和矩阵键盘的应用设计实现。 3.设计并实现一个改进型的电话拨号系统。 [实验内容]: 1.使用定时器的产生特定频率,输出到蜂鸣器上产生不同的音调。 2.用状态机设计的思想,设计键盘输入接口。 3.综合利用实验板上定时器,蜂鸣器,键盘,LED显示模块,设计一个电话拨号系统。 [实验步骤]: 1.参考第八章例8.7的硬件电路以及软件设计,利用AVR的16位T/C1的比较匹配功能, 发出不同频率的音调。 2.参考9. 3.2 定时扫描方式的键盘接口程序,以及图9-7的键盘部分硬件连线电路,实现 基于状态机思想的键盘扫描。 3.仔细思考例9.3,回答以下问题: ●本例中,在T/C0的中断服务中进行了LED的扫描,而读键盘和键盘处理是在主程序中 完成的。如果将读键盘和键盘处理也放在T/C0中断中完成是否可以?请深入分析这两种处理方式的优点和缺点,说明原因。 ●在read_keyboard()中,行线输出语句为什么重复2次? ●说明在read_keyboard()中,key_mask的作用,另外是否可以将变量key_line和 key_value定义成普通的局部动态变量?为什么? 4.在例9.3的基础上,改进实现一个电话拨号系统: 1)实验板上的矩阵键盘共包含有12个按键,其中10个作为数字“0,1,2….9”的数字输入,其他两个为功能键,一个是总清除键“#”,一个是修改键“*”。修改程 序,键盘上数字键功能不变,而“#”键的功能为总清除(即清除LED上的全部的 数字显示,显示复原为8个“-”),“*”键的功能为修改键(表示最后输入的数字 有误,LED显示全部右移一位,清除最后输入的数字,最左边一位补入“-”)。 2)系统上电时,8个LED数码管显示“--------”8条横线,每按下一个号码后,原8位LED数码管的显示内容向左移动一位,最右边一位则显示键盘上刚按下的数字。 3)将每个数字键与特定的音调相结合起来,比如数字1-2-3-4-5-6-7-8-9-0对应音阶Do-re-mi-fa-sol-la-ti-do-la-mi(后两个为高8度)。每当按下按键在LED上显示数字 后都能在蜂鸣器上发出相同节拍的对应音阶。 [思考题]: 1.当定时计数器工作在普通模式和CTC模式时,都可以产生一个固定的定时中断。如果要求精确的定时中断,采用那种模式比较好?为什么?

串行接口实验报告

课程实验报告实验名称:串行接口 专业班级: 学号: 姓名: 同组人员: 指导教师: 报告日期:

实验二 1. 实验目的 (3) 2. 实验内容 (3) 3. 实验原理 (3) 4. 程序代码 (6) 5. 实验体会 (13)

实验二 1.实验目的 1.熟悉串行接口芯片8251的工作原理 2.掌握串行通讯接收/发送程序的设计方法 2.实验内容 通过对8251芯片的编程,使得实验台上的串行通讯接口(RS232)以查询方式实现信息在双机上的。具体过程如下: 1. 从A电脑键盘上输入一个字符,将其通过A试验箱的8251数据口发送出去,然后通过B试验箱的8251接收该字符,最后在B电脑的屏幕上显示出来。 2.从A试验箱上输入步进电机控制信息(开关信息),通过A试验箱的8251数据口发送到B试验箱的8251数据口,在B试验箱上接收到该信息之后,再用这个信息控制B试验箱上的步进电机的启动停止、转速和旋转方向。 3.实验原理 1.8251控制字说明 在准备发送数据和接收数据之前必须由CPU把一组控制字装入8251。控制字分两种:方式指令和工作指令,先装入方式指令,后装入工作指令。 另外,在发送和接收数据时,要检查8251状态字,当状态字报告“发送准备好”/“接收准备好”时,才能进行数据的发送或接收。 2.8251方式指令(端口地址2B9H)

3.8251工作指令(端口地址2B9H) 4.8251状态字(端口地址2B9H) 5.8253控制字(283H) 6.8253计数初值(283H) 计数初值=时钟频率/(波特率×波特率因子)本实验:脉冲源=1MHz 波特率=1200 波特率因=16 计数初值= 1000000/1200*16=52

键盘接口实验实验报告及程序

实验六键盘接口实验 姓名专业通信工程学号成绩 一、实验目的 1.掌握Keil C51软件与Protues软件联合仿真调试的方法; 掌握单片机的键盘接口电路; 掌握单片机键盘扫描原理; 掌握键盘的去抖原理及处理方法。 实验仪器与设备 1.微机1台C51集成开发环境3。Proteus仿真软件 实验内容 用Proteus设计一矩阵键盘接口电路。要求利用P1口接一4*4矩阵键盘。串行口通过一74LS164接一共阴极数码管。参考电路见后面。 用线反转法编写矩阵键盘识别程序,要求采用中断方式(列线通过4输入与门74LS20接/INT0),无按键按下时,数码管循环画“8”;有按键按下时产生中断并将按键的键值0~F通过串行口输出,在数码管上显示3秒钟后返回;返回后,数码管继续循环画“8”。 将P1口矩阵键盘改为8个独立按键(用中断方式设计),键盘通过74LS30(8输入与非门)和74LS04(六反相器)与/INT0相连,重新编写识别和显示程序。实验原理 矩阵键盘识别一般应包括以下内容: 判别有无键按下。 键盘扫描取得闭合键的行、列号。 用计算法火或查表法得到键值。 判断闭合键是否释放,如果没释放则继续等待。 将闭合键的键值保存,同时转去执行该闭合键的功能。 实验步骤 用Proteus设计键盘接口电路; 在Keil C51中编写键盘识别程序,编译通过后,与Proteus联合调试; 按动任意键,观察键值是否能正确显示。 电路设计及调试、程序 程序设计:矩阵键盘 #include<> #define uchar unsigned char #define uint unsigned int uchar code table1[]={0x00,0x01,0x21,0x61,0x65,0x6d,0x7d,0x7f}; uchar code key_table[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0 xd7,0xb7,0x77};

4x4键盘实验报告

单片机及DSP课程设计报告 专业: 班级: 姓名: 学号: 指导教师: 时间:

一、设计目的 为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的课程设计。通过设计使学生在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力。 1、通过本设计,使学生综合运用《单片机技术原理与应用》、《DSP原理与应用》《C 语言程序设计》以及《数字电路》、《模拟电路》等课程的内容,为以后从事电子产品设计、软件编程、系统控制等工作奠定一定的基础。 2、学会使用KEIL C和PROTEUS等软件,用C语言或汇编语言编写一个较完整的实用 程序,并仿真运行,保证设计的正确性。 3、了解单片机接口应用开发的全过程:分析需求、设计原理图、选用元器件、布线、 编程、调试、撰写报告等。 二、硬件电路方案设计 1、4X4键盘设计 4x4键盘工作原理: 每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电

阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。 2、数码管显示电路设计 数码管显示原理: 动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。 3、晶振和复位电路设计

8051硬件实验5 键盘接口实验

硬件实验5 键盘接口实验 1.实验目的 1)了解按键的相关基础知识以及抖动、连击、重键等的处理方法。 2)了解按键的几种工作方式与特点。 3)掌握键盘的硬件连接方式及程序设计方法。 2.预习要求 1)了解P0、P1、P2、P3口的准双向接口特点与应用特性。 2)了解独立式键盘的硬件连接方式与特点。 3)了解行列式键盘的硬件连接方式与特点,以及行扫描法和线路反转法两种按键扫描 方法。 4)预习本节实验内容,设计实验的硬件连接,编写实验程序。 3.实验说明 1)键盘的组织形式与工作原理 独立式键盘:当数量较少时(如5个以下),通常采用独立式按键方式,即一条口线连接一个按键;独立式键盘软件简单,定时读取这些口线的电平状态,即可判断按键是否按下,是哪个按键按下;但是当按键较多时,需要消耗的I/O口线多。 矩阵式(行列式)键盘:当按键数量较多时,为了节省I/O口资源,通常采用矩阵式键盘形式,对于n列、m行矩阵连接的n×m个按键,只需要n+m条口线。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。在需要的按键数量较多(如大于6个)时,通常采用矩阵法设计键盘接口。 2)矩阵式键盘的扫描方式 A.行扫描法 行扫描法又称为逐行扫描查询法,是一种最常用的按键识别方法,扫描步骤如下: ?按键判断:判断键盘中有无键按下,其过程为将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低 电平线与行线相交叉的按键之中。若所有列线均为高电平,表示无键按下。 ?按键识别:在确认有键按下后,则要确定所闭合按键的位置,即确定键值。其扫描过程为:依次将行线置为低电平并输出(逐行输出0),然后读取各列线的电平状 态,若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。通 过各行的扫描,可以检测到按下的按键。 B.线路反转法 ?第一步:行作为输出,列作为输入。行输出全为0,输入各列电平,如果列值全为

北邮微机原理与接口技术硬件实验报告

微原硬件实验报告 班级:07118 班 学号:070547 班内序号:26 姓名:杨帆

实验一熟悉实验环境及IO的使用 一,实验目的 1. 通过实验了解和熟悉实验台的结构,功能及使用方法。 2. 通过实验掌握直接使用Debug 的I、O 命令来读写IO 端口。 3. 学会Debug 的使用及编写汇编程序 二,实验内容 1. 学习使用Debug 命令,并用I、O 命令直接对端口进行读写操作, 2.用汇编语言编写跑马灯程序。(使用EDIT 编辑工具)实现功能 A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度 等)。 B.通过输出端口控制灯的工作状态(低电平灯亮) 三,实验步骤 1.实验板的IO 端口地址为EEE0H 在Debug 下, I 是读命令。(即读输入端口的状态---拨码开关的状态) O 是写命令。(即向端口输出数据---通过发光管来查看) 进入Debug 后, 读端口拨动实验台上八位拨码开关 输入I 端口地址回车 屏幕显示xx 表示从端口读出的内容,即八位开关的状态ON 是0,OFF 是 1 写端口 输入O 端口地址xx (xx 表示要向端口输出的内容)回车 查看实验台上的发光二极管状态,0 是灯亮,1 是灯灭。 2. 在Debug 环境下,用a 命令录入程序,用g 命令运行 C>Debug -a mov dx, 端口地址 mov al,输出内容 out dx, al

mov ah, 0bh int 21h or al, al jz 0100 int 20h -g 运行查看结果,修改输出内容 再运行查看结果 分析 mov ah, 0bh int 21h or al, al jz 0100 int 20h 该段程序的作用 3.利用EDIT 工具编写汇编写跑马灯程序程序 实现功能 A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。 B.通过输出端口控制灯的工作状态(低电平灯亮) C>EDIT 文件名.asm 录入程序 按Alt 键打开菜单进行存盘或退出 编译文件 C>MASM 文件名.asm 连接文件 C>LINK 文件名.obj 运行文件或用Debug 进行调试。 四,程序流程图

计数、译码和显示电路

实验计数、译码和显示电路 一、实验目的: 1. 掌握二进制加减计数器的工作原理。 2. 熟悉中规模集成计数器及译码驱动器的逻辑功能和使用方法。 二、实验准备: 1.计数: 计数是一种最简单、最基本的逻辑运算,计数器的种类繁多,如按计数器中

图3.11.2 另外一种可预计的十进制加减可逆计数器CD4510,用途也非常广,其引脚排列如图3.11.3所示,其中,E P 为预计计数使能端,in C 为进位输入端, 1P ~4P 为预计的输入端,out C 为进位输出端,U /D 为 加减控制端,R 为复位端,CD4510输入、输出间的 逻辑功能如表所示。 表3.11.2: 。 2. 译码与显示: 十进制计数器的输出经译码后驱动数码管,可以显示0~9十个数字,CD4511是BCD~7段译码驱动集成电路,其引脚排列如图3.11.4所示。LT 为试灯输入,BI 为消隐输入,LE 为锁定允许输入,A 、B 、C 、D 为BCD 码输入,a~g 为七段译码。CD4511的逻辑功能如表所示。 LED 数码管是常用的数字显示器,分共阴和共阳两种, BS112201是共阴的磷化镓数码管,其外形和 内部结构如图3.11.5所示。

图3.11.5 三、计算机仿真实验内容: 1. 计数10的电路: (1).单击电子仿真软件Multisim7基本界面左侧左列真实元件工具条“CMOS”按钮,从弹出的对话框“Family”栏中选“CMOS_10V”,再在“Component”栏中选取4093BD和4017BD各一只,如图3.11.6所示,将它们放置在电子平台上。

图3.11.6 (2).单击电子仿真软件Multisim7基本界面左侧左列真实元件工具条“Source”按钮,从弹出的对话框“Family”栏中选“POWER_SOURCES”,再在“Component”栏中选取“VDD”和地线,将它们调出放置在电子平台上。 (3). 双击“VDD”图标,将弹出如图3.11.7所示对话框,将“V oltage”栏改成“10”V,再点击下方“确定”按钮退出。 图3.11.7

相关文档
最新文档