|
主控:STC8H4K64TL LQFP48
计时:RX-8025T(主) + STC8H4K64TL内部RTC(辅)
温湿度测量:SHT35
环境光照测量:GL5516光敏电阻(亮电阻5~10KΩ,暗电阻200KΩ)
显示:
数码管、LED均使用共阴驱动方式。
(1)1个4位带时钟点0.8寸数码管+1个2位0.4寸数码管显示时间(小时+分钟+秒)
(2)1个1位0.8寸数码管显示星期日(1~7)
(3)1个4位0.8寸数码管分时显示公历日期(月+日)、温度(LED灯指示区分)
(4)1个4位0.8寸数码管分时显示农历日期(月+日)、相对湿度(LED灯指示区分)
4个按键:
(1)减:设置日期、时间时数值短按减1,长按快减1
(2)设置:设置日期、时间时短按切换设置项;闹钟响状态短按停响并延时贪睡时间间隔时间后再响
(3)加:设置日期、时间时数值短按加1,长按快加1;闹钟显示非设置闹钟时间状态短按切换闹钟开/关
(4)功能:切换时间/闹钟时间设置
(5)贪睡延时闹钟中短按任意键取消贪睡闹钟,恢复设置的闹钟
闹钟蜂鸣:一般闹钟蜂鸣驱动信号频率为2KHz,不过,这种共振频率的蜂鸣器几乎都是电磁式的,比较耗电,如果不在乎音色,可以使用常见的4KHz压电式蜂鸣器。
温湿度测量:1分钟的第59秒测量一次。
环境光照测量:约1mS做一次ADC,取128次AD平均值做亮度分级依据,大致分8个等级与STC8H4K64TL的8档LED显示亮度匹配。100mS处理一次亮度,当前亮度等级与目标亮度等级不一致时加/减1档。
公历日期+农历日期/温度+相对湿度切换:5秒切换1次,0~5秒显示公历日期+农历日期,5~10秒显示温度+相对湿度,10~15秒显示公历日期+农历日期 ……
原理图:为减小通过单个COM脚的电流,使用PNP三极管扩流,全显最亮时整机工作电流约120mA;I2C 100pF滤波电容C5、C6仅预留,通讯速率较高时不焊或减小(可同步减小上拉电阻阻值)。
因为LED显示比较耗电,为减少负载变化对ADC的影响,ADC参考电压使用二极管隔离加电容储能稳定,正常显示时两个电压波形对比如下图
RX8025T使用二极管隔离+电容储能供电,实测使用1000uF储能可以维持RX-8025T计时>30分钟。
焊好的板子实物图:因为2个数码管使用立创商城上数码管封装与买的实物电气连接不一致,实际上背面有几根跳线。那个USB口可以模拟USB下载程序,但速度极慢,纯属鸡肋。
显示切换效果(强光照)
低光照调低显示亮度(由于数码管、LED显示变化时会影响环境亮度检测,光敏电阻最好用圆柱形管子罩起来)
原理图、PCB嘉立创EDA工程(原理图和PCB不一致,原理图较新,PCB仅供参考)#24楼有更新#
源程序
(1)程序未开启看门狗,可修改Option.h中的条件编译定义开启看门狗;
(2)为降低I2C通讯速率,程序烧录时选择主频=24MHz。
(3)虽然没有显示年份,但为了正确转换农历、星期日,需要设置年份(长按设置键)。
(4)计时以RX-8025T为主,主控上电时先读取RX-8025T的数据,如果读到预设数据,使用读到的数据并保存到STC8H4K64TL内部RTC,如果超过约5秒没有从RX-8025T读到时间数据,从内部RTC获取时间,如果从RX-8025T读到时间数据,则恢复为使用RX-8025T计时。为简化闹钟处理,闹钟功能使用内部RTC闹钟功能实现。
补充内容 (2025-4-29 11:05):
程序使用了大于31的中断号,如果无法编译,尝试用“拓展Keil的C代码中断号”工具处理一下Keil。
补充内容 (2025-5-1 08:58):
工程设置编译完成后用外挂工具计算目标文件校验和,缺少这个工具时会报错,取消这个设置功能就行。
补充内容 (2025-5-1 08:58):
Options for Target…… -- User -- Run User Programs After Build/Rebuild -- Run #1不打勾
补充内容 (2025-6-29 21:09):
#24楼更新设计,增加Wifi对时功能。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|