当前位置:文档之家› 键盘显示电路驱动程序设计

键盘显示电路驱动程序设计

键盘显示电路驱动程序设计
键盘显示电路驱动程序设计

实验四键盘显示电路驱动程序设计

班级:09电信一班姓名:叶晓伟学号:20094081007

实验目的

1、了解ARMC语言程序的结构特点

2、了解ARMC语言程序的编写方法

3、掌握用ARM编写HD7279控制程序方法

实验仪器设备及软件

ARM实验箱,计算机,ADS程序开发软件

实验原理

HD7279A 专用键盘显示电路,真正的单片LED数码管显示和键盘接口芯片,无需外围电路,只需要外接少量的电阻等,即可构成完善的显示、键盘接口电路。而与CPU的接口采用SPI串行接口方式,使用方便。可方便的构成64按键,8位数码显示电路(共阴极结构) HD7279A内部含有译码器,可直接受BCD码或16进制数据或七段显示码数据。此外,还具有多种控制指令,如消隐,闪烁,左移,右移,段寻址等。具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。

HD7279的纯指令:

1、复位指令(A4H)

当HD7279A收到该指令后,将所有显示清除,所有设置的字符消隐、闪烁等属性也被一起清除。执行后,芯片的状态与上电时一样。

2、测试指令(BFH)

该指令使所有的LED全部点亮,并处于闪烁状态,主要用于测试(检查LED是否坏)

3、左移指令(A1H)

使所有显示左移一位,消隐及闪烁属性不移位,最右边一位为空(暗)。如:

4、右移指令(A0H)

使所有显示右移一位,消隐及闪烁属性不移位,最左边一位为空(暗)。如:

5、循环左移指令(A3H)

使所有显示右移一位,消隐及闪烁属性不移位,最左边一位移到最右边。如:

6、循环右移指令(A2H)

使所有显示右移一位,消隐及闪烁属性不移位,最右边一位移到最左边。如:

HD7279带数据的指令:

1、下载数据按方式0译码

命令由两字节构成,前半部为指令。a2,a1,a0为位地址,D3-D0为数据,译码值如图所示。

当前位小数点由DP控制,DP=1,小数点亮,DP=0,小数点暗。

2、下载数据按方式1译码

指令格式与指令1相同,译码表如下所示。

3、下载数据但不译码

指令格式如上图所示。当指令第二字节的位为1时,相应段点亮。

4、闪烁控制88H

此命令控制各数码管的闪烁情况。D8-D1中的位为1时,对应位闪烁。上电默认不闪烁。

5、消隐控制98H

D8-D1控制数码管的消隐状态。为1时,数码管消隐,为0时,正常显示。输入的数据至少有一位为0。输入全为0时,命令将被忽略。

6、读键盘命令

该指令从HD7279中读出当前按键编码。编码范围是0-3FH。当HD7279收到读指令时,此时按键无效,将返回0FFH。

实验内容

1、编写程序控制HD7279显示学号

HD7279驱动程序包含接口读写程序、HD7279发命令、收数据程序、初始化程序等,在ARM7279.C文件中给出。

在HD7279显示学号功能,只要往7279数据存储器中写入数据即可。程序如下:write7279(decode1+p,i & 0x0f); //i为显示的内容, p为显示的位置0-7

2、编写程序控制HD7279芯片,根据当前按键情况,改变显示内容

按键信息在中断服务程序读取,主程序根据到的数据,向7279发送命令或数据,改变显示内容。

keylast=key_number; //从键值缓冲中读取键值

key_number=0xff; //键缓冲重置

switch(keylast) //根据键值,执行不同功能

{

case 1:

send_byte(disp_lsl); //左移一位

break;

case 2:

send_byte(disp_lsr); //右移一位

break;

。。。

default:

break;

}

实验步骤

1、连接实验箱与计算机的串口线,打开计算机超级终端,并设定为com1,115200,8,1,0N

2、连接仿真调试电缆(并口JTAG)

3、实验箱上电,并在vivi的指示下,按任意键,进入调试程序状态

4、打开ARM集成开发环境ADS,按要求编写或打开实验程序。

5、按内容要求编写,调试程序,并记录调试过程和数据。

6、调试完毕,整理实验箱,并切断实验箱电源。

实验思考题

