课程设计报告矩阵键盘控制

合集下载

4x4矩阵键盘设计报告

4x4矩阵键盘设计报告

4x4矩阵键盘设计报告1.引言1.1 概述概述:4x4矩阵键盘是一种常用的输入设备,广泛应用于各种电子产品中。

本报告旨在介绍4x4矩阵键盘的设计理念、技术实现以及使用体验,并对其设计优势进行分析。

同时,将收集用户反馈,展望未来对4x4矩阵键盘的发展趋势进行探讨。

通过本报告的阐述,读者可以更加全面地了解4x4矩阵键盘的设计与应用,为相关产品的设计与开发提供参考和借鉴。

1.2 文章结构本报告将分为引言、正文和结论三个部分。

引言部分将概述本设计报告的目的和重要性,介绍文章结构和各部分内容的主要内容。

正文部分将详细介绍设计理念、技术实现和使用体验,通过分析和阐述设计的过程和特点,展现4x4矩阵键盘设计的全面性和独特性。

结论部分将对设计的优势进行总结,考虑用户反馈和展望未来的发展方向,以期为4x4矩阵键盘的设计提供参考和启示。

文章1.3 目的:本报告的目的是介绍我们设计的4x4矩阵键盘,并分析其设计理念、技术实现和使用体验。

通过本报告,读者可以了解我们的设计思路和创新之处,以及用户在使用过程中的反馈和建议。

同时,我们还会对该键盘的设计优势进行评估,并展望未来可能的发展方向。

通过本报告的阐述,我们希望能够为相关领域的学习和研究提供有益的参考和启发。

2.正文2.1 设计理念设计理念部分的内容:在设计4x4矩阵键盘时,我们以用户体验和便捷性为设计理念的核心。

我们希望设计一款符合人体工程学的键盘,使用户在使用过程中能够感受到舒适和便捷。

同时,我们也注重键盘的美学设计,希望能够设计出外观时尚,符合当代审美的产品。

此外,我们也考虑了键盘的功能多样性,希望能够满足不同用户的需求,提供更好的用户体验。

因此,在设计理念上,我们以用户体验和功能多样性为重点,致力于设计出一款符合人体工程学、外观时尚、功能多样的4x4矩阵键盘。

2.2 技术实现在本节中,我们将讨论4x4矩阵键盘的技术实现。

我们首先考虑到了键盘的布局和排列,通过设计合理的矩阵布局,我们可以实现较小尺寸的键盘同时保证较高的按键准确性。

单片机 矩阵键盘实验 实验报告

单片机 矩阵键盘实验 实验报告

单片机矩阵键盘实验实验报告一、实验目的本次实验的目的是掌握原理和方法,利用单片机识别矩阵键盘并编程实现键码转换功能,控制LED点亮显示。

二、实验原理矩阵键盘是一种由多路单向控制器输入行选择信号与列选择信号连接而形成的一一对应矩阵排列结构。

它广泛应用于电子游戏机、办公自动化设备、医疗仪器、家电控制及书籍检索机器等方面。

本次实验采用的矩阵键盘是一个4 x 4矩阵,用4段数码管显示按键编码,每个按键都可以输入一个代码,矩阵键盘连接单片机,实现一个软件算法来识别键码转化。

从而将键盘中的按键的按下信号转换成程序能够识别的代码,置于相应的输出结果中,控制LED点亮,从而可以实现矩阵键盘按键的转换功能。

三、实验方法1.硬件搭建:矩阵键盘(4行4列)与单片机(Atmel AT89C51)相连,选择引脚连接,并将数码管和LED与单片机相连以实现显示和点亮的功能。

2.程序设计:先建立控制体系,利用中断服务子程序识别和码值转换,利用中断服务子程序实现从按键的按下信号转换为程序能够识别的代码,然后将该代码段编写到单片机程序中,每次按下矩阵键盘按键后单片机给出相应的按键编码输出,用数码管显示,控制LED点亮。

四、实验结果经过实验,成功实现了矩阵键盘与单片机之间的连接,编写了中断服务子程序,完成了按键编码输出与LED点亮的功能。

实验完成后,数码管显示各种按键的编码,同时LED会点亮。

本次实验介绍了矩阵键盘的原理,论述了键码转换的程序设计步骤,并实验完成矩阵键盘与单片机的连接,实现用LED点亮以及数码管显示按键的编码。

通过本次实验,受益匪浅,使我对使用单片机编写算法与程序有了更深入的认识,同时丰富了课堂学习的内容,也使我更加热爱自己所学的专业。

矩阵式键盘设计实训报告

矩阵式键盘设计实训报告

一、实验目的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、掌握 4×4 矩阵键盘的工作原理和键盘的扫描方式。

2、掌握键盘的去抖方法和键盘应用程序的设计。

二、实验设备
1、PC 机一台;
2、开放式模块化单片机教学实验箱一台;
3、USB 下载线一根。

三、实验内容
自行编制程序,用 51 单片机实现 4×4 矩阵键盘扫描,采用线反转法;并实现当S11按下时在数码管上显值“0”,当S12按下时在数码管上显值“1”……,即依次将 S11 至S26按下,在数码管上依次显示十六进制数“0-F”,矩阵键盘原理图如图1-1 所示。

单片机与数码管接口电路原理图如图 1-2 所示。

图 1-1 矩阵键盘接口电路
图 1-2 数码管接口电路原理图
四、思考题
1.画出所编程序的流程图;
2.若要实现2×4 矩阵键盘,软硬件作如何修改。

答:将行线P2^3, P2^4接线去掉。

程序对应部分P2=0xfd; P2=0xfe;删掉。

3.实验中有何故障、问题出现,是否得到解决?如何解决的?问题:显示值对应出错。

原来是共阳段码和共阴段码弄相反了。

单片机矩阵按键课程设计

单片机矩阵按键课程设计

单片机矩阵按键课程设计一、课程目标知识目标:1. 学生能理解单片机矩阵按键的基础知识,掌握矩阵按键的原理及其在电路中的应用。

2. 学生能描述单片机I/O口操作方法,并运用此知识实现矩阵按键的编程控制。

3. 学生能解释并运用行、列扫描法进行按键识别,实现按键的消抖处理。

技能目标:1. 学生能够独立完成矩阵按键电路的连接,并进行调试。

