【保姆级教程】不到一元32位芯片 DIY迷你时钟

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

迷你时钟

前言

对于大多数大学生和初学开发者来说,单片机的学习是晦涩难懂的,但是运用制作项目的方式来学习,就会显得更加趣味易学。现基于CH32V003并以项目流程制作方式讲解如何制作一个迷你的多功能时钟。


一、项目介绍

  • 设计初衷

时间的流易和不可逆性是一个古今中外一再提到的内容,中国古代的计时仪器有太阳钟和机械钟两类。太阳钟是以太阳的投影和方位来计时,分别以土圭、圭表、日晷为代表。由于地球轨道偏心率以及地球倾角的影响,真太阳时和平太阳时是不一致的,机械钟应运而生,代表有水钟、香篆钟、太阳仪。

电子爱好者喜欢DIY各种创意时钟,主要有辉光管时钟、点阵屏时钟、液晶屏时钟这几种形态,基本功能包括计时、闹钟,还有些可以通过网络自动校时,天气预报等。

 我们这次准备设计一个超迷你的时钟,在一个0.56英寸的数码管的基础上实现基本计时、闹钟功能,整体硬件成本控制在5元以内。

 

时钟项目很适合嵌入式初学者的第一个综合作品,综合运用了数码管驱动显示技术,RTC时钟模块的I2C驱动,蜂鸣器的PWM驱动,按键的长短按处理,定时器的多任务时序控制。

  • 演示视频

CH32V003迷你时钟

项目全部源文件开源在Gitee

https://gitee.com/haohaodada-official/mini_clock

二、功能设计

  • 功能需求

计时功能:能显示年、月、日、时、分、秒。

闹钟功能:设定好几点几分后,到了设定时间会播放闹铃。

供电要求:内置锂电池,可独立工作3天以上,也可以通过USB线外接供电和充电。

成本要求:BOM价格控制在5元以内。

尺寸要求:长宽和0.56英寸的数码管基本相同,厚度在满足锂电池容量要求下。

  • 功能分析

我们选用的数码管只有4位,要显示这么多内容,就需要轮流来显示,我们定义第一页显示年,效果如下图所示:

 第二页显示月和日,效果如下图所示:

 第三页显示时和分,同时用冒号每隔1秒闪烁来表示秒,效果如下图所示:

 现在我们可以让数码管轮流显示上述几个页面,就可以实现计时功能

接下来,我们要能校准时间,需要通过按键来实现,这里我们用一个按键来实现,通过按键的短按和长按来实现。

我们定义短按来修改具体的数值大小,每短按一次,数值加1,超过范围后,返回到最小值。比如设置小时,超过23后要回到0开始,设置分钟,超过59后要回到0开始,其它类似处理。

我们定义长按来切换不同的页面,同时也是一个确认操作。另外我们还有一个闹钟功能,闹钟也需要设置,闹钟只是设置小时和分,设置的界面和小时分钟界面一样,这样容易让用户不容易察觉,所以我们可以在切换到闹钟界面时,用蜂鸣器发出声音来提示下,表示设置闹钟成功。

当每天时间到了设定的闹钟时间时,蜂鸣器发出闹铃声,我们可以通过短按按键来关闭闹铃。

电源部分需要增加锂电池电源管理来解决,同时要考虑整个系统的功耗。                                             

三、硬件设计

  • 电源管理模块

这里选用TP4056作为锂电池充放电管理芯片,该芯片支持单节锂离子电池恒流/恒压线性充电,充电电流可以设置,最大支持1000mA,带有电池温度监测,欠压锁定,自动再充电和两个状态引脚以显示充电和充电终止功能。

 这里,我们把TEMP引脚接地,不使用温度监测功能。我们把R13电阻设置为1.2K,这样就设置充电电流大小为1000mA,内部计算公式如下:

 设置红色LED为充电状态指示灯,蓝色LED为充满状态指示灯,分别连接到CHRG和STDBY引脚,充电状态表如下图所示:

 整个系统,在锂电池供电时,系统电压就是锂电池的电压(3~4.2V),在USB插入充电时,系统电压稳定在4.2V。

  • 单片机最小系统

