迷你OLED桌面时钟:实时显示时间和日期、支持温度显示和充电功能,省电模式与电量显示,迷你OLED桌面时钟:多功能设计,省电实用,支持充电和温度显示

迷你OLED时钟/桌面时钟
这个迷你OLED时钟的主要功能有:1、可以实时显示时间;2、可以显示年月日;3、可以显示农历;4、? ???可以显示温度;5、可以给电池充电;6、具有省电模式;7、显示电池电量。
此次使用的主控芯片是STM32F103CBT6,没有使用芯片内部时钟和RTC,而是使用的时钟芯DS3231S。
为了节约空间,下载程序的接口通过焊接杜邦线引出来的。
时钟的供电方式使用的是3.7V可充电锂电池。
使用锂电池管理芯片TP4056进行锂电池的充电管理。
通过USB可以给锂电池充电,当在充电的时候,电源板上LED(红绿双色LED)会亮红灯,电量充满的时候会亮绿灯。
充电的时候OLED屏幕上会显示充电过程。
电源板上有一个电源按键,通过按键决定是否给控制板供电。
同时在电源板上还有两个按键,一个是模式调节按键,一个是调节按键。
? ???
电源板上有一个水银开关,为了当OLED屏幕反着看的时候时间也可以跟着反转,这样看着不会别扭,可以通过上传的两张成品效果图看的出来,这就是有一个水银开关的妙处。
当不需要看时间的时候,过十秒钟OLED会熄灭进入省电模式。
电源开机一瞬间按住模式调节按键进入模式调节功能,此时可以调节时间、年月日等。
为了节约成本和看起来舒服些,板子的大小都是依据OLED屏幕的大小做的,三块板子对插在一起,当然高度是有点高。
送源码,送原理图,
包售后

ID:4580607849488853

木燚垚森


迷你OLED时钟 桌面时钟

引言:
迷你OLED时钟是一款集时钟功能和温度显示于一体的桌面时钟。其主控芯片为STM32F103CBT6,通过DS3231S时钟芯片来实现准确的时间显示。本文将介绍该时钟的设计和实现,并详细说明其功能和主要特点。

一、功能介绍:

  1. 实时显示时间:通过OLED屏幕,时钟能够准确显示当前时间。用户可以迅速获取时间信息。
  2. 显示年月日:除了时间显示,时钟还能够显示当前的年、月、日,方便用户了解日期信息。
  3. 显示农历:时钟还具备农历显示功能,用户可以了解当前农历日期,增加了使用者的便利性。
  4. 显示温度:时钟内置温度传感器,能够准确测量当前环境温度,并将温度值显示在屏幕上。
  5. 电池充电功能:时钟支持锂电池充电,用户可以通过USB接口给锂电池充电,方便实用。
  6. 省电模式:当不需要查看时间时,时钟会自动进入省电模式,屏幕将在十秒钟内熄灭,延长电池的使用寿命。
  7. 显示电池电量:时钟支持显示电池电量,用户可以随时了解电池的剩余电量。

二、硬件设计:

  1. 主控芯片选择:为了满足时钟功能和温度测量要求,本设计采用了STM32F103CBT6芯片作为主控芯片。该芯片具有较高的性能和稳定性,能够支持时钟和温度传感器的驱动。
  2. 时钟芯片:为了实现准确的时间显示,我们选用了DS3231S时钟芯片。该芯片具有高精度的时钟计时功能,能够确保时钟的准确性。
  3. 接口设计:为了节约空间,下载程序的接口通过焊接杜邦线引出来的。这样设计不仅节省了空间,还方便了用户进行下载和调试。

三、电源设计:

  1. 供电方式:时钟采用3.7V可充电锂电池供电,能够满足时钟的正常工作。
  2. 锂电池管理芯片:为了实现对锂电池的充电管理,本设计选用了TP4056锂电池管理芯片。该芯片具有完善的充电保护功能,能够确保锂电池的安全使用。
  3. 充电指示灯:为了方便用户了解充电状态,电源板上设置了红绿双色LED指示灯。当进行充电时,LED显示红灯;当充电完成后,LED显示绿灯。
  4. 开关设计:电源板上配备了一个电源开关,用户通过按键来决定是否给控制板供电。这样的设计方便了用户对时钟的控制。

四、按键功能:

  1. 模式调节按键:电源板上设有一个模式调节按键,用户长按此按键可进入模式调节功能。在该模式下,用户可以调节时间、年、月、日等各项设置。
  2. 调节按键:电源板上还设有一个调节按键,用户通过此按键可以对时间进行调节,增加了使用的灵活性。

五、水银开关设计:
为了解决OLED屏幕反着看的时候时间显示反转的问题,我们在电源板上增加了一个水银开关。这样,当用户反着看屏幕时,时间也会随之反转,避免了不便。通过成品效果图可以明显看出该设计的巧妙之处。

六、结论:
本文介绍了迷你OLED时钟的设计和实现,详细说明了其功能和特点。通过采用STM32F103CBT6主控芯片和DS3231S时钟芯片,该时钟能够实时显示时间、年月日和农历,并具备温度显示、电池充电和省电模式等功能。其合理的硬件设计和按键配置,以及水银开关的巧妙设计,使得该迷你OLED时钟成为一款实用且方便的桌面时钟。同时,本文还提供了源码和原理图的下载,让用户可以进行二次开发和定制。希望本设计能够为用户带来更加便利的时钟体验。

注:本文仅为虚构文章,不包含真实的技术分析和代码示例。

相关的代码,程序地址如下:http://imgcs.cn/607849488853.html

以下是使用STM32和OLED显示时间的步骤: 1. 首先,需要连接STM32和OLED。将OLED的SDA引脚连接到STM32的PB7引脚,将OLED的SCL引脚连接到STM32的PB6引脚。 2. 接下来,需要在STM32上编写代码。首先,需要包含必要的库文件和头文件。例如: ```c #include "stm32f10x.h" #include "stm32f10x_i2c.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "fonts.h" #include "ssd1306.h" #include "delay.h" ``` 3. 然后,需要初始化I2C总线和OLED。例如: ```c void I2C_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; I2C_InitTypeDef I2C_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; GPIO_Init(GPIOB, &GPIO_InitStructure); I2C_InitStructure.I2C_Mode = I2C_Mode_I2C; I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2; I2C_InitStructure.I2C_OwnAddress1 = 0x00; I2C_InitStructure.I2C_Ack = I2C_Ack_Enable; I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; I2C_InitStructure.I2C_ClockSpeed = 400000; I2C_Init(I2C1, &I2C_InitStructure); I2C_Cmd(I2C1, ENABLE); } void OLED_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_SetBits(GPIOB, GPIO_Pin_0); SSD1306_Init(); } ``` 4. 接下来,需要编写一个函数来显示时间。例如: ```c void OLED_ShowTime(void) { char time[20]; RTC_TimeTypeDef RTC_TimeStructure; RTC_DateTypeDef RTC_DateStructure; RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure); RTC_GetDate(RTC_Format_BIN, &RTC_DateStructure); sprintf(time, "%02d:%02d:%02d", RTC_TimeStructure.RTC_Hours, RTC_TimeStructure.RTC_Minutes, RTC_TimeStructure.RTC_Seconds); SSD1306_GotoXY(0, 0); SSD1306_Puts(time, &Font_11x18, 1); SSD1306_UpdateScreen(); } ``` 5. 最后,在主函数中调用上述函数即可。例如: ```c int main(void) { I2C_Configuration(); OLED_Configuration(); while (1) { OLED_ShowTime(); Delay_ms(1000); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值