可预按键预设的实时时钟

时间:2022-12-20 23:21:27

1.KEY+DS1302+数码管

基本功能:

1)5个按键,设置DS1302的初值,分别是左移,右移,加,减,确定。

2)当设置当前位时,数码管闪烁。

改进:

1)进一步细化:由于24制小时,所以不能有25的情况,也就是当H[7:4]为0~1时,H[3:0]可在0~9之间,当当H[7:4]为2时,H[3:0只能在0~3之间,同理M[7:4]不能大于等于6...

2)增强功能:实现一个闹钟功能,可以对一个星期的每一天设置不一样的时间...

3)为了学习verilog模块化的应用,可以把闹钟的时间参数写进24LC04中...

4)闹钟可以用蜂鸣器播放音乐,音乐参数可以同样放进24LC04中

 

2.KEY+DS1302+LCD12864

基本功能:

在数码管基础上改的,只是显示模块变了,同样是按键设置初始时间,不再闪烁,而是用相应位所有点取反的方法来区别,但是却花了整整3天晚上的时间...

长时间做不出来的原因总结:

1)精神不够集中,走神。写代码的时候居然会想其他事,出现问题,大脑就想僵住了,其实只要没有读引脚,完全可以仿真来检查原因,一看就明白了,而且应该每个模块都有仿真,对于有读引脚的情况,也可以仿照夏的书上说的,模拟一个外设来观看波形。值得一试。

2)浮躁。其实这么几天,现在看来,主要问题只有一个,由于前2天,不去仿真,只晓得看实际结果,一仿真才晓得,问题出在哪里。还有就是一些细节也有问题,改了spi模块,把cs引脚拿到了控制模块里了,以为不会有问题,而且前几次仿真,只晓得看个大概波形,确实没办法找不出原因,仔细分析波形,才晓得,spi都偏了一个时钟...

3)乱。虽然现在实现了预期的基本功能,但是感觉还是很乱,在LCD如何跳读M4K的内容时,一直没有很好的办法,最后用了最笨的办法实现的,现在看来,纠结了这么多天,关键是自己没有很好的整理自己的思路,而且思路有点死板,不够活跃。有些时候感觉僵住了,无从下手。(以后无从下手时一定要仿真)

4)感觉现在越写越像C了,问题很严重,今天在办公室重看数电相关知识,解决了一些疑惑,(》=比==到底会多多少资源)对全加器,选择器...等基本单元有些印象了,现在自己的理解是:

   1.写代码的时候,应该考虑这个部分到底会综合成什么电路,像case里嵌套case这种情况我觉得就不好,这样写就相当于是把他当成C了,而应该从数电的思维方式出发,比如一个always模块里不能有太复杂的东西(嵌套,多种电路),其实只要打开RTL viewer 如果看起来很乱,一团糟,自己都无从下手,看不懂,那肯定不好。

可预按键预设的实时时钟

以上DS1302的驱动模块展开

 

可预按键预设的实时时钟

 

改进:

  1)进一步细化界面,甚至可以更改数字的字体

  2)做一个综合的东西,加上以前的东西以前的呼吸灯(可以按键设置闪烁频率,可以选择闪烁样式),加上上面的数码管改进功能,进一步感受模块设计。