一:背景介绍
今天早上开工,将按键控制LED的循环左移一位,这一功能实现了一把,这是一个基础功能,我想要的最终实现方式是:状态机FSM;
进阶版本是:状态机通过按键控制其条件的转变,实现多个功能的轮流展示
说到按键电路,大家脑海里首先反应出的就是:按键消抖;

二:知识问答
我想问几个问题:
1)按键消抖有几种方法呢p>
两种
2)哪两种呢p>
硬件方法 + 软件方法;
3)软件方法如何实现呢p>
避过按键的抖动时间
4)按键的抖动期是多长p>
5ms~~10ms( 络给出的,其实也差不多了,10ms的抖动期,一般课题,都可以正确实现)
三:思路解析
说到消抖,单片机里已经给出了方法,也就是:如果监测到按键按下(按键出现低电平),跳过10ms的抖动期,然后再检测,是否仍然为低电平,如果是,那就是真的按下了;
那么FPGA呢,是不是也是这种方法p>
也可以这样做的,没有问题的,但是使用FPGA延时,需要注意的是:当按键按下后,会不会多次操作某一功能;这是关键,切记;
我推荐的是另一种方法;计数停止法。
核心思想:
如果监测到按键按下(按键出现低电平),那么就开始计数,如果计数到10ms时,仍然为0,则确定为:按键按下,计数停止
如果监测到按键未按下,或者,按键松开,计数值清零,然后一直计数,知道计满10ms为止。
四:框图
在此简略,稍后附上
五:小结
循环左移是一个简单地 实验,添加了按键消抖,在简单里加点料。
我现在还没有尝试使用状态机,写出描述语句,我的打算是:等所有课题或者项目的语句,描述了清楚后再用状态机;
简单铸就雄伟
我先将目前学习过的知识进行一个汇总,然后再逐个提升,简单心思,如此而已;
什么都想做,什么都想一步到位,那是牛人干的事情,作为一个普通人士,我选择逐层提升;
不要瞧不上,LED灯循环左移之类的,举3个例子:串口DB9,使用串行数据传输;SPI,使用串行数据传输;IIC,使用串行数据传输,数据需要移动,左移和右移是不是就用上 了。
大项目也是是由诸多的小项目汇总而成,小项目都还没用搞定,大项目也只能望海兴叹.。
就写这么多的,没法口吐莲花,简单的东西都能讲出花,就此搁笔,与诸君分享。
六:程序
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!