实验八 键盘扫描实验

实验八  键盘扫描实验
实验八  键盘扫描实验

实验八键盘扫描实验

一、实验目的

1. 掌握中断键盘扫描编程方法。

2. 掌握LED动态显示方法。

二、实验原理及实验内容

1. 实验原理

无论是单片机控制系统还是单片机测量系统,都需要一个人机对话装置,这种人机对话装置通常采用键盘和显示器。键盘是单片机应用系统中人机对话常用的输入装置,而显示器是单片机应用系统人机对话中的常用输出装置。

键盘是由若干个按键开关组成,键的多少根据单片机应用系统的用途而定。键盘由许多键组成,而每个键相当于一个机械开关触点,当键按下时,触点闭合,当键松开时,触点断开。单片机接收到按键的触点信号后作相应的功能处理。因此对于单片机系统来说键盘接口信号是输入信号。

单片机的键盘接口分为独立式和矩阵式。独立式键盘的每个按键都有一个信号线与单片机电路相连,所有按键有一个公共地或公共正端,每个键相互独立互不影响。如图7-7所示,当按下键1时,无论其它键是否按下,键1的信号线就由1变0;当松开键1时,无论其它键是否按下,键1的信号线就由0变1。

矩阵式键盘的按键触点接于由行、列母线构成的矩阵电路的交叉处,每当一个按键按下时通过该键将相应的行、列母线连通。若在行、列母线中把行母线逐行置0(一种扫描方式),那么列母线就用来作信号输入线。矩阵式键盘原理图如图7-8所示。

图7-7 独立式按键原理图图7-8 矩阵式按键原理图

针对以上两大类键盘工作方式,单片机又有三种键盘扫描方式:查询方式;定时扫描方式和中断扫描方式。

查询方式是指在程序中用一段专门的扫描和读按键程序不停查询有无按键按下,确定键值。这种方式电路简单,但需要占用单片机的机器时间。

定时扫描方式是指利用单片机内的定时器来产生定时中断,然后在定时中断的服务程序中扫描,检查有无按键按下,确定键值。这种方式的电路也比较简单,不占用单片机的机器时间,但需要占用一个定时器,同时定时的时间不能过长,否则可能检测不到相应得按键。

中断扫描方式是指当有键按下时由相应的硬件电路产生中断信号,单片机在中断服务程序中

扫描,检查有无按键按下,确定键值。这种方式硬件电路上必须要产生中断线,需要与门和非门来产生。但中断方式不占用单片机的机器时间,也不会出现定时方式时的检测不到键盘的情况。

另外,在扫描键盘时需处理键盘抖动问题,称为去抖。一般去抖可以采用软件方式完成,操作方法是,当检测到有键按下时,等待10ms左右时间,如果此按键仍然保持按下的状态,这是确认此按键,如果在100ms内连续检测到此按键按下,则不确认第二次按下的键。

本实验系统中的键盘在硬件上采用查询方式工作,键盘采用矩阵键盘有16个按键,见第六

2.实验内容

a.根据流程图在Keil编译环境下编写程序,生成*.HEX文

件,要求是任意按下键盘,要求能在LED上将按下的键

对于的十六进制数显示出来。

b.通过ISP软件将生成的*.HEX文件下载到单片机当中。

c.将K1拨动开关打到“on”的位置,离线运行程序,观察

实验现象,是否满足要求。不满足实验要求时,检查实

验代码。

三、参考程序

汇编程序:

FKEY EQU 20H.0 /*按键标志*/

KEYNUM EQU 30H /*按键编号变量*/

ORG 0000H

AJMP MAIN

MAIN:

ACALL KEYET

MOV @R0,A

MOV A,@R0

MOV P0,A

AJMP MAIN

图7-9键盘扫描TABLE: /*字型数据数组*/

DB 0C0H,0F9H,0A4H,0B0H

DB 99H,92H,82H,0F8H

DB 80H,90H,88H,83H

DB 0C6H,0A1H,86H,8EH

KEYET:

CLR FKEY /*清除按键标志*/

ACALL SCAN /*执行按键扫描*/

JB FKEY,G1 /*测试按键标志*/

AJMP KEYET /*若没有按键则等待按键*/

DELAY: /*延迟子程序*/

MOV R6,#50 /*总延迟时间R5*10 ms*/

D1: MOV R7,#100

DJNZ R7,$

DJNZ R6,D1

DJNZ R5,DELAY

RET

G1:

ACALL SCAN /*执行按键扫描*/

JB FKEY,G1 /*等待按键放开*/

MOV A,KEYNUM

MOV DPTR,#TABLE /*找出按键码*/

MOVC A,@A+DPTR

RET

SCAN: /*键盘扫描控制程序*/

MOV R3,#0FEH /*加载扫描输出信号初值11111110B*/

