项目名称:基于GD32E231的电子数码闹钟
项目简介:
本项目实现的功能比较简单,此次活动是DIY,体现的是自由化,凭个人想法创做作品。前段时间由于一直忙于调试样品,准备去上海参展,因此只能抽挤下班时间调试一下该项目的代码。为做这个项目之前单独打样了一个带键盘,带LED显示,以及带蜂鸣器的PCB,原理图与实物正如我之前发出的分享帖子:
https://bbs.eeworld.com.cn/thread-1079621-1-1.html
但是发现调试时ADC的配置老是出问题,采集的按键值不稳定,咨询了网友跟公司的同事,也搜索了一下关于GD32芯片ADC转换的资料,但是还是没能采集到唯一精准值,因此不得不转而换原来在学习做的单片机最小系统板,采用gpio口的方式实现按键,但是由于板子按键生锈了,按下键加了消抖处理,还是不怎么灵敏。所以后面想到了用串口代替键盘输入,而且能够实现远程设置时间和闹钟的开启关闭。其实如果有一个蓝牙模块,通过串口采用一样的原理就能实现远程控制挂在墙上的数码闹钟。本来考虑换用红外遥控来实现功能的,但时间仓促,因此就只好采用通过电脑串口工具,发送指定的字符命令串,加之设定日期时间的容错处理。经过实测,时钟跑的非常精准,设置闹钟精确到某月某日某时某分,方便快捷。
系统框图:
简介各部分模块的实现功能:
PC端负责替代键盘输入功能,可以设置校准时间,闹钟开启与关闭。该功能需要借助串口工具,下发的数据经过串口发送给GD32E231MCU,然后经过GD32E231进行判断,是设置时钟方式,则通过GPIO模拟与DS1302模块通讯,执行写入设定时钟命令;如果是设置闹钟方式,则将数据存储在MCU中,不间断的读取DS1302的实时时钟,一旦满足当前的实时时钟与设定的闹钟数相同,则开启蜂鸣器,同时OLED屏幕上提示闹铃图示,响铃30秒。如果设置不符合指定合法的格式,则会报错,并OLED显示。由于GD32E231板间提供电池供电接口,采用板间上的四盏灯循环显示,与OLED上的电池图标相互映衬。
下面是几张如何正确设定校准时间,设置开启关闭闹钟。
关于DS1302的控制指令,如下图所总结的:
心得体会:
本次参赛看到许多网友都能快速将预设的项目功能做出来,本人实感羡慕。论坛里的网友很热心,自主学习的人有许多,我得向他们学习。本次活动中不中奖倒不是很重要,但在此活动中学到了不少开发实用的东西,包括处理问题上的逻辑性锻炼。通过参加这次活动,我深刻认识到与其它网友的差距,希望今后能够在此平台上,与大伙积极交流,抽出多点的时间来扩展一下自己的编程能力。
工程源码:
演示的视频:
https://v.youku.com/v_show/id_XNDI0MDY0NjMwOA==.html?spm=a2h3j.8428770.3416059.1
本帖最后由 yin_wu_qing 于 2019-6-24 11:02 编辑