基于STM32与3264点阵屏的多功能万年历

  • Post author:
  • Post category:其他




基于STM32与3264点阵屏的多功能万年历



一、前因

一次偶然的机会,笔者得到了一块二手的3264双色点阵屏,一番把玩过后发现这个屏幕的显示效果还是很棒的,就萌生了一个用这块屏diy的想法,思来想去还是做一款综合万年历比较实用,正好也可以检验一下自己技能是否掌握的扎实。



二、功能需求

结合自身能力以及需求后决定万年历需要支持但不限于以下功能:

  1. 温湿度测量
  2. 时间日期以及农历显示
  3. 可进行亮度控制
  4. 带有音乐的整点报时以及来电提醒



三、硬件设计

鉴于作品的复杂度整体板子用洞洞板搭建即可,主控芯片上采用stm32f103c8t6的核心板,不巧的是该主控没有自带dac,所以音乐的实现采用TL5615再结合一片W25Q128实现,温湿度采用AM2320,时钟芯片采用DS3231,再加上四个开关分别实现上,下,设置,整点报时开关的功能。由于笔者的焊功一般,这个部分就不放图了,下面直接放成品图。



四、软件设计

对于一个嵌入式系统来说,软件就像灵魂一样。软件的好坏直接影响到稳定性,用户体验等诸多方面。这部分笔者就不大费笔墨讲述了,文末会放出程序供大家参考,我只就一部分注意事项介绍一下。

  • 点阵屏的驱动部分是作品实现的关键,涉及到底层的程序建议大家去网上参考大神的程序自己修改可以事半功倍,只要实现一个能够刷新全屏幕的程序即可,当然如果对这部分感兴趣自己研究也是很不错的。在这部分整体实现思路是先在内存中划出对应屏幕大小的区域作为显存,然后使用一个定时器定期把该区域的内容刷新到屏幕上,我们要对屏幕内容进行修改就可以只对显存的对应区域修改就可以了。
  • 音乐报时部分的大体思路是先把音乐数据存储到W25Q128中去,需要播放的时候用定时器把所需数据送到DAC中去即可。需要注意的是音乐数据往往都比较大,f103c8t6的flash肯定是不够用的,所以烧写的时候需要别的芯片辅助,如果有条件也可以用jlink等工具。
  • 因为本次制作未使用RTOS,所以很多实时性的操作采用了定时器中断,好在该主控芯片有四个定时器,加上arm的性能很高,并未出现信息来不及处理的现象。值得一说的是,该制作已在笔者父母家运行了一年多时间,未出现异常,而且时间也很准,整体来说本次设计还是比较完善的。



五、总结

成品图如下:

在这里插入图片描述

在这里插入图片描述

这个作品完成已经有一年多的时间了,基本没有发现什么问题,偶尔可能会出现农历数据错误,在源码中修复即可。程序源码中还带有类似于wifi模块获取天气,红外遥控等半成品程序,权衡之后觉得这些功能对于父母来说可能过于花哨,就没加入到项目,感兴趣的可以自行研究参考。本次制作部分代码及创意来自网络,感谢大家共享的资料。与此同时,我也把程序放出来供大家参考,希望可以与大家一起进步。

程序链接:

https://download.csdn.net/download/qq_41757980/12356362



版权声明:本文为qq_41757980原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。