
#第八届立创电赛#0.91oled桌面小时钟
简介
#第八届立创电赛#0.91oled桌面小时钟
简介:#第八届立创电赛#0.91oled桌面小时钟开源协议
:Public Domain
描述
* 1、项目功能介绍
该项目使用瑞萨的R7FA2E1A72DFL型号的mcu使用0.91寸oled屏幕显示日期时间、可手动对时间进行时间校准、使用AHT20芯片进行温湿度测量及显示。
各功能通过四个按键进行切换。
实物整体外观如下图:
*2、项目属性
首次公开;项目为原创;
* 3、开源协议
Public Domain
*4、硬件部分
硬件主要包含电源部分,mcu主控,输入输出设备,和控制接口四个部分,让我们一起来详细解释一下:
一、电源部分:
电源部分包含电池和type-c直接供电两种方式,通过AO3401型号mos进行电源切换。如下图中右下角电路所示,当只有VBAT电池供电时,AO3401的栅极通过R7下拉为低电平,mos导通,电路通过电池供电。当插上TYPE-C时,mos管截止,VBUS经过一个二极管给电路供电。
该工程中使用的是6pin的TYPE-C母座,在使用时应注意对地放置两个5.1k识别电阻。
在用TYPE-C供电时,同时能对该时钟的电池进行充电。因为这里使用了一块南京拓微公司的TP4056芯片,该芯片成本低,使用简单方便。(芯片手册见附件)
硬件电路设计可直接参考官方手册电路:
值得注意的是,官方手册中从vcc到芯片供电多了一个0.4Ω的电阻,这是为了在大电流充电时(700ma)以上,为了缩短充电时间,而增加的热耗散电阻,阻值在0.2~0.5范围之间都可。由于,本工程计划使用树脂打印的外壳,就不建议充电电流太大。充电电流的设置直接改变左图中Rprog阻值大小即可,电阻值与充电电流关系可参照右边表格。本工程选取使用的是一个3.3k的电阻。
二、mcu主控
主控参考了官方给出的案例,串口和调试接口都是采用官方案例的引脚。但由于本工程使用了两个I2C设备,所以有些引脚的定义是不同的。本工程也未使用芯片自带的I2C通道,而都是采用软件模拟协议。(详情见程序部分)芯片的这几个电容应该就近放置,并让走线先过电容再到引脚。
三、输入输出设备
本工程主要使用到的就是四个按键模块,温湿度传感器模块,0.91oled显示模块
显示部分和官方案例不同的采用了一块0.91oled屏幕,使用的是I2C协议的四针脚模块。如下图所示:
oled相关驱动见程序部分
温湿度采用的是ASAIR公司的AHT20,应用于该工程可大大减小pcb面积。
就是在走线时应尽量符合官方的手册要求,在周围挖槽可大大提高精度。
由于AHT20温湿度模块采用的是双列扁平无引脚SMD封装,所以大家在使用时,一定要看看自己有没有合适的工具去进行一个焊接。
参考手册中的电源部分放置了一个低通滤波电路:
屏幕和温湿度都是I2C设备,所以在设计时要注意在SDA和SCLK引脚都加上上拉电阻
由于立创暂时没0.91寸屏幕的3d封装所以我自己建了一个,大家可以去搜索使用(3d模型见附件)
软件I2C应注意芯片和外设之间的速率,下图是调试时控制oled屏幕的时序。其实只要控制引脚的高低电平就能通信了,只是代码书写上要比硬件复杂上不少
由于芯片内部有限流电路,所以按键输入没必要加上下拉电阻。
四、控制接口
由于考虑到使用的是串口下载,所以要对MD引脚就是BOOT进行相应的设计实际如下所
示:
由于不是经常使用下载功能,所以直接设计成焊盘形状。在下载时可使用镊子进行相关操作。
*5、软件部分
软件使用的是e2 studio和Renesas Flash Programmer V3.08
整个系统的大致流程图和主要的函数模块如下图所示:
函数包含一个主函数,0.91oled操作函数,按键扫描及标志位判断函数,温湿度检测及转换函数。下面就对这几个函数详细解析下:
一、0.91oled包括iic模拟和控制函数两个部分:
首先配置两个I2C引脚为OD门输出模式:
然后建立c文件和头文件,在c文件中为了后期的书写方便,在开头进行宏定义如下:
其实I2C你只要按照官方手册里时序图使引脚进行高低电平的变化就能进行通信了,以下是相关程序:
定义好相关的函数后,我们就能对OLED屏幕进行相关操作了。首先就是初始化,如果你是其他尺寸如0.96的那就要按手册进行相应的更改。
接着就是生成字库和oled的相关显示函数了,有了这些你就可以愉快的操作这块显示屏了。
当然我在项目中还使用了中文字符,这些就要我们自己去生成字模了,如下图所示:
在这里我使用的是PCtoLCD2002软件生成,(文件链接见附件)相关设置如下所示:
1,打开设置------格式选c51格式------点击确定
2,模式切换为字符模式----输入文本------点击生成字模------复制相关到文件中即可
二、按键扫描及标志位设置部分
按键部分在主函数中一直循环扫描,并进行标志位设置和相关的操作。详情见下图:
在本部分还有时间设置校准也在该函数模块下完成,如下图所示,及相关头文件
三、温湿度检测及转换函数
温湿度的操作和屏幕很类似,因为都是标准的I2C通信,我们参照官方手册即可模拟出通信过程:
以下是相关.c和.h文件代码:
四、主函数
主函数中包含相应头文件在while里循环扫描执行即可
小总结:由于第一次使用该编辑器以及不怎么熟悉32单片机,导致很多官方的案例都不能利用,增加了代码的复杂性。很多思维方式停留在51单片机的编程方式,欢迎大家批评指正及交流!
*6、BOM清单
*7、大赛LOGO验证
* 8、演示您的项目并录制成视频上传
设计图

BOM


评论