MOV R4,#0 /*按键计数标号清除为0*/

MOV R1,#4 /*循环1执行4次*/

CLR PSW.5 /*PSW.5=0表示未按键*/

L1:

MOV A,R3

MOV P2,A /*由P2口送出扫描输出信号*/

MOV R5,#1

ACALL DELAY

MOV A,P2 /*读取P2数据以便判断是否有按键*/

ANL A,#0F0H

MOV R2,#4

L2:

JB ACC.4,N1 /*累加器A位4若为1表示没按键*/

MOV KEYNUM,R4 /*加载按键编号*/

SETB PSW.5 /*按键标志设为1*/

N1:

INC R4 /*按键编号加1*/

RR A /*检查下一位*/

DJNZ R2,L2

MOV A,R3 /*加载旧的扫描码*/

RL A

MOV R3,A

DJNZ R1,L1

BACK:

JNB PSW.5,NO_KEY /*设置是否按键*/

SETB FKEY /*若有按键FKEY=1*/

RET

NO_KEY:

CLR FKEY

RET

END

C语言程序:

#include

#define uchar unsigned char

#define unit unsigned int

void delay();

uchar keyscan();

unit j,h;

void main()

{

uchar key;

P1=0xff; /*数码管使能*/

while (1)

{

key=keyscan(); /*键盘值返回*/

delay();

switch(key) /*判断键值*/

{

case 0xee:P0=0xc0; break; /*0~F的键值*/

case 0xde:P0=0xf9; break;

case 0xbe:P0=0xa4; break;

case 0x7e:P0=0xb0; break;

case 0xed:P0=0x99; break;

case 0xdd:P0=0x92; break;

case 0xbd:P0=0x82; break;

case 0x7d:P0=0xf8; break;

case 0xeb:P0=0x80; break;

case 0xdb:P0=0x90; break;

case 0xbb:P0=0x88; break;

case 0x7b:P0=0x83; break;

case 0xe7:P0=0xc6; break;

case 0xd7:P0=0xa1; break;

case 0xb7:P0=0x86; break;

case 0x77:P0=0x8e; break;

case 0x00:P0=0xc1; break;

}

}

}

//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

void delay() /*延时*/

{

unsigned int i;

for(i=8000;i>0;i--);

}

//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

uchar keyscan() /*键盘扫描*/

{

while(1)

{

P2=0xff; /*P2口拉高*/

P2=0xfe; /*第一行置低*/

if ((P2&0xff)!=0xfe) //判断是否有键按下

{

delay(); /*去抖动*/

if((P2&0xff)!=0xfe)

return P2; /*返回键值*/

else P2=0xfd;

}

else P2=0xfd; /*第二行置低*/

if ((P2&0xff)!=0xfd)

{

delay();

if ((P2&0xff)!=0xfd)

return P2;

else P2=0xfb;

}

else P2=0xfb; /*第三行置低*/

if ((P2&0xff)!=0xfb)

{

delay();

if ((P2&0xff)!=0xfb)

return P2;

else P2=0xf7;

}

else P2=0xf7; /*第四行置低*/

if ((P2&0xff)!=0xf7)

{

delay();

if ((P2&0xff)!=0xf7)

return P2;

else return P2=0xfe;

}

}

}

四、实验仪器和设备

Keil软件;AT89S52实验平台;A TMEL ISP在线编程软件;

五、实验结果和数据分析

问题:

1.说明查询方式工作原理。

2.说明中断方式和查询方式的优缺点。

键盘与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 显示器,只要按地址输出相应的数据,就可以显示所需数码。 显示字形 1 2 3 4 5 6 7 8 9 A b C d E F 段 码 0xfc 0x60 0xda 0xf2 0x66 0xb6 0xbe 0xe0 0xfe 0xf6 0xee 0x3e 0x9c 0x7a 0x9e 0x8e 六、实验原理图 01e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1GND2DS29 LG4041AH 234 567 89A B C D E F e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1 GND2DS30 LG4041AH 1 2 3 4 5 6 7 8 JP4112345678 JP4712345678JP42 SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH A C B 12345678 JP92D 5.1K R162 5.1K R163VCC VCC D034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC7 10 RD 5WR 36A09A18RESET 35CS 6 U36 8255 D0D1D2D3D4D5D6D7WR RD RST A0A1PC5PC6PC7 PC2PC3PC4PC0PC1CS 12345678JP56 12345678JP53 12345678 JP52 PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7 (8255 PB7)(8255 PB6)(8255 PB5)(8255 PB4)(8255 PB3)(8255 PB2)(8255 PB1)(8255 PB0) (8255 PC7)(8255 PC6)(8255 PC5)(8255 PC4)(8255 PC3)(8255 PC2)(8255 PC1)(8255 PC0) (8255 PA0) (8255 PA1) (8255 PA2) (8255 PA3) (8255 PA4) (8255 PA5) (8255 PA6) (PA7) I N T 0(P 3.2) I N T 0(P 3.3) 七、连线说明

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

