找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4072|回复: 6
打印 上一主题 下一主题
收起左侧

STM32+BMP280+OLED+DS3231+浮点数显示源程序

  [复制链接]
跳转到指定楼层
楼主
ID:422924 发表于 2021-5-28 00:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机新人一个,自己最近在做DIY,虽然DIY做的很low,但是还是可以对学习STM32的小伙伴们提供一点点的价值的,发这个帖子,主要是我最近才接触到51黑论坛,却没发现这是一个宝藏论坛,在制作DIY小玩意的过程中,很多资料也是在51黑电子论坛中找到的刚完成了一个作品忍不住提供一点点自己的价值。本设计主要的功能正如标题所示
•(1)OLED显示。
•(2)万年历。
•(3)浮点数显示BMP280的数据(大气压强,海拔高度,温度)。
说它low主要是我更多的整合了别人的程序,模块驱动整合搬运工就是我了,如果有什么问题,还麻烦各位大佬不吝赐教!超级感谢

单片机源程序如下:
//  文 件 名   : main.c
//  作    者   : ZengXianLu
//  生成日期   : 2021-04-16
//           oled接线        
//              ----------------------------------------------------------------
//              GND    电源地
//              VCC  接5V或3.3v电源
//              D0   接PA5(SCL)
//              D1   接PA7(SDA)
//              RES  接PB0
//              DC   接PB1
//              CS   接PA4               
//              ----------------------------------------------------------------
//           BMP280接线        
//              ----------------------------------------------------------------
//              VCC  3.3v电源
//              GND    电源地
//              SDA    PC11
//              SCL    PC12
//              ----------------------------------------------------------------


#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "bmp.h"
#include "sys.h"
#include "usart.h"
#include "led.h"
#include "myiic.h"
#include "dsciic.h"
#include "bme280.h"
#include "DS3231.h"
int main(void)
{      
        float bmp280_temp;
        float bmp280_press;
        float bmp280_humi;
        float high;
        u8  t=0;      
         

                    //==================
         
                delay_init();                     //延时函数初始化         
                OLED_Init();                        //初始化OLED  
                OLED_Clear();
         

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  
        uart_init(9600);
        LED_Init();                                                                //初始化LED
        IIC_Init();
        bme280Init();
         
         //2021-05-23 23:39:42         

        delay_init();                     //延时函数初始化      
        NVIC_Configuration();// 设置中断优先级分组
        uart_init(9600);         //串口初始化为9600
        LED_Init();                           //初始化与LED连接的硬件接口  
        DS3231_Init();
        DS3231_Set(21,5,26,12,30,00);  //首次设置时间,设置完成后注释掉,重新下载一次程序即可掉电保存
             //年,月,日,时,分,秒
         //2021-05-23 23:39:42         
         
        while(1)
        {      
//        bme280GetData(&bmp280_press,&bmp280_temp,&bmp280_humi,&high);
//                //delay_ms(1500);
//                //LED0=!LED0;
//                printf("bmp280_press:%f\r\n",bmp280_press);
//                delay_ms(10);
//                printf("bmp280_temp :%f\r\n",bmp280_temp);
////                delay_ms(100);
////                printf("bmp280_humidity :%f\r\n",bmp280_humi);
//                delay_ms(10);
//                printf("bmp280_high :%f\r\n\r\n",high);      
               
                bme280GetData(&bmp280_press,&bmp280_temp,&bmp280_humi,&high);
                get_show_time();

                if(t!=calendar.sec)
                {
                        t=calendar.sec;
                        printf("年月日:");
                        printf("%ld,%d,%d\r\n",calendar.w_year+2000,calendar.w_month,calendar.w_date);
                        printf("时分秒:");
                        printf("%d,%d,%d\r\n",calendar.hour,calendar.min,calendar.sec);
                        printf("bmp280_press:%f\r\n",bmp280_press);
                        delay_ms(10);
                        printf("bmp280_temp :%f\r\n",bmp280_temp);
                        delay_ms(100);
                        printf("bmp280_humidity :%f\r\n",bmp280_humi);
                        delay_ms(10);
                        printf("bmp280_high :%f\r\n\r\n",high);
                       
                                                OLED_ShowString(0,0,"Pres:");                //一个字符八个单位,例如x为0,第一个字符后为8开始
                        OLED_ShowString(0,1,"Temp:");
                        OLED_ShowString(0,2,"High:");
                        OLED_ShowString(106,0,"Pa");
                        OLED_ShowString(106,1,"C");
                        OLED_ShowString(106,2,"m");
                        OLED_ShowNum(40,0,bmp280_press,4,16);         //最后一个变量是x轴的单位,每一个数字占多长
                        OLED_Showdecimal(40,1,bmp280_temp,9,16);
                        OLED_Showdecimal(40,2,high,9,16);
                        OLED_Showdecimal1(40,0,bmp280_press,9,16);

//                        //时间
//                        OLED_ShowNum(0,3,calendar.w_year+2000,4,16);
//                        OLED_ShowString(32,3,"/");
//                        OLED_ShowNum(40,3,calendar.w_month,2,16);
//                        OLED_ShowString(56,3,"/");
//                        OLED_ShowNum(64,3,calendar.w_date,2,16);
//                        OLED_ShowNum(0,4,calendar.hour,2,16);
//                        OLED_ShowString(16,4,":");
//                        OLED_ShowNum(24,4,calendar.min,2,16);
//                        OLED_ShowString(40,4,":");
//                        OLED_ShowNum(48,4,calendar.sec,2,16);
                       
//                        LED0=!LED0;
                }
               
               
        //3333333333333333
               


        //3333333333333333
//        delay_ms(8000);
//        OLED_Clear();
                        OLED_ShowString(0,3,"Design by ZXL");
                        OLED_ShowNum(0,5,calendar.w_year+2000,4,16);
                        OLED_ShowString(32,5,"/");
                        OLED_ShowNum(40,5,calendar.w_month,2,16);
                        OLED_ShowString(56,5,"/");
                        OLED_ShowNum(64,5,calendar.w_date,2,16);
                        OLED_ShowNum(0,6,calendar.hour,2,16);
                        OLED_ShowString(16,6,":");
                        OLED_ShowNum(24,6,calendar.min,2,16);
                        OLED_ShowString(40,6,":");
                        OLED_ShowNum(48,6,calendar.sec,2,16);

//        delay_ms(8000);
      
               

        }         
      
}