2. 学生能够运用所学知识,编写程序实现矩阵按键的扫描与功能分配。

3. 学生能够通过实验,分析和解决矩阵按键编程过程中遇到的问题。

情感态度价值观目标:1. 学生培养对单片机技术的兴趣,增强对电子工程领域的认识。

2. 学生在学习过程中,培养解决问题的耐心和毅力,树立团队协作意识。

3. 学生能够认识到单片机技术在现实生活中的应用价值,增强创新实践能力。

课程性质:本课程为实践性较强的电子技术课程,要求学生在掌握理论知识的基础上,注重动手实践。

学生特点:学生具备一定的单片机基础知识,对电子技术有较高的兴趣,但编程和动手能力参差不齐。

教学要求:结合学生特点,课程注重理论与实践相结合,充分调动学生的积极性,提高学生的动手能力和创新能力。

通过课程学习,使学生在知识、技能和情感态度价值观方面均有所提升。

二、教学内容1. 矩阵按键原理:介绍矩阵按键的电路结构、工作原理以及其在单片机系统中的应用。

- 教材章节:第二章第二节《矩阵键盘的工作原理》2. 单片机I/O口操作:回顾并加深理解单片机I/O口的基本操作,为矩阵按键编程打下基础。

- 教材章节:第一章《单片机基础》3. 行列扫描法:讲解如何运用行列扫描法进行按键识别,包括消抖处理方法。

- 教材章节:第二章第三节《矩阵键盘的编程方法》4. 矩阵按键编程实践:指导学生编写程序,实现矩阵按键的扫描与功能分配。

- 教材章节:第二章第四节《矩阵键盘应用实例》5. 电路连接与调试:学生动手实践,完成矩阵按键电路的连接,并进行调试。

- 教材章节:实验指导书《矩阵键盘实验》6. 问题分析与解决:针对编程和调试过程中遇到的问题,引导学生进行分析和解决。

单片机课程设计——利用矩阵键盘来控制1602液晶显示器的显示设计

单片机课程设计——利用矩阵键盘来控制1602液晶显示器的显示设计

《单片机原理及应用课程设计》报告——利用矩阵键盘来控制1602液晶显示器的显示设计2011年12 月7 日目录1.课程设计的目的12.课程设计的要求3.硬件设计3.1设计思想3.2主要元器件介绍3.3.功能电路介绍3.31 1602液晶显示器3.32 3*4矩阵键盘(1)矩阵式键盘的结构与工作原理(2)矩阵式键盘的按键识别方法4.软件设计4.1设计思想4.2软件流程图4.3源程序:5.调试运行6.设计心得体会:1.课程设计目的1.1巩固和加深对单片机原理和接口技术知识的理解;1.2培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;1.3学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;1.4掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;1.5能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。

2.课程设计要求2.1在3*4矩阵键盘上输入信息2.2在1602芯片上显示时间信息。

2.3显示数据的设计与变换3.硬件设计3.1设计思想在3*4矩阵键盘上输入信息,通过中央处理器处理信息,再通过1602液晶显示器显示信息。

3.2主要元器件介绍(1)电源电路(2)STC89C82RC单片机一块。

(3)1602液晶显示器一块(4)杜邦线若干。

(5)3*4矩阵键盘3.3.功能电路介绍3.31 1602液晶显示器液晶显示模块具有体积小、功耗低、显示内容丰富等特点,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了。

1602可以显示2行16个字符,有8位数据总线D0-D7,和RS、R/W、EN三个控制端口,工作电压为5V,并且带有字符对比度调节和背光。

1602外观如下图所示1602引脚说明注意事项:从该模块的正面看,引脚排列从右向左为:15脚、16脚,然后才是1-14脚(线路板上已经标明)。

VDD:电源正极,4.5-5.5V,通常使用5V电压;VL:LCD对比度调节端,电压调节范围为0-5V。

矩阵键盘设计实验报告

矩阵键盘设计实验报告

矩阵键盘设计实验报告
矩阵键盘是一种特殊的电子输入设备,其特殊性在于每个按键可以仅由几根线连接而成。

这可以将按键尺寸缩小,同时也减少了接線复杂度。

在本次实验中,我们设计了一个4*4的矩阵键盘。

矩阵键盘的外型是4 *4的按键,其中每个按键由一个PIN组成,连接起来分别连接在一个不同的ROW与COL上。

在使用矩阵键盘时,我们将其连接到一台电脑上,通过电脑程序监视每行每列的通断状态,当一行或者一列被按下,程序会自动捕捉,来表示一个字符或者code.
首先,我们先准备一台电脑,再连接矩阵键盘的各个PIN,用8个信号线将矩阵键盘连接到单片机,再用USB线将单片机连接到电脑上,使用PL 2303驱动链接矩阵键盘和电脑终端。

单片机负责捕获ROW和COL的信号,计算并识别矩阵键盘的按键,将计算出的字符发送至电脑终端,进行小程序的检测。

在电脑端,我们使用Apple系统的终端运行.bash,编写简单的shell脚本实现对矩阵键盘信号识别。

脚本将不断检测矩阵键盘信号状态,根据捕捉到的ROW和COL信号,将其映射出字符信息,在一定时间内输出至终端。

在实验的最后,我们检验了所设计的矩阵键盘是否符合预期效果。

通过代码发送进行按键操作,能检测到正确的字符,表明矩阵键盘的设计及实现满足要求。

本次实验可以作为以后矩阵键盘的参考,深入研究程序软件,提高实验效率。

矩阵式键盘控制数码管显示

矩阵式键盘控制数码管显示
完成实训报告十
7
谢谢观赏!
二、工作原理
当扫描开始时, 首先将P1.7列初始值设置为低电平, 即P
3
三、程序流程图 ——主程序
开始
初始化
按键查询
YES
A=FFH?
NO
调用消除抖动子程序转Leabharlann 功能处理程序AAAA 1234
结束
4
四、程序清单
独立式键盘控制灯移动程序.doc
5
五、实验板上测试
观察实验结果并记录: 按下不同按键开关,可以看到P0端口的
实训十一: 矩阵式键盘控制数码管显示
功能说明: 使用4*4矩阵式键盘控制第一个数码
管显示0~F。
1
一、电路图
4条列线的一端分别与单片机P1口中的P1.4、 P1.5、 P1.6. P1.7 相接,另一端通过上拉电阻接到+5V电源上,平时使 列线处于高电平状态;而4条行线的一端分别与P1口中的 P1.0、 P1.1、 P1.2、 P1.3相接。16个按键设置在行、列 2 线交点上。
灯作不同方向的移动或闪烁,说明是在执 行不同功能键的处理程序。 按DL1键,亮灯从右向左移动 按DL2键,亮灯从左向右移动 按DL3键,左边4只灯与右边4只灯交替闪亮 按DL4键,8个灯闪烁
6
码管显示0; 作业布置按下DL2,第二个数
码管显示1; 按下DL3,第三个数 码管显示2; 按下DL4,第四个数 码管显示3 。