信息工程学院实验报告 课程名称:微机原理与接口技术 实验项目名称:键盘扫描及显示实验 实验时间: 班级: 姓名: 学号: 一、实 验 目 的 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. 运行程序,按下按键,观察数码管的显示。

CPU控制的键盘扫描实验

CPU键盘扫描实验 电路图如下: 要求按下s1键时,p3口的8位LED正向流水点亮;按下s2键时,p3口的8位LED反向流水点亮;按下s3键时,p3口的8位LED 熄灭;按下s4键时,p3口的8位LED闪烁。 程序代码: #include unsigned char tab[ ]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //段码表 sbit S1=P1^4; //将S1位定义为P1.4引脚 sbit S2=P1^5; //将S2位定义为P1.5引脚 sbit S3=P1^6; //将S3位定义为P1.6引脚 sbit S4=P1^7; //将S4位定义为P1.7引脚 /*流水灯延时*/ void delay0() { unsigned char i,j; for(i=0;i<250;i++) for(j=0;j<250;j++) ;

} /*软件消抖延时*/ void delay1() { unsigned char i,j; for(i=0;i<100;i++) for(j=0;j<100;j++) ; } /*正转*/ void zheng() { int i; for(i=0;i<8;i++) {P3=tab[i]; delay0();} } /*反转*/ void fan() { int i; for(i=7;i>=0;i--) {P3=tab[i]; delay0();} } /*关闭*/ void close() { P3=0xff; } /*闪烁*/ void shan() { P3=0xff; delay0(); P3=0x00; delay0();

矩阵键盘扫描实验

实验矩阵键盘扫描实验 一、实验要求 利用4X4 16位键盘和一个7段LED构成简单的输入显示系统,实现键盘输入和LED 显示实验。 二、实验目的 1、理解矩阵键盘扫描的原理; 2、掌握矩阵键盘与51单片机接口的编程方法。 三、实验电路及连线 Proteus实验电路

1、主要知识点概述: 本实验阐述了键盘扫描原理,过程如下:首先扫描键盘,判断是否有键按下,再确定是哪一个键,计算键值,输出显示。 2、效果说明: 以数码管显示键盘的作用。点击相应按键显示相应的键值。 五、实验流程图

1、Proteus仿真 a、在Proteus中搭建和认识电路; b、建立实验程序并编译,加载hex文件,仿真; c、如不能正常工作,打开调试窗口进行调试 参考程序: ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV DPTR,#TABLE ;将表头放入DPTR LCALL KEY ;调用键盘扫描程序 MOVC A,@A+DPTR ;查表后将键值送入ACC MOV P2,A ;将ACC值送入P0口 LJMP MAIN ;返回反复循环显示 KEY: LCALL KS ;调用检测按键子程序 JNZ K1 ;有键按下继续 LCALL DELAY2 ;无键按调用延时去抖 AJMP KEY ;返回继续检测按键 K1: LCALL DELAY2 LCALL DELAY2 ;有键按下延时去抖动 LCALL KS ;再调用检测按键程序 JNZ K2 ;确认有按下进行下一步 AJMP KEY ;无键按下返回继续检测 K2: MOV R2,#0EFH ;将扫描值送入R2暂存MOV R4,#00H ;将第一列值送入R4暂存 K3: MOV P1,R2 ;将R2的值送入P1口 L6: JB P1.0,L1 ;P1.0等于1跳转到L1 MOV A,#00H ;将第一行值送入ACC AJMP LK ;跳转到键值处理程序 L1: JB P1.1,L2 ;P1.1等于1跳转到L2 MOV A,#04H ;将第二行的行值送入ACC AJMP LK ;跳转到键值理程序进行键值处理 L2: JB P1.2,L3 ;P1.2等于1跳转到L3

实验三 键盘扫描控制

实验三4*4键盘扫描显示控制 一、实验目的 实现一4×4键盘的接口,并在两个数码管上显示键盘所在的行与列。即将8255单元与键盘及数码管显示单元连接,编写实验程序扫描键盘输入,并将扫描结果送数码显示,键盘采用4×4键盘,每个数码管值可以为0到F,16个数。将键盘进行编号记作0—F当按下其中一个按键时将该按键对应的编号在一个数码管上显示出来,当按下下一个按键时便将这个按键的编号在下一个数码管上显示出来,且数码管上可以显示最近6次按下按键的编号。 二、实验要求 1、接口电路设计:根据所选题目和所用的接口电路芯片设计出完整的接口电路,并进行电路连接和调试。 2、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明。 三、实验电路

四、实验原理说明 图2 数码管引脚图 图1为AT89C51引脚图,说明如下: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口同时为闪烁编程和编程校验接收一些控制信号。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址

键盘扫描显示实验原理及分析报告

键盘扫描显示实验原理及分析报告 一、实验目的-------------------------------------------------------------1 二、实验要求-------------------------------------------------------------1 三、实验器材-------------------------------------------------------------1 四、实验电路-------------------------------------------------------------2 五、实验说明-------------------------------------------------------------2 六、实验框图-------------------------------------------------------------2 七、实验程序-------------------------------------------------------------3 八、键盘及LED显示电路---------------------------------------------14 九、心得体会------------------------------------------------------------- 15 十、参考文献--------------------------------------------------------------15

键盘扫描实验设计报告

目录 第一章引言 (1) 1.1 键盘及LED扩展电路概述 (1) 1.2 系统的主要功能 (1) 第二章系统的硬件设计 (2) 2.1 系统的硬件构成及功能 (3) 2.2 主控模板硬件设计 (3) 2.3 ARM芯片及引脚说明 (3) 2.4 LED数码显示管 (6) 2.5 键盘设计 (8) 第三章系统的软件设计 (12) 3.1 软件总体功能设计 (12) 3.2各功能模块软件设计 (16) 第四章结束语 (18) 致谢 (18) 参考文献 (18) 附录 (19)

第一章引言 1.1键盘及LED扩展电路概述 键盘及LED扩展电路主要是由74HC164移位寄存器、数码显示管、按键、电阻、电容、导线等构成的。将8个按键用总线分别与两个74HC164移位寄存器、数码显示管联接起来,两个74HC164移位寄存器联接起来。一个用来存段码,一个用来存位码。在没有按键动作时,74HC164 移位寄存器的数据输入端AB(A 和B 作为一个2 个输入端的与门为74HC164 提供数据,在此电路里并联)的输入电平为1,供电路产生移位逻辑时钟脉冲信号的输入端CP也为1 电平。此时按下键就给了CP 端一个低电平,当键松开后CP端即恢复高电平,于是CP端就得到了一个输入翻转兼移位的低电平脉冲信号.当74HC164得到了一个0 数据的同时输出端Q7~Q0 的数据将全部左移一位。通过DATA端持续给其传送数据,当装满寄存器后开始循环,而寄存器与数码显示管是相通的,寄存器把对应位的高、低电平传给数码管,使符合条件(段码、位码)的0-9在数码管上显示出来。 1.2系统的主要功能 该系统使用前后台的程序编写方法,完成三个基本的功能。 1.任意按下键盘,能在数码显示管上将按下的键对应的十六进制数显示出来图1.1.1 3. 键盘扫描的流程图如右:

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

实验四键盘扫描及显示设计实验报告 一、实验要求 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 对键的一次闭合仅做一次处理,必须去除键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按

8279键盘扫描输入实验

实验二 8279键盘扫描输入实验 一、实验目的 1.熟悉INTEL8279键盘、显示器接口与8031的连接方法; 2.掌握8279键盘扫描输入程序的编写; 二、实验要求 编写一个键盘扫描输入程序,把读取到的键值依次存放在8031片内RAM的30H-43H 单元中,超过20个键值时,多余的健值存放在44单元中。 三、芯片应用特性 8279是专用键盘、显示控制芯片,能对显示器自动扫描;能识别键盘上按下的键号,可充分提高CPU工作效率,8279与8031的接口方便,由它构成的标准键盘、显示接口在工业控制中得到广泛的应用。 1.关于INTEL 8279 无编码器键盘常常采用软件方法,逐行逐列地检查键盘状态,当发现按下的键后,用计算或查表等方法来找到该键的键编码。而INTEL 8279公司的键盘、显示接口芯片是一种扫描式键盘编码器芯片 8279是一种通用可编程键盘显示接口芯片,它能完成键盘输入和显示控制两种功能。键盘部分提供一种扫描方式,可与64个按键的矩阵键盘连接,能对键盘不断扫描,自动消抖,自动识别按下的键并给出编码,能对双键或n 键同时按下实行保护。 显示部分分为发光二极管、荧光管及其它显示器提供了按扫描方式工作的显示接口,它为显示器提供多路复用信号,可显示多达16个字符或数字。 2. 实验板8279键盘、显示电路介绍: 8279采用外部译码操作方式,74LS138输出8位显示器的位控制信号和键盘的行扫描信号。8279的8位输出线A0-A3和B0-B3与数码管的8个段相对应,经74LS240缓冲后,去驱动各数码管的8个段。74LS138输出的8根线由74LS240反相后,再经大电流驱动器ULN2003A驱动,成为各数码管的位选择信号,当位选信号有效时(呈0电平),相应数码管被选通,而显示内容则取决于它的各个显示段的电平。 四、实验步骤 1.线路连接及注意事项 1)线路连接 8279键盘键值可采用查询方式读取,也可以采用中断方式读取。查询方式须设等待键输入指令。实验板上,8279的中断请求线(IRQ)经反相后与插座CN8相连。做实验时,只须短接CN8上的KBIRQ、INT0。 2)注意事项 因8279的RL0无法回扫键值。实验板上,首行键盘与回扫线RL4相连,与原理图不同。编程时请注意,首行键盘编码值为04H、0CH、14H、1CH、24H。 2.程序设计 1)关于8279的端口 实验板的硬件连接决定了8279的数据口为2FFEH,当对数据口执行读操作时,读取到的数据为键值编码,对数据口执行写操作时,数据写入显示RAM中,8279的命令、状态口

