切换到宽版
  • 88797阅读
  • 248回复

[C51]DS3231+TM1650+STC15L104做的4位0.56寸数码管迷你时钟(开源) [复制链接]

上一主题 下一主题
离线aqxgm
 

发帖
6034
M币
18071
专家
161
粉丝
518
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2015-11-27
— 本帖被 發騷友 执行加亮操作(2016-04-17) —
楼主是一名业余的单片机爱好者,从开始玩单片机到现在,做过不少的时钟。从最初的纯软件计时,到DS1302时钟芯片再到后来的GPS授时都做过。纯软件计时一断电就全归零了,完全没有实用价值;DS1302的好一些,有断电走时,但也存在走时不准的问题;GPS授时倒是准了,可是在室内使用信号不好,还要拖一根线到窗台或室外,显得不够简洁。于是把目光转向了美信的高精度时钟芯片DS3231(±2ppm ,年误差1分钟左右)。最近正好有空,就用它做了个实用的时钟。

从器件手册上摘抄的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


实物:
来自万能的淘宝,不知真假



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



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


IC选好后,发现如果用贴片元件的话,和数码管差不多大小的PCB就能放得下。




原理图(点击图片放大):





画好的PCB:


热转印制板:






焊接完成:



完成后的样子:




大小控制的不错吧



裁一片亚克力板:


最终的成品



正常服役中,精度待测试








后记:程序很简单,互联网上有现成的DS3231和TM1650的函数,稍微改一下就能用了。DS3231的SQW口输出1HZ方波,单片机在方波的每个下降沿产生中断然后读取DS3231的时间,再发送到TM1650的显示寄存器去刷新数码管的显示就行了。放置了2个按键用来调节时间。所用的单片机没有AD,不好实现自动亮度,只好靠时间去判断,白天亮度高晚上亮度低,用起来也很不错。
DS3231的后备电源原来打算用手机上拆的备份电池,但实际证明不好用,试过断电时间超过2个小时就不能保存时间了。后来焊接了一片1.5V的纽扣电池,断电后可以正常的走时了。
由于是自己制板,受单面PCB的限制,布线颇费了一番周折。不过每天看到自己的“作品”正常的工作,还是很有成就感的。


85楼下载源程序
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共42条打赏M币+141专家+1
离线wanjinjie

发帖
206
M币
191
专家
2
粉丝
11
只看该作者 1楼 发表于: 2015-11-27
不是还剩一个I/O吗!用作ADC啊!采集亮度倒是够了!网上大把i/o 模拟adc的例子!
离线aqxgm

发帖
6034
M币
18071
专家
161
粉丝
518
只看该作者 2楼 发表于: 2015-11-27
回 wanjinjie 的帖子
wanjinjie:不是还剩一个I/O吗!用作ADC啊!采集亮度倒是够了!网上大把i/o 模拟adc的例子! (2015-11-27 20:14) 回 wanjinjie 的帖子

普通I/O也能模拟ADC吗?记得以前看杜洋老大做过,但是不明白其中的原理
离线cushion

发帖
7768
M币
27672
专家
97
粉丝
1360
只看该作者 3楼 发表于: 2015-11-27
介刀竟然是个勾刀?

楼主留言:

钩刀,裁亚克力和覆铜板挺好用的

有病,要治
离线ysh711

发帖
2290
M币
3467
专家
2
粉丝
50
只看该作者 4楼 发表于: 2015-11-27
謝謝分享,厉害 厉害
离线阿甲

发帖
2441
M币
9452
专家
12
粉丝
53
只看该作者 5楼 发表于: 2015-11-27
会软件真好,现在做东西不用搭硬件了
离线wc5095928

发帖
15159
M币
0
专家
11
粉丝
1214
只看该作者 6楼 发表于: 2015-11-27
回 aqxgm 的帖子
aqxgm:普通I/O也能模拟ADC吗?记得以前看杜洋老大做过,但是不明白其中的原理 (2015-11-27 20:15) 回 aqxgm 的帖子

用外部模拟分压采集到的信号电压 让电压过 gpio 触发电压 然后通过电阻给电容充电  取时间间隔
“我们极容易变成奴隶,变成之后,还万分喜欢。”
                ——鲁迅
离线桃源客

发帖
3433
M币
1275
专家
18
粉丝
224
只看该作者 7楼 发表于: 2015-11-27
楼主排版技术真好,做得这样小,精品啊!
永远有学不完的电子技术知识。
离线桃源客

发帖
3433
M币
1275
专家
18
粉丝
224
只看该作者 8楼 发表于: 2015-11-27
楼主能放出源程序学习下吗?虽然也做了不少时钟,但都没有你做得那么精致的。
永远有学不完的电子技术知识。
离线aqxgm

发帖
6034
M币
18071
专家
161
粉丝
518
只看该作者 9楼 发表于: 2015-11-27
回 桃源客 的帖子
桃源客:楼主能放出源程序学习下吗?虽然也做了不少时钟,但都没有你做得那么精致的。 (2015-11-27 20:42) 回 桃源客 的帖子

可以的,随便拼凑来的程序