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

8051硬件实验5 键盘接口实验
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,输入各列电平,如果列值全为

1,表示无键按下;若列值不全为1,表示有键按下;

?第二步:行列线路反转,即列作为输出,行作为输入。列输出全0,输入各行电平,此时应有一行为0。低电平的行和列交点上的按键即为被按下的键。

根据两步得到的列值和行值,构成一个按键的特征码,根据特征码可以确定按下按键的键值。对于线路反转法要求采用双向(或准双向)I/O接口。

3)键盘的工作方式

A.编程扫描方式

编程扫描方式是利用CPU完成其它工作的空余时间,调用键盘扫描子程序来响应键盘的操作。在执行其它程序和按键功能程序时,CPU不再响应按键操作,直到CPU 重新调用键盘扫描程序。该扫描方式简单,缺点是响应速度慢,可能出现按键操作得不到响应的情况。

B.定时扫描方式

定时扫描方式就是每隔一段时间对键盘扫描一次,通常利用微控制器内部的定时器产生一定时时间(例如50ms),在定时中断中调用键盘扫描程序,即进行按键判断和按键识别,再执行该键的功能程序;为避免中断服务程序过长,通常把按键的功能程序转移到主程序中执行。定时中断扫描的效率较高,但是由于按键操作的频度相当于50ms来说是很低的,大量的中断程序是没有效率的空执行,所以还是存在着浪费CPU时间资源的问题。

C.中断扫描方式

采用上述两种键盘扫描方式时,无论是否按键,CPU都要定时扫描键盘,而微控制器应用系统工作时,并非需要经常操作键盘。因此,CPU经常处于空扫描状态,为提高CPU工作效率,可采用中断扫描工作方式。其工作过程如下:当无键按下时,CPU 处理主程序和其他中断等工作,当有键按下时,产生中断请求,CPU转去执行键盘扫描子程序,进行按键识别和功能执行。中断扫描方式具有响应速度快、占用CPU资源合理等特点,但硬件上需要有外部逻辑电路的支持。

4.设计型实验

1)采用独立式键盘,指定I/O与键盘的连接,设计程序实现对键盘的扫描、按键去抖

动的处理。当K0~K3键按下时分别对寄存器B赋值0~3,在Keil环境下,调试

运行程序。

独立式按键与电路

【分析】:

?设P1口的P1.0-P1.7 八条口线分别连接K1—K8八个按键;

?根据从输入口读到的值来判断有无键按下;有键按下时,是哪个键按下,并根据不同的键值分别将1-8赋给A。

?在判断有键按下时,需加入延时去抖动,并再进行一次判断,保证是真正的按键操作。

2)采用4*4行列式键盘,指定I/O与键盘的连接,设计程序实现对键盘的扫描、按键

去抖动的处理。当K0~KF键按下时分别对寄存器A赋值0~F的键值。

【分析】:

?行扫描法的过程请看“按键的行扫描法”视频;

?4*4行列式键盘硬件连接、键值设置如图所示。行线输出为P1.7-P1.4,列线输入为P1.3-P1.0。

矩阵式按键电路

5. 探究型实验

用按键输入自己的学号,保存在内存30H 开始的10个单元中。

矩阵键盘设计实验报告

南京林业大学 实验报告 基于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. 掌握 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. 运行程序,按下按键,观察数码管的显示。

键盘实验报告

基于单片机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、掌握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. 复习单片机控制数码管显示的方法。 二、实验设备 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 对键的一次闭合仅做一次处理,必须去除键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按

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

[实验四]定时器及键盘接口的应用 [实验目的] 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 进行调试。 四,程序流程图

计算机接口实验报告

计算机接口技术 实验报告 学号: 姓名: 提交日期: 成绩: 东北大学秦皇岛分校

实验一可编程定时计数器8253 1、计数器 一、实验目的 掌握8253的基本工作原理和编程方法。 二、实验内容 按图16虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。 三、编程提示 8253控制寄存器地址 283H 计数器0地址 280H 计数器1地址 281H CLK0连接时钟1MHZ 四、实验原理图 图16 五、连线 计数器0的CLK0端接实验箱单脉冲的高电平 计数器0的GATE0端接+5V的电源 计数器0的OUT0端接逻辑笔 六、源程序代码 ASM程序: ioport equ 0d400h-0280h io8253a equ ioport+283h io8253b equ ioport+280h code segment assume cs:code start: mov al,14h ;设置8253通道0为工作方式2,二进制计数 mov dx,io8253a out dx,al mov dx,io8253b ;送计数初值为0FH mov al,0fh