4X4键盘扫描实验

44 键盘扫描实验 实验目的 1、学习HDL程序的基本设计技巧; 2、掌握矩阵键盘的扫描原理和使用方法。 Verilog程序: module hex_keypad(Col,Code,show,show1,count,scan,clock,Row); output[3:0] Code,Col,count; //定义列信号Col、行列信号共同决定的 输出代码Code、以及计数变量count output[7:0] show,show1; //定义七段显示变量show、show1 input[3:0] Row; //定义输入行信号Row input scan; //定义数码管选择信号scan input clock; //定义时钟信号clock reg[3:0] Col,Code,count; //将输出信号定义为reg型 reg[7:0] show,show1; reg[1:0] cn; //定义reg型变量cn,用于计数 reg reset,count_up,count_down; //定义变量reset用于计数清零,count_up 开始加计数,count_down开始减计数reg[15:0] times1,times2; //定义变量times1、times2用于决定开 始计数的时间 assign scan=1'b1; //将数码管选择信号赋值为1

always@(posedge clock) //产生列信号 if(cn==4)cn<=0; else cn<=cn+1; always@(cn) case(cn) 2'b00:Col=4'b1110; 2'b01:Col=4'b1101; 2'b10:Col=4'b1011; 2'b11:Col=4'b0111; endcase always@(posedge clock) //行列信号共同决定输出代码Code case({Row,Col}) 8'b1110_1110:Code=4'h0; 8'b1110_1101:Code=4'h1; 8'b1110_1011:Code=4'h2; 8'b1110_0111:Code=4'h3; 8'b1101_1110:Code=4'h4; 8'b1101_1101:Code=4'h5;

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

