键盘扫描实验设计报告

合集下载

实验一 矩阵键盘检测

实验一  矩阵键盘检测

实验一矩阵键盘检测一、实验目的:1、学习非编码键盘的工作原理和键盘的扫描方式。

2、学习键盘的去抖方法和键盘应用程序的设计.二、实验设备:51/AVR实验板、USB连接线、电脑三、实验原理:键盘接口电路是单片机系统设计非常重要的一环,作为人机交互界面里最常用的输入设备。

我们可以通过键盘输入数据或命令来实现简单的人机通信。

1、按键的分类一般来说,按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。

前者造价低,后者寿命长.目前,微机系统中最常见的是触点式开关按键(如本学习板上所采用按键)。

按键按照接口原理又可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。

编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的识别.全编码键盘由专门的芯片实现识键及输出相应的编码,一般还具有去抖动和多键、窜键等保护电路,这种键盘使用方便,硬件开销大,一般的小型嵌入式应用系统较少采用。

非编码键盘按连接方式可分为独立式和矩阵式两种,其它工作都主要由软件完成.由于其经济实用,较多地应用于单片机系统中(本学习板也采用非编码键盘)。

2、按键的输入原理在单片机应用系统中,通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。

也就是说,它能提供标准的TTL 逻辑电平,以便与通用数字系统的逻辑电平相容。

此外,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据。

当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能。

因此,键信息输入是与软件结构密切相关的过程。

对于一组键或一个键盘,通过接口电路与单片机相连.单片机可以采用查询或中断方式了解有无按键输入并检查是哪一个按键按下,若有键按下则跳至相应的键盘处理程序处去执行,若无键按下则继续执行其他程序。

键盘扫描程序实验报告

键盘扫描程序实验报告

一、实验目的1. 理解键盘扫描的基本原理。

2. 掌握使用C语言进行键盘扫描程序设计。

3. 学习键盘矩阵扫描的编程方法。

4. 提高单片机应用系统的编程能力。

二、实验原理键盘扫描是指通过检测键盘矩阵的行列状态,判断按键是否被按下,并获取按键的值。

常见的键盘扫描方法有独立键盘扫描和矩阵键盘扫描。

独立键盘扫描是将每个按键连接到单片机的独立引脚上,通过读取引脚状态来判断按键是否被按下。

矩阵键盘扫描是将多个按键排列成矩阵形式,通过扫描行列线来判断按键是否被按下。

这种方法可以大大减少引脚数量,降低成本。

本实验采用矩阵键盘扫描方法,使用单片机的并行口进行行列扫描。

三、实验设备1. 单片机开发板(如51单片机开发板)2. 键盘(4x4矩阵键盘)3. 连接线4. 调试软件(如Keil)四、实验步骤1. 连接键盘和单片机:将键盘的行列线分别连接到单片机的并行口引脚上。

2. 编写键盘扫描程序:(1)初始化并行口:将并行口设置为输入模式。

(2)编写行列扫描函数:逐行扫描行列线,判断按键是否被按下。

(3)获取按键值:根据行列状态,确定按键值。

(4)主函数:调用行列扫描函数,读取按键值,并根据按键值执行相应的操作。

3. 调试程序:将程序下载到单片机,观察键盘扫描效果。

五、实验程序```c#include <reg51.h>#define ROW P2#define COL P3void delay(unsigned int ms) {unsigned int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 123; j++);}void scan_key() {unsigned char key_val = 0xFF;ROW = 0xFF; // 初始化行delay(1); // 延时消抖key_val = ROW & COL; // 获取按键值ROW = 0x00; // 初始化行delay(1); // 延时消抖key_val = ROW & COL; // 获取按键值ROW = 0x00; // 初始化行delay(1); // 延时消抖key_val = ROW & COL; // 获取按键值ROW = 0x00; // 初始化行delay(1); // 延时消抖key_val = ROW & COL; // 获取按键值}void main() {while (1) {scan_key();if (key_val != 0xFF) {// 执行按键对应的操作}}}```六、实验结果与分析1. 实验结果:程序下载到单片机后,按键按下时,单片机能够正确读取按键值。

矩阵式键盘设计实训报告

矩阵式键盘设计实训报告

一、实验目的1. 掌握矩阵式键盘的工作原理及电路设计方法。

2. 熟悉单片机与矩阵键盘的接口连接及编程技巧。

3. 提高动手实践能力,培养创新意识。

二、实验设备1. 单片机实验平台2. 矩阵键盘模块3. 数字多用表4. 编译器(如Keil51)5. 连接线三、实验原理矩阵键盘是一种常用的键盘设计方式,通过行列交叉点连接按键,从而实现多个按键共用较少的I/O端口。

矩阵键盘通常采用逐行扫描的方式检测按键状态,当检测到按键按下时,根据行列线的电平状态确定按键位置。

四、实验内容1. 矩阵键盘电路设计2. 矩阵键盘编程3. 矩阵键盘测试与调试五、实验步骤1. 电路设计(1)根据矩阵键盘的规格,确定行线和列线的数量。

(2)将行线和列线分别连接到单片机的I/O端口。

(3)在行线上串联电阻,防止按键抖动。

(4)连接电源和地线。

2. 编程(1)初始化单片机的I/O端口,将行线设置为输出,列线设置为输入。

(2)编写逐行扫描程序,逐行拉低行线,读取列线状态。

(3)根据行列线状态判断按键位置,并执行相应的操作。

3. 测试与调试(1)将编写好的程序下载到单片机中。

(2)连接矩阵键盘,观察按键是否正常工作。

(3)使用数字多用表检测行列线电平,确保电路连接正确。

(4)根据测试结果,对程序进行调试,直到矩阵键盘正常工作。

六、实验结果与分析1. 电路连接正确,按键工作正常。

2. 逐行扫描程序能够正确检测按键位置。

3. 按键操作能够触发相应的程序功能。

七、实验总结1. 通过本次实训,掌握了矩阵式键盘的工作原理及电路设计方法。

2. 熟悉了单片机与矩阵键盘的接口连接及编程技巧。

3. 提高了动手实践能力,培养了创新意识。