out dx,al lll: in al,dx ;读计数初值 call disp ;调显示子程序 push dx mov ah,06h mov dl,0ffh int 21h pop dx jz lll mov ah,4ch ;退出 int 21h disp proc near ;显示子程序 push dx and al,0fh ;首先取低四位 mov dl,al cmp dl,9 ;判断是否<=9 jle num ;若是则为'0'-'9',ASCII码加30H add dl,7 ;否则为'A'-'F',ASCII码加37H num: add dl,30h mov ah,02h ;显示 int 21h mov dl,0dh ;加回车符 int 21h mov dl,0ah ;加换行符 int 21h pop dx ret ;子程序返回 disp endp code ends end start 在此程序中,芯片8253的初始化程序片段是: mov al,14h ;设置8253通道0为工作方式2,二进制计数 mov dx,io8253a out dx,al mov dx,io8253b ;送计数初值为0FH mov al,0fh out dx,al 七、源程序运行结果 屏幕依次显示1~f,16个二进制数,且每按一次单脉冲二进制数减一。当从f减到1时,逻辑笔的信号灯的红灯亮;当从2减到1时,逻辑笔的信号灯由红灯变更为绿灯。 2、计数器二 一、实验原理图: 按图17连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)

按键接口实验

单片机的键盘接口与编程一 键盘接口和数码管接口是构成单片机人机界面的主要方法,对于一个初学者来说,这部分的内容也是较难的,我们将用四节课的时间来学习这方面的知识。这一课先来讨论键盘的接口原理与编程方法。 键盘是单片机应用系统不可缺少的重要输入设备,主要负责向计算机传递信息,我们可以通过键盘向计算机输入各种指令、地址和数据。它一般由若干个按键组合成开关矩阵,按照其接线方式的不同可分为两种:一种是独立式接法,一种是矩阵式接法,这一课先来讲解独立式键盘的工作原理和编程方法。 一.独立式键盘的工作原理和编程方法 独立式键盘具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统中,那么它是如何来工作的呢?我们慢慢往下看: 1.独立式键盘的接线原理 独立式键盘是由若干个机械触点开关构成的,把它与单片机的I/O 口线连起来,通过读I/O 口的电平状态,即可识别出相应的按键是否被按下,如果按键不被按下,其端口就为高电平;如果相应的按键被按下,则端口就变为低电平。在这种键盘的连接方法中,我们通常采用上拉电阻接法,即各按键开关一端接低电平,另一端接单片机I/O 口线并通过上拉电阻与VCC 相连,如上图所示。这是为了保证在按键断开时,各I/O 口线有确定的高电平,当然,如果端口内部已经有上拉电阻,则外电路的上拉电阻可以省去,想想看,哪几个并行口内部是有上拉电阻的? 通常我们用来做键盘的按键有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的触点式微动开关。这种开关具有结构简单,使用可靠的优点,但当我们按下按键或释放按键的时候它有一个特点,就是会产生抖动,看上图的按键脉冲波形,这种抖动对于人来说是感觉不到的,但对单片机来说,则是完全可以感应到的,因为计算机处理的速度是在微秒级的,而机械抖动的时间至少是毫秒级,对计算机而言,

单片机与矩阵键盘接口电路设计实验报告

单片机与矩阵键盘接口电路设计实验报告 姓名:林蔼龄 学号:1060601007 班级:10级物理系电子信息工程A班