单片机实验报告 信息处理实验 实验二矩阵键盘 专业:电气工程及其自动化 指导老师:高哲 组员:明洪开张鸿伟张谦赵智奇 学号: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为低,其余均为高,若此时被按下的键是“4”,则P1.1被拉低,从P1口读出的值为0xBE;这样,当只有一个键被按下时,每一个键只有唯一的反转码,事先为12个键的反转码建一个表,通过查表就可知道是哪个键被按下了。

实验一矩阵键盘检测

一、实验目的: 1、学习非编码键盘的工作原理和键盘的扫描方式。 2、学习键盘的去抖方法和键盘应用程序的设计。 二、实验设备: 51/AVR实验板、USB连接线、电脑 三、实验原理: 键盘接口电路是单片机系统设计非常重要的一环,作为人机交互界面里最常用的输入设备。我们可以通过键盘输入数据或命令来实现简单的人机通信。 1、按键的分类 一般来说,按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键(如本学习板上所采用按键)。 按键按照接口原理又可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的识别。 全编码键盘由专门的芯片实现识键及输出相应的编码,一般还具有去抖动和多键、窜键等保护电路,这种键盘使用方便,硬件开销大,一般的小型嵌入式应用系统较少采用。非编码键盘按连接方式可分为独立式和矩阵式两种,其它工作都主要由软件完成。由于其经济实用,较多地应用于单片机系统中(本学习板也采用非编码键盘)。 2、按键的输入原理 在单片机应用系统中,通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。也就是说,它能提供标准的TTL 逻辑电平,以便与通用数字系统的逻辑电平相容。此外,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据。当所设置的功能键或数字键按下时,计算机应

键盘扫描输入实验

