标题:
STM32F103+IIC_OLED12864+TM1640+DS3231双显示OK 电子万年历程序
[打印本页]
作者:
bedz
时间:
2022-3-21 12:57
标题:
STM32F103+IIC_OLED12864+TM1640+DS3231双显示OK 电子万年历程序
STM32F103+ IIC_OLED12864+TM1640+DS3231双显视示OK 电子万年历
破烂堆找个4位数码管(可惜中间不带两个点)DS3231精度真不是吹出来的!误差很小一年不超过2分钟!
制作出来的实物图如下:
捕获.JPG
(62.18 KB, 下载次数: 63)
下载附件
2022-3-21 12:58 上传
单片机源程序如下:
#include "led.h"
#include "exti.h"
#include "oled.h"
#include "i2c_soft.h"
#include "DS3231.h"
#include "delay.h"
#include "sys.h"
#include "bmp.h"
#include "TM1640.h"
int main(void)
{
u8 k=0;//*t=0,p=2,
delay_init(); //延时函数初始化
//LED_Init(); //初始化与LED连接的硬件接口
I2C_GPIO_Config();
EXTI_KEY_Config();
DS3231_Init();
//Set_DS3231_Time(22,03,20,14,00,00,7);//22年03月20号14点00分00秒周日 .第1次初始化DS3231使用后注销
OLED_Init();
OLED_Clear();
//LED1_ON; //LED1 ON
TM1640_Init(); //TM1640初始化
while(1)
{
Get_DS3231_Time();
if(k!=calendar.sec)
{
k=calendar.sec; //读取温度
//OLED12864显示日期
OLED_ShowString(0,0,"2",16); //显示年的千位字符2
OLED_ShowString(10,0,"0",16); //显示年的百位字符0
OLED_ShowChar(20,0,calendar.w_year/10+48,16);
OLED_ShowChar(31,0,calendar.w_year%10+48,16);
OLED_ShowCHinese(40,0,0);//在2列6行显示”年“
OLED_ShowChar(59,0,calendar.w_month/10+48,16);
OLED_ShowChar(68,0,calendar.w_month%10+48,16);
OLED_ShowCHinese(78,0,1);//在2列6行显示”月“
OLED_ShowChar(96,0,calendar.w_date/10+48,16);
OLED_ShowChar(105,0,calendar.w_date%10+48,16);
OLED_ShowCHinese(112,0,14);//在2列6行显示”日“
//OLED12864显示时间
OLED_Show16X32(0,2,calendar.hour/10);
OLED_Show16X32(18,2,calendar.hour%10);
OLED_Show16X32(33,2,10);
OLED_Show16X32(48,2,calendar.min/10);
OLED_Show16X32(64,2,calendar.min%10);
OLED_Show16X32(80,2,10);
OLED_Show16X32(95,2,calendar.sec/10);
OLED_Show16X32(110,2,calendar.sec%10);
//OLED12864显示星期
//OLED_ShowCHinese(2,6,6);//在2列6行显示”星“
//OLED_ShowCHinese(18,6,7);//在18列6行显示”期“
OLED_ShowCHinese(0,6,2);//在2列6行显示”周“
OLED_ShowCHinese(20,6,calendar.week+7); //在34列6行显示”星期数“
//OLED12864显示温度数据
//OLED_ShowChar(70,6,127,16); //温度计图标
OLED_ShowCHinese(45,6,4);//在2列6行显示”温“
OLED_ShowCHinese(63,6,5);//在18列6行显示”度“
OLED_ShowChar(79,6,calendar.temper_H/10+48,16);//显示温度十位
OLED_ShowChar(88,6,calendar.temper_H%10+48,16);//显示温度个位
OLED_ShowString(96,6,".",16);//.点
OLED_ShowChar(103,6,calendar.temper_L/10+48,16);//显示小数
OLED_ShowCHinese(112,6,3);//温度C*/
//TM1640显示驱动8段16位数拢按地址0-15显示
/*TM1640_display(0,calendar.w_year/10);
TM1640_display(1,calendar.w_year%10);//年
TM1640_display(2,calendar.w_month/10);
TM1640_display(3,calendar.w_month%10);//月
TM1640_display(4,calendar.w_date/10);
TM1640_display(5,calendar.w_date%10);//日
TM1640_display(6,calendar.week+7); //星期 */
TM1640_display(0,calendar.hour/10);
TM1640_display(1,calendar.hour%10);
TM1640_display(2,calendar.min/10);
TM1640_display(3,calendar.min%10);
TM1640_display(4,calendar.sec/10);
TM1640_display(5,calendar.sec%10);//秒
//TM1640_display(13,0);
//TM1640_display(14,0);
//TM1640_display(15,0);
}
}
}
复制代码
Keil代码下载:
STM32F103 IIC12864 OLED12864 TM1640 DS3231 双显OK.rar
(498.85 KB, 下载次数: 90)
2022-3-21 12:54 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
触景情伤
时间:
2022-3-22 07:18
可以调时间吗?
作者:
cooleaf
时间:
2022-3-22 16:18
又见3231的万年历作品!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1