八、心得体会1. 在实验过程中,遇到了电路连接错误和程序调试困难等问题,通过查阅资料、请教老师和同学,最终成功解决了问题。

2. 本次实训让我深刻体会到理论知识与实际操作相结合的重要性,同时也认识到团队合作的重要性。

九、改进建议1. 在电路设计过程中,可以考虑增加去抖动电路,提高按键稳定性。

键盘 实验报告

键盘 实验报告

键盘实验报告实验报告:键盘引言:键盘是计算机输入设备中最常用的一种设备,用于输入字符、数字、命令等等。

键盘以一定的方式将我们按下的按键转换成计算机可识别的信号,从而实现输入功能。

本实验的目的是了解键盘的工作原理、结构以及使用方法。

实验目的:1. 了解键盘的工作原理;2. 掌握键盘通信协议;3. 掌握键盘的结构和按键布局;4. 学习键盘的使用方法。

实验原理:键盘的工作原理是通过扫描矩阵的方式实现的,常见的键盘为4x4矩阵结构,也有其他规格的矩阵结构。

按键的每一个位置都与键盘电路中的一个电气开关相连接,当按下某个按键时,会导电并向计算机发送信号。

键盘通过PS/2或USB 接口与计算机相连,传输按键的信息。

键盘结构通常包括以下部分:1. 按键:键盘上的每一个按键代表一个字符、数字、命令或功能等。

按键大致分为四个区域:字母区、数字区、符号区和功能区。

2. 电路板:键盘的电路板上连接着按键开关,实现按键的电气连接和信号传输。

3. 导线和线缆:将电路板与接口连接,传递信号。

4. 接口:键盘通过PS/2或USB接口与计算机相连,实现信号的传输。

实验步骤:1. 准备一个计算机和一台键盘,确保键盘的连接正确。

2. 打开计算机,进入操作系统。

3. 在文本编辑器中打开一个文档,用来记录实验结果。

4. 将注意力集中在键盘上,按下键盘上的一个按键,观察文档中的输入情况。

5. 重复步骤4,测试其他按键,记录测试结果。

6. 关闭计算机,结束实验。

实验结果与分析:通过本实验,我们了解到键盘的工作原理是通过扫描矩阵的方式实现的,按键通过电路板中的电气开关与计算机相连,实现键盘输入。

键盘的按键布局通常分为四个区域:字母区、数字区、符号区和功能区。

通过实验测试,我们发现按键输入是可靠的,按下按键时能够正确输入对应的字符或数字。

键盘的使用方法是简单明了的,只需要按下对应的按键即可完成输入。

实验总结:键盘作为计算机最常用的输入设备,广泛应用于各个领域。

按键输入和LED数码管扫描显示实验

按键输入和LED数码管扫描显示实验

按键输入和LED数码管扫描显示实验设计内容:给8个按键键盘的每个键定义一个功能,从左到右按键一次按下时,分别显示数字1-8,当有两个及以上的按键按下时,显示数字9。

LCD初始显示个人学号,当有按键按下时,最后一位显示对应的数字。

实验程序:#include <reg51.h>sbit key=P0^6; //键盘公共线,见原理图sbit ls1=P0^2; //千位公共极sbit ls2=P0^3; //百位公共极sbit ls3=P0^4; //十位公共极sbit ls4=P0^5; //个位公共极unsigned char keyval; //读取的键值#define Dat P1 //数据输出端char a;char b[4]={0,3,3,0}; //初始值为学号后四位unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//延时----------------------------Delay(unsigned int t){ while(t--); }//显示----------------------------void Display(unsigned char mun){ unsigned char j;for(j=0;j<50;j++){ Dat=a;Dat=tab[b[0]]; //把得到7段显示码数据送P1端口ls1=0; //点亮千位Delay(100); //显示一会ls1=1; //关闭,显示下一位Dat=tab[b[1]];ls2=0; //点亮百位Delay(100);ls2=1;Dat=tab[b[2]];ls3=0; //点亮十位Delay(100);ls3=1; //个位Dat=tab[b[3]];ls4=0;Delay(100);ls4=1;}}Dat=0xff; //P1恢复为0xff}//--键盘扫描程序-------------------------------------- Scankey(){ unsigned char i;key=0; //拉低键盘公共线if(Dat!=0xff) //有键按下{ Delay(1000); //消抖动if(Dat!=0xff) //有键按下{ i=~Dat;a=Dat; //读取键盘状态,switch(i){ case 0x01: keyval=0x01;break; //K1case 0x02: keyval=0x02;break; //K2case 0x04: keyval=0x03;break; //K3case 0x08: keyval=0x04;break; //K4case 0x10: keyval=0x05;break; //K5case 0x20: keyval=0x06;break; //K6case 0x40: keyval=0x07;break; //K7case 0x80: keyval=0x08;break; //K8default: keyval=0x09;break; } //其它双键按下不处理,均为9 b[3]=b[2];b[2]=b[1];b[1]=b[0];b[0]=keyval;while(Dat!=0xff){key=1; //暂时关闭键盘,不干扰显示Display(keyval); //等待按键抬起key=0; //开启键盘检测}}}key=1; //释放键盘公共线}//--主程序--------------------------------------------------------- main(){while(1){ Display(keyval); //显示Scankey(); //键盘扫描}}。

单片机实验报告实验5行列式键盘实验

单片机实验报告实验5行列式键盘实验

学号姓名专业电气工程及其自动化班级实验5 行列式键盘实验一、实验目的(1)、学习掌握行列式键盘接口方法(2)、学习掌握行列式键盘编程方法。

二、实验内容用单片机P1口接4*4键盘,P0口接共阳数码管,编程实现键字的显示。

P1.0-P1.3为行,P1.4-P1.7为列。

先给端口设处置FEH,相当于给第一行置0,然后分写列值,如果对应的列值为0,说明该行与该列交叉处的键是按下的,接下来扫描第二行,与第一行的操作相同。

这就是行列式键盘扫描原理。

当扫描到某行的键按下时,就退出扫描,然后取键值,再将键值对应的额编码送P0端口显示。