4.1键盘扫描输入实验 4.1.1 实验目的 1.学习复杂数字系统的设计方法; 2.掌握矩阵式键盘输入列阵的设计方法。 4.1.2 实验设备 PC微机一台,TD-EDA试验箱一台,SOPC开发板一块。 4.103 实验内容 在电子,控制,信息处理等各种系统中,操作人员经常需要想系统输入数据和命令,以实现人机通信。实现人机通信最常用的输入设备是键盘。在EDA技术的综合应用设计中,常用的键盘输入电路独立式键盘输入电路、矩阵式键盘输入电路和“虚拟式”键盘输入电路。 所谓矩阵是键盘输入电路,就是将水平键盘扫描线和垂直输入译码线信号的不同组合编码转换成一个特定的输入信号值或输入信号编码,利用这种行列矩阵结构的键盘,只需N 个行线和M个列线即可组成NXM按键,矩阵式键盘输入电路的优点是需要键数太多时,可以节省I/O口线;缺点是编程相对困难。 本实验使用TD-EDA实验系统的键盘单元设计一个4x4的矩阵键盘的扫描译码电路。此设计包括键盘扫描模块和扫描码锁存模块,原理如图4-1-1。每按下键盘列阵的一个按键立即在七段数码管上显示相应的数据。 4.1.1 实验步骤 1. 运行Quartus II 软件,分别建立新工程,选择File->New菜单,创建VHDL描述语言设计文件,分别编写JPSCAN.VHD、REG.VHD. 2.扫描码锁存模块REG的VHDL源程序如下; --输入锁存器VHDL源程序:REGVHDL LIBRARY IEEE; USB IEEE.STD-LOGIC-1164.ALL; ENTITY REG IS PORT ( RCLK : IN STD-LOGIC; --扫描时钟YXD : IN STD-LOGIC-VECTOR(3 DOWNTO 0); --Y 列消抖输入 DATA : IN STD-LOGIC-VECTOR(7 DOWNTO 0); --输入数据 LED : OUT STD-LOGIC- VECTOR(7 DOWNTO 0)); --锁存数据输出END ENTITY REG; ARCHITECTURE BEHV OF REG IS SIGNAL RST : STD-LOGIC; --锁存器复位清零 SIGNAL OLDDATA : STD-LOGIC- VECTOR(7 DOWNTO 0); --锁存器旧数据 SIGNAL NEWDATA : STD-LOGIC- VECTOR(7 DOWNTO 0); --锁存器新数据

实验八 键盘扫描实验

实验八键盘扫描实验 一、实验目的 1. 掌握中断键盘扫描编程方法。 2. 掌握LED动态显示方法。 二、实验原理及实验内容 1. 实验原理 无论是单片机控制系统还是单片机测量系统,都需要一个人机对话装置,这种人机对话装置通常采用键盘和显示器。键盘是单片机应用系统中人机对话常用的输入装置,而显示器是单片机应用系统人机对话中的常用输出装置。 键盘是由若干个按键开关组成,键的多少根据单片机应用系统的用途而定。键盘由许多键组成,而每个键相当于一个机械开关触点,当键按下时,触点闭合,当键松开时,触点断开。单片机接收到按键的触点信号后作相应的功能处理。因此对于单片机系统来说键盘接口信号是输入信号。 单片机的键盘接口分为独立式和矩阵式。独立式键盘的每个按键都有一个信号线与单片机电路相连,所有按键有一个公共地或公共正端,每个键相互独立互不影响。如图7-7所示,当按下键1时,无论其它键是否按下,键1的信号线就由1变0;当松开键1时,无论其它键是否按下,键1的信号线就由0变1。 矩阵式键盘的按键触点接于由行、列母线构成的矩阵电路的交叉处,每当一个按键按下时通过该键将相应的行、列母线连通。若在行、列母线中把行母线逐行置0(一种扫描方式),那么列母线就用来作信号输入线。矩阵式键盘原理图如图7-8所示。 图7-7 独立式按键原理图图7-8 矩阵式按键原理图 针对以上两大类键盘工作方式,单片机又有三种键盘扫描方式:查询方式;定时扫描方式和中断扫描方式。 查询方式是指在程序中用一段专门的扫描和读按键程序不停查询有无按键按下,确定键值。这种方式电路简单,但需要占用单片机的机器时间。 定时扫描方式是指利用单片机内的定时器来产生定时中断,然后在定时中断的服务程序中扫描,检查有无按键按下,确定键值。这种方式的电路也比较简单,不占用单片机的机器时间,但需要占用一个定时器,同时定时的时间不能过长,否则可能检测不到相应得按键。 中断扫描方式是指当有键按下时由相应的硬件电路产生中断信号,单片机在中断服务程序中

按键及显示实验

一、实验原理及电路 1、LCD显示器是通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。因此,LCD的驱动控制归于对每个液晶单元通断电的控制,每个液晶单元都对应着一个电极,对其通电,便可使用光线通过(也有刚好相反的,即不通电时光线通过,通电时光线不通过)。, 2、由于LCD已经带有驱动硬件电路,因此模块给出的是总线接口,便于与单片机的总线进行接口。驱动模块具有八位数据总线,外加一些电源接口和控制信号。而且还自带显示缓存,只需要将要显示的内容送到显示缓存中就可以实现内容的显示。由于只有八条数据线,因此常常通过引脚信号来实现地址与数据线复用,以达到把相应数据送到相应显示缓存的目的。 实验电路图 二、功能说明 设计并实现一4×4键盘的接口,键盘与1602显示单元连接,编写实验程序扫描键盘输入,并将扫描结果送1602显示,键盘采用4×4键盘。将键盘进行编号记作0—F当按下其中一个按键时将该按键对应的编号在一个1602显示出来,当按下下一个按键时便将这个按键的编号1602上显示出来 实验框图

