矩阵键盘EDA技术课程设计
- 格式:doc
- 大小:786.02 KB
- 文档页数:17
“电子创新设计与实践”课程期中课题设计报告姓名:张思源,学:20102121026,年级:2010,专业:电信报告内容设计一个4*4矩阵键盘,并编写相关程序摘要1.4×4矩阵式键盘程序识别原理。
2.4×4矩阵式键盘按键的设计方法。
报告正文:一、设计原理(1)如图14.2所示,用单片机的并行口P3连接4×4矩阵键盘,并以单片机的P3.0-P3.3各管脚作输入线,以单片机的P3.4-P3.7各管脚作输出线,在数码管上显示每个按键“0-F”的序号。
(2)键盘中对应按键的序号排列如图14.1所示。
二、参考电路图14.2 4×4矩阵式键盘识别电路原理图图14.1 4×4键盘0-F显示图14.3 4×4矩阵式键盘识别程序流程图三、电路硬件说明(1)在“单片机系统”区域中,把单片机的P3.0-P3.7端口通过8联拨动拨码开关JP3连接到“4×4行列式键盘”区域中的M1-M4,N1-N4端口上。
(2)在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”区域中的任何一个a-h端口上;要求:P0.0对应着a,P0.1对应着b,……,P0.7对应着h。
四、程序设计内容(1)4×4矩阵键盘识别处理。
(2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。
矩阵的行线和列线分别通过两并行接口和CPU通信。
键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。
键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。
两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。
五、程序流程图(如图14.3所示)六、汇编源程序;;;;;;;;;;定义单元;;;;;;;;;;COUNT EQU 30H;;;;;;;;;;入口地址;;;;;;;;;;ORG 0000HLJMP STARTORG 0003HRETIORG 000BHRETIORG 0013HRETIORG 001BHRETIRETIORG 002BHRETI;;;;;;;;;;主程序入口;;;;;;;;;;ORG 0100HSTART: LCALL CHUSHIHUALCALL PANDUANLCALL XIANSHILJMP START;;;;;;;;;;初始化程序;;;;;;;;;; CHUSHIHUA: MOV COUNT,#00HRET;;;;;;;;;;判断哪个按键按下程序;;;;;;;;;; PANDUAN: MOV P3,#0FFHCLR P3.4MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW1LCALL DELAY10MSJZ SW1ANL A,#0FHCJNE A,#0EH,K1 MOV COUNT,#0LJMP DKK1: CJNE A,#0DH,K2 MOV COUNT,#4LJMP DKK2: CJNE A,#0BH,K3 MOV COUNT,#8LJMP DKK3: CJNE A,#07H,K4 MOV COUNT,#12K4: NOPLJMP DKSW1: MOV P3,#0FFH CLR P3.5MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW2LCALL DELAY10MSMOV A,P3ANL A,#0FHCJNE A,#0EH,K5 MOV COUNT,#1LJMP DKK5: CJNE A,#0DH,K6 MOV COUNT,#5LJMP DKK6: CJNE A,#0BH,K7 MOV COUNT,#9LJMP DKK7: CJNE A,#07H,K8 MOV COUNT,#13K8: NOPLJMP DKSW2: MOV P3,#0FFH CLR P3.6MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW3LCALL DELAY10MSJZ SW3MOV A,P3ANL A,#0FHCJNE A,#0EH,K9 MOV COUNT,#2LJMP DKK9: CJNE A,#0DH,KA MOV COUNT,#6LJMP DKKA: CJNE A,#0BH,KB MOV COUNT,#10 LJMP DKKB: CJNE A,#07H,KC MOV COUNT,#14 KC: NOPLJMP DKSW3: MOV P3,#0FFH CLR P3.7MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW4LCALL DELAY10MSJZ SW4MOV A,P3ANL A,#0FHCJNE A,#0EH,KDMOV COUNT,#3LJMP DKKD: CJNE A,#0DH,KEMOV COUNT,#7LJMP DKKE: CJNE A,#0BH,KFMOV COUNT,#11LJMP DKKF: CJNE A,#07H,KGMOV COUNT,#15KG: NOPLJMP DKSW4: LJMP PANDUANDK: RET;;;;;;;;;;显示程序;;;;;;;;;;XIANSHI: MOV A,COUNTMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,ALCALL DELAYSK: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ SKRET;;;;;;;;;;10ms延时程序;;;;;;;;;; DELAY10MS: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RET;;;;;;;;;;200ms延时程序;;;;;;;;;; DELAY: MOV R5,#20LOOP: LCALL DELAY10MSDJNZ R5,LOOPRET;;;;;;;;;;共阴码表;;;;;;;;;;TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;;;;;;;;;;结束标志;;;;;;;;;;END八、C语言源程序#include<AT89X51.H>unsigned char code table[]={0x3f,0x66,0x7f,0x39, 0x06,0x6d,0x6f,0x5e,0x5b,0x7d,0x77,0x79,0x4f,0x07,0x7c,0x71};void main(void){ unsigned char i,j,k,key;while(1){ P3=0xff; //给P3口置1//P3_4=0; //给P3.4这条线送入0//i=P3;i=i&0x0f; //屏蔽低四位//if(i!=0x0f) //看是否有按键按下//{ for(j=50;j>0;j--) //延时//for(k=200;k>0;k--);if(i!=0x0f) //再次判断按键是否按下//{ switch(i) //看是和P3.4相连的四个按键中的哪个//{ case 0x0e:key=0;break;case 0x0d:key=1;break;case 0x0b:key=2;break;case 0x07:key=3;break;}P0=table[key]; //送数到P0口显示//}}P3=0xff;P3_5=0; //读P3.5这条线//i=P3;i=i&0x0f; //屏蔽P3口的低四位//if(i!=0x0f) //读P3.5这条线上看是否有按键按下// { for(j=50;j>0;j--) //延时//for(k=200;k>0;k--);i=P3; //再看是否有按键真的按下//i=i&0x0f;if(i!=0x0f){ switch(i) //如果有,显示相应的按键// { case 0x0e:key=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=7;break;}P0=table[key]; //送入P0口显示//}}P3=0xff;P3_6=0; //读P3.6这条线上是否有按键按下// i=P3;i=i&0x0f;if(i!=0x0f){ for(j=50;j>0;j--)for(k=200;k>0;k--);i=P3;i=i&0x0f;if(i!=0x0f){ switch(i){ case 0x0e:key=8;break;case 0x0d:key=9;break;case 0x0b:key=10;break;case 0x07:key=11;break;}P0=table[key];}}P3=0xff;P3_7=0; //读P3.7这条线上是否有按键按下// i=P3;i=i&0x0f;if(i!=0x0f){ for(j=50;j>0;j--)for(k=200;k>0;k--);i=P3;i=i&0x0f;if(i!=0x0f){ switch(i){ case 0x0e:key=12;break;case 0x0d:key=13;break;case 0x0b:key=14;break;case 0x07:key=15;break;}P0=table[key];}}}}参考文献:百度百科。
学号 14082101445 成绩:信息学院《EDA技术及应用》课程论文题目:基于FPGA的矩阵键盘设计作者罗诗雨班级 08-1BF 系别信息学院专业自动化完成时间 2010年12月12日1 绪论随着人们生活水平的提高,19世纪兴起的数字电路以其先天的便捷、稳定的优点在现代电子技术电路中占有越来越重要的地位。
数字电路与模拟电路相比有显而易见的稳定性。
近年来,数字电路又有了巨大的发展。
可编程逻辑器件(PAL、GAL等)的发展和普及最终使IC的设计面向了用户(这是模拟电路无法做到的),而这毫无疑问会给用户带来巨大的便捷,从而奠定它在电子电路中的对位。
FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB (Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。
此次设计即为基于FPGA的矩阵键盘设计。
1.1 4×4矩阵键盘的工作原理在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
1.2矩阵键盘的功能特点在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,在矩阵键盘中每条水平线和垂直线在交叉处不直接相连,而是通过一个按键相连接,这样在由N条水平线和M条垂直线最多可以有N *M 个按键,大大的减少了对于芯片I/O的占用。
实验十五矩阵键盘接口电路的设计一、实验目的1、了解普通4×4键盘扫描的原理。
2、进一步加深七段码管显示过程的理解。
3、了解对输入/输出端口的定义方法。
一、实验原理实现键盘有两种方案:一是采用现有的一些芯片实现键盘扫描;再就是用软件实现键盘扫描。
作为一个嵌入系统设计人员,总是会关心产品成本。
目前有很多芯片可以用来实现键盘扫描,但是键盘扫描的软件实现方法有助于缩减一个系统的重复开发成本,且只需要很少的CPU 开销。
嵌入式控制器的功能能强,可能充分利用这一资源,这里就介绍一下软键盘的实现方案。
图15-1 简单键盘电路通常在一个键盘中使用了一个瞬时接触开关,并且用如图15-1 所示的简单电路,微处理器可以容易地检测到闭合。
当开关打开时,通过处理器的I/O 口的一个上拉电阻提供逻辑1;当开关闭合时,处理器的/IO 口的输入将被拉低得到逻辑0。
可遗憾的是,开关并不完善,因为当它们被按下或者被释放时,并不能够产生一个明确的1 或者0。
尽管触点可能看起来稳定而且很快地闭合,但与微处理器快速的运行速度相比,这种动作是比较慢的。
当触点闭合时,其弹起就像一个球。
弹起效果将产生如图15-2 所示的好几个脉冲。
弹起的持续时间通常将维持在5ms∼30ms 之间。
如果需要多个键,则可以将每个开关连接到微处理器上它自己的输入端口。
然而,当开关的数目增加时,这种方法将很快使用完所有的输入端口。
图15-2 按键抖动键盘上阵列这些开关最有效的方法(当需要5 个以上的键时)就形成了一个如图15-3 所示的二维矩阵。
当行和列的数目一样多时,也就是方型的矩阵,将产生一个最优化的布列方式(I/O 端被连接的时候)。
一个瞬时接触开关(按钮)放置在每一行与线一列的交叉点。
矩阵所需的键的数目显然根据应用程序而不同。
每一行由一个输出端口的一位驱动,而每一列由一个电阻器上拉且供给输入端口一位。
图15-3 矩阵键盘键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出4行为高电平,然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。
矩阵按键实验课程设计一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握矩阵按键的基本原理和实验操作方法;技能目标要求学生能够独立完成矩阵按键实验,并能够分析实验结果;情感态度价值观目标要求学生培养对科学实验的兴趣,提高实验操作的规范性和准确性。
通过本课程的学习,学生将能够了解矩阵按键的原理和应用,掌握实验操作的基本技能,培养科学实验的兴趣和能力。
同时,学生将能够在实验过程中培养观察、思考、解决问题的能力,提高实验操作的规范性和准确性。
二、教学内容本课程的教学内容主要包括矩阵按键的基本原理、实验设备和实验操作方法。
首先,将介绍矩阵按键的基本原理,包括矩阵按键的结构和工作原理。
然后,将介绍实验设备的使用方法,包括矩阵按键模块、开发板和编程软件的使用。
最后,将介绍矩阵按键实验的操作方法,包括实验步骤、实验数据采集和实验结果分析。
三、教学方法为了激发学生的学习兴趣和主动性,将采用多种教学方法进行教学。
首先,将采用讲授法,向学生讲解矩阵按键的基本原理和实验操作方法。
然后,将采用实验法,让学生亲自动手进行实验操作,并观察实验结果。
此外,还将采用讨论法,引导学生进行小组讨论,共同分析实验结果。
四、教学资源为了支持教学内容和教学方法的实施,将选择和准备适当的教学资源。
教材方面,将使用《电子实验教程》一书,该书详细介绍了矩阵按键实验的操作方法和实验原理。
参考书方面,将提供《矩阵按键应用手册》等资料,供学生参考。
多媒体资料方面,将制作实验操作视频和实验原理动画,以直观地展示实验过程和原理。
实验设备方面,将准备矩阵按键模块、开发板和编程软件等设备,供学生进行实验操作。
五、教学评估本课程的教学评估将采用多元化的评估方式,以全面、客观、公正地反映学生的学习成果。
评估方式包括平时表现、作业和考试等。
平时表现评估将关注学生在课堂上的参与度、提问和回答问题的积极性等。
作业评估将根据学生完成的实验报告和课后作业的质量进行评分。
忻州师范学院《EDA技术综合性设计》课程设计报告报告题目:矩阵键盘控制接口设计所在系部:电子系所在专业:电子信息科学与技术所在班级:电本0803班姓名:徐丽娜200807211163闫爱红 200807211164武艳红200807211165贺吉盛200807211166指导教师姓名:任国凤完成时间:2011.05.26目录一概述 (3)二方案设计与论证 (3)三单元电路设计 (4)1.键盘接口消抖动元件 (4)2.时钟产生电路 (5)3.键盘扫描电路 (5)4.键盘译码电路 (5)5.寄存器_选择器模块电路 (5)6.译码模块电路 (6)四器件编程与下载 (6)五性能测试与分析 (7)六实验设备 (8)七心得体会 (8)八参考文献 (8)九附录 (9)一、概述本课程设计的基本原理是在时钟信号的控制下,使数码管上显示所按下的键值,并且能够保持直到下一个按键被按下。
首先,构思一个8×4的矩阵键盘控制顶层电路的模块划分图兼端口及内部信号定义图,再用VHDL语言编辑文本程序,需先录入底层文件(键盘接口消抖动元件DEBOUNCING的描述)再录入键盘接口电路主程序,保存编译并检查程序是否有语法错误,再仿真观察波形是否符合所预期的设计要求,当一切都满足要求后,即可将程序下载到实验箱的FLEX10K \ EPF10K10LC84-4芯片中。
正确的将脉冲源、FLEX10K \ EPF10K10LC84-4芯片、5行×6列薄膜轻触按键键盘、数码管按设计要求连接好。
再将程序下载到实验箱的FLEX10K \ EPF10K10LC84-4芯片中,则可观察到预期的实验效果,即当按下某一键时,在数码管上显示该键对应的键值。
如:当按下5时,数码管显示05。
本课程设计需设计键盘接口消抖动元件(底层文本)和矩阵键盘接口电路(顶层文本)。
在顶层文本中包含扫描信号发生模块、按键消抖动模块、按键译码模块、寄存器-选择器模块和数码管的译码模块。
课程设计说明书题目EDA技术与应用系(部)专业(班级)姓名学号指导教师起止日期EDA技术课程设计任务书系(部):专业:指导教师:目录引言 (5)一、绪论 (5)1.1 FPGA概况 (5)1.2 此课题的研究意义 (6)二、矩阵键盘接口电路的原理与总体设计 (6)2.1 矩阵键盘接口电路的原理 (6)2.2 总体设计 (8)三、各模块的设计及仿真 (8)3.1 键盘扫描电路 (8)3.2 键盘译码电路和按键标志位产生电路 (11)3.3 时钟产生模块 (16)3.4 键盘接口电路顶层电路实现 (18)四、硬件测试 (19)五、实验设备 (19)六、总结 (20)参考文献 (20)矩阵键盘键信号检测电路设计引言人类文明已进入到高度发达的信息化社会。
信息化社会的发展离不开电子信息产品开发技术、产品品质的提高和进步。
电子信息产品随着科学技术的进步,其电子器件和设计方法更新换代的速度日新月异。
实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA,Electronic Design Automation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。
为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。
目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。
此设计主要利用VHDL硬件描述语言在EDA平台Quartus II上设计一个4×4阵列键盘扫描电路,将行扫描信号输入阵列键盘,读取列信号的值,输出按键编码,从而判断出按键按下的位置。
并且进行模拟仿真,下载到EDA实验箱进行硬件验证。
一、绪论1.1 FPGA概况早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM)三种。
1 矩阵键盘扫描要求:设计矩阵式键盘接口,并在一个数码管上面显示按下的数字,从0到9以及小数点。
判断键盘中有无按键按下是通过行线送入扫描线好然后从列线读取状态得到的。
其方法是依次给行线送低电平,检查列线的输入。
如果列线全是高电平,则代表低电平信号所在的行中无按键按下;如果列线有输入为低电平,则代表低电平信号所在的行和出现低电平的列的交点处有按键按下。
整个设计程序包括三个模块:时钟分频、键盘扫描和键译码转换。
时钟分频:由于使用的外部时钟频率为50MHz,这个频率对扫描来说太高,所以这里需要一个分频器来分得适合键盘扫描使用的频率。
键盘扫描:由键盘的工作原理可知,要正确地完成按键输入工作必须有按键扫描电路产生KEYI信号,同时必须有按键译码电路从KEYI中和KEYOUT中读出按键的键值。
键盘扫描电路是用于产生KEYI3~ KEYI0 信号,其变化顺序是1110→1101→1011→0111→1110…周而复始地扫描。
其停留时间大慨在10ms。
键盘译码:键盘译码电路是从keyI3~keyI0和keyout3~keyout0信号中译码出按键值的电路。
将此按键值显示在数码管上。
FPGA_CLK 系统的主时钟MASTER_RESET_n 主复位Button[0]-[15] 拨码开关/白色按钮通过跳线Jxx选择Seven_seg[0]-[7] 数码管的显示Seven_seg[8]-[15] 数码管的选择LED_DOWN[0]-[7] 8个ledKeyboard_Down[0]-[8] 键盘输入/AD输入,通过JP8选择低位表示行。
原理图中Keyboard_Down[0]-[4]对应KEYI[0-4]Keyboard_Down[5]-[8]对应KEYO[0-3]此例中Keyboard_Down[1]-[4]对应KEYI[0-3]Keyboard_Down[5]-[8]对应KEYO[0-3]2、交通灯的控制课程设计原理:在十字路口,每条道路各有一组红、黄、绿灯和倒计时显示器,用以指挥车辆和行人有序的通行。
矩阵键盘接口设计题目:矩阵键盘接口设计姓名:聂美玲学号:100917003 班级:10电信本二班一、实验要求:用12个按键开关实现如表1所示的矩阵键盘,某一Array时刻在数码管上显示器对应的键值。
表1二、实验目的:1. 了解用12位按键输入开关来设计并实现一个3*4矩阵键盘接口控制器。
2. 了解弹跳消除电路的工作原理。
3. 理解7段数码管显示电路的原理。
三、硬件要求:主芯片EPF10K10LC84-4。
可变时钟源。
12位按键开关。
一位7段数码管。
四、实验原理该实验系统中没有矩阵键盘,可以用12位按键开关来实现矩阵键盘的功能。
表1为按键开关所对应的键值,当按键被按下时改按键的节点会呈现‘0’状态,反之为‘1’。
将12个按键进行编码后就可以实现矩阵键盘的功能。
键盘编码电路:由于每个按键开关都是独立的,故有12路输入,3X4键盘有12个键值,4位二进制数即可表示全部状态。
因此键盘编码电路为12输入4编码器,12个按键可分为10个数字键和两个功能键。
数字键主要用来输入数字,功能键一般实现一些特殊用途(如确认,清除等)。
4位输出从0~9表示10个数字键,11和12表示两个功能键。
弹跳消除电路:因为按键开关是机械式结构,在开关切换的瞬间会在接触点出现来回弹跳的现象,对于激活关闭一般电器并不会有何影响,但对于灵敏度较高的电路,却有可能产生误动作而出错。
跳现象产生的原因可从图1说明。
虽然只是按下按键一次然后放开,然而实际产生的按键信号却不只跳动一次,经过取样的检查后将会造成误判,以为按键两次。
图1 弹跳现象产生错误的抽样结果图2 调整抽样频率后得到的抽样结果因此在开关输入信号处必须加上弹跳消除电路,避免误操作信号的发生。
注意:弹跳消除电路所使用脉冲信号的频率必须要选用合适,频率太低则按键反应痴动,频率太高则起不到消除弹跳的作用,而且消除弹跳电路设计的不同对频率也有不同的要求。
弹跳消除电路程序代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;library altera;use altera.maxplus2.all;entity debouncing isport( d_in,clk:in std_logic;dd1,dd0,qq1,qq0:out std_logic;d_out,d_out1:out std_logic);end debounce;architecture a of debounce issignal vcc,inv_d:std_logic;signal d1,d0:std_logic;beginvcc<='1';inv_d<=not d_in;dff1:dff port map(d=>vcc,q=>q0,clk=>clk,clrn=>inv_d,prn=>vcc);dff2:dff port map(d=>vcc,q=>q1,clk=>clk,clrn=>q0,prn=>vcc);process (clk)beginif clk'event and clk='1' thend0<=not q1;d1<=d0;end if ;end process;d_out <=not (d1 and not d0);end a;程序说明:(1)因为必须取样到三次以上的“1”,才会输出1,两次“0”,才会输出0;(2)微分的目的是让每一次对按键反应的时间长度都维持一个脉冲波形的时间长度。
eda矩阵键盘扫描课程设计一、课程目标知识目标:1. 让学生理解EDA矩阵键盘的基本原理和结构;2. 使学生掌握矩阵键盘扫描的方法和技巧;3. 帮助学生掌握利用EDA工具进行矩阵键盘电路设计和仿真。
技能目标:1. 培养学生运用EDA工具进行矩阵键盘电路搭建和调试的能力;2. 培养学生分析并解决矩阵键盘扫描过程中出现问题的能力;3. 提高学生团队协作和沟通表达能力,能就矩阵键盘扫描问题进行有效讨论。
情感态度价值观目标:1. 培养学生对电子技术课程的兴趣和热情,激发学生主动探究精神;2. 培养学生严谨的科学态度和良好的学习习惯;3. 增强学生的创新意识,鼓励学生勇于尝试新的设计方法和思路。
课程性质分析:本课程为电子技术课程的一部分,以实践操作为主,理论联系实际,旨在培养学生的电子技术应用能力。
学生特点分析:学生处于高中年级,具有一定的电子技术基础和动手能力,对新鲜事物充满好奇,善于团队合作。
教学要求:结合学生特点,注重实践与理论相结合,强调学生的动手能力和问题解决能力,提高学生的创新意识和团队协作能力。
通过本课程的学习,使学生能够达到上述课程目标,为后续电子技术课程的学习打下坚实基础。
二、教学内容1. 理论知识:- 矩阵键盘的工作原理与结构;- 键盘扫描方法:行扫描和列扫描;- EDA工具的使用方法及电路仿真基本操作。
2. 实践操作:- 利用EDA工具设计矩阵键盘电路;- 矩阵键盘电路的搭建与调试;- 键盘扫描程序编写与优化。
3. 教学大纲安排:- 第一章:矩阵键盘原理及结构介绍(1课时)- 第二章:键盘扫描方法分析(1课时)- 第三章:EDA工具的使用及电路仿真(2课时)- 第四章:矩阵键盘电路设计与搭建(2课时)- 第五章:键盘扫描程序编写与调试(2课时)4. 教材关联:- 《电子技术基础》第四章:数字电路基础;- 《电子技术实验教程》第六章:矩阵键盘与显示电路设计。
教学内容确保科学性和系统性,结合课程目标,注重理论与实践相结合。
EDA课程设计报告-电子密码锁设计实验一、设计说明:本实验中说要求设计的电子密码锁密码为4位,由三大部分组成,每一部分又包含了若干子电路,将各电路组合起来,就构成了一个整体。
1、矩阵键盘接口电路设计由于硬件电路没有提供该矩阵键盘,用开关代替该部分电路。
2、密码锁的控制电路设计3、输出七段显示电路的设计4、密码锁功能说明:①、数据输入:每按一个数字键,就输入一个数值,并在显示器上的最右上方显示出该数字,并将先前已经输入的数据依序左移一个数字位置。
②、数码清除:按下此键可以清除前面所有的输入值,清除成为“0000”。
③、密码更改:按下此键时将目前的数字设定成新的密码。
④、激活电锁:按下此键可将密码锁上锁。
⑤、解除电锁:按下此键会检查输入的密码是否正确,密码正确即开锁。
二、硬件说明本设计所需的硬件主要有:矩阵键盘、七段译码器、发光二极管(用来模拟电子锁,红灯亮为加锁,绿灯亮为解锁)、EPM7128LC84-6适配器。
注:实际使用的为EDA试验箱,没有矩阵键盘,没有七段译码器,有发光二极管,仅有红色,芯片为EPM7128LC84-15。
三、设计内容程序包括六个逻辑元件,分别为:数字按键输入、控制功能按键输入、时钟分频器、处理核心、输出处理、七段译码器。
1、数字按键输入逻辑- numinput说明:读取数字键0~9。
高电平表示按键未按下,低电平表示按键按下。
按照0~9顺序读取,只能输出1位数字。
输出4位二进制代码,“0000”~“1001”表示0~9,用“1010”表示无输入。
代码:library ieee;use ieee.std_logic_1164.all;entity numinput isport( numin:IN std_logic_vector(9 downto 0);numstate,clk:IN std_logic;numout:OUT std_logic_vector(3 downto 0));end numinput;architecture one of numinput issignal state:std_logic;signal mem:std_logic_vector(9 downto 0);process(clk)beginif clk'event and clk='1' thenif state/=numstate thenif mem/=numin thencase numin iswhen "1111111110" => numout<="0000";when "1111111101" => numout<="0001";when "1111111011" => numout<="0010";when "1111110111" => numout<="0011";when "1111101111" => numout<="0100";when "1111011111" => numout<="0101";when "1110111111" => numout<="0110";when "1101111111" => numout<="0111";when "1011111111" => numout<="1000";when "0111111111" => numout<="1001";when others => numout<="1010";end case;state<=numstate;else numout<="1010";end if;mem<=numin;end if;end if;end process;end one;2、控制功能按键输入- coninput说明:读取控制功能按键-清除按键,修改密码,锁定,解锁。
哈尔滨理工大学荣成学院课程设计题目:矩阵键盘控制电路设计班级:姓名:学号:目录一、设计任务 (1)二、方案选择 (1)三、实现方案与电路原理图 (2)四、引脚分配表 (5)五、关系表 (5)六、总体设计 (6)七、软件设计源程序及实验现象 (6)八、总结 (11)一、设计任务矩阵键盘实验1:向用户介绍矩阵键盘扫描实现的方法,;把相应的键值显示在数码管二、方案选择(1)矩阵键盘基础知识在许多数字系统中,经常采用按键系统的输入方式之一,为系统提供数据输入或者命令输入。
当按键数目交多少时,把每一个按键连接到键盘矩阵中行和列的交叉点,如下图所示,一个4*4行列结构可构成有16个按键的矩阵。
开发板上设计了行列式矩阵编码键盘,规模为4*4,可作为外部输入。
采用矩阵编码可以减少对口的占用。
开发板上的矩阵编码键盘有4条行线,4条列线。
行线和列线的交又处不直接连接,而是通过一个按键加以连接。
这样就构成了4*4=16个按键输入,比直接将信号线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,如图列线通过电阻接正电源,并将行线所接的、的口作为输出端,而列线所接的口则作为输入。
这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。
行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可以得知是否有键按下了。
(2)行扫描法的基础知识行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法。
第一种(列扫描):1、判断键盘中有无键按下:将全部行线Y03置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无按键按下。
1. 2. 3. 4. 5. 6.打开QUARTUSII 软件,新建一个工程。
建完工程之后,再新建一个 VHDL File ,打开VHDL 编辑器对话框。
按照实验原理和自己的想法,在 VHDL 编辑窗口编写 VHDL 程序。
编写完VHDL 程序后,保存起来。
对自己编写的VHDL 程序进行编译并仿真,对程序的错误进行修改。
编译仿真无误后,依照 4X4矩阵键、LED 灯与FPGA 的管脚连接表进行引脚锁定。
分配完 成后,再进行全编译一次,以使管脚分配生效。
7.2. 了解对输入/输出端口的定义方法。
【实验元器件和模块】 元器件:矩阵键盘、数码管 模块:矩阵键盘 KEYSCAN 模块【实验步骤】用下载电缆通过JTAG 口将对应的sof 文件加载到FPGA 中。
观察实验结果是否与自己的编程思想一致。
参考代码:library IEEE;use IEEE.STDLOGIC.1164.ALL;SIGNAL key_code SIGNAL dataout_t mp use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY KEYSCAN ISP ORT (clk :IN std_logic;rst :IN std_logic;row :OUT std_logic_vector(3 DOWNTO 0);-- 行线column :IN std_logic_vector(3 DOWNTO 0); --列线dataout:OUT std_logic_vector(7 DOWNTO 0)--数码管显示数据);END KEYSCAN;ARCHITECTURE arch OF KEYSCAN ISSIGNAL div_cnt : std_logic_vector(24 downto 0);std_logic_vector(3 DOWNTO 0); std_logic_vector(7 DOWNTO 0);BEGINrow <= scan_key;dataout <= dataout_t mp; P ROCESS(clk,rst) BEGINIF (NOT rst = '1') THENdiv_cnt <= "0000000000000000000000000"; ELSIF(clk'EVENT AND clk = '1')THENdiv_cnt <= div_cnt + 1; END IF;END P ROCESS;P ROCESS(div_cnt(20 downto 19)) BEGINCASE div_cnt(20 downto 19) IS WHEN "00"=> scan_key<="1110"; WHEN "01"=> scan_key<="1101"; WHEN "10"=> scan_key<="1011"; WHEN "11"=> scan_key<="0111"; END CASE; END P ROCESS;SIGNAL scan_key std_logic_vector(3 DOWNTO 0);--扫描码寄存器P ROCESS(clk,rst) BEGIN<= "0000"; WHEN "1101" => key_code <="0001"; WHEN "1011" => key_code <= "0010"; WHEN "0111" => key_code <= "0011";WHEN "1110" => key_code <="0100"; WHEN "1101" => key_code <= "0101"; WHEN "1011" => key_code <= "0110"; WHEN "0111" => key_code<= "0111";WHEN "1110" => key_code <= "1000"; WHEN "1101" => key_code <= "1001"; WHEN "1011" => key_code<="1010";IF (NOT rst = '1') THENkey_code <= "0000";ELSIF(clk'EVENT AND clk='1')THENCASE scan_key IS--检测何处有键按下WHEN "1110" => CASE column ISWHEN "1110" => key_codeWHEN OTHERS => NULL; END CASE;WHEN "1101" => CASE column ISWHEN OTHERS => NULL; END CASE;WHEN "1011" => CASE column ISWHEN "0111" => key_code <= "1011"; WHEN OTHERS => NULL; END CASE;WHEN "0111" => CASE column ISWHEN "1110" => key_code <= "1100"; WHEN "1101" => key_code <= "1101"; WHEN "1011" => key_code <= "1110"; WHEN "0111" => key_code <= "1111"; WHEN OTHERS => NULL; END CASE;WHEN OTHERS => key_code <= "1111"; END CASE;<= "0000";P ROCESS(key_code)--显示键值END IF;END P ROCESS;BEGINCASE key_code ISWHEN "0000" => dataout_t mp <= "00111111";WHEN "0001" => dataout_t mp <= "00000110";WHEN "0010" => dataout_t mp <= "01011011";WHEN "0011" => dataout_t mp <= "01001111";WHEN "0100" => dataout_t mp <= "01100110";WHEN "0101" => dataout_t mp <= "01101101";WHEN "0110" => dataout_t mp <= "01111101";WHEN "0111" => dataout_t mp <= "00000111";WHEN "1000" => dataout_t mp <= "01111111";WHEN "1001" => dataout_t mp <= "01101111";WHEN "1010" => dataout_t mp <= "01110111";WHEN "1011" => dataout_t mp <= "01111100";WHEN "1100" => dataout_t mp <= "00111001";WHEN "1101" => dataout_t mp <= "01011110";WHEN "1110" => dataout_t mp <= "01111001";WHEN "1111" => dataout_t mp <= "01110001";WHEN OTHERS => NULL;END CASE;END P ROCESS;END arch;【实验数据整理与归纳】関融砂盟巒且日日盯*1 •实际效果图i 2 ! J" ■ !7r ly:CZZ . .JU. JELit Pl■::-助T H 111IFTT X=T<"=:77^.^ i-r j .r论Z JU . I - ■■TOPT Ixkrrrlb 1J I HE. 玉2匚/*. PL【“■ rs i-^cT™ OCTT 翻W石=4■匚_社二話;「n 附―:■ ACd£」"£•:MifT 口11 r:, 近宾切丿丹丫匕」肚蔦;£F - FiL rz . +.卡hi H IS I已汁■ H J-ii 2]EKL FErS. kSJ^i■ r・F FTy TisvT r"i:i:. r repYJ^E-i raJ;M L L和.刃n: 0L右Ml■EE “I r in d<«a.ro D5;EPY_J. I L F J -a^^LiKj L UE -J 1 rCRlTYi 匚2;•J:-J H 竺卿d^Ta-i;T ■—口二■ ■ i* J SLr 't, n?—n±,=:h:?冷,* * ■ '3 T^EHn>::> = - Ji JtrJ LT --.r -■ - :, y rr = 1 -EXD ir.-34E= >C.\5Cr;lT 1*1)FH.-'帕讥亠-Cl:'三] "I三■ '■ih ■ ■ i ■ : _ R ■ ,| ny . a! ■_ f - VCZK - _ ■- • rcni.叭乂-甘:■■: TtlLH L-” j【=■■■. —H■i-=r ; J •口匸-L " 皿;S, hIE jy嗣*4 匚訐:•m,r; .「.r.pi/-」";JL;-.i h心上rat = •■・)7iEiE” -廿"U E| . ■ ■-T:La;ri^<'rr:3T ANC:二E|丄r7^^Tl^UJl :;业応』i;3 r.. r .和吨MJr-■ r E TJttLh:壬… ■ f haT-Z・C * r■ r5 F I. .■ _ _ I _ iL ■ =. TG7死■:H・ r 0甲[bE* " ~ 厂唱■* ■ J fc--b_ :l-"=VriM「710 E =- THT-hC【实验结果与分析】)1吨* ■:'J■«■:ASE c二二irc\ ]生¥Hlcif ■ . . □ - i »W 「-・「£d1HCI 片___J- -5- <- - _________ 亠.17^rlkV r_.」jr *■!* 匸sb " ■亠J_F.SB Eiih-h 1丄* 十酣*[亡心坐 3・.…■:r5<H L S常山:■*利EJZ :?1 注:41iMtJJ -_,■'-=■■■ WJT .-■ .im I>sHcx yar 0 "F u口 A ■. .」・*■:44■HEIC Ji广--抽*1“舍十■. . j;"i€51HC3 7亡D矩<■4t«7•H阻'■H.J 1* --r *Cy"e"fe J ・..*■ ■HE胴:rTB£i・> 少匸JI TIIE? *■:::・2州■小 CrJiK. 1?7l72IHEX ®^L_. J* -> CBj- CD・3■■__________________ 'jIHEI m* r 血區 <- J T上亠:r4HHEJ "O-J J"-> 工已丄Wit 37&THKn TPwrt-i >> rnij■ □O7E ZfLTSJ7?msi LIT®"-■-■x ■* Siui*.7S IriD ZXSZr,S L44L IE.EKE IPLTE^r«l■RHJ EMWy r■■却J TT.MdZ•3■aj£ baT_-mta Z3«■< . -r-'■> lU^*-IU^_kMk 4・ 'G.:Ulr・J「15KMC暨■;:--■-> 3 恤:込」*«frrlEM ・-." C IrtrJHit-:■卑•Lh i 1 ■ .$7xHEN ■:::_■TBT <- 'Oi.rHBI ・,4「希ma飞E -二«9zHEir ■-: :■■A JHtLnTii-_-rT <- '^L:HO=h ■.* *11- h 1 1 -ilT«]rHCT - ?__=-> aiLd-auL^uip 4 'i:i:.:.:.」■■二mitr -j .=』4atft_>ut_L^ -=■Hfii r :.-■->4^L4-IM匚二申匚£■ *0L_■ 1 -业胆,-J .. ■-> dat±:>ut2t^ ■<■ .(KUl .旳f-rihH * 1 -*> ^nr.ViqC-TWr <- ^U. p 1 1 . 'L'^-IHEW ■::::■=> "Mnut二op <= 'ocjlir-i-j扯HRM -1 : - ■ ■-A dhr R .iir-rpp v=-怕T 1 丽■”:XHEV ■ ■ : --■■>4H鈕FI P TTT T<- '^::l f■ 1 r .■八,■ an,IE IM ■* TE-Uil 'I"±to直MET J-mu-> lULZzHl UL如缶.K<a BBC TPT-TBa-S.Cft.' flc-thjkeyboardll.vhd按下矩阵键盘第一行第一列时,数码管显示“按下第二行第二列时, 数码管显示" 按下第三行第三列时,数码管显示“以此类推。
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. 讲授法:- 用于讲解矩阵键盘的基础知识和编程技术,通过清晰的讲解,使学生快速掌握基本概念和原理。
键盘控制电路的设计摘要矩阵键盘控制接口电路是最基本的输入电路,在当今社会的各个领域起着不可替代的作用。
例如计算机的键盘、手机的键盘等各式电子产品都广泛应用了该技术。
在课程设计中,系统开发平台为Windows XP,利用QuartusⅡ自行设计并修改的键盘输入显示电路是通过VHDL语言和图形混合编辑的。
程序和电路图通过调试、运行和波形仿真后,初步达到了设计目标,并且在经过具体的数字实验箱验证后,实现了键码的对应显示。
关键词:键盘控制;QuartusⅡ;VHDL;图形编辑1引言本课程设计是一个简易的利用键盘来控制电路的实验,先是对该4*4键盘进行编码即一个键盘位置对应一个数值或符号的电路。
本设计只是对键盘进行十六进制数的编码,有防抖动的功能,其主要目的是为了避免按键时键盘产生的按键抖动效应。
最后是一个按键检测的程序,当有按键时则输出对应的键码值。
1.1课程设计的目的通过课程设计,使我们对QuartusII和Max+PlusⅡ这两个软件有所了解,在电脑上对实际电路应用的设计和仿真更简便、精确且易于实现。
同时在经过对键盘控制电路在电脑上仿真再到数字实验箱上的实现这一过程,一方面让我更深入的理解到电路设计的方法,掌握了平常我们按一个键码后再显示,这一现象的全过程。
另一方面增强了我的动手能力,真正的将书本上的理论知识和实践联系在一起了。
1.2课程设计的要求这一次课程设计首先要求我们对EDA技术有一定的了解,并掌握QuartusII平台的一些基本使用方法,以及VHDL语言的基本语法结构和编程思路。
其次了解键盘控制电路的设计原理,分析程序或图形中的各输入,输出以及中间信号的逻辑关系。
为避免误操作信号的发生,还必须有弹跳消除的电路。
最后在实验箱上验证程序时,要求数码管和发光二极管能显示与编码的相同数值。
1.3设计平台本课程设计中的分频电路、键盘编码、防抖动、键盘识别等内容都是基于QuartusII 平台的,所以在这设计之前有必要对QuartusII和EDA技术进行初步的了解。
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矩阵按键课程设计一、课程目标知识目标: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. 讲授法:教师通过生动的语言、形象的比喻和具体的案例,为学生讲解矩阵按键的基本原理、电路设计与搭建方法以及编程技巧。
《电子设计EDA》课程设计专业:电子信息科学与技术班级:2010级电信本(1)班姓名: ***学号: *********指导老师: ***完成时间: 2012.11—2012.12教师评分:目录一、绪论 (1)1.1 FPGA概况 (1)1.2 本课题的研究意义 (2)二、课程设计的任务和目的 (3)三、矩阵键盘接口电路的原理与总体设计 (3)3.1 矩阵键盘接口电路的原理 (3)3.2 总体设计 (5)四、各模块的设计及仿真 (6)4.1 键盘扫描电路 (6)4.2 键盘译码电路和按键标志位产生电路 (8)4.3 时钟产生模块 (10)4.4 键盘接口电路顶层电路实现 (12)五、参考文献 (13)六、心得体会 (13)七、附录 (14)7.1 源程序代码 (14)2题目:矩阵键盘控制接口设计一、绪论1.1 FPGA概况早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM)三种。
由于结构的限制,它们只能完成简单的数字逻辑功能。
其后出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。
典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与—或”表达式来描述,所以PLD能以乘积和的形式完成大量的组合逻辑功能。
这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。
PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。
PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和E2PROM技术。
还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。
PLA 器件既有现场可编程的,也有掩膜可编程的。
在PAL的基础上又发展了一种通用阵列逻辑(GAL、Generic ArrayLogic),如GAL16V8、GAL22V10等。
它采用了E'PROM工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。
这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。
为了弥补这一缺陷,20世纪80年代中期,Altera和Xilinx分别推出了类似于PAL 结构的扩展型CPLD(Complex Programmable Logic Dvice)和与标准门阵列类似的FPGA(FieldProgrammable Gate Array),它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。
这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。
与门阵列等其他ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品不需测试、质量1稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产(一般在10 000件以下)之中。
几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。
1.2 本课题的研究意义近年来EDA技术在电子领域引发的技术革命,推动着电子技术的迅猛发展,为世人所瞩目,而FPGA为代表的可编程逻辑器件的应用,更是受到业内人士的普遍关注。
伴随着大规模集成电路和计算机技术的高速发展,在设计工业自动化,仪器仪表,计算机设计与应用、通信、国防等领域的电子系统中,FPGA技术的含量正以惊人的速度提升。
将尽可能大的完整的电子系统在单一FPGA芯片中实现已成为现实,电子类新技术项目的开发也更多地依赖于FPGA技术的应用。
作为FPGA研究课题之一的矩阵键盘控制接口电路的设计,在FPGA设计中是一个经常被提到的话题,就像是利用PFGA设计数字中一样,虽然简单,但是却是一个很有研究意义的话题,涉及到怎么样才能是FPGA资源更加充分利用,现在很多电子产品都涉及到按键,小的有独立按键,大的有N*N的矩阵键盘,独立按键由于案件的个数少,也就没必要考虑资源的利用问题了。
而矩阵键盘,由于按键多,对整个系统的影响大,所以肯定要考虑资源的利用问题,而且还要考虑一下电路里面的时序问题。
本次设计要求设计一个4*9矩阵键盘,也就是行为4,列为9,一共可以设计36个按键。
其中设计方法为:一般判断键盘中有没有按键按下是通过航线送入扫描信号,然后从列线中读取状态得到的,其方法是依次给行线送入低电平,检查列线的输入。
如果列线信号趣味高电平,则代表低电平信号所在的行中无按键按下,反之,则有,则在低电平信号所在的行和出现低电平的交叉处有按键按下。
一共有三个模块,分别为:扫描电路模块、时钟产生模块、键盘译码电路和按键标志位产生电路。
扫描模块中是为了产生扫描信号,来利用扫描信号来扫描键盘中中是否有按键按下。
键盘译码电路和按键标志位产生电路是为了配合扫描模块来扫描电路中是否有按键按下,而且还要求它来产生按键标志信号,以便和外部电路握手。
时钟产生电路是为了产生不同频率的信号,来驱动上面两个电路的运转。
在设计完各个模块后,还要对每个模块进行仿真,在仿真的过程中要对参数精心设计,要不然看不出结果的。
2二、课程设计的任务和目的20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。
在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。
这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。
本次设计在EDA开发平台QUARTUSⅡ7.2上利用VHDL语言设计矩阵键盘控制接口电路。
要求设计一个4×9矩阵键盘,一共有三个模块,分别为:扫描电路模块、时钟产生模块、键盘译码电路和按键标志位产生电路。
扫描模块中是为了产生扫描信号,来利用扫描信号来扫描键盘中是否有按键按下。
键盘译码电路和按键标志位产生电路也是为了配合扫描模块来扫描电路中是否有按键按下,而且还要求它来产生按键标志信号,以便和外部电路握手。
时钟产生电路是为了产生不同频率的信号,来驱动上面两个电路的运转。
通过对课题的分析研究,掌握了VHDL语言编程方法,同时也增强了个人的学习能力和动手能力。
三、矩阵键盘接口电路的原理与总体设计本章首先介绍矩阵键盘的设计思路,总体来说行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。
最后介绍4*9键盘的总体设计思路。
3.1 矩阵键盘接口电路的原理在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的FPGA的I/O口作为输出端,而列线所接的I/O口3则作为输入。
这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。
行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。
行列式键盘的电路原理如图3.1.1所示:(为了说明问题以4*4为例)Keyin3Keyin2Keyin1Keyin0FPGAKeydrv0Keydrv0 Keydrv0 Keydrv01523467890A BC D E F+5v+5V图3.1.1 行列式键盘的电路原理图设置扫描信号为keydrv3~keydrv0,列线按键输入信号keyin3~keyin0与按键位置的关系如表3.1.1所示:表3.1.1 扫描信号和列线按键输入信号与按键之间的关系表keydrv3~keydrv0 keyin3~keyin0 对应的按键1110 1110 1 1101 2 1011 3 0111 4 1110 51101 1101 6 1011 7 0111 845 101111109 1101 0 1011 A 0111B 1110C 0111 1101D 1011 E0111F3.2 总体设计矩阵键盘控制系统的总体设计如图3.2.1所示:图3.2.1 键盘接口电路结构图由行列式键盘原理就可以知道,要正确的完成键盘输入工作必须有按键扫描电路产生keydrv3~keydrv0信号,同时还必须有按键译码电路从keydrv3~keydrv0信号和keyin3~keyin0信号中译码出按键的值。
此外,一般还需要一个按键发生信号用于和其他模块接口,通知其他模块键盘上有按键动作发生,并可以从键盘上读取按键的键值。
由于各个模块需要的时钟频率是不一样的,因此时钟产生模块就是用于产生各个模块需要的时钟信号。
因此得到键盘接口电路的结构如上图所示。
键盘译码电路按键标志产生电路4*9键盘时钟产生电路扫描电路keyvalukeypresseclkKeydrv[3..0]四、各模块的设计及仿真4.1 键盘扫描电路键盘扫描电路是用于产生keydrv3~keydrv0信号,其变化的顺序依次是1110---1101---1011---0111---……周而复始地扫描。
其停留在某个状态的时间大约为10ms。
更短的停留时间是没有必要的,因为人按键的时间大约为10ms,不可能有更快的按键动作发生;另外,更短的停留时间还容易采集到抖动信号,会干扰判断,而太长的停留时间则会使某些较快的按键东走丢失。
键盘扫描电路的外部接口电路如图4.1.1所示,其中clk_scan是周期为10ms的扫描时钟,keydrv为输出到键盘的扫描信号,宽度为4位。
图4.1.1 键盘扫描电路的外部接口电路图其VHDL描述如下:LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY key_scan IS-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!PORT(clk_scan : IN STD_LOGIC; --扫描时钟,周期10mskeydrv : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)--输出扫描信号);-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!END key_scan;-- Architecture BodyARCHITECTURE key_scan_architecture OF key_scan ISCONSTANT s0 :STD_LOGIC_VECTOR (3 DOWNTO 0):="1110" ;--定义状态机编码CONSTANT s1 :STD_LOGIC_VECTOR (3 DOWNTO 0):="1101" ;CONSTANT s2 :STD_LOGIC_VECTOR (3 DOWNTO 0):="1011" ;CONSTANT s3 :STD_LOGIC_VECTOR (3 DOWNTO 0):="0111" ;SIGNAL present_state:STD_LOGIC_VECTOR(3 DOWNTO 0);6--状态机现态SIGNAL next_state:STD_LOGIC_VECTOR(3 DOWNTO 0);--状态机次态BEGIN--状态更新进程PROCESS(clk_scan)BEGINIF(clk_scan'event and clk_scan='1') thenpresent_state<=next_state;END IF;END PROCESS;--状态译码PROCESS (present_state)BEGINCASE present_state ISWHEN s0=>next_state<=s1;WHEN s1=>next_state<=s2;WHEN s2=>next_state<=s3;WHEN s3=>next_state<=s0;--多余状态处理WHEN OTHERS=>next_state<=s0;END CASE;END PROCESS;--输出译码keydrv<=present_state;END key_scan_architecture;以上程序采用一个状态机来实现扫描电路。