CH32V003系统工作电压范围为2.7~5.5V,通过数据手册可以看到CH32V003复位引脚有别于常见的单片机,需要外接上拉电阻,芯片已经内置上拉电阻,我们只需要外接一个0.1uF电容到地就可以,这里我们也不需要按键来复位。 

 所以CH32V003只需要给VSS和VDD引脚供电就可以工作了,当然为了方便程序下载调试,我们还需要引出SWIO口,芯片内核自带一个串行单线调试的接口,SWIO 引脚(Single Wire Input Output)。系统上电或复位后默认调试接口引脚功能开启。SWIO口也可以通过程序配置设置通用IO口。

 

 程序出了可以用SWIO口连接专用下载器来下载以外,我们也可以通串口的ISP功能来更新程序,天问五幺出厂的CH32V003已经内置了ISP Bootloader在里面,可以用通用的USB转串口模块来下载程序,这里我们选用Type-C接口来作为充电和程序下载接口。

  • 显示模块

数码管的每个8字的一小段,内部实际就是一个LED,用A/B/C/D/E/F/G 7来标示对应的段,外加用DP来标示一个小数点或者冒号,设置对应的段亮,就可以组成0到F 十六个字符,根据公共端是共阴还是共阳,分为共阴数码管和共阳数码管两种。

 

0.17元搞定数码管和键盘!AiP650芯片保姆教程(附Arduino/STM32驱动代码) 本文详细介绍了如何利用仅0.17元的AiP650数码管驱动芯片实现4数码管显示和7x4矩阵键盘扫描功能。通过伪I2C两线接口,配合Arduino/STM32开发板,提供完整的驱动代码和电路连接方案,帮助开发者低成本实现显示与输入功能。教程涵盖芯片特性、通信协议、代码实现及常见问题解决,是预算敏感型项目的理想选择。 阅读详情

相关推荐

用STM32CubeMX HAL库驱动TB6612电机模块,从配置到调速的保姆教程

本文详细介绍了如何使用STM32CubeMX HAL库驱动TB6612电机模块,从硬件准备到软件配置的完整流程。通过实战案例和常见问题排查指南,帮助开发者快速掌握直流电机控制技术,特别适合机器人项目和电子竞赛应用。

weixin_30879833的博客 464

PCF8563实时时钟操作,定时报警设置

AVR mega16,PCF8563实时时钟操作,定时报警设置,1小时后自动执行相应操作

保姆教程:用ESP32和LAN8720模块DIY一个稳定可靠的以太网网关(附完整代码)

本文提供了一份详细的ESP32与LAN8720模块DIY以太网网关的保姆教程,涵盖硬件搭建、软件配置和稳定性优化。通过RMII接口实现ESP32与LAN8720的高效通信,适合智能家居和工业物联网应用,附完整代码和实战技巧,帮助开发者快速构建稳定可靠的以太网网关。

weixin_42525328的博客 271

PCF8563的中断输出功能

本文主要描述 PCF8563 的中断输出功能,并给出相应的范例。范例实现每1s 从/ INT 脚产生一次中断输出的功能。用户可以修改范例中定时器时钟源和倒计数数值寄存器的值, 以得到满足自己需要的中断输出周期,轻松实现PCF8563 中断输出功能。

PCF8563电子时钟实验 - 嵌入式

通过连接PCF8563模块到单片机开发板,并使用适当的代码进行通信,我们能够读取和显示准确的时间和日期信息。通常,PCF8563模块有一个I2C接口,因此需要连接模块的SDA和SCL引脚到单片机开发板的相应引脚。电子时钟是一种常见的嵌入式系统应用,能够准确显示时间,并提供各种功能,如闹钟、定时器等。下面是一个示例代码,用于读取PCF8563实时时钟模块中的时间和日期信息,并在串行监视器上显示出来。接下来,我们将描述如何连接PCF8563模块到单片机开发板,并编写相应的代码以实现电子时钟功能。

FDSJRU的博客 895

DIY】STM8的实时时钟PCF8563与红外进出门提醒器

[DIY]STM8S003的实时时钟[PCF8563]与红外进出门提醒器总体设计1.基础硬件DIY设计1).整体原理图:2).外部RTC[PCF8563]电路3).PCB电路4).3D_PCB2.单片机程序设计1)PCF8563 I2C通信程序2)main函数逻辑 [OLED的显示/红外对管的逻辑监测/语音模块的控制]3.效果展示1).实物电路顶层图2).实物电路底层图3). 防水盒内部图4)...

淹死的鱼 3788

PCF8563实时时钟模块功能实现

PCF8563实时时钟模块,可初始化时间、获取当前时间、设置闹钟、清除闹钟。