四、实验代码 #include #define uchar unsigned char #define uint unsigned int #define lcd_data P3 sbit lcd_EN=P2^2; sbit lcd_RW=P2^1; sbit lcd_RS=P2^0; uchar key,a; uchar sys_time1[]="good"; uchar sys_time2[]="morning!"; uchar sys_time3[]="play"; uchar sys_time4[]="basketball!"; uchar sys_time5[]="study"; uchar sys_time6[]="hard!"; unsigned char code key_code[]={ 0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d, 0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xB7,0x77 }; void delayms(uint ms) { uchar t; while(ms--) { for(t=0;t<120;t++); } } void delay_20ms(void) { uchar i,temp; for(i = 20;i > 0;i--) { temp = 248; while(--temp); temp = 248; while(--temp); } } void delay_38us(void) { uchar temp;

键盘扫描及显示设计实验

键盘扫描及显示设计实 验 -CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

【实验内容】 将8255单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。键盘采用4×4键盘,每个数码管显示值可为0~F共16个数。实验具体内容如下:将键盘进行编号,记作0~F,当按下其中一个按键时,将该按键对应的编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示本次按键的按键编号。8255键盘及显示实验参考接线图如图1所示。 【实验步骤】 1. 按图1连接线路图; 2. 编写实验程序,检查无误后编译、连接并装入系统; 3. 运行程序,按下按键,观察数码管的显示,验证程序功能。 【程序代码】 MY8255_A EQU 0600H MY8255_B EQU 0602H MY8255_C EQU 0604H MY8255_CON EQU 0606H SSTACK SEGMENT STACK DW 16 DUP() SSTACK ENDS DATA SEGMENT DTABLE DB 3FH,06H,5BH,4FH DB 66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH DB 39H,5EH,79H,71H table1 db 0dfh,0efh,0f7h,0fbh,0fdh,0feh count db 0h DATA END ODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AX MOV SI,3000H MOV AL,03H MOV [SI],AL ;清显示缓冲 MOV [SI+1],AL MOV [SI+2],AL MOV [SI+3],AL MOV [SI+4],AL MOV [SI+5],AL MOV DI,3005H MOV DX,MY8255_CON ;写8255控制字 MOV AL,81H OUT DX,AL BEGIN: CALL DIS ;调用显示子程序 CALL CLEAR ;清屏 CALL CCSCAN ;扫描 JNZ INK1 JMP BEGIN INK1: CALL DIS CALL DALLY CALL DALLY CALL CLEAR CALL CCSCAN JNZ INK2 ;有键按下,转到INK2 JMP BEGIN ;======================================== ;确定按下键的位置 ;======================================== INK2: MOV CH,0FEH MOV CL,00H COLUM: MOV AL,CH MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C IN AL,DX L1: TEST AL,01H ;is L1 JNZ L2 MOV AL,00H ;L1 JMP KCODE L2: TEST AL,02H ;is L2 JNZ L3 MOV AL,04H ;L2 JMP KCODE L3: TEST AL,04H ;is L3

实验一--键盘显示实验

实验一键盘显示系统实验 1.实验目的: (1)了解8155芯片的工作原理以及应用 (2)了解键盘、LED显示器的接口原理以及硬件电路结构 (3)掌握非编码键盘的编程方法以及程序设计 2.实验内容: 将程序输入实验系统后,在运行状态下,按下数字0~9之一,将在数码管上显示相应数字,按下A、B或C之一,将在数码管上显示“0”、“1”或“2”循环 3.程序框图: 4. 实验程序 下面程序有四部分组成,程序的地址码、机器码、程序所在行号(中间)和源程序。字型码表和关键字表需要同学们自己根据硬件连接填在相应位置。 地址码机器码 1 源程序 0000 2 org 0000h 0000 90FF20 3 mov dptr,#0ff20h 0003 7403 4 mov a,#03h ;方式字 0005 F0 5 movx @dptr,a ;A和B口为输出口,C口为输入口 0006 753012 6 mov 30h,#12h ;LED共阴极,开始显示“H”,地址偏移量 送30h

