STM32F103+ IIC_OLED12864+TM1640+DS3231雙顯視示OK 電子萬(wàn)年歷
破爛堆找個(gè)4位數(shù)碼管(可惜中間不帶兩個(gè)點(diǎn))DS3231精度真不是吹出來(lái)的!誤差很小一年不超過(guò)2分鐘!
制作出來(lái)的實(shí)物圖如下:
捕獲.JPG (62.18 KB, 下載次數(shù): 63)
下載附件
2022-3-21 12:58 上傳
單片機(jī)源程序如下:
- #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(); //延時(shí)函數(shù)初始化
- //LED_Init(); //初始化與LED連接的硬件接口
- I2C_GPIO_Config();
- EXTI_KEY_Config();
- DS3231_Init();
- //Set_DS3231_Time(22,03,20,14,00,00,7);//22年03月20號(hào)14點(diǎn)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顯示時(shí)間
- 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行顯示”星期數(shù)“
- //OLED12864顯示溫度數(shù)據(jù)
- //OLED_ShowChar(70,6,127,16); //溫度計(jì)圖標(biāo)
- 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);//顯示溫度個(gè)位
- OLED_ShowString(96,6,".",16);//.點(diǎn)
- OLED_ShowChar(103,6,calendar.temper_L/10+48,16);//顯示小數(shù)
- OLED_ShowCHinese(112,6,3);//溫度C*/
-
- //TM1640顯示驅(qū)動(dòng)8段16位數(shù)攏按地址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);
- }
- }
- }
復(fù)制代碼
Keil代碼下載:
STM32F103 IIC12864 OLED12864 TM1640 DS3231 雙顯OK.rar
(498.85 KB, 下載次數(shù): 90)
2022-3-21 12:54 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|