您的位置 首页 > 装修房产

【sqw】太牛了!业余单片机爱好者用DS3231制作自动亮度的4位数码管时钟

作为业余单片机爱好者,从开始到现在做得最多的是各种各样的手表。

从最初的纯软件计时,到DS1302时钟芯片再到后来的GPS、 SNTP对时的都做过。

纯软件计时一断电就全归零了,完全没有实用价值;DS1302的好一些,有断电走时,但误差较大,走时不准;GPS授时准确度无敌,可是在室内使用信号不好,还要拖一根线到窗台或室外,显得不够简洁;SNTP比较完美,但只适用于有WIFI的地方。还有传说中美信的高精度时钟芯片DS3231没有玩过。最近事不多,就用它做了个实用的时钟。

DS3231简介:

DS3231 是低成本、高精度 I2C实时时钟 (RTC),具有集成的温补晶体振荡器 (TCXO) 和晶体。该器件包含电池输入端,断开主电源时仍可保持精确的计时。集成晶体振荡器提高了器件的长期精确度。

DS3231采用 16引脚、300mil的 SO封装。RTC 保持秒、分、时、星期、日期、月和年信息。少于31 天的月份,将自动调整月末日期,包括闰年补偿。时钟的工作格式可以是 24 小时或带 AM/PM 指示的 12 小时格式。提供两个可编程日历闹钟和一路可编程方波输出。地址与数据通过 I2C双向总线串行传输。精密的、经过温度补偿的电压基准和比较器用来监视 VCC状态,检测电源故障、提供复位输出,并在必要时自动切换到备用电源。另外, RST监视引脚可以作为手动按钮输入以产生外部复位信号。

♦0°C 至 +40°C 范围内精度为 ±2ppm

♦-40°C 至 +85°C 范围内精度为 ±3.5ppm

♦为连续计时提供备用电池输入

♦低功耗

♦实时时钟提供秒、分、时、星期、日期、月、年信息,并提供有效期到 2100 年的闰年补偿

♦两个日历闹钟

♦可编程方波输出

♦快速 (400kHz) I2C 接口

♦3.3V工作电压

♦数字温度传感器输出:精度为 ±3°C

DS3231管脚定义和芯片实物图

显示部分使用TM1650驱动4位0.8寸的共阴极数码管。TM1650是天微生产的一款数码管驱动,2线串行驱动,8级亮度调整,并且支持28个按键扫描。只要把要显示的数据写入其中就能正确的显示,就不用再去傻傻地写动态扫描的函数了,硬件连接也更简单。用起来很方便。

TM1650管脚定义和芯片实物图

4位共阴0.8寸数码管

MCU的选用:

先计算了下I/O的占用,I2C 接口2个,TM1650用 2个,DS3231的SQW1个(1HZ方波用于刷新显示)。这样仅仅用了5个I/O口,配合DS3231的3.3V供电,就选用了手头现成的STC 15L104W单片机。

STC15L104管脚定义和芯片实物图

STC手册上有用普通I/O模拟简易ADC的介绍,正好还有一个I/O未用,就加个光敏电阻做光线感应来自动调整数码管的亮度。

用AD画图、制板原理图:

画好的PCB:

热转印制板、三氯化铁腐蚀、钻孔,失败总是难免的

焊接完成:

数码管贴一片亚克力增加可读性

完成后的样子:

STC15系列单片机用普通I/O做简单ADC的思路就是利用上升沿中断,通过电容充放电来检测外部光线强度,再去调整数码管的亮度。数码管的亮度通过TM1650来实现。手册上有例程,拿来改下就能用了。本制作光敏电阻接在P3.3口。硬件如图:

光线感应调试,数码管显示大体的充放电时间。

尝试着做了个动图帧数较低大家见谅

一些PCB细节图片

摆拍了几张

至于DS3231和TM1650的驱动,互联网上有现成的的函数。DS3231的SQW输出1HZ方波,单片机在方波的每个下降和上升沿产生中断然后读取DS3231的时间,再发送到TM1650的显示寄存器去刷新数码管的显示就行了。放置了2个按键用来调节时间。由于是自己制板,受单面PCB的限制,布线颇费了一番周折。不过每天看到自己的“作品”正常的工作,还是很有成就感的。

谢谢观看!

关注我们每天更新数码资讯及拆机图文手工DIY技术文章

浏览更多精彩内容请登录数码之家网站

技术交流请联系原作者

作者:aqxgm

本文来源:数码之家

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“sqw”边界阅读