矩阵按键实训报告

矩阵按键实训报告

一、实训背景随着电子技术的飞速发展,按键技术在电子设备中的应用越来越广泛。

矩阵按键因其结构紧凑、易于扩展等优点,被广泛应用于各类电子设备中。

为了提高学生对矩阵按键原理和应用的理解,本次实训选取了矩阵按键作为实训内容。

二、实训目的1. 理解矩阵按键的原理和结构;2. 掌握矩阵按键的驱动程序编写;3. 学会使用矩阵按键实现简单功能;4. 提高学生的动手能力和实践能力。

三、实训内容1. 矩阵按键原理与结构矩阵按键是一种利用行列交叉原理来检测按键状态的按键电路。

它由若干行和列组成,通过行列交叉的交叉点连接按键。

当按键被按下时,相应的行和列被连接,从而实现按键的识别。

2. 矩阵按键驱动程序编写以51单片机为例,介绍矩阵按键驱动程序的编写方法。

(1)初始化矩阵按键:设置行线为输出,列线为输入,并对行线进行上拉。

(2)扫描按键:从第一行开始,依次将行线置低电平,其他行线置高电平,然后读取列线的状态。

如果列线为低电平,则表示该行对应的按键被按下。

(3)消抖处理:为了避免按键抖动引起的误判,需要对按键状态进行消抖处理。

3. 使用矩阵按键实现简单功能以一个简单的计算器为例,介绍使用矩阵按键实现计算器功能的方法。

(1)设计计算器界面:根据计算器的功能需求,设计按键布局。

(2)编写按键扫描程序:根据按键布局,编写按键扫描程序,实现按键的识别。

(3)编写功能实现程序:根据计算器的功能需求,编写功能实现程序,如加、减、乘、除等。

四、实训过程1. 实训准备:准备51单片机开发板、矩阵按键模块、电源等实验器材。

2. 矩阵按键原理与结构学习:通过查阅资料,了解矩阵按键的原理和结构。

3. 矩阵按键驱动程序编写:根据实训要求,编写矩阵按键驱动程序。

4. 矩阵按键功能实现:使用矩阵按键实现计算器功能,包括按键扫描、消抖处理、功能实现等。

5. 实验调试:对实验程序进行调试,确保程序正常运行。

五、实训总结通过本次实训,我掌握了矩阵按键的原理和结构,学会了矩阵按键驱动程序的编写,以及使用矩阵按键实现简单功能的方法。

微机原理课设-矩阵式键盘数字密码锁设计

微机原理课设-矩阵式键盘数字密码锁设计

微机原理课程设计课程实验报告实验名称矩阵式键盘数字密码锁设计一、实验目的1. 掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力。

2. 初步掌握键盘扫描,密码修改和计时报警程序的编写方法。

3. 掌握通过矩阵式键盘扫描实现密码锁功能的设计思路和实现方法。

二、实验所用仪器(或实验环境)Win7计算机微机一台(Pentium 4)ISA–PCI 转接卡星研集成环境软件8255芯片12864J液晶显示器矩阵键盘三、实验基本原理及步骤(或方案设计及理论计算)1.课程设计的内容:根据设定好的密码,采用4x4矩阵键盘实现密码的输入功能。

当密码输入正确之后,锁就打开(绿灯亮),10秒之后,锁自动关闭(红灯亮);如果连续输入三次密码不正确,就锁定按键5秒钟,同时发出报警(黄灯闪),5秒后,解除按键锁定,恢复密码输入。

2.基本功能要求1)具有开锁、修改用户密码等基本的密码锁功能。

2)对于超过3次密码,密码错误,锁定键盘5秒,系统报警。

5秒后解除锁定。

4)通过LCD字符液晶和LED指示灯(红,绿,黄)实时显示相关信息。

5)用户密码为6位数字,显示采用“*”号表示。

6)密码锁键盘设计合理,功能完善,方便用户使用。

3.流程设计:4.具体实现:针对上机设备上的4×4矩阵键盘,我们分别设计功能。

密码锁用户初始密码为123456,管理员初始密码为12345678。

系统启动后,密码锁处于关闭状态,点击open按键选择开启密码锁功能,系统提示输入密码,若输入正确,则系统发出连续的四次蜂鸣并打开锁(绿灯亮10s),系统等待10 秒,然后重新关闭密码锁。

若密码错误则提示重新输入密码,若使用del按键,则所有密码清空,重新输入,若输入三次密码错误,则系统提示警告词同时发出长蜂鸣警报(黄灯闪),锁定键盘5 秒,然后重新进入初始状态。

若输入Modify功能,系统提示输入旧密码,输入旧密码+“#”键后,如果正确,系统提示输入新密码,输入新密码+“#”后,新密码起效,重新进入初始状态;如果旧密码错,不能修改密码,密码锁直接进入初始状态。

44矩阵键盘课程设计

44矩阵键盘课程设计

44矩阵键盘课程设计一、课程目标知识目标:1. 理解44矩阵键盘的基本结构和工作原理;2. 学会使用矩阵键盘进行输入输出操作;3. 掌握矩阵键盘编程的基本方法。

技能目标:1. 能够正确连接并测试44矩阵键盘;2. 能够编写程序实现对矩阵键盘的扫描和按键识别;3. 能够运用矩阵键盘完成简单的交互式应用。

情感态度价值观目标:1. 培养学生动手实践、自主探究的学习习惯;2. 增强学生团队协作和问题解决的能力;3. 激发学生对电子技术和编程的兴趣,提高创新意识。

