OLED显示温湿度DHT11,有时间又加了个电子时钟。
程序借鉴了里面一位道友,他程序应该能成功,但仿真有问题。
我稍微改了一下,仿真问题没有解决:温湿度只能显示00,年份只能是1970,没有显示设置时间。
看实物图
电子时钟温湿度显示
时间修改在RTC.C中RTC_Set设置时间
main.c程序
- #include "delay.h"
- #include "sys.h"
- #include "oled.h"
- #include "bmp.h"
- #include "rtc2.h"
- #include "dht11.h"
- int main(void)
- {
- int wendu=0,shidu=0;
- u8 t;
- delay_init(); //精准延时初始化
- OLED_Init(); //OLED初始化
- OLED_ShowPicture(0,0,128,64,BMP3,1); //开机画面龙猫
- OLED_Refresh(); //更新显存到OLED
- RTC_Init(); //TRC初始化
- delay_ms(1000); //延时
- OLED_ColorTurn(0);//0正常显示,1 反色显示
- OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
- //delay_ms(500);
- OLED_Clear(); //清屏
- OLED_ShowChinese(45,2,9,12,1);//12*12 年
- OLED_ShowChinese(70,2,10,12,1);//12*12 月
- OLED_ShowChinese(96,2,2,12,1);//12*12 日
- OLED_ShowChinese(0,51,11,12,1);//12*12 温
- OLED_ShowChinese(13,51,13,12,1);//12*12 度
- OLED_ShowChinese(69,51,12,12,1);//12*12 湿
- OLED_ShowChinese(82,51,13,12,1);//12*12 度
- OLED_ShowChinese(48,51,14,12,1);//12*12 ℃
- OLED_ShowChinese(116,51,15,12,1);//12*12 %
- OLED_Refresh();
- while(1)
- {
- if(t!=calendar.sec)
- {
- t=calendar.sec;
- OLED_ShowNum(20,3,calendar.w_year,4,12,1); //输出2021
- OLED_ShowNum(58,3,calendar.w_month,2,12,1); //输出月份
- OLED_ShowNum(83,3,calendar.w_date,2,12,1); //输出日期
- OLED_ShowString(51,17,":",24,1); //:
- OLED_DrawLine(10,16,117,16,1); //输出上横线
- OLED_DrawLine(13,19,114,19,1);
-
- OLED_DrawLine(10,16,10,48,1); //输出左竖线
- OLED_DrawLine(13,19,13,45,1);
-
- OLED_DrawLine(117,16,117,48,1); //输出右竖线
- OLED_DrawLine(114,19,114,45,1);
-
- OLED_DrawLine(10,48,117,48,1); //输出下竖线
- OLED_DrawLine(13,45,114,45,1);
- OLED_Refresh();
-
- OLED_ShowNum(27,20,calendar.hour,2,24,1); //输出时
- OLED_ShowNum(63,20,calendar.min,2,24,1); // 输出分
- OLED_ShowNum(91,29,calendar.sec,2,12,1); //输出秒
- OLED_Refresh();
- if(DHT11_ReadData(&shidu,&wendu)) //如果DHT11读取到数据了,那么就显示
- {
- OLED_ShowNum(32,51,wendu,2,12,1); //输出温度
- OLED_ShowNum(100,51,shidu,2,12,1); //输出湿度
- }
- // else //若DHT11采集不成功,那么就失败
- // {
- // OLED_ShowString(32,51,"??",12,1);
- // OLED_ShowString(100,51,"??",12,1);
- // }
- delay_ms(500);
- //delay_ms(500); //延时,避免刷新DHT11数据太块
- }
- }
- //OLED_ScrollDisplay(11,4,1);
- }
复制代码 全部程序51hei下载地址:
stm32OLED.7z
(234.13 KB, 下载次数: 255)
|