代码: 代码.7z (234.4 KB, 下载次数: 229)

评分

参与人数 2黑币 +120 收起 理由
s3587688 + 30 绝世好帖!
admin + 90 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏10 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:229641 发表于 2021-6-11 03:01 来自手机 | 只看该作者
漂亮把按键完善一下就好了,对了有180的吗?
回复

使用道具 举报

板凳
ID:422924 发表于 2021-6-12 17:32 | 只看该作者
触景情伤 发表于 2021-6-11 03:01
漂亮把按键完善一下就好了,对了有180的吗?

没有180的哦,没加按键是因为这些功能对我来说足够啦,主要是上班没有那么多时间搞,我开始想的是不仅要加按键 而且还要加一个三级菜单的,这样看起来更有意思。
回复

使用道具 举报

地板
ID:229641 发表于 2021-6-14 09:00 来自手机 | 只看该作者
曾现路 发表于 2021-6-12 17:32
没有180的哦,没加按键是因为这些功能对我来说足够啦,主要是上班没有那么多时间搞,我开始想的是不仅要 ...

这两天不是小长假吗?
回复

使用道具 举报

5#
ID:422924 发表于 2021-6-19 09:44 | 只看该作者
触景情伤 发表于 2021-6-14 09:00
这两天不是小长假吗?

要上班要出差的
回复

使用道具 举报

6#
ID:238216 发表于 2021-9-3 13:23 | 只看该作者
感谢,bmp280,实测ok,气压,温度,海拔都可以读出。
回复

使用道具 举报

7#
ID:994039 发表于 2021-12-19 13:08 | 只看该作者
egang 发表于 2021-9-3 13:23
感谢,bmp280,实测ok,气压,温度,海拔都可以读出。

是自己太笨了嘛,为什么我把BMP280的引脚换成(C11,C12---->A11,A12)就读不出压强来,求解

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表