分析课程性质、学生特点和教学要求,本课程目标旨在让学生掌握44矩阵键盘的相关知识,通过实践操作和编程练习,使学生在知识、技能和情感态度价值观方面取得以下具体学习成果:1. 知识方面:学生能够阐述矩阵键盘的原理,解释其工作方式;2. 技能方面:学生能够独立完成矩阵键盘的连接、编程和应用;3. 情感态度价值观方面:学生通过课程学习,增强实践能力、团队协作能力和创新意识。

二、教学内容1. 矩阵键盘基础知识:- 矩阵键盘结构原理;- 矩阵键盘的输入输出方式;- 矩阵键盘与单片机的连接方法。

2. 矩阵键盘编程技术:- 按键扫描算法;- 按键识别与消抖;- 矩阵键盘编程实例。

3. 实践操作与项目应用:- 矩阵键盘连接与测试;- 基于矩阵键盘的简单计算器制作;- 创意电子项目设计与实现。

教学内容依据课程目标,结合教材章节,按照以下进度安排:1. 矩阵键盘基础知识(第1课时):- 介绍矩阵键盘的结构原理;- 讲解矩阵键盘与单片机的连接方法。

2. 矩阵键盘编程技术(第2-3课时):- 讲解按键扫描算法及消抖方法;- 分析矩阵键盘编程实例。

3. 实践操作与项目应用(第4-5课时):- 指导学生进行矩阵键盘的连接与测试;- 引导学生运用所学知识制作简单计算器;- 组织学生进行创意电子项目设计与展示。

教学内容科学系统,注重理论与实践相结合,旨在提高学生的综合应用能力。

三、教学方法针对本章节内容,采用以下多样化的教学方法,以激发学生的学习兴趣和主动性:1. 讲授法:- 用于讲解矩阵键盘的基础知识和编程技术,通过清晰的讲解,使学生快速掌握基本概念和原理。

课程设计制作单片机的4X4矩阵键盘

课程设计制作单片机的4X4矩阵键盘

目录摘要 (2)第一章硬件部分 (3)第一节AT89C51 (3)第二节4*4矩阵式键盘 (6)第三节LED数码管 (8)第四节硬件电路连接 (10)第二章软件部分 (12)第一节所用软件简介 (12)第二节程序流程图 (14)第三节程序 (17)第三章仿真结果 (19)心得体会 (21)参考文献 (22)摘要电子信息行业将是人类社会的高科技行业之一,是设施现代化的基础,也是人类通往科技巅峰的直通车。

电子行业的发展很重要,而计算机技术是现代科技发展的重要组成部分。

矩阵式键盘控制系统可以提高效率,是进行按键操作管理的有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身的要求。

并能正确、实时、高效地显示按键信息,以提高工作效率和资源利用率。

矩阵式键盘是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,并通过单片机,显示在LED数码管上。

单片机控制键盘显示系统,可以对不同的按键进行实时显示,其核心是单片机、键盘矩阵电路和数码管显示电路。

4*4矩阵式键盘以AT89C51单片机为核心,主要由矩阵式键盘电路、显示电路等组成,软件选用C语言编程。

单片机将检测到的按键信号转换成数字量,显示于LED显示器上。

该系统灵活性强,易于操作,可靠性高,广泛应用于各种场合。

第一章硬件部分第一节AT89C51AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。

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

引脚如图所示AT89C51图1 AT89C51管脚图AT89C51其具有以下特性:与MCS-51 兼容4K字节可编程FLASH存储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24MHz三级程序存储器锁定128×8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路特性概述:AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 接口,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

44矩阵键盘课程设计

44矩阵键盘课程设计

4 4矩阵键盘课程设计一、课程目标知识目标:1. 学生能够理解4x4矩阵键盘的基本原理,掌握其电路连接方式和扫描原理。

2. 学生能够运用所学知识,设计并搭建一个简单的4x4矩阵键盘电路。

3. 学生了解矩阵键盘在嵌入式系统中的应用和重要性。

技能目标:1. 学生能够运用编程软件(如Arduino)编写程序,实现对4x4矩阵键盘的扫描和按键识别。

2. 学生能够运用调试工具,对矩阵键盘电路进行故障排查和优化。

3. 学生具备团队协作能力,共同完成矩阵键盘电路设计和程序编写。

情感态度价值观目标:1. 学生通过动手实践,培养对电子技术和编程的兴趣,增强学习动力。

2. 学生在团队合作中,学会沟通、协作、分享,培养团队精神和责任感。

3. 学生认识到科技发展对社会进步的重要性,激发为我国科技事业贡献力量的志向。

本课程针对高中年级学生,结合电子技术和编程知识,以实用性为导向,旨在培养学生的动手实践能力和创新精神。

课程内容紧密联系课本知识,通过设计4x4矩阵键盘电路,使学生在实践中掌握相关原理和方法。

课程目标具体、可衡量,为后续教学设计和评估提供明确方向。

二、教学内容1. 矩阵键盘基础知识:介绍矩阵键盘的原理、电路连接方式及其在嵌入式系统中的应用。

- 相关章节:课本第三章第二节“矩阵键盘及其应用”2. 4x4矩阵键盘电路设计:讲解如何搭建4x4矩阵键盘电路,包括硬件连接、电路图绘制等。

- 相关章节:课本第三章第三节“矩阵键盘电路设计”3. 矩阵键盘编程:介绍如何使用Arduino编程软件编写程序,实现对4x4矩阵键盘的扫描和按键识别。

- 相关章节:课本第四章第一节“Arduino编程基础”及第四节“矩阵键盘编程实例”4. 矩阵键盘电路调试与优化:教授学生如何运用调试工具进行故障排查,以及如何对电路和程序进行优化。

- 相关章节:课本第五章“电路调试与优化”5. 团队合作与展示:学生分组进行项目实践,共同完成矩阵键盘电路设计与程序编写,并进行成果展示。

4矩阵按键课程设计

4矩阵按键课程设计

4矩阵按键课程设计一、课程目标知识目标:1. 理解矩阵按键的基本概念,掌握矩阵按键的排列方式和编码原理;2. 学会运用4×4矩阵按键进行电路设计和搭建;3. 了解矩阵按键在嵌入式系统中的应用和重要性。

技能目标:1. 能够运用所学知识,独立完成4×4矩阵按键电路的设计与搭建;2. 掌握矩阵按键的编程方法,实现对按键的识别和功能分配;3. 提高实际操作能力,培养动手实践和解决问题的技能。

