版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告书题目:矩阵键盘识别电路的设计题目:矩阵键盘识别电路的设计 学学 院院 自动化学院自动化学院 专专 业业 自动化控制自动化控制 学生姓名学生姓名 学生学号学生学号 201330581089201330581089 班内序号班内序号 9 9 指导教师指导教师 马楚仪马楚仪 课程编号课程编号 135070135070 课程学分课程学分 1 1 学分学分 起止日期起止日期 2015.052015.05 19192015.07.032015.07.03 教师签名:日期:目录目录第 1 章、选题背景.1第 2 章、方案论证(设计理念).11 设计任务.12 方案论证; .2第 3 章、过程论
2、述.21 总电路.22 分频模块.33 扫描模块:.44 译码模块.5第 4 章、结果分析.61 分频模块.62 译码模块.63 扫描模块.74 总电路.7第 5 章、课程设计总结.81 收获与心得.82 致谢.9附录 1:参考文献 .10参考文献.10附录 2:部分采用 VERILOG 语言编写的模块的原程序 .10扫描模块程序.10译码模块程序:.151课题名称:数字电子技术基础课题名称:数字电子技术基础第第 1 章、选题背景章、选题背景在现代电子工业的控制电路中,键盘扫描和显示电路对系统的调试和设置有着重要的作用。随着 EDA 技术的发展,基于 FPGA 的扫描键盘因其结构简单能有效防止
3、机械键盘按键抖动带来的数据错误等优点在许多电子设备中都得到了广泛的应用。本课题的内容是设计一个电路来识别 4x4 矩阵键盘,单独按某个键,数码管显示该键的数字,如 J0,显示 00,J1,显示 01,J15 显示 15,同时发出发出一音“嘀”同时按两个或以上按键,数码管显示 ER,发出一音“嘀”,连续发出“嘟嘟嘟”,直到松开按键,声音关闭。所主要解决的问题是设计电路,通过运用 Quartus软件平台生成电路符号,并仿真分析,消除各种存在的问题,直到下载到芯片中通过硬件实现上述所要求的功能。对该系统要求:应具有集成度高、稳定性好、设计灵活和设计效率高等优点。设计指导思想:矩阵键盘识别电路从原理上
4、讲就是一个典型的数字电路,包括组合逻辑电路和时序逻辑电路。设计键盘扫描程序,将程序划分为时序产生模块、键盘扫描模块、键值译码模块,蜂鸣器模块四个模块,时序产生模块为键盘扫描和蜂鸣器模块产生时钟信号,键盘扫描模块采用行扫描法对 4*4 矩阵键盘进行扫描,键值译码模块将所按键值译码为共阴极 8 位 7 段数码管的显示码几个模块组合起来实现键盘扫描的设计要求。第第 2 章、方案论证章、方案论证(设计理念设计理念)1 设计任务设计任务的设计功能包括:1 单独按某个键,数码管显示该键的数字,如 J0,显示 00,J1,显示 01,J15 显示 15。2 同时按两个或以上按键,显示 ER。23 单独按某个
5、键,发出一音“嘀”, 同时按两个或以上按键,发出一音“嘀”,连续发出“嘟嘟嘟”,直到松开按键,声音关闭。(1)设计理念:将矩阵键盘识别电路各个功能分成模块来实现,包括分频模块描模块、键值译码模块,蜂鸣器模块四个模块, 在主电路中通过连线实现识别功能。分模块能使电路看起来更有条理,接线更清晰,功能更加可靠,排查错误更简单和更有针对性。2 方案论证;一:识别方式:判断键盘上哪个键被按下,可以采用静态译码法或扫描法,静态译码法原理简单,容易理解,但电路复杂,扫描法比较抽象,电路相对简单,通常采用,扫描法又称为逐行或列扫描查询法,它是一种最常用的多按键识别方法。综上,选取扫描方法二:实现方式方案 1:
6、采用用门电路和各种寄存器等搭建组合时序电路的方式来实现,可以采用移位寄存器循环扫描信号,并通过数据选择器来判断各种情况,这种方法实现原理简单,但搭电路的时候复杂,接线繁多,尤其是识别两个以上的按键时不灵活,容易漏接错接,且检查错误比较麻烦。方案 2:采用用硬件描述语言 Verilog hdl 来实现,Verilog hdl 语言和 c 语言比较类似,所以上手比较快,因此,虽然之前没接触过该语言,但在做课程设计的这段时间里,用它来实现课程设计所要实现的功能还是可以的。用这种方法的话,程序简单易懂,而且比较简洁,思路比较清晰,尤其在识别两个按键以上的时候优越性特别明显。方案 3:采用用硬件描述语言
7、 vhdl 来实现,与 Verilog hdl 相似,但是 vhdl 的语法比 Verilog hdl 复杂一点,由于没有学过,对该语言一窍不通。所以该方案不考虑。综上所述,选取方案二。第第 3 章、过程论述章、过程论述1 总电路作用:将各个模块串连起来以实现识别电路的功能。3图 1 总电路图输入 1kHZ 的频率,首先经过分频器成 1HZ ,100HZ,250HZ, 500HZ 的脉冲,用于驱动蜂鸣器,1kHZ 的脉冲进入扫描模块,扫描模块将扫描结果分别送给显示译码器模块和蜂鸣器模块,从而驱动两个 led 数码管显示结果,只有一个键按下时,蜂鸣器发出一音“嘀”,当同时按两个或以上按键,发出一
8、音“嘀”,连续发出“嘟嘟嘟”。2 分频模块作用:在输入脉冲只有 11kHZ 的情况下,将 1kHZ 的脉冲分频成 1HZ ,100HZ,250HZ, 500HZ 的脉冲,用于驱动蜂鸣器,不同的频率使蜂鸣器发出不同的声音。4图 2 分频模块电路图图中各成分的作用,和成分之间的交互:输入 1kHZ 的脉冲,运用 7490 芯片构成分频电路,当 7490 的 SET9A,SET9B,CLRA.CLRB管脚接低电平 CLKA 接 QD 输出管脚,CLKB 接输入脉冲,QA 输出脉冲,构成十分频电路。依据这样的原理,经过三个十分频即可输出100,1HZ 的脉冲信号。分频模块的下部分是用 D 触发器构成的
9、二分频电路,因此可以分频出 500HZ,250HZ 的脉冲信号。3 扫描模块:作用:判断按键的状态,即识别按键,按照识别结果输出一个按键标志位 flag,错误按键标志位 flag2,和按键值 key_value。图 3.扫描模块电路逻辑符号图图 4 矩阵键盘结构图5程序见附录,各成分的作用,和成分之间的交互:扫描流程1、 判断键盘中有无键按下 将全部列线 KR0-KR3 置低电平然后检测行线 KL0-KL3 的状态,只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与 4 根行线相交叉的 4 个按键之中,若所有行线均为高电平则表示键盘中无键按下。 2、 判断按键所在的位置
10、在确认有键按下后,即可进入确定具体闭合键的过程,其方法是依次将列线置为低电平,即在置某根列线为低电平时,其它线为高电平,例如: KR0 KR1 KR2 KR3 置 0111,之后扫描 KL 端,当J0 键按下,则 KL0 输出为 0,其余则为 1,即 KL3 KL2 KL1 KL0 输出为 1110,此时就可以判断为 J0 键被按下,数码管显示 01,依此类推,判断其他键。而在一次扫描过程中,当扫描到某列有键按下,即将该列的按键标志置 1,在扫描结束后,如果有多列置 1,就判断有多个键按下,从而 key_value=16,即报错,而在一行之中的最后判断之中,例如 KR0-KR3 置 1110
11、时,当 KL3 KL2 KL1 KL0输出至少两个管脚为低电平时,也判断为多个按键按下,即就报错。即识别思想是在一次轮回中,依次将 KR0 KR1 KR2 KR3 分别置为 00000,0111,1011,1101,1101,此次扫描结束才判断扫描结果,判断按键错误的顺序是先列后行。表 1 按键位置与数码的关系 KRKLJ0J1J2J3J4J51110_11101101_11101011_11100111_11101110_11011101_1101J6J7J8J9J10J111011_11010111_11011110_10111101_10111011_10110111_1011J12J3
12、J14J15J16(即报错标志)61110_01111101_01111011_01110111_0111defualt4 译码模块作用:将输进来的 key_value 译码出相应的码给 led1,led2 显示。程序见附录。图 5.译码模块逻辑符号图第第 4 章、结果分析章、结果分析1 分频模块Clk 输入 1KHZ 的脉冲信号,分频出 500HZ,250HZ,100HZ,1HZ的信号,分析波形结果正确。图 6 分频模块仿真波形2 译码模块当电路输入 key_value 分别为:00000,00001,00010,00011,00100,00101,00110,00111,01000,010
13、01,01010,01011,01100,01101,01110,01111,10000led1 输出:00111111,00111111,00111111,00111111,0011111100111111,00111111,00111111,00111111,00111111,00110000700110000,00110000,00110000,00110000,00110000,01111001led2 输出:00111111,00110000,01011011,01001111,0110011001101101,01111100,00000111,01111111,01101111,
14、0011111100110000,01011011,01001111,01100110,01101101, 01110111图 7.译码模块的仿真波形图3 扫描模块扫描程序依次将 KR0 KR1 KR2 KR3 置0111,1011,1101,1110,进行扫描。图 8.扫描模块的仿真波形图84 总电路在时钟的控制下,扫描程序依次将 KR0 KR1 KR2 KR3 置0111,1011,1101,1110,进行扫描,如果第一个键按下时,此时 flag置一,数码管中 led1,led2 都置00111111。其他的同理。图 9.总电路仿真波形图第第 5 章、课程设计总结章、课程设计总结1 收获与
15、心得通过本次课程设计,我收获到在课堂上所不能给予我的知识和处理问题的能力,也深刻体会到,正如老师在任务书中说的一样,做设计是一件很辛苦的事情,千万不能够浮躁,想走捷径,只有静下心来,根据本课程的知识、查找资料、学习前人经验,才能有自己的作品。在设计过程中,感觉自己收获到了很多比仅仅做题,上课更丰富的知识,同时也加深了对数电知识的理解,并且这个过程现在回想起来真的很奇妙自己能够独立地运用自己学的知识来设计电路,真的很有成就感。让我感受最深的是在这次设计之中出现的那些问题,真的,做设计如同人生,并不是一帆风顺的,也不能一蹴而就。从选择矩阵键盘的这道题开始,就意味着我要开始接受一个新的挑战。说实话,
16、一开始选择这道题目是因为之前有接触过矩阵键盘,后来才发现用数电知识来实现和我之前接触的有特别大的区别,真的可以说天壤之别。在选择方案的时候,一开始挺纠结,是要用描述语言还是用搭电路的方法,因为我之前没接触过硬件描述语言。后来通过论证,果断选了硬件语言,硬件语言对我来说真的是一个新的东西,所以这不得不说是9一个新的挑战。也正因为此次设计,我对 Verilog hdl 语言有了一个大概的了解。选择了用描述语言来描述电路,首先就是要补充知识,我把数电课本的关于硬件语言的那章看了,然后就到处于找关于 Verilog hdl 的语法资料。在写扫描程序的过程中,单个按键检测比较容易,但当然这个过程出现了很
17、多小问题,这些小问题有时候也是挺难发现的,有时候就改了一个地方,然后程序就可以正常工作了,所以程序编译了数不清 n 遍,出现问题的时候就找找书,例如阻塞语句和非阻塞语句的区别,还有 case 语句在 Verilog hdl 中的应用等,尤其是阻塞语句和非阻塞语句,花了很久才搞懂是什么回事。最困难的部分是两个以上按键的检测,首先是扫描方法,如何检测出两个以上的按键,真的想了好久,看着那个矩阵键盘原理图想了不知道多少遍了。一开始想出来的程序,按照原理,它应该能够检测出不同行的两个按键以上的,但是结果却出乎我意料,竟然只能够识别同一列的两个以上按键,然后检测很久也没发现问题,真的考验人的耐心,奇怪的
18、是在之后的写的程序,没怎么改,它就正常工作了。之后用它又写了一个程序,虽然感觉那个原理能够检测任意两个以上按键但结果却是只能检测不同行。迫于无奈,只能改另外一种扫描方法,前一种扫描方法由于时间关系,只能先放下查找它的错误,自己感觉可能对Verilog hdl 有些细节的东西还不是很清楚 ,可能这也是此次设计遇到的最大问题。之后的那个程序扫描方法在实现过程中也是遇到各种问题,经过查资料,最后很幸运都解决了。在程序调试的时候,需要的是发现问题的细心和耐心,程序问题才能够一一解决。数电课程设计过程充满挑战,既有有趣的地方,又有困难的让人想要放弃的地方。每当想到一个新方法,就想去用它,验证它,有时睡在
19、床上想着,想出一些解决方案,于是跳下床,到电脑前操作,这也许就是它的魅力,每一个困难都让人跃跃欲试下想要克服它。在每一个问题解决的背后需要一颗有耐心的心和思考的大脑。在不断发现问题和解决问题的过程中,收获的不仅仅是知识,更是一种主动的态度。学习是一种态度。我觉得我很享受做课程设计的过程,它让我经历了柳暗花明的喜悦,让我在这个过程中的到很多的满足感。2 致谢衷心感谢老师在实验过程中的谆谆教导,通过实验,我更加巩固10了课堂上的知识,也感谢学校安排了这次数电设计,让我有了这次不同以往的经历,增加了我实践的机会。 附录附录 1:参考文献参考文献参考文献参考文献 1阎石.数学电子技术基础.北京:高等教
20、育出版社2夏宇闻.Verilog 数字系统设计教程.北京.北京航空航天大学出版社3 魏家明.Verilog 编程艺术.电子工业出版社附录附录 2:部分采用:部分采用 verilog 语言编写的模块的原程序语言编写的模块的原程序 扫描模块程序/*时钟 CLK 管脚:PIN_18 *键盘 col 输入管脚:PIN_8,PIN_7,PIN_6,PIN_5 *键盘 row 输出管脚:PIN_14,PIN_13,PIN_12,PIN_11 *实验结果:按键每个数字对应亮灯数,其它按键对应不同结果 */module juzhen(clk,incol,outrow,key_value,key_flag,ke
21、y_flag1);input clk; /定义时钟引脚input3:0incol; /定义横向数据输入output3:0outrow; /定义纵向数据输出 output4:0key_value; /定义识别的按键值11output key_flag,key_flag1; /定义按键标志,flag 表示一个flag/flag2 表示两个按键 reg 3:0row;reg3:0incol_reg ; /寄存扫描行值reg3:0 outrow_reg; /寄存扫描列值reg2:0state; /状态标志reg key_flag,key_flag1; /按键标志位reg 4:0 key_value;
22、/读取的状态值reg 3:0incol_1,incol_2,incol_3,incol_4;reg state1,state2,state3,state4;reg 3:0 statez;/总的按键标志always(posedge clk)begincase(state)0:begin row=4b0000; key_flag=1b0;key_flag1=1b0; if(incol!=4b1111)begin state=1;row=4b1110;endelse state=0;end1:beginif(incol!=4b1111)beginincol_1=incol;state1=1b1;st
23、ate=2;row=4b1101;endelsebeginstate=2;row=4b1101;state1=1b0;end12end2:beginif(incol!=4b1111)beginincol_2=incol;state2=1b1;state=3;row=4b1011;endelsebeginstate=3;row=4b1011;state2=1b0;endend3:beginif(incol!=4b1111)beginincol_3=incol;state3=1b1;state=4;row=4b0111;endelsebeginstate=4;row=4b0111;state3=1
24、b0;endend4:beginif(incol!=4b1111)beginincol_4=incol;state4=1b1;state=5;endelse begin state=5;state4=1b0;end end 5:begin13statez=state4,state3,state2,state1;case(statez)4b1000:begin incol_reg=incol_4;outrow_reg=4b0111;case(incol_4)4b1110:key_flag=1b1;4b1101:key_flag=1b1;4b1011:key_flag=1b1;4b0111:key
25、_flag=1b1;4b0011:key_flag1=1b1;4b1100:key_flag1=1b1;4b1001:key_flag1=1b1;4b0101:key_flag1=1b1;4b1010:key_flag1=1b1;4b0110:key_flag1=1b1;default:key_flag=1b0;endcaseend4b0100:begin incol_reg=incol_3;outrow_reg=4b1011;case(incol_3)4b1110:key_flag=1b1;4b1101:key_flag=1b1;4b1011:key_flag=1b1;4b0111:key_
26、flag=1b1;4b0011:key_flag1=1b1;4b1100:key_flag1=1b1;4b1001:key_flag1=1b1;4b0101:key_flag1=1b1;4b1010:key_flag1=1b1;4b0110:key_flag1=1b1;default:key_flag=1b0;endcaseend144b0010:begin incol_reg=incol_2;outrow_reg=4b1101;case(incol_2)4b1110:key_flag=1b1;4b1101:key_flag=1b1;4b1011:key_flag=1b1;4b0111:key
27、_flag=1b1;4b0011:key_flag1=1b1;4b1100:key_flag1=1b1;4b1001:key_flag1=1b1;4b0101:key_flag1=1b1;4b1010:key_flag1=1b1;4b0110:key_flag1=1b1;endcaseend4b0001:begin incol_reg=incol_1;outrow_reg=4b1110;case(incol_1)4b1110:key_flag=1b1;4b1101:key_flag=1b1;4b1011:key_flag=1b1;4b0111:key_flag=1b1;4b0011:key_f
28、lag1=1b1;4b1100:key_flag1=1b1;4b1001:key_flag1=1b1;4b0101:key_flag1=1b1;4b1010:key_flag1=1b1;4b0110:key_flag1=1b1;default:key_flag=1b0;endcaseenddefault:begin incol_reg=4b0000;outrow_reg=4b0000;key_flag1=1b1;endendcase state=0;end15endcaseendalways(clk or outrow_reg or incol_reg)begincase(outrow_reg
29、,incol_reg)8b1110_1110:begin key_value=5b00000;end8b1101_1110:begin key_value=5b00001;end8b1011_1110:begin key_value=5b00010;end8b0111_1110:begin key_value=5b00011;end8b1110_1101:begin key_value=5b00100;end8b1101_1101:begin key_value=5b00101;end8b1011_1101:begin key_value=5b00110;end8b0111_1101:begi
30、n key_value=5b00111;end8b1110_1011:begin key_value=5b01000;end8b1101_1011:begin key_value=5b01001;end8b1011_1011:begin key_value=5b01010;end8b0111_1011:begin key_value=5b01011;end8b1110_0111:begin key_value=5b01100;end8b1101_0111:begin key_value=5b01101;end8b1011_0111:begin key_value=5b01110;end8b0111_0111:begin key_value=5b01111;enddefault:begin key_value=5b10000;endendcaseendassign outrow=row;endmodule译码模块程序:module yima(key_value,led1,led2);input 4:0 key_value;reg7:0led_reg1,led_reg2;output7:0led1; output7:0led2;always(key_value)begin 16case(key_value)5b00000:begin led_reg1=8b001111
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2022-2027年中国医药广告行业运行态势及未来发展趋势预测报告
- 2025年中国在线视频行业发展趋势预测及投资规划研究报告
- 2022-2027年中国鸡肉骨汤罐头行业发展监测及投资战略研究报告
- 2024-2030年中国护发产品行业市场深度分析及投资潜力预测报告
- 2024-2026年中国存储软件行业市场供需格局及行业前景展望报告
- 2020-2025年中国达托霉素行业市场深度分析及发展前景预测报告
- 2025年振动监测仪表项目可行性研究报告
- 2025-2030年中国行星减速器行业市场行情监测及前景战略研判报告
- 2022-2027年中国智慧高速公路行业市场深度分析及投资前景展望报告
- 2025年中国磷霉素钙胶囊行业市场运行态势及投资战略咨询研究报告
- 2024年海口市选调生考试(行政职业能力测验)综合能力测试题及答案1套
- 六年级数学质量分析及改进措施
- 一年级下册数学口算题卡打印
- 2024年中科院心理咨询师新教材各单元考试题库大全-下(多选题部分)
- 真人cs基于信号发射的激光武器设计
- 【阅读提升】部编版语文五年级下册第三单元阅读要素解析 类文阅读课外阅读过关(含答案)
- 四年级上册递等式计算练习200题及答案
- 法院后勤部门述职报告
- 2024年国信证券招聘笔试参考题库附带答案详解
- 道医馆可行性报告
- 视网膜中央静脉阻塞护理查房课件
评论
0/150
提交评论