华南理工大学数电课程设计要点.doc_第1页
华南理工大学数电课程设计要点.doc_第2页
华南理工大学数电课程设计要点.doc_第3页
华南理工大学数电课程设计要点.doc_第4页
华南理工大学数电课程设计要点.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计报告书 题目 矩阵键盘识别电路的设计题目 矩阵键盘识别电路的设计 学学 院院 自动化学院自动化学院 专专 业业 自动化控制自动化控制 学生姓名学生姓名 学生学号学生学号 201330581089201330581089 班内序号班内序号 9 9 指导教师指导教师 马楚仪马楚仪 课程编号课程编号 135070135070 课程学分课程学分 1 1 学分学分 起止日期起止日期 2015 052015 05 1919 2015 07 032015 07 03 教师签名 日期 目录目录 第 1 章 选题背景 1 第 2 章 方案论证 设计理念 1 1 设计任务 1 2 方案论证 2 第 3 章 过程论述 2 1 总电路 2 2 分频模块 3 3 扫描模块 4 4 译码模块 5 第 4 章 结果分析 6 1 分频模块 6 2 译码模块 6 3 扫描模块 7 4 总电路 7 第 5 章 课程设计总结 8 1 收获与心得 8 2 致谢 9 附录 1 参考文献 10 参考文献 10 附录 2 部分采用 VERILOG 语言编写的模块的原程序 10 扫描模块程序 10 译码模块程序 15 1 课题名称 数字电子技术基础课题名称 数字电子技术基础 第第 1 章 选题背景章 选题背景 在现代电子工业的控制电路中 键盘扫描和显示电路对系统的调 试和设置有着重要的作用 随着 EDA 技术的发展 基于 FPGA 的扫 描键盘因其结构简单能有效防止机械键盘按键抖动带来的数据错误等 优点在许多电子设备中都得到了广泛的应用 本课题的内容是设计一 个电路来识别 4x4 矩阵键盘 单独按某个键 数码管显示该键的数字 如 J0 显示 00 J1 显示 01 J15 显示 15 同时发出发出一音 嘀 同时按两个或以上按键 数码管显示 ER 发出一音 嘀 连续发出 嘟嘟嘟 直到松开按键 声音关闭 所主要解决的 问题是设计电路 通过运用 Quartus 软件平台生成电路符号 并仿 真分析 消除各种存在的问题 直到下载到芯片中通过硬件实现上述 所要求的功能 对该系统要求 应具有集成度高 稳定性好 设计灵 活和设计效率高等优点 设计指导思想 矩阵键盘识别电路从原理上讲就是一个典型的数 字电路 包括组合逻辑电路和时序逻辑电路 设计键盘扫描程序 将 程序划分为时序产生模块 键盘扫描模块 键值译码模块 蜂鸣器模 块四个模块 时序产生模块为键盘扫描和蜂鸣器模块产生时钟信号 键盘扫描模块采用行扫描法对 4 4 矩阵键盘进行扫描 键值译码模块 将所按键值译码为共阴极 8 位 7 段数码管的显示码几个模块组合起来 实现键盘扫描的设计要求 第第 2 章 方案论证章 方案论证 设计理念设计理念 1 设计任务 设计任务的设计功能包括 1 单独按某个键 数码管显示该键的数字 如 J0 显示 00 J1 显示 01 J15 显示 15 2 同时按两个或以上按键 显示 ER 2 3 单独按某个键 发出一音 嘀 同时按两个或以上按键 发 出一音 嘀 连续发出 嘟嘟嘟 直到松开按键 声音关闭 1 设计理念 将矩阵键盘识别电路各个功能分成模块来实现 包括分频模块描模块 键值译码模块 蜂鸣器模块四个模块 在主 电路中通过连线实现识别功能 分模块能使电路看起来更有条理 接 线更清晰 功能更加可靠 排查错误更简单和更有针对性 2 方案论证 一 识别方式 判断键盘上哪个键被按下 可以采用静态译码法 或扫描法 静态译码法原理简单 容易理解 但电路复杂 扫描法比 较抽象 电路相对简单 通常采用 扫描法又称为逐行或列扫描查询 法 它是一种最常用的多按键识别方法 综上 选取扫描方法 二 实现方式 方案 1 采用用门电路和各种寄存器等搭建组合时序电路的方式 来实现 可以采用移位寄存器循环扫描信号 并通过数据选择器来判 断各种情况 这种方法实现原理简单 但搭电路的时候复杂 接线繁 多 尤其是识别两个以上的按键时不灵活 容易漏接错接 且检查错 误比较麻烦 方案 2 采用用硬件描述语言 Verilog hdl 来实现 Verilog hdl 语 言和 c 语言比较类似 所以上手比较快 因此 虽然之前没接触过该 语言 但在做课程设计的这段时间里 用它来实现课程设计所要实现 的功能还是可以的 用这种方法的话 程序简单易懂 而且比较简洁 思路比较清晰 尤其在识别两个按键以上的时候优越性特别明显 方案 3 采用用硬件描述语言 vhdl 来实现 与 Verilog hdl 相似 但是 vhdl 的语法比 Verilog hdl 复杂一点 由于没有学过 对该语言一 窍不通 所以该方案不考虑 综上所述 选取方案二 第第 3 章 过程论述章 过程论述 1 总电路 作用 将各个模块串连起来以实现识别电路的功能 3 图 1 总电路图 输入 1kHZ 的频率 首先经过分频器成 1HZ 100HZ 250HZ 500HZ 的脉冲 用于驱动蜂鸣器 1kHZ 的脉冲进入扫描模块 扫描 模块将扫描结果分别送给显示译码器模块和蜂鸣器模块 从而驱动两 个 led 数码管显示结果 只有一个键按下时 蜂鸣器发出一音 嘀 当同时按两个或以上按键 发出一音 嘀 连续发出 嘟嘟 嘟 2 分频模块 作用 在输入脉冲只有 11kHZ 的情况下 将 1kHZ 的脉冲分频 成 1HZ 100HZ 250HZ 500HZ 的脉冲 用于驱动蜂鸣器 不同的频率 使蜂鸣器发出不同的声音 4 图 2 分频模块电路图 图中各成分的作用 和成分之间的交互 输入 1kHZ 的脉冲 运 用 7490 芯片构成分频电路 当 7490 的 SET9A SET9B CLRA CLRB 管脚接低电平 CLKA 接 QD 输出管脚 CLKB 接输入脉冲 QA 输出脉 冲 构成十分频电路 依据这样的原理 经过三个十分频即可输出 100 1HZ 的脉冲信号 分频模块的下部分是用 D 触发器构成的二分频电路 因此可以分 频出 500HZ 250HZ 的脉冲信号 3 扫描模块 作用 判断按键的状态 即识别按键 按照识别结果输出一个按 键标志位 flag 错误按键标志位 flag2 和按键值 key value 图 3 扫描模块电路逻辑符号图 图 4 矩阵键盘结构图 5 程序见附录 各成分的作用 和成分之间的交互 扫描流程 1 判断键盘中有无键按下 将全部列线 KR0 KR3 置低电平然后检测行线 KL0 KL3 的状态 只要有一列的电平为低 则表示键盘中有键被按下 而且闭合的键位 于低电平线与 4 根行线相交叉的 4 个按键之中 若所有行线均为高电 平则表示键盘中无键按下 2 判断按键所在的位置 在确认有键按下后 即可进入确定具体闭合键的过程 其方法是 依次将列线置为低电平 即在置某根列线为低电平时 其它线为高电 平 例如 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 时 当 KL3 KL2 KL1 KL0 输出至少两个管脚为低电平时 也判断为多个按键按下 即就报错 即识别思想是在一次轮回中 依次将 KR0 KR1 KR2 KR3 分别 置为 00000 0111 1011 1101 1101 此次扫描结束才判断扫描结果 判断按键错误的顺序是先列后行 表 1 按键位置与数码的关系 KR KL J0 J1J2J3J4J5 1110 11101101 11101011 11100111 11101110 11011101 1101 J6J7J8J9J10J11 1011 11010111 11011110 10111101 10111011 101 1 0111 1011 J12J3J14J15 J16 即报错标志 6 1110 01111101 01111011 01110111 0111defualt 4 译码模块 作用 将输进来的 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 01001 01010 01011 01100 01101 01110 01111 10000 led1 输出 00111111 00111111 00111111 00111111 00111111 00111111 00111111 00111111 00111111 00111111 00110000 7 00110000 00110000 00110000 00110000 00110000 01111001 led2 输出 00111111 00110000 01011011 01001111 01100110 01101101 01111100 00000111 01111111 01101111 00111111 00110000 01011011 01001111 01100110 01101101 01110111 图 7 译码模块的仿真波形图 3 扫描模块 扫描程序依次将 KR0 KR1 KR2 KR3 置 0111 1011 1101 1110 进行扫描 图 8 扫描模块的仿真波形图 8 4 总电路 在时钟的控制下 扫描程序依次将 KR0 KR1 KR2 KR3 置 0111 1011 1101 1110 进行扫描 如果第一个键按下时 此时 flag 置一 数码管中 led1 led2 都置00111111 其他的同理 图 9 总电路仿真波形图 第第 5 章 课程设计总结章 课程设计总结 1 收获与心得 通过本次课程设计 我收获到在课堂上所不能给予我的知识和处 理问题的能力 也深刻体会到 正如老师在任务书中说的一样 做设 计是一件很辛苦的事情 千万不能够浮躁 想走捷径 只有静下心来 根据本课程的知识 查找资料 学习前人经验 才能有自己的作品 在设计过程中 感觉自己收获到了很多比仅仅做题 上课更丰富的知 识 同时也加深了对数电知识的理解 并且这个过程现在回想起来真 的很奇妙 自己能够独立地运用自己学的知识来设计电路 真的很 有成就感 让我感受最深的是在这次设计之中出现的那些问题 真的 做设 计如同人生 并不是一帆风顺的 也不能一蹴而就 从选择矩阵键盘 的这道题开始 就意味着我要开始接受一个新的挑战 说实话 一开 始选择这道题目是因为之前有接触过矩阵键盘 后来才发现用数电知 识来实现和我之前接触的有特别大的区别 真的可以说天壤之别 在 选择方案的时候 一开始挺纠结 是要用描述语言还是用搭电路的方 法 因为我之前没接触过硬件描述语言 后来通过论证 果断选了硬 件语言 硬件语言对我来说真的是一个新的东西 所以这不得不说是 9 一个新的挑战 也正因为此次设计 我对 Verilog hdl 语言有了一个大 概的了解 选择了用描述语言来描述电路 首先就是要补充知识 我把数电 课本的关于硬件语言的那章看了 然后就到处于找关于 Verilog hdl 的 语法资料 在写扫描程序的过程中 单个按键检测比较容易 但当然 这个过程出现了很多小问题 这些小问题有时候也是挺难发现的 有 时候就改了一个地方 然后程序就可以正常工作了 所以程序编译了 数不清 n 遍 出现问题的时候就找找书 例如阻塞语句和非阻塞语句 的区别 还有 case 语句在 Verilog hdl 中的应用等 尤其是阻塞语句 和非阻塞语句 花了很久才搞懂是什么回事 最困难的部分是两个以 上按键的检测 首先是扫描方法 如何检测出两个以上的按键 真的 想了好久 看着那个矩阵键盘原理图想了不知道多少遍了 一开始想出来的程序 按照原理 它应该能够检测出不同行的两 个按键以上的 但是结果却出乎我意料 竟然只能够识别同一列的两 个以上按键 然后检测很久也没发现问题 真的考验人的耐心 奇怪 的是在之后的写的程序 没怎么改 它就正常工作了 之后用它又写 了一个程序 虽然感觉那个原理能够检测任意两个以上按键但结果却 是只能检测不同行 迫于无奈 只能改另外一种扫描方法 前一种扫 描方法由于时间关系 只能先放下查找它的错误 自己感觉可能对 Verilog hdl 有些细节的东西还不是很清楚 可能这也是此次设计遇 到的最大问题 之后的那个程序扫描方法在实现过程中也是遇到各种 问题 经过查资料 最后很幸运都解决了 在程序调试的时候 需要 的是发现问题的细心和耐心 程序问题才能够一一解决 数电课程设计过程充满挑战 既有有趣的地方 又有困难的让人 想要放弃的地方 每当想到一个新方法 就想去用它 验证它 有时 睡在床上想着 想出一些解决方案 于是跳下床 到电脑前操作 这 也许就是它的魅力 每一个困难都让人跃跃欲试下想要克服它 在每 一个问题解决的背后需要一颗有耐心的心和思考的大脑 在不断发现问题和解决问题的过程中 收获的不仅仅是知识 更 是一种主动的态度 学习是一种态度 我觉得我很享受做课程设计的 过程 它让我经历了柳暗花明的喜悦 让我在这个过程中的到很多的 满足感 2 致谢 衷心感谢老师在实验过程中的谆谆教导 通过实验 我更加巩固 10 了课堂上的知识 也感谢学校安排了这次数电设计 让我有了这次不 同以往的经历 增加了我实践的机会 附录附录 1 参考文献参考文献 参考文献参考文献 1 阎石 数学电子技术基础 北京 高等教育出版社 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 key flag1 input clk 定义时钟引脚 input 3 0 incol 定义横向数据输 入 output 3 0 outrow 定义纵向数据输 出 output 4 0 key value 定义识别的按键值 11 output key flag key flag1 定义按键标志 flag 表示一个 flag flag2 表示两个按键 reg 3 0 row reg 3 0 incol reg 寄存扫描行值 reg 3 0 outrow reg 寄存扫描列值 reg 2 0 state 状态标志 reg key flag key flag1 按键标志位 reg 4 0 key value 读取的状态值 reg 3 0 incol 1 incol 2 incol 3 incol 4 reg state1 state2 state3 state4 reg 3 0 statez 总的按键标志 always posedge clk begin case state 0 begin row 4 b0000 key flag 1 b0 key flag1 1 b0 if incol 4 b1111 begin state 1 row 4 b1110 end else state 0 end 1 begin if incol 4 b1111 begin incol 1 incol state1 1 b1 state 2 row 4 b1101 end else begin state 2 row 4 b1101 state1 1 b0 end 12 end 2 begin if incol 4 b1111 begin incol 2 incol state2 1 b1 state 3 row 4 b1011 end else begin state 3 row 4 b1011 state2 1 b0 end end 3 begin if incol 4 b1111 begin incol 3 incol state3 1 b1 state 4 row 4 b0111 end else begin state 4 row 4 b0111 state3 1 b0 end end 4 begin if incol 4 b1111 begin incol 4 incol state4 1 b1 state 5 end else begin state 5 state4 1 b0 end end 5 begin 13 statez state4 state3 state2 state1 case statez 4 b1000 begin incol reg incol 4 outrow reg 4 b0111 case incol 4 4 b1110 key flag 1 b1 4 b1101 key flag 1 b1 4 b1011 key flag 1 b1 4 b0111 key flag 1 b1 4 b0011 key flag1 1 b1 4 b1100 key flag1 1 b1 4 b1001 key flag1 1 b1 4 b0101 key flag1 1 b1 4 b1010 key flag1 1 b1 4 b0110 key flag1 1 b1 default key flag 1 b0 endcase end 4 b0100 begin incol reg incol 3 outrow reg 4 b1011 case incol 3 4 b1110 key flag 1 b1 4 b1101 key flag 1 b1 4 b1011 key flag 1 b1 4 b0111 key flag 1 b1 4 b0011 key flag1 1 b1 4 b1100 key flag1 1 b1 4 b1001 key flag1 1 b1 4 b0101 key flag1 1 b1 4 b1010 key flag1 1 b1 4 b0110 key flag1 1 b1 default key flag 1 b0 endcase end 14 4 b0010 begin incol reg incol 2 outrow reg 4 b1101 case incol 2 4 b1110 key flag 1 b1 4 b1101 key flag 1 b1 4 b1011 key flag 1 b1 4 b0111 key flag 1 b1 4 b0011 key flag1 1 b1 4 b1100 key flag1 1 b1 4 b1001 key flag1 1 b1 4 b0101 key flag1 1 b1 4 b1010 key flag1 1 b1 4 b0110 key flag1 1 b1 endcase end 4 b0001 begin incol reg incol 1 outrow reg 4 b1110 case incol 1 4 b1110 key flag 1 b1 4 b1101 key flag 1 b1 4 b1011 key flag 1 b1 4 b0111 key flag 1 b1 4 b0011 key flag1 1 b1 4 b1100 key flag1 1 b1 4 b1001 key flag1 1 b1 4 b0101 key flag1 1 b1 4 b1010 key flag1 1 b1 4 b0110 key flag1 1 b1 default key flag 1 b0 endcase end default begin incol reg 4 b0000 outrow reg 4 b0000 key flag1 1 b1 end endcase state 0 end 15 endcase end always clk or outrow reg or incol reg begin case outrow reg incol reg 8 b1110 1110 begin key value 5 b00000 end 8 b1101 1110 begin key value 5 b00001 end 8 b1011 1110 begin key value 5 b00010 end 8 b0111 1110 begin key value 5 b00011 end 8 b1110 1101 begin key value 5 b00100 end 8 b1101 1101 begin key value 5 b00101 end 8 b1011 1101 begin key value 5 b00110 end 8 b0111 1101 begin key value 5 b00111 end 8 b1110 1011 begin key value 5 b01000 end 8 b1101 1011 begin key value 5 b01001 end 8 b1011 1011 begin key value 5 b01010 end 8 b0111 1011 begin key value 5 b01011 end 8 b1110 0111 begin key value 5 b01100 end 8 b1101 0111 begin key value 5 b01101 end 8 b1011 0111 begin key value 5 b01110 end 8 b0111 0111 begin key value 5 b01111 end default begin key value 5 b10000 end endcase end assign outrow row endmodule 译码模块程序 module yima key value led1 led2 input 4 0 key value reg 7 0 led reg1 led reg2 output 7 0 led1 output 7 0 led2 always key value begin 16 case key value 5 b00000 begin led reg1 8 b0011

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论