实验四 动态显示与矩阵键盘的编程和综合应用设计(学生版)

合集下载

实验四 键盘实验

实验四  键盘实验

实验四矩阵键盘控制接口设计实验一、实验目的1、掌握MAX+plus 软件的使用方法。

2、掌握层次化设计方法:底层为文本文件,顶层为图形文件。

3、了解用12 位按健输入开关来设计并实现一个3 x 4 矩阵键盘接口控制器。

了解弹跳消除电路的工作原理。

二、实验设备1、计算机2、MAX+plus II软件及实验箱三、实验原理该实验系统中没有矩阵键盘,可以用12 位按键开关来实现矩阵键盘的功能。

当按键被按下时改按键的节点会呈现‘0’状态,反之为‘1’。

将12 个键进行编码后就可以实现距阵键盘的功能。

键盘编码电路:由于每个按键开关都是独立的,故有12 路输入,3X4 键盘有12 个键值,4位二进制数即可表示全部状态。

因此,键盘编码电路为12 输入4 输出编码器。

12 个按键可分为10 个数字键和2 个功能键。

数字键主要用来输入数字,功能键一般实现一些特殊用途(如确认、清除等)。

4 位输出从0~9 表示10 个数字键,11 和12 表示两个功能键。

弹跳消除电路:因为按键开关是机械式结构,在开关切换的瞬间会在接触点出现来回弹跳的现象,对于激活关闭一般电器并不会有何影响,但对于灵敏度较高的电路,却有可能产生误动作而出错。

跳现象产生的原因可从下图说明。

虽然只是按下按键一次然后放开,然而实际产生的按键信号却不只跳动一次,经过取样的检查后将会造成误判,以为按键两次。

弹跳现象产生错误的抽样结果如果调整抽样频率可以发现弹跳现象获得了改善。

因此在开关输入信号处必须加上弹跳消除电路,避免误操作信号的发生。

注意:弹跳消除电路所使用脉冲信号的频率必须要选用合适,频率太低则按键反应痴动,频率太高则起不到消除弹跳的作用,而且消除弹跳电路设计的不同对频率也有不同的要求。

数码管采用共阴极:段码表四、实验内容1、用12 个按键开关实现矩阵键盘,当按下某一键时在数码管上显示对应的键值。

2、分析仿真示例程序理解弹跳消除的实现原理。

3、通过改变CLK 信号,理解时钟信号对弹跳消除的影响。

数码管动态显示与矩阵键盘的编程

数码管动态显示与矩阵键盘的编程

数码管动态显示与矩阵键盘的编程实验四综合应用设计——数码管动态显示与矩阵键盘的编程一、实验目的:1、掌握单片机I/O技术和子程序设计等综合知识。

2、了解矩阵式键盘的内部结构和数码管显示的基本原理,掌握至少一种常用的按键识别方法。

3、熟练掌握数码管动态显示和矩阵键盘识别的综合应用。

二、实验内容:设计一个矩阵键盘的识别和动态显示综合的系统,控制8个8段数码管动态扫描显示4*4矩阵键盘上按下的按键所对应的值。

三、实验要求:给定一个4*4的矩阵键盘,16个按键对应显示0123456789ABCDE,第1次按下某按键在第一个8段数码管上显示对应的值,第2次在第二个数码管上显示,以此类推,第9次又在第一个数码管上显示,以此循环下去。

其中ABCDE在数码管上无法表达,可以用其它代替,例如:B用8表示,D用0表示,E用H表示等。

四、实验设备及实验耗材:计算机一台,W A VE6000软件模拟器,完成ISP下载的XLISP 软件,XL1000单片机综合仿真试验仪一台(8个8段数码管,4*4矩阵键盘一个,89S51一片,9针对9针的串口线一条,5V稳压电源线一条)五、实验基本原理与方法:查阅相关资料掌握矩阵式键盘的内部结构,8段数码管动态显示原理和常用的按键识别方法,建议使用按键识别方法中最常用的“行扫描法”编写程序。