1、编写程序,在数码管上显示输入的键值。

/*

;****************************************************************************** ******************************

;* 北京精仪达盛科技有限责任公司

;* 研发部

;*

;* https://www.doczj.com/doc/b4162620.html,

;*

;*--------------------------------------------- 文件信息----------------------------------------------------

;*

;* 文件名称: MAIN.c

;* 文件功能: 所有应用程序的头文件均加在此文件中

;* 补充说明:

;*-------------------------------------------- 最新版本信息-------------------------------------------------

;* 修改作者: ARM7开发小组

;* 修改日期: 2004/04/25

;* 版本声明: V1.0.1

;*-------------------------------------------- 历史版本信息------------------------------------------------- ;* 文件作者: ARM7开发小组

;* 创建日期: 2004/04/20

;* 版本声明: v1.0.0

;*-----------------------------------------------------------------------------------------------------------

;*-----------------------------------------------------------------------------------------------------------

;****************************************************************************** ******************************

;*/

#include "..\INC\config.h"

//显示学号函数

void dispstu_number(void)

{//请在这里编写显示学号程?

write7279(disp_f,0xff); //no flash

write7279(disp_hide,0xff);//no hide

write7279(decode1+0,8 & 0x0f);

write7279(decode1+1,0 & 0x0f);

write7279(decode1+2,4 & 0x0f);

write7279(decode1+3,9 & 0x0f);

write7279(decode1+4,9 & 0x0f);

write7279(decode1+5,0 & 0x0f);

write7279(decode1+6,0 & 0x0f);

write7279(decode1+7,1 & 0x0f);

}

void Main()

