一经调节模块的引脚无法配备上拉或下拉电阻

  硬件

  unsigned char
flag;//flag=0的时候,驱动层能够安装key,并把flag设为1;flag=1的时候,应用层能够读取key,并把flag设置为0

  别的要思考按钮的震惊难题,有四种消除措施,比方能够在认清到一回按钮按下之后0.3秒内不重复判定开关被按下。

  unsigned char
num[6] ;//应用层写,驱动层读,用于6位数据的展现

  公海赌船网址 1

  首先,不要误会,作者这里的总计器是指硬件的计算器,至于纯软件的一个钱打二拾四个结程序,乃至有高端功效的,举个例子能够求解方程以至可编制程序之类,作者今后找个时间的话说。这两日见到有人在博问里问类似的标题,原问是想设计一个具有数码管、有着4×4键盘的硬件里的顺序,不知情他现实想做怎么样,只是给了一部分建议。联想到还大概有总计器那个事物,那应该很轻易作为电子工程照旧微电子专门的工作的三个功课的花样出现。以前自身招实习生的时候,仿佛也早就叫其实现过总结器。这里给出一点方案,以供参谋。

  电源有各样方案,轻松点能够用电池也许usb,这里不作详细谈论。

  unsigned char
key;//以表示是哪个键按下,分别给0、1、2、3、4、5、6、7、8、9、+、-、*、/、=、退格编码为0~15

  硬件设计好了随后,须求统一筹算固件。

 

  设计有个别全局变量用来应用层和驱动层交互显示数据和所按按键。

  键盘矩阵则是以下电路那样的事物,由一批按钮组成,键盘矩阵对外8个确定性信号都接在调节模块的引脚上。别的,如决断定模块的引脚无法布署上拉或下拉电阻,那么PD0/PD1/PD2/PD3要么PD4/PD4/PD6/PD7/PD8将在接上拉电阻,那事关到键盘矩阵的检查测试原理。

  版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖。如要转贴,必须注明原文网址

  http://www.cnblogs.com/Colin-Cai/p/8185972.html 

  作者:窗户

  QQ:6679072

  E-mail:6679072@qq.com

     
 公海赌船网址 2

公海赌船网址 3

公海赌船网址 4

公海赌船网址 5

  数码管相对简便易行一些,日常的话,数码管每一种人显示的数字都分化样。如我图中的共阴6位数码管,当要展现某位的时候,片选非时限信号选用是拉低,其余片选拉高,然后再把要显得的数字所要点亮的管的引脚拉高,那样,要呈现的那一个人就展现出了数字,而其余的几个人未有任何展现。然后快速切换,每一个人都显得该显示的数字,那么遵照视觉暂留,我们就看出了整机的展现。

  固件

  框图如上,重要有4大模块,电源、调整、按钮矩阵、数码管。

  以上数占领冗余,在RAM极端受限的动静下,可以裁剪数据。

  调节模块,就看想用什么编制程序了,尽管想用单片机,能够选择卓越的51单片机、AVENCORE单片机、PIC单片机都足以,STM32自然能够,只是ARM能够做远比这么些复杂的政工,没必要杀鸡用牛刀。当然,想学学ARM极其是STM32的编制程序,能够用STM32。PIC单片机和51单片机自身只玩过汇编,可是以后单片机援救C语言都扶助的蛮不错,建议依旧C语言编程。

  大家第一要明白数码管和键盘矩阵的法则:

  如若调整模块选择的是单片机,那么我们平日是在裸机下编制程序,对于那三款单片机小编就像只玩过汇编,但今天都21世纪了,小编想起码也相应用C语言来娱乐。

  而至于计算器所要完成的最高6位加减乘除,很轻巧达成,根本没有须求运气总计,结合展现和按钮,构成应用层程序,想想叁个计算器的机能,你应该很轻巧的画出流程图,不是吧?

  假使作为学生,你采取的是cpld/fpga,作者也支撑您,我觉着一个能够和煦独自做出来的学员应当如故不错的,但也和事先管理器的程序完毕类似:分别安插键盘驱动模块、数码管驱动模块、计算模块,最后中间有几当中坚模块以一个场馆机形式存在,与任何八个模块都不断。当然,每一种模块内部也得以分小模块,举例数码管模块里面最棒把解码器单独落成叁个小模块,而计量模块里加减乘除都以单独的小模块。

  当然,也是有想娱乐数字设计的,那么cpld对于那几个须要是恰到好处的,没供给上FPGA,能够用很早从前的,价格也是有益。对于能源多少并未有握住的话,你也得以先做数字设计,再来选器件。

  数码管选择共阴或共阳,每种人一个片选,选个6位的,一共17个引脚,都接在调节模块IO引脚上,注意调节功率信号电平,须求的时候阳级接上拉电阻。

  公海赌船网址 6

自己的博客将要搬运二只至Tencent云+社区,特邀大家一齐入驻:https://cloud.tencent.com/developer/support-plan

  既然数码管的展现须求定期去切换彰显位,而键盘矩阵也亟需定期去切换输入,那么大家就足以安装贰个测量时间的装置,把那多个硬件的拍卖都挂在同五个定时中断例程上作为驱动层,其逻辑使用上述的原理来落到实处,能够每一遍中断给八个循环计数作为气象,做三个moore机老妪能解,至于0.3秒内不重复在竞相里展现就能够。程序中落到实处驱动层和应用层的等级次序分离,无论从调节和测量试验硬件仍然设计固件来说都以必得的,当然你也足以分的更加细,譬喻HAL层。当然,非要在这里把具有的漫天糅合在联合也是能够最后消除的,但档案的次序感差相当多,并且叁个初大方真的设计不好一个大的状态机。

 

  键盘矩阵只怕要复杂那么某个。首先,大家只要大家那边PD5、PD6、PD7、PD8都被大家接了上拉电阻,並且IO都为高阻接收状态,而不出口。我们这里只考虑三个键的辨识,其实键盘矩阵也能够辨认多少个键。大家想一想,假如有个别键按下去,举例左上角的S3按下之后,会发出哪些。在按下去在此之前,PD1、PD2、PD3、PD4和PD5、PD6、PD7、PD8里头并不联通。但当S3按下来,PD1和PD4连在了伙同。如果断定模块把PD4的输出射为高阻状态,那么只要PD0输入低电平,那么PD4读抽出来的应为低电平,不然为高电平。于是大家把PD1、PD2、PD3、PD4那4个引脚每一次只中间三个出口低电平,其余五个出口高阻状态,每回都去读取PD5、PD6、PD7、PD8,那么就足以依靠数值来推断毕竟是哪个按钮被按下。注意,此处PD1、PD2、PD3、PD4那4个引脚每一次只中间三个输出低电平的时候,别的多少个无法出口高电平,而应当是高阻,不然,假若有八个按钮被按下,则为封堵状态!

公海赌船网址, 

相关文章