完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
这是一个大概的模块划分和数据流向图,我们首先要通过矩阵键盘扫描来确定按下的键,然后把键值送给输入输出控制模块,来判断输入的是第一个操作数还是操作符,还是第二个操作数以及等号,可以说输入输出控制模块是整个计算器设计最核心的模块了,这个明天再总结,如果判断按下等号,那么计算模块就应该根据操作数和操作符来运算,并把运算的结果送到输入输出控制模块。因为在输入数据的时候,数码管也是要显示数据的,所以把计算的结果传回来一起处理,而且计算的结果也可以作为下一次计算的操作数,实现连续运算。计算模块还包括BCD转二进制以及二进制转BCD模块,另外由于涉及到负数运算,所以计算过程都是补码进行运算,计算结果再由补码转回原码,数码管显示模块和常用的数码管模块不同的地方就是它具有消“0”的功能,输入的时候每输入一位数据显示一位,对于没有输入的位数是不能显示“0”的,输出计算结果的时候也是一样,对于没有数值的位,是不能显示“0”的。
下面先总结以下矩阵键盘模块,使用矩阵键盘的原因就不多说了,就是为了节约IO口。矩阵键盘扫描的原理我简单介绍一下吧:
以4x4的矩阵键盘为例,同一行按键的一段被接到同一根先上,4行分别被接到4根,我们命名row0-row3;列同理,命名col0-col3。同时我们给row端接上上拉电阻,那么没有按键按下的时候row端是高电平,我们把4根row接到FPGA作为输入端,把col接到FPGA作为输出端。我们在初始状态下给col全部赋0输出,如果某一个按键按下,那么就会有一个col和一个row线被联通了,那么被联通的那根row就会给FPGA输入0,此时row是输入,我们可以很容易判断是哪根row被联通了,但是每一根row上连上了4根col,我们还不能知道具体是哪一个col,所以我们这时用到中学物理时学到的控制变量法,我们让col每次只有一根输出低电平(注意原来是4个全是低电平,在检测到有键按下后,变成只有一根输出低电平),依次扫描,知道检测到row端不全为1时,说明此时的row和col就是按下按键的坐标了。 转载于《电子技术应用》
以4x4的矩阵键盘为例,同一行按键的一段被接到同一根先上,4行分别被接到4根,我们命名row0-row3;列同理,命名col0-col3。同时我们给row端接上上拉电阻,那么没有按键按下的时候row端是高电平,我们把4根row接到FPGA作为输入端,把col接到FPGA作为输出端。我们在初始状态下给col全部赋0输出,如果某一个按键按下,那么就会有一个col和一个row线被联通了,那么被联通的那根row就会给FPGA输入0,此时row是输入,我们可以很容易判断是哪根row被联通了,但是每一根row上连上了4根col,我们还不能知道具体是哪一个col,所以我们这时用到中学物理时学到的控制变量法,我们让col每次只有一根输出低电平(注意原来是4个全是低电平,在检测到有键按下后,变成只有一根输出低电平),依次扫描,知道检测到row端不全为1时,说明此时的row和col就是按下按键的坐标了。
转载于《电子技术应用》
发布
通过vivado来实现串口通信(Verilog语言)
1333 浏览 1 评论
助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4
1041 浏览 0 评论
如何使用CAN通信如何实现对变频器的控制?
2408 浏览 1 评论
想请教一下华芯拓远的工程师关于ASIC芯片调试软件的问题
2113 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
2376 浏览 0 评论
高速总线背板设计
1873 浏览 49 评论
新技术VPX VME64总线介绍
6009 浏览 113 评论
电子发烧友网
电子发烧友论坛
查看 »
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 18:05 , Processed in 0.902309 second(s), Total 38, Slave 29 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com