三、实验设备计算机(已安装Keil和Proteus软件)元器件:A T89C51, CAP, CAP-ELEC, CRYSTAL, RES, 7SEG-COM-AN-GRN, RESPACK-7, BUTTON四、实验硬件电路实验源程序:#include<reg51.h>charled_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x7 1};charkey_buf[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x 77};char getkey(void){char key_scan[]={0xef,0xdf,0xbf,0x7f};char i=0,j=0;for(i=0;i<4;i++){P1=key_scan[i];if((P1&0x0f)!=0x0f){for(j=0;j<16;j++){if(key_buf[j]==P1)return j;}}}return -1;}void main(void){char key=0;P0=0x00;while(1){key=getkey();if(key!=1)P0=~led_mod[key]; }}五、实验要求(1)、根据实验内容设计相应的调试程序,并通过仿真,运行正确。

小键盘实验报告心得

小键盘实验报告心得

小键盘实验报告心得引言小键盘是一种新型的输入设备,它具有独特的设计和功能,可以方便地输入数字和特殊符号。

在本次实验中,我通过使用小键盘,了解了其工作原理和使用方法,并对其进行了实际操作和测试。

本文将总结我的实验心得和体会,并对小键盘的优缺点进行评价。

实验过程和结果在实验过程中,我首先详细了解了小键盘的结构和工作原理。

小键盘主要由数字键、功能键和控制键组成,使用USB接口与计算机连接。

它工作时,通过电脑上的驱动程序进行配置和映射,使每个按键都能产生对应的输入信号。

在实验中,我使用了Windows系统自带的小键盘驱动程序进行配置。

经过一番设置和调试,我成功地将小键盘与计算机连接并进行了测试。

在测试中,我发现小键盘的响应速度非常快,按键的手感也很舒适,操作起来非常流畅。

同时,小键盘支持多种输入模式,可以通过切换键自由切换输入方式,非常方便实用。

我还测试了小键盘的一些实际应用场景,包括数字输入、计算器模式、游戏操作等。

在数字输入方面,小键盘的数字按键布局合理,操作起来快速准确,比起常规键盘更加高效。

在计算器模式下,小键盘提供了常用的算术运算按键,可以方便地进行简单计算。

在游戏操作方面,小键盘的功能键和控制键的设计非常人性化,能够满足不同游戏的操作需求。

心得体会通过本次实验,我对小键盘有了深入的了解,并受益匪浅。

首先,小键盘的设计十分合理,按键布局和手感都非常优秀,能够提供良好的使用体验。

其次,小键盘的配置和映射功能非常强大,可以根据个人需求进行个性化设置,满足不同用户的需求。

最后,小键盘的多种输入模式和应用场景使其具备了广泛的适用性,既可以用于日常办公,也可以用于游戏娱乐。

小键盘的出现对于数字输入、数据处理和游戏操作等方面都带来了很大的便利。

在数字输入方面,小键盘能够提高输入的速度和准确性,同时也减轻了手腕的负担。

在数据处理方面,小键盘具备快速输入特殊符号和快捷键等功能,能够提高效率。

在游戏操作方面,小键盘的功能键和控制键能够提供更多的操作选项,增强游戏的可玩性。

单片机实验五报告_单片机键盘实验

单片机实验五报告_单片机键盘实验

单片机实验五报告_单片机键盘实验一、实验目的本次单片机键盘实验的主要目的是让我们深入了解单片机与键盘的接口技术,掌握如何通过编程实现对键盘输入的检测和响应,从而提高我们在单片机应用开发中的实际操作能力。

二、实验原理在单片机系统中,键盘通常是作为输入设备使用的。

常见的键盘有独立式键盘和矩阵式键盘两种类型。

独立式键盘是每个按键单独占用一根 I/O 线,其优点是电路简单,编程容易,但缺点是占用较多的 I/O 口资源。

矩阵式键盘则是将按键排列成矩阵形式,通过行线和列线的交叉来识别按键。

这种方式可以有效地节省 I/O 口资源,但电路和编程相对复杂一些。

在本次实验中,我们采用了矩阵式键盘。

其工作原理是通过逐行扫描或者逐列扫描的方式,检测行线和列线的电平状态,从而确定按下的按键。

三、实验设备及材料1、单片机开发板一块2、计算机一台3、编程软件(如 Keil C51)4、下载工具(如 STCISP)四、实验步骤1、硬件连接将矩阵式键盘与单片机的 I/O 口进行连接,注意行线和列线的对应关系。

连接好电源和地线,确保硬件电路正常工作。

2、软件编程打开编程软件,创建一个新的工程。

编写初始化程序,包括设置 I/O 口的工作模式、中断等。

编写键盘扫描程序,通过循环扫描行线和列线的电平状态,判断是否有按键按下。

当检测到按键按下时,根据按键的编码执行相应的操作,如在数码管上显示按键值、控制 LED 灯的亮灭等。

3、编译和下载对编写好的程序进行编译,检查是否有语法错误。

如果编译成功,使用下载工具将程序下载到单片机中。

4、实验调试观察硬件电路的工作状态,看是否有异常现象。

按下不同的按键,检查程序的响应是否正确。

如果出现问题,通过调试工具(如单步调试、断点调试等)查找并解决问题。

五、实验代码以下是本次实验的部分关键代码:```cinclude <reg51h>//定义键盘的行和列define ROW_NUM 4define COL_NUM 4//定义行线和列线的端口sbit ROW1 = P1^0;sbit ROW2 = P1^1;sbit ROW3 = P1^2;sbit ROW4 = P1^3;sbit COL1 = P1^4;sbit COL2 = P1^5;sbit COL3 = P1^6;sbit COL4 = P1^7;//定义按键值的编码unsigned char code KeyCodeMapROW_NUMCOL_NUM ={{'1','2','3','A'},{'4','5','6','B'},{'7','8','9','C'},{'','0','','D'}};//键盘扫描函数void KeyScan(){unsigned char i, j, temp;unsigned char keyValue = 0;//逐行扫描for (i = 0; i < ROW_NUM; i++){//先将所有行线置高电平ROW1 = ROW2 = ROW3 = ROW4 = 1;//将当前行线置低电平switch (i){case 0: ROW1 = 0; break;case 1: ROW2 = 0; break;case 2: ROW3 = 0; break;case 3: ROW4 = 0; break;}//读取列线的电平状态temp = COL1 | COL2 | COL3 | COL4;//如果有列线为低电平,则表示有按键按下if (temp!= 0xF0){//延迟去抖动delay_ms(10);//再次读取列线的电平状态temp = COL1 | COL2 | COL3 | COL4; if (temp!= 0xF0){//确定按下的按键for (j = 0; j < COL_NUM; j++){if ((temp &(1 << j))== 0){keyValue = KeyCodeMapij;break;}}//执行相应的操作switch (keyValue){case '1'://具体操作break;case '2':break;//其他按键的操作}}}}}//主函数void main(){while (1){KeyScan();}}```六、实验结果及分析在实验过程中,我们成功地实现了对矩阵式键盘的输入检测,并能够根据不同的按键执行相应的操作。