{

unsigned char p,keylast;

Target_Init(); //目标初始化

dispstu_number();//显示学号

//while(1); //程序运行到这行时,停止运行。

while(1)

{

keylast=key_number; //取出按键值

key_number=0xff; //按键值重置为无按键

switch(keylast)

{

case 0:

write7279(cmd_test,cmd_test); //测试键

write7279(disp_f,0xff); //no flash

write7279(disp_hide,0xff);//no hide

dispstu_number();

p=0;

break;

case 1:

write7279(disp_lsl,disp_lsl); //logic shift left 1 data

break;

case 2:

write7279(disp_lsr,disp_lsr); //logic shift right 1 data break;

case 3:

write7279(disp_rol,disp_rol); //循环左移

break;

case 4:

write7279(disp_ror,disp_ror); //循环右移

break;

case 5:

if (p>7)

p=0;

write7279(disp_hide,~(1<

break;

case 6:

if (p>7)

p=0;

write7279(disp_f,~(1<<(p)));

p++;

break;

case 7:

if (p>0x40)

p=0;

write7279(disp_bit,p);

p++;

break;

case 8:

if (p>0x40)

p=0;

write7279(disp_offb,p);

p++;

break;

case 9:

if (p>0x7)

p=0;

write7279(decode1+p,keylast);

p++;

break;

case 10:

if (p>0x7)

p=0;

write7279(decode1+p,keylast);

p++;

break;

case 11:

if (p>0x7)

p=0;

write7279(decode1+p,keylast);

p++;

break;

case 12:

if (p>0x7)

p=0;

write7279(decode1+p,keylast);

p++;

break;

case 13:

if (p>0x7)

p=0;

write7279(decode1+p,keylast);

p++;

break;

case 14:

if (p>0x7)

p=0;

write7279(decode1+p,keylast);

p++;

break;

case 15:

if (p>0x7)

p=0;

write7279(decode1+p,keylast);

p++;

break;

default:

break;

}

keylast=0xff;

Delay(50);

}

}

基于FPGA的键盘扫描电路 EDA课程设计

信息科学与技术学院 EDA 课程设计报告 题目名称:基于FPGA 的键盘扫描电路 学生姓名:王彪 学 号:2010508115 专业年级:电信10级(2)班 指导教师:钟福如老师 时 间: 2010.1.13

目录 1 课程设计综述—————————————————————— 2 1.1 课程设计的题目———————————————————— 2 1.2 题目要求——————————————————————— 2 2 方案选择———————————————————————— 2 3 整体电路的设计及分析——--——————————————— 3 3.1 顶层电路图—————————————————————— 3 3.2 各模块功能原理分析—————————————————— 4 4 心得体会——————————————————————— 12

1.课程设计综述 1.1 课程设计的题目 基于FPGA的键盘扫描电路。 1.3 题目要求 (1)、键盘按钮数为4,系统时钟10MHz。 (2)、能识别出所按按钮。 (3)、按钮被按下后,视为此按钮输入一次,若按钮长时间不松,(时限1S)后每隔0.5S 视为再次输入,直至按钮松开。 (4)、要求能对按钮按下时指令的抖动能正确处理。对持续时间小于50ms的输入不作响应。 (5)、各键设置不同优先级,多键同时按下时,视为优先级较高的按键被按下。2.方案选择 根据题目要求,需要4个按钮的键盘,通过查阅资料我选择通用的2*2行列式键盘,判断键盘中有无按键按下是通过行线送入扫描信号,然后从列线读取状态得到的。其方法是依次给行线送低电平,检查列线的输入。如果列线信号全为高电平,则代表低电平信号所在的行中无按键按下;如果列线有输入为低电平,则低电平信号所在的行和出现低电平的列的交点处有按键按下。原理框图如下所示:

USB键盘驱动程序

/* * $Id: usbkbd.c,v 1.27 2001/12/27 10:37:41 vojtech Exp $ * * Copyright (c) 1999-2001 Vojtech Pavlik * * USB HIDBP Keyboard support */ /* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Should you need to contact me, the author, you can do so either by * e-mail - mail your message to <>, or by paper mail: * Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic */ #include #include #include #include #include #include #include /* * Version Information */ #define DRIVER_VERSION "" #define DRIVER_AUTHOR "Vojtech Pavlik <>" #define DRIVER_DESC "USB HID Boot Protocol keyboard driver" #define DRIVER_LICENSE "GPL"

显示和键盘流程图及程序

3.2 部分软件设计 3.2.3显示子程序 动态显示程序框图如图所示。显示程序的要点有两个:一是代码转换。因为直接驱动LED 显示器的是字形码,而人们习惯的是0、1、2、…、F 等字符,因此,必须将待显示的字符转换成字形码。转换用查表的方法进行。二是通过软件实现逐位轮流点亮每个LED 。 为了实现代码转换,首先开辟一个显示缓冲区,将待显示的字符预先存放在缓冲区中。由于有4位LED 显示器,故不妨假设显示缓冲区长度为4个字节。显示缓冲区地址为DIS 0~DIS 3 ,DIS 0单元与最左边一位LED 相对应,DIS 3单元与最右边一位LED 相对应。 程序清单如下: DIS : ORG 0500H MOV A ,#00000011B MOV DPTR ,#7F00H MOVX @DPTR ,A MOV R0,#78H MOV R3,#7FH MOV A ,R3 LD : MOV DPTR ,#7F01H 开 始 结 束 8051初始化 指向下个显示缓冲单元 显示下一位 延时1mS 段选码送入 查段选表 送位选字 动态显示初始化 3位显示完?

有键闭合吗? 确有键闭合吗 闭合键释放吗 返 回 MOVX @DPTR ,A INC DPTR MOV A ,@R0 ADD A ,#0DH MOVC A ,@ DPTR ACALL DLY MOV A ,R3 JNB A ,R0 RR A ,LD1 MOV R3,A INC R0 AJMP LD0 LD1: SJMP LD1 DSEG :DB 3FH ,06H ,5BH ,4FH ,66H ,6DH 7DH ,07H ,7FH ,6FH DLY : MOV R7,#02H DL : MOV R6,#0FFH DL1: DJNZ R6,DL1 DJNZ R7,DL RET 3.2.4键盘子程序 键盘扫描子程序框图如图 图3-4 键盘扫描子程序框图 开 始 两次调用 延时子程序 判断闭合键号 键号 → A 调用延时子程序

字符设备驱动程序

字符设备驱动程序 字符设备驱动程序与块设备不同。所涉及的键盘驱动、控制台显示驱动和串口驱动以及与这些驱动有关的接口、算法程序都紧密相关。他们共同协作实现控制台终端和串口终端功能。 下图反映了控制台键盘中断处理过程。 以上为总的处理流程,下面对每一个驱动分开分析。首先是键盘驱动。键盘驱动用汇编写的,比较难理解,牵涉内容较多,有键盘控制器804X的编程,还有扫描码(共3套,这里用第二套)和控制命令及控制序列(p209~210有讲解)。由于键盘从XT发展到AT到现在PS/2,USB,无线键盘,发展较快,驱动各有不同,此版本驱动为兼容XT,将扫描码映射为XT再处理,因此仅供参考。CNIX操作系统的键盘驱动实现为C语言,可读性更好。 键盘驱动 键盘驱动就是上图键盘硬件中断的过程。keyboard.S中的_keyboard_interrupt 函数为中断主流程,文件中其他函数均被其调用。

以上打星处为键盘驱动的核心,即主要处理过程,针对不同扫描码分别处理,并最终将转换后所得ASCII 码或控制序列放入控制台tty 结构的读缓冲队列read_q 中。 键处理程序跳转表为key_table ,根据扫描码调用不同处理程序,对于“普通键”,即只有一个字符返回且没有含义变化的键,调用do_self 函数。其他均为“特殊键”:1. crtrl 键的按下和释放 2. alt 键的按下和释放 3. shift 键的按下和释放 4. caps lock 键的按下和释放(释放直接返回,不作任何处理) 5. scroll lock 键的按下 6. num lock 的按下 7. 数字键盘的处理(包括alt-ctrl+delete 的处理,因为老式键盘delete 键在数字小键盘上。还包括对光标移动键的分别处理) 8. 功能键 (F1~F12)的处理 9. 减号的处理(老键盘’/’与’-’以0xe0加以区分,可能其中一键要按shift ) do_self 是最常用的流程,即跳转表中使用频率最高的流程:

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

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

8279示例程序

8279键盘和显示程序 Z8279 EQU 08701H //8279状态/命令口地址 D8279 EQU 08700H //8279 数据口地址 LEDMOD EQU 10H //左端输入八位字符显示 //外部译码键扫描方式,双键互锁 LEDFEQ EQU 38H //扫描速率 LEDCLS EQU 0D1H //清除 LEDWR0 EQU 80H //设定的将要写入的显示RAM地 址 ORG 0000H AJMP START ORG 0040H START: MOV SP,#60H LCALL INIT8279 //初始化8279 W AIT: MOV DPTR,#Z8279 MOVX A,@DPTR ANL A,#0FH JZ WAIT MOV A,#40H MOVX @DPTR,A MOV DPTR,#D8279 MOVX A,@DPTR ANL A,#3FH MOV R4,#00H MOV R5,A LCALL DISLED SJMP W AIT INIT8279: //8279初始化子程序 PUSH DPH //保存现场 PUSH DPL PUSH ACC LCALL DELAY //延时 MOV DPTR ,#Z8279 MOV A,#LEDMOD //置8279工作方式 MOVX @DPTR,A MOV A,#LEDFEQ //置键盘扫描速率 MOVX @DPTR,A MOV A,#LEDCLS //清除 LED 显示 MOVX @DPTR,A LCALL DELAY //延时 MOV DPTR,#Z8279 MOV A,#90H MOV DPTR,#D8279 MOV A, #40H MOVX @DPTR,A MOV A,#40H MOVX @DPTR,A MOV A,#0H MOVX @DPTR,A MOV A,#0H MOVX @DPTR,A MOV A, #0EFH MOVX @DPTR,A MOV A,#27H MOVX @DPTR,A MOV A,#5BH MOVX @DPTR,A MOV A, #7FH MOVX @DPTR,A POP ACC //恢复现场 POP DPL POP DPH RET 显示字符子程序 输入:R4,位置:R5 DISLED: PUSH DPH //保存现场 PUSH DPL PUSH ACC MOV A,#LEDWR0 //置显示起始地址 ADD A,R4 //加位置偏移量 MOV DPTR,#Z8279

矩阵键盘设计实验报告

南京林业大学 实验报告 基于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、电路图

基于51单片机的PS2键盘的单片机编程

PS2键盘的单片机编程 在单片机系统中,经常使用的键盘都是专用键盘.此类键盘为单独设计制作的,成本高、使用硬件连接线多,且可靠性不高,这一状况在那些要求键盘按键较多的应用系统中更为突出.与此相比,在PC系统中广泛使用PS/2键盘具有价格低、通用可靠,且使用连接线少(仅使用2根信号线)的特点,并可满足多种系统的要求.因此在单片机系统中应用PS/2键盘是一种很好的选择. 文中在介绍PS/2协议和PS/2键盘工作原理与特点的基础上,给出了一个在单片机上实现对PS/2键盘支持的硬件连接与驱动程序设计实现.该设计实现了在单 片机系统中对PS/2标准104键盘按键输入的支持.使用Keil C51开发的驱动程序接口和库函数可以方便地移植到其他单片机或嵌入式系统中.所有程序在 Keil uVision2上编译通过,在单片机AT89C51上测试通过. 1 PS/2协议 目前,PC机广泛采用的PS/2接口为mini-DIN 6pin的连接器,如图1所示. PS/2设备有主从之分,主设备采用Female插座,从设备采用Male插头.现在广泛使用的PS/2键盘鼠标均在从设备方式下工作.PS/2接口的时钟 与数据线都是集电极开路结构,必须外接上拉电阻(一般上拉电阻设置在主设备中).主从设备之间数据通信采用双向同步串行方式传输,时钟信号由从设备产生. 1.1 从设备到主设备的通信 当从设备向主设备发送数据时,首先检查时钟线,以确认时钟线是否为高电平.如果是高电平,从设备就可以开始传输数据;反之,从设备要等待获得总线的控制权,才能开始传输数据.传输的每一帧由11位组成,发送时序及每一位的含义如图2 所示. 每一帧数据中开始位总是为0,数据校验采用奇校验方式,停止位始终为1.从设 备到主设备通信时,从设备总是在时钟线为高时改变数据线状态,主设备在时钟 下降沿读人数据线状态.

根据VHDL的键盘扫描及显示电路

广西工学院 EDA 课程设计 说明书 设计题目基于VHDL的键盘扫描 及显示电路 系别电控系 专业班级__________________ 学生姓名__________________ 学号__________________ 指导教师__________________ 日期__________________

基于VHDL的键盘扫描及显示电路一、工作原理: 可编程器件的KEY_HANG[3..0]行信号输出端不停循环输出“1110”“1101”“1011”“0111”。当没有键按下时可编程器件的KEY_LIE[3..0]列信号输入端检测到的是“1111”。当有按键按下时,如按下1,此时KEY_HANG[3..0]行信号输出为“0111”,即KEY_HANG[3..0]的3管脚为“0”,可由电路看出,此时输入端KEY_LIE[3..0]检测到的将是“0111”。KEY_LIE[3..0]的3管脚为0,可以在编写程序时,将输出信号KEY_HANG[3..0]与输入信号KEY_LIE[3..0]同时判断,比如可以认为当数据“KEY_HANG&KEY_LIE”为“01110111”时,可译码成数据1,。同理可得其他按键的编码。根据不同数据的编码译成不同的数据。 名称IO属性描述备注 clk in 输入时钟,1K和40K频 率 KEY_HANG[3..0]out矩阵键盘的扫描输入端口 KEY_LIE[3:0] in矩阵键盘的扫描输出端口START out 数据输出标志 DISP out 数码管译码显示译码7bit

DATA[6..0] 输出 DASP SEL[1..0] out数码管扫描输出2bit

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的命令、状态口

矩阵键盘电路设计

课程设计 题目矩阵键盘电路设计教学院计算机学院 专业计算机应用技术班级 姓名 指导教师 2010 年01 月12 日

前言.................................................................... 第一章需求分析......................................................... 功能描述......................................................... 功能分析......................................................... 第二章系统的原理及分析................................................. 用到的知识点的介绍,知识点使用的总体思路 第三章详细设计......................................................... 硬件设计 系统结构图,元器件的选择等 软件设计 所设计的软件关键模块的程序流程 第四章测试............................................................ 运行结果分析等 第五章总结............................................................. 参考文献................................................................ 附录 关键程序代码........................................................

检测到不兼容的键盘驱动程序。该对话框已被停用的解决方法

检测到不兼容的键盘驱动程序。该对话框已被停用的解决方法在 Windows XP 系统中单击语言栏的设置弹出“检测到不兼容的键盘驱动程序”的错误提示对话框,如遇到此问题的朋友可通过下面的方法来解决。 到一台正常 WindowsXP系统的机器,单击"开始”菜单中的“运行”命令 在“打开”框中键入“ regedit ”命令,单击“确定”按钮 打开“注册表编辑器”窗口,在左侧窗口(注册表树)定位到以下分支 Control\Keyboard Layouts 右击“ Keyboard Layouts ”主键,打开的快捷 菜单单击“导出”命令 选择要导出注册表文件的位置,并在文件名框 中输入任意名称,单击“保存”按钮 将生成的reg 文件拷贝到存储设备里,在出问 题的机器上双击该注册表文件,导入注册表信息

在 Windows XP 系统中单击语言栏的设置弹出“检测到不兼容的键盘驱动程序”的错误提示对话框,如遇到此问题的朋友可通过下面的方法来解决。 到一台正常 WindowsXP系统的机器,单击"开始”菜单中的“运行”命令 在“打开”框中键入“ regedit ”命令,单击“确定”按钮 打开“注册表编辑器”窗口,在左侧窗口(注册表树)定位到以下分支 Control\Keyboard Layouts 右击“ Keyboard Layouts ”主键,打开的快捷 菜单单击“导出”命令 选择要导出注册表文件的位置,并在文件名框 中输入任意名称,单击“保存”按钮 将生成的reg 文件拷贝到存储设备里,在出问 题的机器上双击该注册表文件,导入注册表信息

在 Windows XP 系统中单击语言栏的设置弹出“检测到不兼容的键盘驱动程序”的错误提示对话框,如遇到此问题的朋友可通过下面的方法来解决。 到一台正常 WindowsXP系统的机器,单击"开始”菜单中的“运行”命令 在“打开”框中键入“ regedit ”命令,单击“确定”按钮 打开“注册表编辑器”窗口,在左侧窗口(注册表树)定位到以下分支 Control\Keyboard Layouts 右击“ Keyboard Layouts ”主键,打开的快捷 菜单单击“导出”命令 选择要导出注册表文件的位置,并在文件名框 中输入任意名称,单击“保存”按钮 将生成的reg 文件拷贝到存储设备里,在出问 题的机器上双击该注册表文件,导入注册表信息

矩阵键盘的工作原理和扫描确认方式

9.3.1 矩阵键盘的工作原理和扫描确认方式 来源:《AVR单片机嵌入式系统原理与应用实践》M16华东师范大学电子系马潮 当键盘中按键数量较多时,为了减少对I/O 口的占用,通常将按键排列成矩阵形式,也称为行列键盘,这是一种常见的连接方式。矩阵式键盘接口见图9-7 所示,它由行线和列线组成,按键位于行、列的交叉点上。当键被按下时,其交点的行线和列线接通,相应的行线或列线上的电平发生变化,MCU 通过检测行或列线上的电平变化可以确定哪个按键被按下。 图9-7 为一个 4 x 3 的行列结构,可以构成12 个键的键盘。如果使用 4 x 4 的行列结构,就能组成一个16 键的键盘。很明显,在按键数量多的场合,矩阵键盘与独立式按键键盘相比可以节省很多的I/O 口线。 矩阵键盘不仅在连接上比单独式按键复杂,它的按键识别方法也比单独式按键复杂。在矩阵键盘的软件接口程序中,常使用的按键识别方法有行扫描法和线反转法。这两种方法的基本思路是采用循环查循的方法,反复查询按键的状态,因此会大量占用MCU 的时间,所以较好的方式也是采用状态机的方法来设计,尽量减少键盘查询过程对MCU 的占用时间。 下面以图9-7 为例,介绍采用行扫描法对矩阵键盘进行判别的思路。图9-7 中,PD0、PD1、PD2 为3 根列线,作为键盘的输入口(工作于输入方式)。PD3、PD4、PD5、PD6 为4根行线,工作于输出方式,由MCU(扫描)控制其输出的电平值。行扫描法也称为逐行扫描查询法,其按键识别的过程如下。 √将全部行线PD3-PD6 置低电平输出,然后读PD0-PD2 三根输入列线中有无低电平出现。只要有低电平出现,则说明有键按下(实际编程时,还要考虑按键的消抖)。如读到的都是高电平,则表示无键按下。 √在确认有键按下后,需要进入确定具体哪一个键闭合的过程。其思路是:依

单片机8279键盘显示实验

6.4 可编程键盘/显示器接口——Intel 8279 Intel 8279是一种可编程键盘/显示器接口芯片,它含有键盘输入和显示器输出两种功能。键盘输入时,它提供自动扫描,能与按键或传感器组成的矩阵相连,接收输入信息,它能自动消除开关抖动并能对多键同时按下提供保护。显示输出时,它有一个16×8位显示RAM,其内容通过自动扫描,可由8位或16位LED数码管显示。 1.8279的内部结构和工作原理 8279的内部结构框图如图6.28所示。下面分别介绍电路各部分的工作原理。 1) I/O控制及数据缓冲器 数据缓冲器是双向缓冲器,连接内外总线,用于传送CPU和8279之间的命令或数据,对应的引脚为数据总线D0~D7。 I/O控制线是CPU对8279进行控制的引线,对应的引脚为数据选择线A0、片选线、读/写信号线和。 2) 控制与定时寄存器及定时控制 控制与定时寄存器用来寄存键盘及显示工作方式控制字,同时还用来寄存其它操作方式控制字。这些寄存器接收并锁存各种命令,再通过译码电路产生相应的信号,从而完成相应的控制功能。与其对应的引脚为时钟输入端CLK及复位端RESET。 定时控制电路由N个基本计数器组成,其中,第一个计数器是一个可编程的N级计数器,N为2~31之间的数。定时控制经软件编程,将外部时钟CLK分频,得到内部所需的100 kHz 时钟,为键盘提供适当的扫描频率和显示扫描时间。与其相关的引脚是显示熄灭控制端。 3) 扫描计数器 扫描计数器由键盘和显示器共用,为它们提供扫描信号。扫描计数器有两种工作方式:编码方式和译码方式。按编码方式工作时,计数器作二进制计数,4位计数状态从扫描线SL0~SL3输出,经外部译码器译码后,为键盘和显示器提供扫描信号。按译码方式工作时,扫描计数器的最低两位被译码后,从SL0~SL3输出,提供了4选1的扫描译码。与其相关的引脚是扫描线SL0~SL3。 4) 回复缓冲器、键盘去抖及控制 在键盘工作方式下,回复线作为行列式键盘的列输入线,相应的列输入信号称为回复信号,由回复缓冲器缓冲并锁存。在逐行列扫描时,回复线用来搜寻每一行列中闭合的键,当某一键闭合时,去抖电路被置位,延时等待10 ms后,再检查该键是否仍处在闭合状态。如不闭合,则当作干扰信号不予理睬;如闭合,则将该键的地址和附加的移位、控制状态等键