结合动态显示技术和矩阵键盘识别技术。

六、实验方案设计:1、采用哪些I/O口完成通信,采用何种按键识别的方法,如何综合动态显示技术和矩阵键盘识别技术。

2、说明该程序的功能。

3、硬件连接原理图。

七、实验步骤:1.弄清实验内容和实验要求。

2.学习相关理论知识,提出实验方案,画出程序流程图。

软件流程图3.编写软件程序,作相关的程序注释,便于查看和调试。

4.编译和调试。

伟福软件:1.打开伟福W A VE V3.20软件,采用伟福默认的仿真器就可以了。

文件——新建文件,在弹出的窗口中输入实验程序,保存为“文件名.asm”文件,若窗口内的部分程序字体颜色发生改变,表示保存成功。

矩阵键盘程序设计

矩阵键盘程序设计

矩阵键盘程序设计1. 引言矩阵键盘是一种常见的输入设备,广泛应用于电脑、方式等各种电子设备中。

将介绍如何设计一个简单的矩阵键盘程序。

2. 程序设计思路矩阵键盘由多个按键组成,每个按键对应一个特定的字符或功能。

通常情况下,矩阵键盘是通过行列扫描的方式来检测按键的状态,即通过扫描每行和每列的电平来判断是否有按键被按下。

要设计一个矩阵键盘程序,需要确定矩阵键盘的行列数,然后通过相应的硬件电路将其连接到控制器上。

接下来,程序需要循环扫描每行和每列的电平,并记录下按下的按键。

根据按键的状态来执行相应的操作,输出对应的字符或执行特定的功能。

3. 硬件设计硬件设计主要包括确定矩阵键盘的行列数以及将其连接到控制器上的电路设计。

通常情况下,矩阵键盘的行使用输出电平,列使用输入电平。

在连接到控制器之前,还需要添加电阻和二极管来保护电路和消除反馈。

4. 软件设计软件设计主要包括程序的循环扫描和按键状态的处理。

可以使用循环来不断扫描每行和每列的电平,当检测到按键被按下时,记录下按键的位置信息。

接下来,根据按键的状态,进行相应的处理操作,输出对应的字符或执行特定的功能。

程序还需要处理按键的反弹,以避免误操作。

5. 示例代码以下是一个简单的矩阵键盘程序设计的示例代码,采用C语言编写:cinclude <stdio.h>include <stdbool.h>// 定义矩阵键盘的行列数define ROWS 4define COLS 4// 定义矩阵键盘的字符映射表char keys[ROWS][COLS] = {{'1', '2', '3', 'A'},{'4', '5', '6', 'B'},{'7', '8', '9', 'C'},{'', '0', '', 'D'}};// 定义矩阵键盘状态数组bool keyState[ROWS][COLS] = {0};// 矩阵键盘扫描函数void scanKeyboard() {// 扫描行for (int row = 0; row < ROWS; row++) {// 将当前行的输出电平设置为低电平setRowLow(row);// 扫描列for (int col = 0; col < COLS; col++) {// 检测当前列的输入电平if (getColLevel(col)) {// 当检测到按键被按下时,更新按键状态 keyState[row][col] = true;} else {// 当检测到按键未按下时,更新按键状态 keyState[row][col] = false;}}// 将当前行的输出电平恢复为高电平setRowHigh(row);}}int mn() {while (1) {// 扫描矩阵键盘scanKeyboard();// 处理按键状态for (int row = 0; row < ROWS; row++) {for (int col = 0; col < COLS; col++) {// 检测到按键被按下时,输出对应的字符if (keyState[row][col]) { printf(\。

矩阵按键实验课程设计

矩阵按键实验课程设计

矩阵按键实验课程设计一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。

知识目标要求学生掌握矩阵按键的基本原理和实验操作方法;技能目标要求学生能够独立完成矩阵按键实验,并能够分析实验结果;情感态度价值观目标要求学生培养对科学实验的兴趣,提高实验操作的规范性和准确性。