0009 1155 7 dsp: acall disp1 ;调显示子程序 000B 11FE 8 acall ds30ms 000D 1179 9 acall scan ;调用键盘扫描子程序 000F 60F8 10 jz dsp ;若无键按下,则dsp 0011 11B7 11 acall kcode ;若有键按下,则kcode 0013 B40A00 12 cjne a,#0ah,cont ;是否数字键,若是0-9则是,a-c 则否 0016 400F 13 cont: jc num ;若是,则num 0018 90001F 14 mov dptr,#jtab ;若否,则命令转移表始址送dptr 001B 9409 15 subb a,#09h; 形成jtab表地址偏移量 001D 23 16 rl a ;地址偏移量*2 001E 73 17 jmp @a+dptr ;转入相应功能键分支程序 001F 00 18 jtab: nop 0020 00 19 nop 0021 8008 20 sjmp k1 ;转入k1子程序 0023 800B 21 sjmp k2 ; 转入k2子程序 0025 800E 22 sjmp k3 ; 转入k3子程序 0027 F530 23 num: mov 30h,a 0029 80DE 24 sjmp dsp ; 返回dsp 002B 7531C0 25 k1: mov 31h,#0c0h ; "0" 循环显示 002E 800A 26 sjmp k4 0030 7531F9 27 k2: mov 31h,#0f9h ; "1" 循环显示 0033 8005 28 sjmp k4 0035 7531A4 29 k3: mov 31h,#0a4h ; "2" 循环显示 0038 8000 30 sjmp k4 003A 7B01 31 k4: mov r3,#01h ;显示最末一位,注意共阴极 003C EB 32 k5: mov a,r3 003D 90FF21 33 mov dptr,#0ff21h 0040 F0 34 movx @dptr,a ;字位送8155 0041 E531 35 mov a,31h 0043 90FF22 36 mov dptr,#0ff22h; 字型口 0046 F0 37 movx @dptr,a ;字型送8155的B口 0047 11EC 38 acall delay ;延时1ms*** 0049 74FF 39 mov a,#0ffh 004B F0 40 movx @dptr,a ;关显示,在此使LED各位显示块都灭004C EB 41 mov a,r3 004D 23 42 rl a 004E FB 43 mov r3,a 004F BB40EA 44 cjne r3,#40h,k5 ;还没有循环玩一遍,则循环继续0052 80E6 45 sjmp k4 ;若循环完一遍则返回k4;又开始新一轮的循环 0054 22 46 ret 0055 90FF21 47 disp1: mov dptr,#0ff21h; 字位口A,注意led是共阴极接法0058 7401 48 mov a,#01h 005A F0 49 movx @dptr,a 005B 90FF22 50 mov dptr,#0ff22h;字型口 005E E530 51 mov a,30h 0060 2402 52 add a,#02h 0062 83 53 movc a,@a+pc 0063 F0 54 movx @dptr,a ;字型码输入,N1点亮 0064 22 55 ret ;下面是0到c的字型码 0065 ? 56 db ???? 0066 ? 0067 ? 0068 ? 0069 ? 006A ? 57 db ????

8255扫描键盘

实验九8255扫描键盘、显示实验 一.实验要求 利用8255可编程并行口做一个扫描键盘实验,把按键输入的键码,显示在由8279控制的七段数码管上。8255PA口做键盘输入线,P B口作扫描线。 二.实验目的 1.掌握8255编程方法。 2.掌握扫描键盘和显示的编程方法。 三.实验电路及连线 CS8255接8500H,则命令字地址为8506H,PA口地址为8500H,P B口地址为8502H,PC口地址为8504H。 CS8279已固定接至8700H,则8279的状态口地址为8701H; 8279的数据口地址为8700H; ○29模块中的十个短路套都套在8255侧。

四.实验说明 在PA 口与P B 口组成的64点阵列上,把按键接在不同的点上,将得到不同的键码,本实验采用8×2的阵列,共可按16个键。显示部分由8279控制,由7407驱动8位数码管显示。 五. 实验框图 入口 扫描第一行 有键按下 扫描第二行有键按下 返回计算键值 换算显示码 返回 N 无键标志Y N Y P55KD.ASM 主程序框图 读键显示部分框图 程序 D8255 EQU 8506H ;8255状态/数据口地址 D8255A EQU 8500H ;8255 PA 口地址 D8255B EQU 8502H ;8255 PB 口地址 Z8279 EQU 8701H ;8279状态口地址 D8279 EQU 8700H ;8279数据口地址 DISPTR EQU 08H ;当前显示位置 KEYV AL EQU 09H ;读到的键码 ORG 0000H LJMP START ORG 0040H START: MOV SP ,#60H LCALL DELAY ;延时 MOV DISPTR,#30H ;显示缓冲区头指针 MOV DPTR,#D8255 MOV A,#90H ;置8255状态 ;方式0,PB,PC 口输出,PA 口输入

相关文档
最新文档