情感态度价值观目标:1. 培养学生对电子技术和嵌入式系统的兴趣,激发学习热情;2. 培养学生的团队协作精神,提高沟通与交流能力;3. 增强学生的创新意识,鼓励敢于尝试和挑战的精神。

课程性质:本课程属于电子技术实践课程,以理论为基础,实践为核心,注重培养学生的实际操作能力和创新意识。

学生特点:学生在本年级已经具备一定的电子技术基础知识,具有较强的学习能力和动手欲望,对新鲜事物充满好奇心。

教学要求:结合学生特点,采用理论讲解与实践操作相结合的方式,注重启发式教学,引导学生主动探究,提高学生的实践能力和创新能力。

通过本课程的学习,使学生能够掌握矩阵按键的相关知识,为后续课程打下坚实基础。

二、教学内容1. 矩阵按键原理介绍:包括矩阵按键的排列方式、编码原理以及扫描方法;- 教材章节:第二章第四节“矩阵键盘的设计与应用”2. 4×4矩阵按键电路设计与搭建:讲解如何设计电路图,选择合适的元器件,并进行电路搭建;- 教材章节:第二章第五节“矩阵键盘的电路设计与搭建”3. 矩阵按键编程方法:介绍如何使用编程语言对矩阵按键进行编程,实现对按键的识别和功能分配;- 教材章节:第三章第一节“矩阵键盘的编程方法”4. 实践操作:安排学生进行4×4矩阵按键电路的设计、搭建和编程实践,巩固所学知识;- 教材章节:实践环节5. 应用案例分析:分析矩阵按键在嵌入式系统中的应用实例,了解其实际应用场景;- 教材章节:第四章“矩阵键盘在实际应用中的案例分析”6. 课程总结与拓展:对本章所学内容进行总结,并提出一些拓展问题,激发学生深入学习的兴趣;- 教材章节:本章总结与拓展教学内容安排与进度:第一课时:矩阵按键原理介绍第二课时:4×4矩阵按键电路设计与搭建第三课时:矩阵按键编程方法第四课时:实践操作(含讨论与指导)第五课时:应用案例分析及课程总结与拓展三、教学方法本课程将采用以下多样化的教学方法,以充分激发学生的学习兴趣和主动性:1. 讲授法:教师通过生动的语言、形象的比喻和具体的案例,为学生讲解矩阵按键的基本原理、电路设计与搭建方法以及编程技巧。

课程设计矩阵键盘扫描

课程设计矩阵键盘扫描

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

课程设计:4乘4矩阵键盘设计

课程设计:4乘4矩阵键盘设计

学年设计报告设计题目4*4矩阵键盘设计所学专业网络工程指导教师2012年 8 月 30 日学年设计任务书目录摘要 (4)1 绪论 (4)1.1研究背景 (4)1.2主要工作 (4)1.3本文结构 (4)2 总体设计 (4)2.1 需求分析 (4)2.2系统总体设计 (5)2.3 主要设计软件介绍 (5)2.3.1 PROTEUS软件简介 (5)2.3.2 KEIL简介 (5)3 硬件电路设计 (6)3.1 芯片选型 (6)3.2 时钟和复位电路 (6)3.3 矩阵式键盘电路 (7)3.4 显示电路 (7)3..5 蜂鸣器电路 (8)3.6 总电路 (8)4 系统软件设计 (9)4.1软件流程图 (9)4.2 程序代码 (9)5 系统测试与数据分析 (12)6 结束语 (14)致谢 (14)参考文献 (14)4*4矩阵键盘设计摘要:随着21世纪的到来,电子信息行业将是人类社会的高科技行业之一,式设施现代化的基础,也是人类通往科技巅峰的直通路。

电子行业的发展从长远来看很重要,但最主要的还是科技问题。

矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。

是它能准时、实时、高效地显示按键信息,以提高工作效率和资源利用率。

矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,显示在LED数码管上。

单片机控制依据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。

4*4矩阵式键盘采用AT89C51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用C语言编程。

单片机将检测到的按键信号转换成数字量,显示于LED显示器上。

该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。

关键词:AT89C51;单片机;蜂鸣器;显示电路;矩阵键盘;1 绪论1.1研究背景随着21世纪的到来,以前的单个端口连接的按键已经不能满足人们在大型或公共场合的需求。

单片机课程设计4x8矩阵键盘.

单片机课程设计4x8矩阵键盘.