基于FPGA的键盘扫描程序的设计

摘要 在现代电子工业的控制电路中,键盘扫描和显示电路对系统的调试和设置有着重要的作用。随着EDA技术的发展,基于FPGA的扫描键盘因其结构简单,能有效防止机械键盘按键抖动带来的数据错误等优点在许多电子设备中都得到了广泛的应用。 本文主要是设计一个基于FPGA的键盘扫描程序,该设计在EDA工具Quarutus II9.0上开发完成,以Creat-SOPC2000实验箱上的4*4矩阵键盘为硬件实体,设计键盘扫描程序,将程序划分为时序产生模块、键盘扫描模块、弹跳消除模块、键值译码模块四个模块,时序产生模块为键盘扫描和弹跳消除模块产生时钟信号,键盘扫描模块采用行扫描法对4*4矩阵键盘进行扫描,键值译码模块将所按键值译码为共阳极8位7段数码管的显示码,几个模块组合起来实现键盘扫描的设计要求。最后对程序进行仿真分析和硬件验证。仿真结果表明,该系统具有集成度高、稳定性好、设计灵活和设计效率高等优点。 关键词: FPGA,Quartus II,VHDL,键盘扫描

ABSTRACT In the modern electronics industry controlling-circuit, the keyboard scanning and display circuit plays an important role in debugging and setting the system. With the development of EDA technology, FPGA-based scanning keyboard have been widely used in many electronic devices because of its simple structure, and it also can effectively prevent mechanical keyboard jitter caused by data errors. This article primarily designed an FPGA-based keyboard scan procedures, this design is developed on the EDA tools—— Quarutus II9.0 and designed the keyboard scan program, using the Creat-SOPC2000 experimental box 4 * 4 matrix keyboard as the hardware entity .the program is divided into four modules as the timing generation module, a keyboard scanning module, bounce cancellation module and the decoding module. The timing generation module generates the clock signal for the keyboard scanning and bounce elimination module, the keyboard scanning module using the line scanning method to sweep the 4* 4 matrix keyboard, key decoder module decodes the key value for the common anode eight 7-segment display code. Several modules assembles together to meet the keyboard scanning design requirements. Finally, conducting simulation analysis by the program and verifying the hardware.Simulation results show that the system has many advantages such as high integration, good stability, high efficiency, flexible design and high design efficiency. Keywords: FPGA,Quartus II,VHDL,keyboard scanning

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

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