单片机与矩阵键盘接口电路设计实验报告 一:实验内容 使用单片机的P1 口与矩阵式键盘连接时,可以将P1 口低4位的4条端口线定义为行线,P1 口高4位的4条端口线定义为列线,形成4*4键盘,可以配置16个按键,将单片机P2 口与七段数码管连接,当按下矩阵键盘任意键时,数码管显示该键所在的键号。 :电路图 [PD.QfADO M.HAD1 何2也 02 Pα.3ΓAD3 賀 P0.5∕AD5 IPa 5IADE 叮1-∣?∕ P2.o?a P2.1J?9 P3iMI0 P2:3?11 P2.??12 P3S J?13R2.6M14 P2.7J?15 曲JMFD P31JTXD P3.2flNτf P3.3?JτΓ P34JTO P3?Π,1 P3占晅PST丽:程序流程图 r F-SEH ?E EA

四:程序 Org Ooooh IjmP mai n main:mov p1,#Ofh;列线输出O,行线设为输入mov a,p1;读P1 口 an I a,#Ofh;屏蔽高4位,留下行线状态 Cjne a,#0fh,look;有按键按下,转look ret;无按键按下,返回主程序 look:lcall dIay10;延时10ms mov a,p1;读P1 口 anl a,#0fh;屏蔽高4位,留下行线状态 Cjne a,#0fh,ra nk确认键已按稳,转RANK ljmp main;是抖动,未按稳,重新扫描rank:mov r2,#00h ;窜键标志寄存器请0 mov r3,#04h ;查列次数 mov r4,#0f7h ;列扫描字初值 mov r5,#0ffh ;列号处值 rloop1:inc r5 ;开始列扫描,列号加1 mov a,r4 ;列扫描字送A rl a ;列扫描字左移一位

单片机实验报告——矩阵键盘数码管显示

单片机实验报告 信息处理实验 实验二矩阵键盘 专业:电气工程及其自动化 指导老师:高哲 组员:明洪开张鸿伟张谦赵智奇学号:152703117 \152703115\152703118\152703114

室温:18 ℃日期:2017 年10 月25 日 矩阵键盘 一、实验内容 1、编写程序,做到在键盘上每按一个键(0-F)用数码管将该建对应的名字显示出来。按其它键没有结果。 二、实验目的 1、学习独立式按键的查询识别方法。 2、非编码矩阵键盘的行反转法识别方法。 3、掌握键盘接口的基本特点,了解独立键盘和矩阵键盘的应用方法。 4、掌握键盘接口的硬件设计方法,软件程序设计和贴士排错能力。 5、掌握利用Keil51软件对程序进行编译。 6、会根据实际功能,正确选择单片机功能接线,编制正确程序。对实验结果 能做出分析和解释,能写出符合规格的实验报告。 三、实验原理 1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先

向端口写入“1”。 2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。 3、识别键的闭合,通常采用行扫描法和行反转法。行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。 行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。 由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。 行反转法识别按键的过程是:首先,将4个行线作为输出,将其全部置0,4个列线作为输入,将其全部置1,也就是向P1口写入0xF0;假如此时没有人按键,从P1口读出的值应仍为0xF0;假如此时1、4、7、0四个键中有一个键被按下,则P1.6被拉低,从P1口读出的值为0xB0;为了确定是这四个键中哪一个被按下,可将刚才从P1口读出的数的低四位置1后再写入P1口,即将0xBF写入P1口,使P1.6

小键盘按键识别实验 实验报告_孔令宇 10284032

小键盘按键识别实验 学生:孔令宇 班级:计科10级1006班 任课教师:吴为民 一、实验目的 掌握用软件方法识别行列式键盘按键的原理和方法,以此进一步理解和掌握8255并行接口的原理和使用方法。 二、实验内容 将小键盘的键号(S1-S16)用16进制数0-F在7段数码管上显示。 三、实验原理图 四、实验流程

五、实验代码 .model small .386 data segment i8255_a equ 200h i8255_b equ 201h i8255kz equ 203h led_cs equ 210h ledcode db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,67h,77h,7ch,39h,5eh,79h,71h data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov dx,i8255kz ;8255 命令口 mov al,10000010 ;设置8255控制字:0方式A口输出,B口输入 out dx,al ;输出8255控制字 L1 : call readkey ;判断行线、列线状态 mov bh,ah ;AH=行线状态 mov bl,al ;AL=列线状态 call delay ;延时20-30ms call readkey ;再次判断行线、列线状态是否与第一次相同 cmp bl,al ;比较al和bl的值

jnz start ;不相等则跳至start cmp bh,ah ;比较bh ,ah 的值 jnz start ;不相等则跳至start call keyup ;等待键释放后再处理 mov ax,bx call cmpoffset ;调用求键值的子程序cmpoffset call disp ;调用求键值的子程序disp ,显示数字 call delay ;延时20-30ms jmp L1 ;循环进行将小键盘输出到数码管显示 readkey proc mov ah,11111110 scan: mov al,ah mov dx,i8255_a ;8255 A 口 out dx,al ;输出一行线为低 mov dx,i8255_b ;8255 B 口 in al,dx ;输入列线状态 or al,0f0h ;高四位置1 ,低四位为列线状态 cmp al,0ffh ;检查是否有按键按下 jne exitkey ;有键按下,退出 rol ah,1 ; 没有键按下则检查下一行 jmp scan exitkey: ret readkey endp delay proc push cx mov cx,8000h ;延时 delay1: loop delay1 pop cx ret delay endp keyup proc noup: mov al,ah mov dx,i8255_a ;8255 A 口 out dx,al ;输出行线 mov dx,i8255_b ;8255 B 口 in al,dx ;读入列线 or al,0f0h ;与0f0h 相或,为判断按键是否释 放提供数据 cmp al,0ffh ;按键是否释放 je exit ;已释放,退出 jmp noup ;未释放,继续检查

相关文档
最新文档