单片机原理与应用课程设计矩阵式键盘与显示班级:机102-1 姓名:许传栋学号:201056502133组号:六组组员:孔令伟、张叶荣、尚桂香、许传栋、刘金林目录:、设计要求(3二、硬件设计(3三、键盘的运行(6四、数码管的显示(6五、键盘键值的确定(6六、按键顺序码的显示(7七、74LS48的应用(8八、数码管接口引脚(9九、程序设计(10附录(18、设计要求1、完成单片机与32键矩阵式键盘的连接方法。

2、识别是否有键按下,并将键值用两位数码管显示出来。

3、用软件延时取出按键抖动。

、硬件设计1、总体构思本次设计为32键矩阵式键盘,因此采用4x8式按键分布。

分为4行8列的布 局。

如图T2_1图T2 1当行线和列线分别置一和置零时,按键两端的电压将发生改变。

将键盘的所有 引线连出,行线联接到P2口的低四位,列线联接到P1 口,从而构成了单片机对键盘按 钮动作的读取电路。

将键值用两位数码管显示,因此要利用两片数码管。

由于单片机通过 P0口进行 输出,因此将P0口的高四位和低四位分别输出数码管的十位和个位 ,并在单片机与数码管之间接入74LS48。

74LS48的作用是将P0的四位输出转化为八位,并且作为晶体管的驱动,74LS48的输出 电流为6mA,刚好满足数码管的电流。

连接电路如图 T2_2L«口n ―0 0~Iq*T W单片机将数据从P0 口输出后经过74LS48的转换与驱动带动,数码管进行数码 的显示,通过数码管的显示判断出按钮的位置。

将上述键盘和显示电路联接到单片机上:键盘的行线联接到单片机的 P2.0~ P2.3 上,列线联接到单片机的P1 口,P0.0~P0.3,P0.4-P0.7分别连接到两片74LS48的输入 端口。

再接入单片机的晶振电路和复位电路,构成单片机的总体电路设计。

如图T2 3A*01tacIQD t\»9UEF9I0F LT06U3 AOA 1 QI C K b at IIFlI QE u25 I如 图 T2_2图 T2_3根据总体电路图的联接,设计出实际的物品。

矩阵按键控制说明

矩阵按键控制说明

矩阵按键控制一、矩阵按键电路结构1、独立按键2、矩阵按键(4×4键盘)3、按键防抖分析:二、按键处理流程三、工作方式:查询法、中断法四、按键程序设计按键输入程序的设计通常需要完成以下任务:1、判断有无按键按下由于直接进行按键扫描,需要的时间比较长。

如果对程序性能有较高要求,通常需要另外编写判断有无按键按下的函数。

仅判断有无按键按下,无需进行扫描,这样程序执行速度就快得多。

当有按键按下时,再调用按键扫描程序来取键值。

2、消除按键抖动干扰矩阵键盘消接抖与独立按键一样,检测到有按键按下后,延时10ms左右,再确认是否有键按下,如两次都检测到有键按下,才确认为有按键按下。

特别说明,并不是所有按键动作都必须消除按键抖动。

当按键要处理的事情与按键的次数有关时,必须消键抖动。

连续按一次或多次键,对要完成的事情没有影响时,可以不消键抖动。

3、识别被按下的键值。

确认有按键按下后,调用取键值函数获取键值。

4、等待按键释放。

只有键释放了,才完成了一次“按键”动作。

至于是先等待按键释放,再处理按键的工作;还是先处理按键的工作,再等待按键释放,要根据工作的要求来决定。

五、引脚控制:行线、列线根据实际采用跳线来连接。

六、控制程序举例/****** 4*4键扫描程序开始 ******/sbit keyC0=P0^0;sbit keyC1=P0^1;sbit keyC2=P0^2;sbit keyC3=P0^3;sbit keyR0=P2^4;sbit keyR1=P2^5;sbit keyR2=P2^6;sbit keyR3=P2^7; uchar key_get(){uchar k=255; //键值暂存,无键返回255keyC0=keyC1=keyC2=keyC3=keyR0=keyR1=keyR2=keyR3=1; //拉高位线电平keyR0=0; //第1行if(keyC3==0)k=0;else if(keyC2==0)k=1;else if(keyC1==0)k=2;else if(keyC0==0)k=3;keyR0=1;keyR1=0; //第2行if(keyC3==0)k=4;else if(keyC2==0)k=5;else if(keyC1==0)k=6;else if(keyC0==0)k=7;keyR1=1;keyR2=0; //第3行if(keyC3==0)k=8;else if(keyC2==0)k=9;else if(keyC1==0)k=10; //0xAelse if(keyC0==0)k=11; //0xBkeyR2=1;keyR3=0; //第4行if(keyC3==0)k=12; //0xCelse if(keyC2==0)k=13; //0xDelse if(keyC1==0)k=14; //0xEelse if(keyC0==0)k=15; //0xFkeyR3=1;return k; //返回键值}/****** 4*4键扫描程序结束 ******/void main(){bit keyDown=0;while(1){if(keyDown==0&&key_get()!=255) //防抖消除功能{delay(200);if(key_get()!=255){jianzhi=key_get();keyDown=1;switch(jianzhi) //判断键值{case 0:yuan1++;break; //对应键值的操作功能case 1:yuan5++;break; //对应键值的操作功能case 2:yuan10++;break; //对应键值的操作功能}}}}}。

单片机矩阵按键实训报告

单片机矩阵按键实训报告

一、实训目的1. 理解矩阵键盘的工作原理和电路设计。

2. 掌握矩阵键盘的编程方法,实现按键的检测和响应。

3. 培养实际动手能力和团队协作能力。

二、实训内容1. 矩阵键盘电路设计2. 矩阵键盘编程3. 矩阵键盘应用实例三、实训环境1. 单片机开发板:51单片机开发板2. 矩阵键盘:4x4矩阵键盘3. 编程软件:Keil uVision54. 仿真软件:Proteus四、实训过程1. 矩阵键盘电路设计矩阵键盘由行线和列线组成,通过行列交叉连接的按键阵列实现按键功能。

在4x4矩阵键盘设计中,共有4条行线和4条列线,共16个按键。

电路设计如下:(1)行线连接:将单片机的P1.0至P1.3端口作为行线输出,用于控制行线电平。

(2)列线连接:将单片机的P2.0至P2.3端口作为列线输入,用于检测按键状态。

(3)按键连接:将16个按键分别连接到行线和列线交叉处。

2. 矩阵键盘编程(1)初始化:设置P1端口为输出模式,P2端口为输入模式。

(2)按键检测:通过逐行扫描的方式检测按键状态。

首先将P1端口的所有行线设置为低电平,然后逐行检查P2端口列线的状态,如果某列线为低电平,则表示该行对应列的按键被按下。

(3)消抖处理:为了避免按键抖动引起的误读,需要进行消抖处理。

通常采用软件消抖方法,即在检测到按键按下后,延时一段时间(如10ms)再次检测按键状态,如果按键仍然被按下,则确认按键操作有效。

(4)按键处理:根据检测到的按键,执行相应的操作。

例如,当按键按下时,在LCD1602显示屏上显示对应的按键值。

3. 矩阵键盘应用实例以LCD1602显示屏为例,实现按键与显示内容的关联。

(1)LCD1602显示屏初始化:设置LCD1602的显示模式、光标位置等。

(2)按键扫描:按照上述方法检测按键状态。

(3)按键处理:根据按键值,在LCD1602显示屏上显示对应的字符。

五、实训结果1. 成功设计并实现了4x4矩阵键盘电路。

2. 编写了矩阵键盘的检测和响应程序,实现了按键的检测和消抖处理。

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

北华航天工业学院《EDA技术综合设计》课程设计报告报告题目:矩阵键盘控制接口设计作者所在系部:电子工程系作者所在专业:电子信息工程作者所在班级:作者姓名:作者学号:0指导教师姓名:完成时间:2009-12-18内容摘要本课程设计所用实验器材主要有计算机和北京精仪达盛科技有限公司的EL教学实验箱。

经编译、仿真,检查无误并且符合设计要求后,正确的将脉冲源、FLEX10K \ EPF10K10LC84-3芯片、5行×6列薄膜轻触按键键盘、数码管按设计要求连接好。

将程序下载到实验箱的FLEX10K \ EPF10K10LC84-3芯片中,则可观察到预期的实验效果,即当按下某一键时,在数码管上显示该键对应的键值。

本课程设计需设计键盘接口消抖动元件(底层文本)和矩阵键盘接口电路(顶层文本)。

在顶层文本中包含扫描信号发生模块、按键消抖动模块、按键译码模块、寄存器-选择器模块和数码管的译码模块。

关键词:VHDL语言 EDA技术按键消抖动电路键盘扫描电路键值译码电路按键码存储电路显示键值电路目录一概述 (5)二方案设计与论证 (5)三单元电路设计 (6)1.键盘接口消抖动元件 (6)2.时钟产生电路 (6)3.键盘扫描电路 (7)4.键盘译码电路 (7)5.寄存器_选择器模块电路 (7)6.译码模块电路 (7)四器件编程与下载 (8)五性能测试与分析 (16)六实验设备 (16)七心得体会 (16)八参考文献 (17)课程设计任务书一、概述本课程设计的基本原理是在时钟信号的控制下,使数码管上显示所按下的键值,并且能够保持直到下一个按键被按下。

首先,构思一个8×4的矩阵键盘控制顶层电路的模块划分图兼端口及内部信号定义图,再用VHDL语言编辑文本程序,需先录入底层文件(键盘接口消抖动元件DEBOUNCING的描述)再录入键盘接口电路主程序,保存编译并检查程序是否有语法错误,再仿真观察波形是否符合所预期的设计要求,当一切都满足要求后,即可将程序下载到实验箱的FLEX10K \ EPF10K10LC84-3芯片中。

正确的将脉冲源、FLEX10K \ EPF10K10LC84-3芯片、5行×6列薄膜轻触按键键盘、数码管按设计要求连接好。

再将程序下载到实验箱的FLEX10K \ EPF10K10LC84-3芯片中,则可观察到预期的实验效果,即当按下某一键时,在数码管上显示该键对应的键值。

如:当按下5时,数码管显示05。

二、方案设计与论证把该矩阵键盘控制器分为两部分进行设计,先设计键盘接口消抖动电路,再设计键盘接口电路的主程序。

在主程序中包含时序产生电路、键盘扫描电路、弹跳消除电路、键盘译码电路、按键码存储电路、显示电路模块并且分别进行分析来实现所需的功能。

实验仪器中4×8矩阵键盘的电路原理图如图所示图1. 4×8矩阵键盘的电路原理图图2.按键位置与数码关系三、单元电路设计1.键盘接口消抖动元件DEBOUCING.VHD该元件为一个通用的全功能的消抖动元件,内含有自由计数器模块、消抖动模块和微分模块。

其默认符号如图1所示。

各引脚说明如下:Key为按键输入信号,高电平有效,有抖动毛刺;clr是清零信号,低电平有效;clk是同步时钟信号,选择20MHZ;dly_out是消抖动输出;diff_out是消抖动微分输出。

在顶层文本key_test.vhd的debounuing:block模块中,U1,U2,U3,U4共4处用到了元件例化语句,用来消除按键抖动。

2.时钟产生电路counter:block本电路中利用一个自由计数器来产生多种频率的工作脉冲波形有机的构成系统工作时序。

它们分别是:系统时钟clk_4M、弹跳消除取样信号CLK、按键译码模块同步时钟CLK1、键值存储器同步时钟CLK2、键盘扫描信号SELOUT[2..0]和7段显示器扫描信号SELOUT(0)及NOTSELOUT_0。

该模块中的扫描信号就是取了计数器中的3个值,使用语句:SELTMP<=Q(7 DOWNTO 5);此处SELTMP要预先定义为3bit的宽度。

3.键盘扫描电路扫描电路的作用是用来提供键盘扫描信号,扫描信号变化的顺序依次为000-001-010-011-100-101-110-111,周而复始。

用语句:SELTMP<=Q(7 DOWNTO 5);SELOUT<=SELTMP;即可实现键盘扫描。

4.键盘译码电路key_decoder:block译码电路所要做的任务有:判别是否有键按下;将被按下键编码成对应的ZOUT[7..0]8位二进制编码,即用十进制数来显示按键值:KEY_CODE<=ZOUT;把KEY_CODE送到内部下一级电路,即按键码的寄存器_选择器模块。

5. 按键码的寄存器_选择器模块REG_MULTIPLEXER:block因为每次扫描会产生新的按键数据,可能会覆盖前面的数据,所以需要一个按键存储电路,将整个键盘扫描完毕后的按键值记录下来。

6.译码模块SEVEN_SEGMENT: bloc该模块把DB[3..0]的值译成17位的数码管所对应的0、1、2、3、4、5、6、7、8、9,使数码管正常显示按键值。

四、器件编程与下载1.底层文本:键盘接口消抖动元件DEBOUCING.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY debouncing ISPORT(clk,key:IN STD_LOGIC;clr:IN STD_LOGIC;dly_out,dif_out:OUT STD_LOGIC);END debouncing;ARCHITECTURE a OF debouncing ISSIGNAL sample,dly,diff:STD_LOGIC;BEGINfree_counter:blockSIGNAL QQ:STD_LOGIC_VECTOR(4 DOWNTO 0);SIGNAL d0:STD_LOGIC;BEGINPROCESS(clr,clk)BEGINif clr='0'then d0<='0';QQ<=(OTHERS=>'0');elsif clk'event and clk='1'thend0<=QQ(4);QQ<=QQ+1;end if;end process;sample<=not(QQ(4) and (not d0));end block free_counter;debunce:blocksignal d0,d1,s,r:std_logic;beginprocess(clk,clr)beginif clr='0' thendly<='0';elsif rising_edge(clk) thenif sample='1' thend1<=d0;d0<=key;s<=d0 and d1;r<=not d0 and not d1;if s<='0' and r<='0' thendly<=dly;elsif s<='0' and r<='1' thendly<='0';elsif s<='1' and r<='0' thendly<='1';else dly<='0';end if;end if;end if;end process;dly_out<=dly;end block debunce;differential:blocksignal d1,d0:std_logic;beginprocess(clk,clr)beginif clr='0'thend0<='0';d1<='0';elsif rising_edge(clk)then d1<=d0;d0<=dly; end if;diff<=d0 and not d1;end process;dif_out<=diff;end block differential;END a;2.顶层文本:键盘接口电路主程序keys_test.vhd library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity keys_test isport(clk20,clr:in std_logic;selout:out std_logic_vector(2 downto 0);notselout_0:out std_logic;key:in std_logic_vector(3 downto 0);segout:out std_logic_vector(16 downto 0)); end keys_test;architecture a of keys_test iscomponent debouncingport(key:in std_logic;clk,clr:in std_logic;dly_out:out std_logic);end component;signal clk,clk1,clk2,clk4:std_logic;signal seltmp:std_logic_vector(2 downto 0);signal key_code:std_logic_vector(7 downto 0); signal c:std_logic_vector(3 downto 0);signal db,key_in:std_logic_vector(3 downto 0); signal seg:std_logic_vector(16 downto 0);beginsegout(16 downto 0)<=seg;selout<=seltmp;notselout_0<=not seltmp(0);key_in<=not key;fenpin:blocksignal m:integer range 0 to 10#5#;beginprocess(clk20)beginif clk20'event and clk20='1'thenif m=10#5# then m<=0;else m<=m+1;end if;end if;end process;process(m)beginif m=10#5# then clk4<='1';else clk4<='0';end if;end process;end block fenpin;counter:blocksignal q:std_logic_vector(10 downto 0);beginprocess(clk4,clr)beginif clr='0' then q<=(others=>'0');elsif clk4'event and clk4='1' then q<=q+1; end if;end process;clk<=q(0);clk1<=q(2);clk2<=q(4);seltmp<=q(7 downto 5);end block counter;debounuing:blockbeginu1:debouncing port map(key=>key_in(0),dly_out=>c(0),clr=>clr,clk=>clk);u2:debouncing port map(key=>key_in(1),dly_out=>c(1),clr=>clr,clk=>clk);u3:debouncing port map(key=>key_in(2),dly_out=>c(2),clr=>clr,clk=>clk);u4:debouncing port map(key=>key_in(3),dly_out=>c(3),clr=>clr,clk=>clk);end block debounuing;key_decoder:blocksignal z:std_logic_vector(6 downto 0);signal zout:std_logic_vector(7 downto 0); beginz<=(not c)&seltmp;key_code<=zout;process(clk1,clr)beginif clr='0' thenzout<=(others=>'0');elsif clk1'event and clk1='1' thencase z isWHEN"1110000"=>ZOUT<="00000000"; WHEN"1110001"=>ZOUT<="00000001"; WHEN"1110010"=>ZOUT<="00000010"; WHEN"1110011"=>ZOUT<="00000011"; WHEN"1110100"=>ZOUT<="00010000"; WHEN"1110101"=>ZOUT<="00010001"; WHEN"1110110"=>ZOUT<="00000100"; WHEN"1110111"=>ZOUT<="00000101"; WHEN"1101000"=>ZOUT<="00000110"; WHEN"1101001"=>ZOUT<="00000111";WHEN"1101010"=>ZOUT<="00010010"; WHEN"1101011"=>ZOUT<="00010011"; WHEN"1101100"=>ZOUT<="00001000"; WHEN"1101101"=>ZOUT<="00001001"; WHEN"1101110"=>ZOUT<="00001010"; WHEN"1101111"=>ZOUT<="00001011"; WHEN"1011000"=>ZOUT<="00010100"; WHEN"1011001"=>ZOUT<="00010101"; WHEN"1011010"=>ZOUT<="00001100"; WHEN"1011011"=>ZOUT<="00001101"; WHEN"1011100"=>ZOUT<="00001110"; WHEN"1011101"=>ZOUT<="00001111"; WHEN"1011110"=>ZOUT<="00010110"; WHEN"1011111"=>ZOUT<="00010111"; WHEN"0111000"=>ZOUT<="00011000"; WHEN"0111001"=>ZOUT<="00011010"; WHEN"0111010"=>ZOUT<="00011011"; WHEN"0111011"=>ZOUT<="00011100"; WHEN"0111100"=>ZOUT<="00011101"; WHEN"0111101"=>ZOUT<="00011001"; WHEN"0111110"=>ZOUT<="00011110"; WHEN"0111111"=>ZOUT<="00011111";WHEN OTHERS=>ZOUT<="11111111";end case;END IF;END PROCESS;END BLOCK key_decoder;REG_MULTIPLEXER:BLOCKSIGNAL KEY_CODE1:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINPROCESS(CLK2,clr)beginif clr='0' thenKEY_CODE1<=(others=>'0');ELSIF(CLK2'EVENT AND CLK2='1')THENif(key_code="11111111") thenKEY_CODE1<=KEY_CODE1;ELSE KEY_CODE1<=KEY_CODE;end if;END if;END PROCESS;DB<=KEY_CODE1(3 DOWNTO 0)WHEN(SELTMP(0)='0')ELSE KEY_CODE1(7 DOWNTO 4)WHEN(SELTMP(0)='1')ELSE"0000";End Block REG_MULTIPLEXER;seven_segment:blockbeginseg<="11111111000000000" when db="0000" else"00110000000000000" when db="0001" else"11101110100010000" when db="0010" else"11111100100010000" when db="0011" else"00110001100010000" when db="0100" else"11011101100010000" when db="0101" else"11011111100010000" when db="0110" else"11110000000000000" when db="0111" else"11111111100010000" when db="1000" else"11111101100010000" when db="1001" else"00110000000110100" when db="1010" else"11001111100101000" when db="1011" else"11001111000000000" when db="1100" else"11111100001000010" when db="1101" else"11001111100010000" when db="1110" else"11000011100010000" when db="1111" else"00000000000000000";end block seven_segment;end a;3.编译在软件平台的录入设计中,应当先录入底层DEBOUNCING.VHD设计文本,并把它设为当前的工程项目,经编译、仿真,通过后,退出DEBOUNCING.VHD文本;再录入顶层文本key_test.vhd,并把它设为当前的工程项目,经编译、仿真,通过后就可下载key_test.vhd设计文本到器件中。

相关文档
最新文档