通过本课程的学习,学生将能够了解矩阵按键的原理和应用,掌握实验操作的基本技能,培养科学实验的兴趣和能力。

同时,学生将能够在实验过程中培养观察、思考、解决问题的能力,提高实验操作的规范性和准确性。

二、教学内容本课程的教学内容主要包括矩阵按键的基本原理、实验设备和实验操作方法。

首先,将介绍矩阵按键的基本原理,包括矩阵按键的结构和工作原理。

然后,将介绍实验设备的使用方法,包括矩阵按键模块、开发板和编程软件的使用。

最后,将介绍矩阵按键实验的操作方法,包括实验步骤、实验数据采集和实验结果分析。

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

首先,将采用讲授法,向学生讲解矩阵按键的基本原理和实验操作方法。

然后,将采用实验法,让学生亲自动手进行实验操作,并观察实验结果。

此外,还将采用讨论法,引导学生进行小组讨论,共同分析实验结果。

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

教材方面,将使用《电子实验教程》一书,该书详细介绍了矩阵按键实验的操作方法和实验原理。

参考书方面,将提供《矩阵按键应用手册》等资料,供学生参考。

多媒体资料方面,将制作实验操作视频和实验原理动画,以直观地展示实验过程和原理。

实验设备方面,将准备矩阵按键模块、开发板和编程软件等设备,供学生进行实验操作。

五、教学评估本课程的教学评估将采用多元化的评估方式,以全面、客观、公正地反映学生的学习成果。

评估方式包括平时表现、作业和考试等。

平时表现评估将关注学生在课堂上的参与度、提问和回答问题的积极性等。

作业评估将根据学生完成的实验报告和课后作业的质量进行评分。

矩阵式键盘设计实训报告

矩阵式键盘设计实训报告

一、实验目的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.矩阵键盘的程序设计在程序设计中,需要初始化矩阵键盘的引脚配置,即将每个行线和列线连接到相应的引脚上。

然后,通过循环扫描行线和列线的状态,判断用户是否按下了某个按键。

一般情况下,矩阵键盘的扫描速度比较快,可以采用中断的方式来进行扫描,提高响应速度。

