【参赛】DIY一个精准又好看的大字体点阵时钟
本帖最后由 河西老道 于 2021-2-5 09:10 编辑楼主是一位业余的单片机爱好者,从入门以来,做过好多的时钟。软件计时、DS1302、DS3231、WIFI、GPS授时啥的都玩过,显示部分用过各种尺寸的数码管、1602、12864液晶、8x8点阵等等,一直以为再也不会做这玩意了。不过前些日子网购时偶然看到了大尺寸的5*7方形点阵模块,感觉用来做个时钟应该很漂亮,一冲动就买了一些回来,那就再折腾一把呗。
买回来的点阵,个头挺大的
本次制作的目的是做一个颜值高、简洁、精准又实用的时钟,摒弃秒显、闹钟、遥控等不怎么用的着的功能,只做时分显示。大体上比划了一下,确定用5片点阵。使用个人认为最好看的5*7字体,时钟的显示格式为12:38。没错,就是这么简单。
主控MCU还是常用的51单片机,型号选择了STC15F2K60S2,QFP32封装,免晶振,免复位电路。因为芯片支持8路A/D,就用其中一路配合光敏电阻做了自动亮度控制。
作为一个计时工具来说,最重要的一点就是时间的准确性了,所以时钟芯片选用只有± 5ppm误差的DS3231MZ,最大年误差只有2分多钟,家用完全OK。并且SOP-8的封装占用面积更小,布线也更方便。
DS3231MZ简介:
DS3231MZ是低成本、高精度I2C实时时钟(RTC)。该器件包含电池输入端,断开主电源时仍可保持精确计时。集成微机电系统(MEMS)提高了器件的长期精确度,并减少了生产线的元件数量。DS3231MZ采用SOP-8器件封装。RTC保存秒、分、时、星期、日期、月和年信息。少于31天的月份,将自动调整月末的日期,包括闰年修正。时钟格式可以是24小时或带AM/PM指示的12小时格式。提供两个可设置的日历闹钟和一个1Hz输出。地址与数据通过I2C双向总线串行传输。精密的、经过温度补偿的电压基准和比较器电路用来监视VCC状态,检测电源故障,提供复位输出,并在必要时自动切换到备份电源。另外,RST监测引脚可以作为产生微处理器复位的按键输入。
特性
-40°C至+85°C温度范围内, 计时精度保持在±5ppm(±0.432秒/天)
为连续计时提供电池备份
低功耗
完整的时钟日历功能包括秒、 分、 时、 星期、 日期、 月和年计时, 并提供有效期到2100年的闰年补偿
两个日历闹钟
1Hz和32.768kHz输出
复位输出和按钮去抖输入
高速(400kHz) I2C串行总线
+2.3V至+5.5V电源电压
精度为±3°C的数字温度传感器
-40°C至+85°C工作温度范围
SOP- 8封装
通过美国保险商实验室协会(UL)认证
后来想到做个室温显示貌似挺有用,冬天测量下供暖温度什么的,就把DS18b20加了上去。
DS18b20简介:
独特的单线接口仅需一个端口引脚进行通讯
每个器件有唯一的 64 位的序列号存储在内部存储器中
简单的多点分布式测温应用
无需外部器件
可通过数据线供电。供电范围为 3.0V到 5.5V。
测温范围为-55~+125℃(-67~+257℉)
在-10~+85℃范围内精确度为±5℃
温度计分辨率可以被使用者选择为9~12 位
最多在 750ms 内将温度转换为 12 位数字
用户可定义的非易失性温度报警设置
报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件
与 DS1822 兼容的软件
应用包括温度控制、工业系统、消费品、温度计或任何热感测系统
点阵的驱动是常用的方案,行驱动为APM4953双P沟道MOS管,列驱动为74HC595。74HC595是具有三态输出功能(即具有高电平、低电平和高阻抗三种输出状态)的门电路。输出寄存器可以直接清除。具有100MHz的移位频率。
这里有一个问题:5片5*7点阵是25列,而一片74HC595驱动8列,这样如果用4片的话,最后一片74HC595只用到一列,3片的话又不够用,直接逼死强迫症,思来想去无法解决,后来有一天晚上夜观天花板冥思苦想,终于悟出了一个方案,把第25列拿出来用三极管单独驱动不就行了?就用搭了个电路简单的试了下,发现完全可行。
所有的元件、电路都已选好,开搞。画好的原理图如下:用2个按键实现简单的控制,并预留了红外遥控,后续可以升级。一个蜂鸣器可以做操作提示和整点报时,OK,确定没有落下什么。
画好的PCB,3D视图下看着还挺漂亮的。画的过程各种烧脑还费烟。
画完后看了下PCB打样的报价,不到50块的价格可以做5片,很实惠。提交后三五天就收到了制作完成的PCB。
可以愉快的装配了,就是那一堆0603封装的电阻手工焊接有点烦。
左侧,蜂鸣器、红外、DS18B20依次排列
右侧:TYPE-C供电插座、按键和光敏电阻。
撕掉保护膜
定做的透明亚克力到货,特意做了黑茶、灰、红三种颜色,看看哪种看着好看就用哪种。
比较了一下,还是黑茶色的顺眼
最终成品就是这样了,看着还是非常漂亮的是吧!
开始调试,就是发现各种坑然后又各种填坑的过程。比如把点阵的顺序弄反了:列顺序本来是01234,56789……这样的,因为把封装弄错了,顺序成了56789,01234,折腾了好久总算补救好。终于可以正常的显示了,开心……
趁着正常显示的高兴劲,又焊了一片。零乱的调试现场
又花了好几天的业余时间,总算把水平的流动显示写好,流动显示内容为日期-时间-温度,上下滚动及其他花样的显示实在是不想折腾了,太费脑子。最后完善下,把年月日及时间的调整写出来,界面做的很简单。
做了3种字体,可以用按键在Fnt中选择
字体1:标准的5*7字体,直接从LCD1602字符手册上抄的。
字体2:来自yanzeyuan大神。
字体3:4*7点阵字体,和常见的数码管有点类似。
再焊一片,3种字体拍个全家福吧
一些美图:
把所有能发现的BUG解决掉,可以正常的投入“战斗值班”了。
后记:在消耗掉大量的业余的时间、耗费了也不算少的金钱、并历经各种痛并快乐着的“折磨”后,总算完成了这次制作。得益于DS3231芯片的高精度,试过半个月1秒不差,自动亮度功能也很实用。外观也是个人做过的各种时钟里面最漂亮的,没有之一。每天起床、洗漱、吃饭、上班、回家、发呆、听广播、听音乐、打游戏、DIY、睡觉,无论何时,只要一抬头,就看见他在那里默默地守侯着,陪伴着,温暖着,感动着。
很多设计参考了nixieclock.org网站的LED点阵时钟,向yanzeyuan大神致敬!
aqxgm 发表于 2021-2-4 15:09
好的,我会尽快完成
不过主帖好像不能编辑了
重新拍一张照片,把你的ID和完成 时间发一个帖子。 20年前的 DIY。。。。。。
时钟很漂亮! 按照大赛的规定,请你把你的ID和作品完成时间放在作品上。 做的很漂亮,佩服,这个小钟真的是非常实用的,可惜我不会做。买的德生收音机自带的时钟总是过段时间要调一下时间。 本帖最后由 aqxgm 于 2021-2-4 15:08 编辑
简单的录了一个视频,看看能不能贴上来
https://v.youku.com/v_show/id_XNTA5NzE4MTMwOA==.html
好像不能直接播放,感兴趣的同学点链接看一下吧 河西老道 发表于 2021-2-4 11:55
按照大赛的规定,请你把你的ID和作品完成时间放在作品上。
好的,我会尽快完成
不过主帖好像不能编辑了 本帖最后由 Carnot 于 2021-2-4 16:29 编辑
如果把发光元件换成WS2812,你会发现整个作品更酷炫了,哈哈哈。
WS2812很神奇的,单线数据传输,基本上无限级联,驱动非常简单,但是效果很好。有个类似的项目好像叫AWTRIX
我这两天在给我女儿做一个类似的东西,板子过两天到,可惜亚克力打样淘宝都不发货了,年前做不好了。
Carnot 发表于 2021-2-4 16:27
如果把发光元件换成WS2812,你会发现整个作品更酷炫了,哈哈哈。
WS2812很神奇的,单线数据传输,基本上无 ...
WS2812玩过一次,时序要求很严格,对51单片机相对不够友好,试着用ESP8266+库玩了会,成功驱动后就放在一边了 aqxgm 发表于 2021-2-5 10:07
WS2812玩过一次,时序要求很严格,对51单片机相对不够友好,试着用ESP8266+库玩了会,成功驱动后就放在一 ...
51倒是确实不好搞,其他平台的话,库很完善,用起来就很方便了。 很漂亮的时钟!3231就是精准:lol 像素低了一点。整体来说不错。我16年前用分立元件和第一代LED做了一个8位的万年历。耗时6个月。全部分立元件。 BIAN新文 发表于 2021-3-10 19:41
像素低了一点。整体来说不错。我16年前用分立元件和第一代LED做了一个8位的万年历。耗时6个月。全部分立元 ...
高手!:lol 发个图看看 有机会一定发出来。我在外地工作,目前这个万年历在老家依旧坚守岗位。只是每年会有几分钟的误差,当时技术有限还没有门电路,逻辑电路,震荡电路等都没有现在成熟。 带秒显更有动感....