好想要疯狂,奈何没出息。 9409

DIY一个低成本多功能点阵时钟

大家好,转发一篇正念同学的文章----大家好,我是ZhengN。本次转载一篇保姆diy教程:基于Esp8266的多功能点阵时钟 。简介很早就了解ESP8266了,当时也用这个搞过一些小...

嵌入式Linux 4427

手把手教你用国产CH32F103芯片DIY一个超便宜的Arduino板(保姆避坑指南)

在创客圈里,Arduino凭借其简单易用的特性成为了无数电子爱好者的入门首选。但正版Arduino Uno动辄200元的价格,对于学生党和预算有限的开发者来说确实是一笔不小的开支。今天我要分享的,是如何用国产沁恒CH32F103C8T6这颗不到10元的ARM芯片,打造一个完全兼容Arduino生态的开发板。更重要的是,通过社区开发者的努力,CH32F103已经可以完美兼容Arduino生态。关键提示:如果工具一直显示"等待连接",尝试先按住板子的复键,点击下载后再松开复键。

congnen9588的博客 528

基于51单片机和PCF8563的电子钟

多次测试,保证能用,仅供爱好者们交流使用。 基于51单片机和PCF8563的电子钟,单片机使用的是AT89C2051,代码与AT、STC的89C51,89C52系列完全通用,改下头文件即可。 使用中注意查看.h文件中的引脚分配。 内有PCB原理图(只有原理图,PCB自己画吧,或者用万用板自己焊)

pcf8563的程序代码

msp430单片机驱动时钟芯片8563的程序代码

DIY智能小车核心:基于STM32 HAL库的电机驱动与编码器闭环控制保姆教程

本文详细介绍了基于STM32 HAL库的电机驱动与编码器闭环控制实现方法,适用于DIY智能小车项目。从硬件选型到软件配置,包括PWM生成、编码器接口设置、速度测量算法及PID闭环控制,提供保姆教程和实战技巧,帮助开发者快速构建高精度控制系统。

weixin_29159613的博客 293

用FM收音机模块DIY双路语音同传系统:从电赛真题到毕业设计的保姆教程

本文提供了一份详细的DIY双路语音同传系统教程,基于FM收音机模块(如RDA5820、BH1415F)和单片机(STM32、Arduino),涵盖系统设计、硬件焊接、软件调试等实操环节。通过频分复用(FDM)技术实现双路语音信号传输,适合电子竞赛和毕业设计项目。教程特别强调射频电路设计规范和实际调试技巧,帮助读者快速构建低成本、高性能的无线收发系统。

weixin_30645617的博客 215

用AD20给DS3231高精度时钟芯片画PCB,从原理图到打样保姆教程

本文详细介绍了使用Altium Designer 20(AD20)设计DS3231高精度时钟芯片PCB的全流程,从原理图设计到PCB打样。涵盖元件库创建、外围电路设计、PCB布局策略、抗干扰设计及生产文件输出等关键步骤,特别针对初学者常见问题提供实用解决方案,帮助开发者快速完成高精度时钟项目的设计与实现。

weixin_28692153的博客 367

[RK3128][Android 6.0] RTC芯片PCF8563调试记录

硬件平台:RK3128 Android版本:6.0 Kernel版本:3.10.92   任务描述: Rk3128 Android 6.0平台调试rtc芯片PCF8563,本以为很容易,结果碰到一些问题,在此记录下来。   一、添加设备信息 Dts中添加I2C设备:     rtc@51 {         compatible = "nxp,pcf8563";

一叶扁舟 6285

天问五幺——接收到一次的数据,每次唤醒回复单次语音

天问的开发班收到未连接指令(这个数据只会收一次·),但是每次唤醒回复单次语音,这里就得用标志了。

qq_71158060的博客 702

PCF8563时钟芯片ALARM中断输出注意事项

PCF8563时钟芯片ALARM中断输出寄存器配置

weixin_43896974的博客 1428

2‘13寸墨水屏时钟diy教程

最近在闲鱼发售了立创eda的开源项目,有很多人想要买,但也不乏新手为此写下这篇教程! 先说一下难度:硬件上使用了一个0•5mm的排线座,因此需要一定的焊接基础。当然这个排线座也可以让代焊 同时在程序上提供 ...

qq_39561837的博客 3882
下一篇: 1-1.天问Block软件使用与区分不同的ASRPRO开发板
twen51
博客等级 码龄3年 173粉丝 · 24原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值