以下是一个简单的矩阵键盘程序设计示例:import RPi.GPIO as GPIO初始化引脚配置row_pins = [11, 13, 15, 16] 行引脚col_pins = [18, 22, 24, 26] 列引脚GPIO.setmode(GPIO.BOARD)设置行引脚为输出模式,列引脚为输入模式for pin in row_pins:GPIO.setup(pin, GPIO.OUT)for pin in col_pins:GPIO.setup(pin, GPIO.IN)循环扫描矩阵键盘while True:for row in row_pins:设置当前行引脚为低电平GPIO.output(row, GPIO.LOW)for col in col_pins:判断当前列引脚是否为高电平,即判断用户是否按下了某个按键if GPIO.input(col) == GPIO.HIGH:处理按键事件print(\。

数码管显示4×4键盘矩阵按键实验

数码管显示4×4键盘矩阵按键实验

5、4×4键盘矩阵按键实验一、实验目的及要求键盘实质上是一组按键开关的集合。

通常,键盘开关利用了机械触点的合、断作用。

键的闭合与否,反映在行线输出电压上就是呈高电平或低电平,如果高电平表示键断开,低电平则表示键闭合,反之也可。

通过对行线电平高低状态的检测,便可确认按键按下与否。

为了确保CPU对一次按键动作只确认一次按键有效,还必须消除抖动。

当按键较多时会占用更多的控制器端口,为减少对端口的占用,可以使用行列式键盘接口,本实验中采用的4×4键盘矩阵可以大大减少对单片机的端口占用,但识别按键的代码比独立按键的代码要复杂一些。

在识别按键时使用了不同的扫描程序代码,程序运行时LED灯组会显示相应按键的键值0~15的二进制数。

本实验中P2端口低4位连接是列线,高4位连接的是行线。

二、实验原理(图)三、实验设备(环境):1、电脑一台2、STC-ISP(V6.85I)烧写应用程序3、Keil应用程序四、实验内容(算法、程序、步骤和方法):#include<STC15F2K60S2.h> //此文件中定义了STC15系列的一些特殊功能寄存器#include"intrins.h"#define uint unsigned int#define uchar unsigned charuchar code dsy_code[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0 F,0xff};uchar Pre_keyno=16,keyno=16;void delayMS(char x){uchar i;while(x--)for(i=0;i<120;i++) ;}void keys_scan(){uchar tmp;P2=0x0f;delayMS(5);tmp=P2^0x0f;switch(tmp){case 1:keyno=0;break;case 2:keyno=1;break;case 4:keyno=2;break;case 8:keyno=3;break;default:keyno=16;}P2=0xf0;delayMS(5);tmp=P2>>4^0x0f;switch(tmp){case 1:keyno+=0;break;case 2:keyno+=4;break;case 4:keyno+=8;break;case 8:keyno+=12;break;}}main(){P0=0x00;while(1){P2=0xf0;if(P2!=0xf0)keys_scan();if(Pre_keyno!=keyno){P0=~dsy_code[keyno];Pre_keyno=keyno;}delayMS(50);}}五、实验结论(结果):本实验实现了XXX功能,核心算法采用了XXX的方式,达到了预期目的。

(实验四)单片机矩阵键盘检测和液晶仿真实验

(实验四)单片机矩阵键盘检测和液晶仿真实验

实验四单片机矩阵键盘检测和液晶仿真实验(4学时)一、实验任务利用51单片机实现4X4矩阵键盘和LCD1602液晶显示人机交互系统,编程实现:(1)按键扫描(1、2、……9、A、B、C、D、E、F)和LCD1602显示按键的键号,格式为:KEYNUM+按键号;(2)LCD1602的第一行显示加1功能,初始数字为980,显示位置自己确定,每次按下某一个按键,数字加1,范围为15---20;二、实验目的1、掌握仿真软件Proteus和单片机联调的方法;2、掌握矩阵键盘扫描检测的原理,并且编程实现键盘按键的检测;3、掌握LCD1602液晶显示的原理,并且编程实现LCD1602的显示功能;4、掌握利用单片机实现键盘检测和液晶显示的功能组合,并掌握独立编程控制的能力。

三、实验设备电脑、Proteus软件、Keil软件四、实验原理(一)矩阵键盘扫描检测原理按照按键结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点开关按键,如电气式按键、磁感应按键等。

在单片机应用系统中,通过按键实现控制功能和数据输入是非常普遍的。

在所需按键数量不多时,系统常采用独立式按键。

独立式按键是指每个按键单独占有一根I/O口线,且其工作状态不会影响其他I/O口线的工作状态。

这种按键的电路配置灵活,软件结构简单。

不过在实际应用中,由于不同的系统对按键的要求不同,因此,对按键程序的设计要考虑全面,以便更好地完成按键所设定的功能。

在按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图4.1所示。

在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。

这样一个端口(如P1口)就可以构成4×4=16个按键,比直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出1键(共9键)。

由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。

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

实验四综合应用设计——数码管动态显示与矩阵键盘的编程
一、实验目的:
1、掌握单片机I/O技术和程序设计等综合知识。

2、了解矩阵式键盘的内部结构和数码管显示的基本原理,掌握至少一种常用的按键识别方法。

3、熟练掌握数码管动态显示和矩阵键盘识别的综合应用。

二、实验内容:
设计一个矩阵键盘的识别和动态显示综合的系统,控制8个8段数码管动态扫描显示4*4矩阵键盘上按下的按键所对应的值。

三、实验要求:
给定一个4*4的矩阵键盘,16个按键对应显示0123456789ABCDE,第1次按下某按键在第一个8段数码管上显示对应的值,第2次在第二个数码管上显示,以此类推,第9次又在第一个数码管上显示,以此循环下去。

其中ABCDE在数码管上无法表达,可以用其它代替,例如:B用8表示,D用0表示,E用H表示等。

四、实验设备及实验耗材:
计算机一台,W A VE6000软件模拟器,完成ISP下载的XLISP软件,XL1000单片机综合仿真实验仪一台(8个8段数码管,4*4矩阵键盘一个,89C51一片,9针对9针的串口线一条,USB电缆一条)
五、实验基本原理与方法:
查阅相关资料掌握矩阵式键盘的内部结构,8段数码管动态显示原理和常用的按键识别方法,建议使用按键识别方法中最常用的“行扫描法”编写程序。

结合动态显示技术和矩阵键盘识别技术。

六、实验方案设计:
1、采用哪些I/O口完成通信,采用何种按键识别的方法,如何综合动态显示技术和矩
阵键盘识别技术。

2、说明该程序的功能。

3、硬件连接原理图。

七、实验步骤:
1.弄清实验内容和实验要求。

2.学习相关理论知识,提出实验方案,画出程序流程图。

软件流程图
3.编写软件程序,作相关的程序注释,便于查看和调试。

4.编译和调试。

伟福软件:
1.打开伟福W A VE V3.20软件,采用伟福默认的仿真器就可以了。

文件——新建
文件,在弹出的窗口中输入实验程序,保存为“文件名.asm”文件,若窗口内
的部分程序字体颜色发生改变,表示保存成功。

2.文件——新建项目
加入模块文件:打开刚才已经保存的文件“文件名.asm”
加入包含文件:取消
保存项目“文件名.PRJ”,在项目窗口里可以看到。

3.确保仿真器——仿真器设置——目标文件里“生成HEX文件”和“生成BIN
文件”被勾选上。

4.项目——编译,调试,编译成功后就会生成“文件名.HEX”文件。

5.软件调试成功后,完成硬件连接。

接线方法:
1、用一条8PIN数据排线,把矩阵按键部份的JP50,接到CPU部份的P1口JP44。

2、接8位数码管的数据线。

将数码管部份的数据口JP5接到CPU部份的P0口JP51。

3、接8位数码管的显示位线。

将数码管部份的显示位口JP8接到CPU部份的P2口
JP52。

键盘口P1,数码管显示p2, 数码管段位p0口
6.将程序烧写到单片机上,试运行。

若出现问题,修改程序,重新编译和调试,直至
运行成功。

ISP下载烧写程序:
确保试验仪与计算机的串口和USB口都连接上后,打开软件XLISP,注意串口设置,计算机和试验仪采用的是哪个串口连接,不同的计算机可能会不同,有的
是COM1,有的是COM3等,可以采用自动检测功能查找。

也可以在打开软件后,选项—串口,更改串口设置。

如果串口选择错误,实验将无法进行。

打开(打开生成的HEX文件)——智能一键通。

即可看到运行结果。

重新烧写程序时应该先擦除上一个的再烧写。

实验结果:在4*4键盘上第一次按下任一个键,在第一个数码管上显示对应的键
值,显示后该数码管熄灭,若希望能显示时间稍微长一点,可以在每一个撤销选中
关显示(SETB P2.x)的后面加入一个延时程序。

第二次按下的,在第二个数码管
上显示,依次类推,第八次按下在第八个数码管上显示。

第九次按下又重新在第一
个数码管上显示。

K00:0 K01:1 K02:2 K03:3 K04:4 K05:5
K06:6 K07:7 K08:8 K09:9
K0A: K0B: K0C: K0D: K0E: K0F:
八、实验报告要求:
1.分析程序,说出程序的功能,画出软件流程图。

2.源程序加注释。

3.画出硬件接口原理电路图。

4. 实验小结(包括理论知识的总结和实验结果的分析)。

相关文档
最新文档