4乘4键盘实验报告1(1)

4乘4键盘实验报告1(1)

4乘4键盘实验报告一、摘要本系统以89C51集成块为核心器件,制作一种4横4列的键盘。

采用16个按钮式键盘,以及一个硬件复位器。

在按下其中一个按钮时,在键盘扫描程序的作用下,通过键盘扫描识别后,在数码管上显示出来;按下硬件复位器,数码管只显示小数点,实现复位。

本次设计代码采用C语言编制,方便简单,易于调试。

关键词:89C51,键盘,按纽,数码管二、硬件设计2.1、89C51简介89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。

89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除100次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。

89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

主要特性:·与MCS-51 兼容·4K字节可编程闪烁存储器·寿命:1000写/擦循环·数据保留时间:10年·全静态工作:0Hz-24MHz·三级程序存储器锁定·128*8位内部RAM·32可编程I/O线·两个16位定时器/计数器·5个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路2.2、元件分析与工作原理VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

矩阵键盘实验报告

矩阵键盘实验报告

矩阵键盘实验报告矩阵键盘实验报告引言:矩阵键盘是一种常见的输入设备,广泛应用于电子产品中。

本实验旨在通过对矩阵键盘的研究和实验,深入了解其原理和工作机制,并探索其在实际应用中的潜力。

本文将从实验目的、实验步骤、实验结果和讨论四个方面进行论述。

实验目的:1. 理解矩阵键盘的工作原理;2. 掌握矩阵键盘的接线方法;3. 通过实验验证矩阵键盘的可靠性和稳定性。

实验步骤:1. 准备实验材料:矩阵键盘、电路板、导线等;2. 连接电路:将矩阵键盘与电路板通过导线连接;3. 编写程序:使用C语言编写程序,实现对矩阵键盘的扫描和按键检测;4. 烧录程序:将编写好的程序烧录到单片机中;5. 运行实验:按下矩阵键盘上的按键,观察电路板上的指示灯是否亮起。

实验结果:经过实验,我们成功地完成了矩阵键盘的接线和程序烧录,并进行了按键测试。

在按下不同的按键时,电路板上相应的指示灯亮起,证明了矩阵键盘的正常工作。

讨论:1. 矩阵键盘的工作原理:矩阵键盘是由行线和列线组成的,每个按键都与行线和列线相连。

当按下某个按键时,对应的行线和列线会短接,从而使得电流流过该按键,被检测到。

2. 矩阵键盘的接线方法:在本实验中,我们采用了常见的4行4列的接线方式,即将矩阵键盘的4个行线连接到单片机的4个输入引脚上,将4个列线连接到单片机的4个输出引脚上。

3. 矩阵键盘的可靠性和稳定性:通过实验,我们发现矩阵键盘具有较高的可靠性和稳定性。

即使在长时间使用和频繁按键的情况下,矩阵键盘仍能正常工作,并且按键的检测准确率较高。

4. 矩阵键盘的应用潜力:矩阵键盘广泛应用于各种电子产品中,如计算机、手机、电视遥控器等。

它具有结构简单、成本低廉、易于集成等优点,因此在电子产品设计中具有广阔的应用前景。

结论:通过本次实验,我们对矩阵键盘的工作原理和接线方法有了更深入的了解,并验证了其可靠性和稳定性。

矩阵键盘作为一种常见的输入设备,在电子产品设计中具有重要的地位和潜力。

简易键盘设计实验报告

简易键盘设计实验报告

简易键盘设计实验报告1. 引言键盘作为计算机输入设备的一种,是人与计算机之间进行信息交流的重要工具。

随着计算机应用领域的不断扩展,人们对键盘的要求也越来越高,希望它能够更加人性化、便捷,提高工作效率。

因此,设计一款简易键盘成为了本实验的主要目标。

在本实验中,我们将利用现有的技术和材料,设计并制作一款基于蓝牙通信的简易键盘。

通过该键盘,我们可以实现无线连接,通过按键和计算机进行信息传输。

本报告将依次介绍实验的设计思路、实验过程和结果,并对实验进行总结和展望。

2. 设计思路我们的简易键盘设计基于蓝牙通信技术,主要包括键盘硬件设计和键盘软件设计两个部分。

2.1 键盘硬件设计在硬件设计中,我们采用了基于STM32单片机的开发板作为键盘的控制核心。

该开发板具备较高的性能和丰富的外设接口,非常适合作为键盘的控制平台。

我们将利用单片机的GPIO引脚来控制按键的输入和输出,通过编程来实现按键的扫描和信号的处理。

此外,我们还需要设计键盘的结构和按键布局。

在本实验中,我们采用传统的QWERTY键盘布局,并根据键盘的大小和手部的人体工程学原理进行调整,以提高使用的舒适性。

键盘的结构设计将考虑到键盘的稳定性和坚固性,同时兼顾美观和实用性。

2.2 键盘软件设计在软件设计中,我们将利用C语言编程,编写键盘的控制程序。

首先,我们需要编写按键扫描程序,该程序能够周期性地检测按键的状态,并将按键的信息保存在内存中。

其次,我们需要编写蓝牙通信程序,将按键的信息通过蓝牙模块传输给计算机。