8279键盘和显示程序

8279键盘和显示程序 #include #include #include #define COM8279 XBYTE [0xF2FF] //定义8279控制口 #define DATA8279 XBYTE [0xF0FF] //定义8279数据口 #define uchar unsigned char #define uint unsigned int uint keyval //定义键内码传递参数uint time //定义延时参数 void delay(uint time) void key(void) void main() { delay(1300) //开机延时 COM8279 = 0xD2 //清除RAM和FIFO delay(1) EA=1 EX1=1 //开总中断,开外部中断1;IT1=1 //外部中断1选用下降沿COM8279=0x03 //8279键盘N键巡回,编码扫描,左端入口COM8279=0x2a //时钟分频设置,分频数为10 COM8279=0x70 //设置读显示命令 COM8279=0x90; //设置写显示命令 while(1) } void delay (uint time) //传递参数为time { uchar j

while (time--) //用time-1来进行循环 { for (j=100;j>0;j--) //用j来进行125次循环,大约8us } } } void intsvr1(void) interrupt 2 using 1 { keyval=DATA8279 key() } //按键确认程序 void key(void) { switch(keyval) { case 0xC3: //0号键赋值 { P0=0x3F; DATA8279=P0; break; } case 0xC2: //1号键赋值; { P0=0x06; DATA8279=P0; break; } case 0xC1: //2号键赋值; {