最后,在计算机端,我们需要编写接收程序,接收并处理从键盘传来的数据。

3. 实验过程和结果为了验证我们的设计思路,我们按照以下步骤完成了实验:1. 制作键盘的物理结构,包括键盘的外壳和按键。

2. 将STM32开发板与键盘电路连接,确保所有的接口正常工作。

3. 编写键盘的控制程序,实现按键的扫描和信号的处理。

4. 将蓝牙模块与STM32开发板连接,编写蓝牙通信程序。

4×4键盘扫描电路设计

4×4键盘扫描电路设计

设计项目成绩评定表设计报告书目录一、设计目的 (3)二、设计思路 (3)三、设计内容 (4)3.1、原理分析 (4)3.1 1、4* 4键盘的扫描 (4)3.1.2、扫描结果的显示 (5)3.1.3、电路符号 (5)3.1.4、数码管地址选择控制信号 (6)3.2、程序设计 (6)3.3、管脚分配 (10)四、系统调试与结果 (11)五、主要元器件与设备 (12)六、课程设计体会 (13)七、参考文献 (13)一、设计目的1、掌握常用的输入设备—行列式键盘接口电路的实现方法。

2、学习较复杂的数字系统设计方法。

二、设计思路如下图所示为“4 * 4键盘”模拟图。

行“kbrow”有四行:kbrow0、kbrow1、kbrow2、kbrow3。

列“kbcol”有四列:kbcol0、kbcol1、kbcol2、kbcol3 通过给四行赋值循环地对每行进行扫描,例如:通过行线赋值为“1000”时,这样就使得第0行“0键、1键、2键、3键”处在高电平的状态下。

此时如果0键被按下,那么就有第0列输出为高电平。

即四位kbcol输出为“1000”,获取键值为“0”然后在7段数码管上显示出来。

图1 4 * 4键盘三、设计内容3.1、原理分析在数字系统设计中,4*4矩阵键盘是一种常见的输入装置,通常作为系统的输入模块。

对应于键盘上每一个键的识别,一般采用扫描的方法来实现。

下面介绍一种用列信号进行扫描时的基本原理和流程,如图2所示。

当进行列扫描时,扫描信号由列引脚进入键盘,以1000、0100、0010、0001的顺序每次扫描不同的一列,然后读取行引脚的点评信号,以此可以判断是哪个按键被按下。

例如,当扫描行信号独处的值为“0000”时,表示正在扫描“89AB”一列,如果该列没有按键被按下,则由行信号读出的值为“0000”;反之,如果按键“9”被按下时,则该行信号读出的值为“0110”。

图2 4 * 4键盘及行列代码3.1 1、4* 4键盘的扫描在这一部分中,利用时钟信号进行扫描和频率计数器的计数来完成对键盘的扫描。

单片机按键实验报告

单片机按键实验报告

单片机按键实验报告篇一:单片机按键扫描实验报告键盘扫描一.实验目的(1)掌握矩阵键盘接口电路和键盘扫描编程方法。

(2)掌握按键值处理与显示电路设计。

二.实验任务(1)设计4*4键盘,编写各个键的特征码和对应的键值(0~F);(2)编程扫描按键,将按键对应的数字值使用数码管显示出来。

三.实验电路及连线方法1.采用动态显示连线方法:电路由2 片74LS573,1 个六字一体的共阴数码管组成。

由U15 输出段选码,U16 做位选码,与单片机的采用I/O 口连接方式,短路片J22 连接P2.0,J23 连接P2.3,做输出信号锁存。

(实际电路连接是d7-d6-d5-d4-d3-d2-d1-d0?h-c-d-e-g-b-a-f)。

PW12 是电源端。

2.键盘电路连线方法:电路由16 个按键组成,用P1 口扩展4×4 行列式键盘。

J20 是键盘连接端,连接到P1 口。

J21 是行列键盘、独立键盘选择端,当J21 的短路片连接2-3脚时,构成4×4 行列式键盘;当J21 的短路片连接2-1 脚时,可形成3×4 行列式键盘,4 个独立式按键S4、S8、S12、S16,这4 个独立按键分别连接P1.4~P1.7;其他12 个键3×4 行列式键盘。

PW15 是电源端。

四.编程思路1.采用反转法识别按键的闭合。

2.采用动态显示将键值显示出来。

五.算法流程图六.资源分配1.用P1口进行查找按键2.用R3做键值指针3.用R1做动态显示为选码指针。

4.R5为延时指针。

七.程序设计KPIN:ORG MOV MOV ANL MOV 0000H P1,#0F0H A,P1 A,#0F0H B,AMOVP1,#0FHMOVA,P1ANLA,#0FHORLA,BCJNE A,#0FFH,KPIN1AJMP EXITKPIN1: MOVB,AMOVDPTR,#TABKPMOVR3,#0KPIN2: MOVA,R3MOVC A,@A+DPTRCJNE A,B,KPIN3MOVA,R3LOOP: MOVR1,#0FEH;键盘动态显示 LOOP1: MOVA,R3ANLA,#0FHMOV DPTR,#TABMOVC A,@A+DPTRCLRP2.0CLRP2.1MOVP0,ASETB P2.0NOPCLRP2.0LOOP2: MOVA,R1;位选码MOVP0,ASETB P2.1MOVR5,#250LOOP3: DJNZ R5,LOOP3CLRP2.1SJMP LOOPKPIN3: INCR3CJNE A,#0FFH,KPIN2EXIT: RETTABKP: DB0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBHDB 0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H,67H,0FFHTAB: DB77H,44H,3EH,6EH,4DH,6BH,7BH,46H,7FH,6FH,5FHDB 79H,33H,7CH,3BH,1BHEND八.调试出现的问题及解决问题1:程序正常运行,但按键显示出现乱码解决:动态显示笔形码错误,并改正。

按键状态扫描显示电路的设计与制作

按键状态扫描显示电路的设计与制作

题目按键状态扫描显示电路的设计与制作题目: 按键状态扫描显示电路的设计与制作初始条件:(1)以0~9十个数符标识十个按键(2)当有键按下时,显示其标识符,并保持显示符直到新的按键作用(3)如果多个按键同时作用,只响应最先作用的按键要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求(2)方案比较及认证(3)系统框图,原理说明(4)硬件原理,完整电路图,采用器件的功能说明(5)调试记录及结果分析(6)改进方法(7)总结(收获及体会)(8)参考资料(9)附录:器件表,芯片资料时间安排:6月25日~6月28日:明确课题,收集资料,方案确定7月28日~7月2日:整体设计,硬件电路调试7月2日~7月6日;报告撰写,交设计报告,答辩指导教师签名:2012年 7月日目录摘要 (1)1 设计内容及方案选择 (2)1.1设计内容及其设计要求. (2)1.2方案选择 (2)1.2.1 按键的标识及对应的标识符显示方案的选择 (2)1.2.2 信号的锁存及按键优先作用方案的选择 (2)2 电路的设计及器件的选择 (3)2.1电路的原理 (3)2.1.1 电路的原理框图及其说明 (3)2.1.2 单元电路的说明 (3)2.1.3 完整的电路图 (4)2.2开关电路的设计和器件的选择 (5)2.2.1开关电路的设计 (5)2.2.2各主要芯片的功能说明 (5)2.2.3 电路的总体说明 (10)2.3方案二完整电路图及其比较选择 (11)3 硬件电路的设计及其制作与调试 (11)3.1仿真使用的系统 (12)3.2 制作与调试的方法和技巧 (12)3.3测试的数据分析 (12)3.4 制作与调试中出现的故障、原因及排除方法 (12)结束语 (13)参考文献 (14)附录按键状态扫描显示电路所用元件 (15)本科生课程设计成绩评定表 (16)摘要此课程设计是基于键盘按键功能的模拟,需要运用现有所学的数字电子技术的知识,主要实现以下设计的功能 1.按键显示:按下一个按钮输出显示对应的数字,十个按钮分别用0~9显示 2.按键保持:按键后的显示一直保持到新的按键作用 3.优先按键:如果多个按键同时作用,只响应最先作用的按键。

课程设计矩阵键盘扫描

课程设计矩阵键盘扫描

课程设计矩阵键盘扫描一、教学目标本课程的目标是让学生掌握矩阵键盘扫描的原理和实现方法。

知识目标要求学生理解矩阵键盘的基本结构和工作原理,掌握键盘扫描的算法和程序设计方法。

技能目标要求学生能够运用矩阵键盘扫描原理设计简单的键盘输入系统。

情感态度价值观目标在于培养学生对计算机科学和编程的兴趣,提高他们的问题解决能力和创新意识。

二、教学内容本课程的教学内容主要包括矩阵键盘的基本原理、键盘扫描的算法实现和程序设计。

首先,学生将学习矩阵键盘的结构和工作原理,了解键盘扫描的基本概念。

然后,学生将学习如何设计和实现键盘扫描算法,包括行列扫描法和非阻塞扫描法。

最后,学生将通过实际编程练习,掌握如何使用矩阵键盘扫描原理设计实用的键盘输入系统。

三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法。

首先,将采用讲授法,系统地讲解矩阵键盘扫描的基本原理和算法。

其次,将采用讨论法,引导学生通过小组讨论和分享,深入理解键盘扫描的实现方法。

此外,还将采用案例分析法,通过分析实际案例,让学生学会将理论知识应用于实际问题解决中。

最后,将采用实验法,让学生通过动手实践,亲自设计和实现矩阵键盘扫描程序。

四、教学资源为了支持教学内容和教学方法的实施,本课程将选择和准备适当的教学资源。

教材将提供基础知识,参考书将提供更深入的内容,多媒体资料将帮助学生更直观地理解键盘扫描的原理和实现方法。

实验设备将用于学生的动手实践,让他们能够亲自验证和应用所学的知识。

通过丰富多样的教学资源,学生将能够更全面地掌握矩阵键盘扫描的知识,并提高他们的学习体验。

五、教学评估为了全面反映学生的学习成果,本课程将采用多元化的评估方式。

平时表现将占30%的比重,通过课堂参与、提问和小组讨论等方式评估学生的积极性和主动性。

作业将占20%的比重,通过布置相关的编程练习和项目设计,评估学生对矩阵键盘扫描知识的掌握程度。

考试将占50%的比重,包括期中考试和期末考试,将通过笔试和上机操作的方式,全面评估学生的知识水平和应用能力。

矩阵键盘按键的数码管显示矩阵键盘按键的数码管显示

矩阵键盘按键的数码管显示矩阵键盘按键的数码管显示

一、矩阵键盘按‎键的数码管‎显示1.实验目的(1)掌握VHD‎L语言的语‎法规范,掌握时序电‎路描述方法‎(2)掌握多个数‎码管动态扫‎描显示的原‎理及设计方‎法2.实验所用仪‎器及元器件‎计算机一台‎实验板一块‎电源线一根‎扁平线一根‎下载线一根‎3.实验任务要求设计出‎4*4矩阵键盘‎对某一按键‎按下就在数‎码管显示一‎个数字。

按键从左上‎角到右下角‎依次为1,2, (16)4.实验原理按键模块原‎理键盘扫描的‎实现过程如‎下:对于4×4键盘,通常连接为‎4行、4列,因此要识别‎按键,只需要知道‎是哪一行和‎哪一列即可‎,为了完成这‎一识别过程‎,我们的思想‎是,首先固定输‎出4行为高‎电平,然后输出4‎列为低电平‎,在读入输出‎的4行的值‎,通常高电平‎会被低电平‎拉低,如果读入的‎4行均为高‎电平,那么肯定没‎有按键按下‎,否则,如果读入的‎4行有一位‎为低电平,那么对应的‎该行肯定有‎一个按键按‎下,这样便可以‎获取到按键‎的行值。

同理,获取列值也‎是如此,先输出4列‎为高电平,然后在输出‎4行为低电‎平,再读入列值‎,如果其中有‎哪一位为低‎电平,那么肯定对‎应的那一列‎有按键按下‎。

键盘键值的‎获取:键盘上的每‎一个按键其‎实就是一个‎开关电路,当某键被按‎下时,该按键的接‎点会呈现0‎的状态,反之,未被按下时‎则呈现逻辑‎1的状态。