扫描式矩阵键盘课程设计

扫描式矩阵键盘课程设 计 Company number【1089WT-1898YT-1W8CB-9UUT-92108】

4X4扫描式矩阵键盘课程设计课程设计名称: 4_4扫描式矩阵键盘设计 姓名: DUKE 班级:电子1008班 学号: 10086 成绩: 日期: 2014年1月6日 摘要 随着21世纪的到来,电子信息行业将是人类社会的高科技行业之一,式设施现代化的基础,也是人类通往科技巅峰的直通路。电子行业的发展从长远来看很重要,但最主要的还是科技问题。 矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。是它能准时、实时、高效地显示按键信息,以提高工作效率和资源利用率。 矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,显示在LED数码管上。单片机控制依据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。 4*4矩阵式键盘采用AT89C51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用C语言编程。单片机将检测到的按键信号

转换成数字量,显示于LED显示器上。该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。 目录 第一章:系统功能要求-------------------------------------------------------- 1.1 4*4 矩阵式键盘系统概述------------------------------------------------ 1.2 本设计任务和主要内容--------------------------------------------------- 第二章:方案论证--------------------------------------------------------------- 第三章:系统硬件电路的设计------------------------------------------------ 3.1 单片机控制系统原理----------------------------------------------------- 3.2 原理图绘制说明---------------------------------------------------------- 3.3 画出流程图---------------------------------------------------------------- 3.4 原理图绘制---------------------------------------------------------------

EDA键盘扫描

1 绪论 VHDL的英文全名是Very-High-Speed Integrated Circuit HardwareDescription Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。 VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。 VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。 FPGA(Field Programmable Gate Array)即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA的使用非常灵活,同一片FPGA通过不同的编程数据可以产生不同的电路功能。FPGA在通信、数据处理、网络、仪器、工业控制、军事和航空航天等众多领域得到了广泛应用。随着功耗和成本的进一步降低,FPGA还将进入更多的应用领域。 本设计采用VHDL硬件语言的模块化思想,设计了PS2键盘扫描模块,七段

相关主题
文本预览
相关文档 最新文档