扫描信号由‎r o w进入‎键盘,变化的顺序‎依次为11‎10-1101-1011-0111-1110。

每一次扫描‎一排,依次地周而‎复始。

例如现在的‎扫描信号为‎1011,代表目前正‎在扫描9,10,11,12这一排‎的按键,如果这排当‎中没有按键‎被按下的话‎,则由col‎umn读出‎的值为11‎11;反之当9这‎个按键被按‎下的话,则由col‎u mn读出‎的值为11‎10。

根据上面所‎述原理,我们可得到‎各按键的位‎置与数码关‎系如表所示‎:1110 1110 1110 1110 1101 1101 1101 1101row1110 1101 1011 0111 1110 1101 1011 0111 colum‎n1 2 3 4 5 6 7 8键值row 1011 1011 1011 1011 0111 0111 0111 0111colum‎n1110 1101 1011 0111 1110 1101 1011 0111键值9 10 11 12 13 14 15 16动态显示原‎理为使得输入‎控制电路简‎单且易于实‎现,采用动态扫‎描的方式实‎现设计要求‎。

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

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

实验四键盘扫描及显⽰设计实验报告实验四键盘扫描及显⽰设计实验报告⼀、实验要求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 对键的⼀次闭合仅做⼀次处理,必须去除键抖动。

在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。

按键的抖动,可⽤硬件或软件两种⽅法消除。

2. 为了减少键盘与单⽚机接⼝时所占⽤ I/O 线的数⽬,在键数较多时,通常都将键盘排列成⾏列矩阵形式。

3. 从数码管显⽰⽅式看,数码管分为静态显⽰和动态显⽰两种⽅式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录第一章引言 (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.13. 键盘扫描的流程图如右:系统的硬件设计1.3系统的硬件构成及功能2.1.1 74HC164 移位寄存器在计算机系统中为了高效地实现计算机系统之间的远距离通信,且要使通信电路简单、可靠,则采用串行输入、输出的方式,例如串行口、I2C 和SPI 通信等,甚至当今广泛应用的互联网通信,都采用了这种方式来实现,移位寄存器的作用就是实现并行输入、串行输出或串行输入、并行输出。

图2.1.174HC164 是一种常用的八位串入并出移位寄存器,它的电路原理图及逻辑符号见图2.1.1 所示。

在电路原理图中,8 个D 触发器首尾相接,数据输入端A 和B 通过与门G 接到F1 的输入端作为整个移位寄存器的串行输入,触发器F1~F8 的输出分别为芯片的并行输出Q0~Q7,8 个触发器的时钟输入端连接在一起形成芯片的时钟输入端CP,这样在时钟上升沿的作用下,串行输入数据A·B 逐位从左向右移动。

它的特性表如表 4.19 所示,从表中可以看出若要将八位数据D7~D0 传送到输出Q7~Q0,必须在8 个CP 脉冲的作用下,从D7到D0 逐位送到输入D。

例如将二进制数(11010110)B 串行传送到74HC164 并行输出(Q7 为高位,Q0 为低位),时序图如图2.1.2 所示。

图中横坐标表示时间,纵坐标表示高、低电平,因此波形中串行数据从左至右、由高位Q7(本例为1)至低位Q0(本例为0)输入,在时钟脉冲的作用下,逐位从左至右移位,8 个时钟脉冲过后,二进制数(11010110)B 在Q7~Q0 并行输出。

图中纵向虚线表示相位对准每个CP 脉冲的上升沿;阴影部分表示不必关心这时的状态;方向指向右下方的8 个箭头表示最早输入的1 经过8 次移位到达Q7。

图2.1.2 移位寄存器时序图图中纵向虚线表示相位对准每个CP 脉冲的上升沿;阴影部分表示不必关心这时的状态;方向指向右下方的8 个箭头表示最早输入的1 经过8 次移位到达Q7。

1.4主控模板硬件设计1.EasyARM2103开发板2.74LS164芯片3.8位数码显示管4.引脚芯片5.四脚按键、电阻、电容、发光二极管、跳线若干1.5ARM芯片及引脚说明2.LPC2103芯片(1)引脚图2.3.1 LPC2103引脚(2)元件布局图EasyARM2103开发板的底板与PACK板的元件布局如图2.8、图2.9所示。

图2.3.2 底板元件布局图图2.3.3 PACK板元件布局图1.6LED数码显示管LED数码管分共阳极与共阴极两种,其工作特点是,当笔段电极接低电平,公共阳极接高电平时,相应笔段可以发光。

共阴极LED数码管则与之相反,它是将发光二极管的阴极(负极)短接后作为公共阴极。

当驱动信号为高电平、控制端接低电平时,才能发光。

1. LED封装图图2.4.1LED封装图2.数码管结构数码管由8个发光二极管(以下简称字段)构成,通过不同的合可用来显示数字0~9,字符A~F、H、L、P、R、U、Y等符号及小数点“.”。

数码管又分为共阴极和共阳极两种类型。

3.数码管工作原理共阳极数码管中8个发光二极管的阳极(二极管正端)连接一起,即为共阳极接法,简称共阳数码管。

通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。

当某段驱动电路的输入端为低电平时,该端所连接的字段导通并点亮。

根据发光字段的不同组合可显示出各种数字或字符。

此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。

共阴极数码管中8个发光二极管的阴极(二极管负端)连接在一起,即为共阴极接法,简称共阴数码管。

通常,共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。

当某段驱动电路的输出端为高电平时,该端所连接的字符导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。

同样,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。

4.单片机LED断码表单片机LED共阳极段码表【0-F】DB 0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H[0-7]DB 80H,90H,88H,83H,0c6H,0a1H,86H,8eH[8-F]单片机LED共阴极段码表【0-F】DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H[0-7]DB 7FH,6FH ,77H,7CH,39H,5EH,79H,71H,76H[8-F]为了满足某些特殊用户需要有时也会用到以下特别字符的段码表单片机LED共阳极段码表【HLPRUY-.熄灭】DB 89H,0C7H,8CH,0CEH,0C1H,91H,0BFH,7FH,0FFH [ HLPRUY -.熄灭 ]单片机LED共阴极段码表【HLPRUY-.熄灭】DB 76H,38H,73H,31H,3EH,6EH,40H,80H,00H [ HLPRUY-.熄灭 ]其中 [ HLPRUY-,熄灭 ],这些特殊字符中有些看起来不是很形象,但有时不可避免的会用到.1.7键盘设计图2.5.1 独立式按键原理图图2.5.2 矩阵式按键原理图无论是单片机控制系统还是单片机测量系统,都需要一个人机对话装置,这种人机对话装置通常采用键盘和显示器。

键盘是单片机应用系统中人机对话常用的输入装置,而显示器是单片机应用系统人机对话中的常用输出装置。

键盘是由若干个按键开关组成,键的多少根据单片机应用系统的用途而定。

键盘由许多键组成,而每个键相当于一个机械开关触点,当键按下时,触点闭合,当键松开时,触点断开。

单片机接收到按键的触点信号后作相应的功能处理。

因此对于单片机系统来说键盘接口信号是输入信号。

单片机的键盘接口分为独立式和矩阵式。

独立式键盘的每个按键都有一个信号线与单片机电路相连,所有按键有一个公共地或公共正端,每个键相互独立互不影响。

如图2.5.1所示,当按下键1时,无论其它键是否按下,键1的信号线就由1变0;当松开键1时,无论其它键是否按下,键1的信号线就由0变1。

矩阵式键盘的按键触点接于由行、列母线构成的矩阵电路的交叉处,每当一个按键按下时通过该键将相应的行、列母线连通。

若在行、列母线中把行母线逐行置0(一种扫描方式),那么列母线就用来作信号输入线。

矩阵式键盘原理图如图2.5.2所示。

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

查询方式是指在程序中用一段专门的扫描和读按键程序不停查询有无按键按下,确定键值。

这种方式电路简单,但需要占用单片机的机器时间。

定时扫描方式是指利用单片机内的定时器来产生定时中断,然后在定时中断的服务程序中扫描,检查有无按键按下,确定键值。

这种方式的电路也比较简单,不占用单片机的机器时间,但需要占用一个定时器,同时定时的时间不能过长,否则可能检测不到相应得按键。

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

这种方式硬件电路上必须要产生中断线,需要与门和非门来产生。

但中断方式不占用单片机的机器时间,也不会出现定时方式时的检测不到键盘的情况。

系统的软件设计1.8软件总体功能设计/******************************************************************** **************************************程序名称:SPI驱动键盘板(按键显示键的编号)**所用芯片:ARM2103**引脚设置:P0.4为SPI的CLK(时钟线);P0.5为GPIO输入;P0.6为SPI的MOSI(数据传输线)**功能描述:按下键盘板上的一个键,就在8个数码管上都显示它的编号**程序作者:张会**编写日期:2010年11月16日********************************************************************* ***********************************/#define key (1<<5)#include "config.h"uint8 data[8]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};//段码表uint8 bit[ ]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//位码表uint32 Flags=FALSE;char i=0; //位码循环变量char whichkeydown=8; //标志哪一个键按下了,0~7号键。

/******************************************************************** ********** delay延时函数 delay(1000000)防抖效果最好********************************************************************* *******/void delay(uint32 time){while(time>0){time--;}}/********************************************************************************/void __irq Timer0ISR(void){Flags=TRUE;T0IR=0x01;VICVectAddr=0x00;}/******************************************************************** **********/void Timer0Init(void){T0TCR=0x02; //TC复位T0PR=0x00; //不分频T0MCR=0x03; //MR0匹配时,发生中断和TC复位T0MR0=Fpclk/400; //25msT0IR=0x01;//中断设置VICIntSelect&=~(1<<4);VICVectCntl0=0x20|4;VICVectAddr0=(uint32)Timer0ISR;VICIntEnable=1<<4;T0TCR=0x01; //启动timer0}/******************************************************************** ******************************************************************************* *******/void SPIInit(void){SPI_SPCCR=0x08; //设置传输速率,此处设为最大速率Fpclk/8SPI_SPCR=SPI_SPCR&(0<<2) //每次传送的数据由8~11位设置|(1<<3) //起始和结束:数据在SCK第二个时钟沿采样|(1<<4) //时钟极性控制:SCK低有效|(1<<5) //选择为主模式&(~(1<<6)) //设置为数据传送时高位在先【高位在先是键盘板使用模式,由74HC164移位寄存器特点决定的】|(0<<7); //SPI中断使能}/******************************************************************** ******************************************************************************* *******/void SendData(uint8 number){SPI_SPDR=number; //传送的数据A内容(段码)IOCLR=1<<7;while((SPI_SPSR & (1<<7))==0); //等待传送结束(SPI_SPSR第七位置1时表示传送结束)IOSET=1<<7;}/******************************************************************** ********** main函数*********************************/int main (void){PINSEL0=PINSEL0 &(~(0x03<<8))|(1<<8) //设置P0.4为SPI的CLK(时钟线)&(~(1<<10)) //设置P0.5为GPIO&(~(0x03<<12))|(1<<12); //设置P0.6为SPI的MOSI(数据传输线)PINSEL0&=~(0x03<<14);IODIR|=1<<7;PINSEL1&=~(0x03<<2);IODIR|=1<<17;IOSET=1<<17;Timer0Init( );IRQEnable( );while(1){if(TRUE==Flags){Flags=FALSE; //清零SendData(data[i]);SendData(bit[i]);if((IO0PIN&(1<<5))==0){whichkeydown=i;}else{if(whichkeydown==6) //按下6号键,点亮灯{whichkeydown=8;IOCLR=1<<17;}}i=(i+1)%8;}}return 0;}/**************************文件结束********************************/1.9各功能模块软件设计1.delay延时函数功能:用来防止键盘抖动 [delay(1000000)键盘防抖效果最好]相关知识:如果不处理键抖动,则有可能引起一次按键被误读成多次,所以为了确保能够正确地读到按键,必须去除键抖动,确保在按键的稳定闭合和稳定断开的时候来判断按键状态,判断后再做处理。

相关文档
最新文档