打印
[STM32F4]

【Nucleo设计分享】简易环境监测器之二

[复制链接]
1946|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
      昨晚调好了OLED显示,今天继续操作I2C总线,把BH1705光照度传感器和BMP180气压传感器的数据采集完成。
      BH1705的操作很简单,在mbed上有很多库,但是依然还是需要自己修改,主要还是管脚和地址。完成这两步,实际操作就是两条命令,一条初始化,一条读取信息。BH1705的数据从1-65535,其中可以有几位小数,128*64的oled按我的界面显示刚好可以显示一位小数。
      BMP180和BMP085完全兼容,因而可以直接使用bmp085的驱动程序进行驱动。BMP180的数据读取很简单,但是计算部分很繁琐,当然这些计算公式在datasheet中都能找到。但是还是不建议自己写,因为各个数据的类型都有区别,自己写免不了不小心出错。BMP180还能输出温度数据,可以根据温度数据对气压数据进行修正,但是对比了我手机的气压计和传感器的值,相差很小,就没再进行修正。
     数据采集到的都是数值,如果只是串口发送,可以不进行处理,但是如果是要进行显示,就必须进行处理,分解出每一位,基本方法就是取余。数值的显示还涉及到高位消0,正常显示中高位的0都是不应该显示的。我采用了比较笨的办法,一位位比较修改。程序如下,如果谁有更好的高位消0程序,希望能够分享一下。
    DIS[0]=temp_data/100000+0x30 ;    temp_data=temp_data%100000;   //取余运算
    if(DIS[0]==0x30) DIS[0]=32;
    DIS[1]=temp_data/10000+0x30 ;
    temp_data=temp_data%10000;   //取余运算
    if(DIS[0]==32&&DIS[1]==0x30) DIS[1]=32;
    DIS[2]=temp_data/1000+0x30 ;
    temp_data=temp_data%1000;    //取余运算
    if(DIS[1]==32&&DIS[2]==0x30) DIS[2]=32;
    DIS[3]=temp_data/100+0x30   ;
    temp_data=temp_data%100;     //取余运算
    if(DIS[2]==32&&DIS[3]==0x30) DIS[3]=32;
    DIS[4]=temp_data/10+0x30    ;
    temp_data=temp_data%10;      //取余运算
    DIS[6]=temp_data+0x30;  

完成这些之后的显示如下图:

照例,分享mbed的源程序 Nucleo_MONITOR.zip (9.95 KB)




     
沙发
fjjjnk1234| | 2015-1-21 20:40 | 只看该作者
顶一个!mbed开发挺方便的

使用特权

评论回复
板凳
ichenqiang|  楼主 | 2015-1-22 08:01 | 只看该作者
fjjjnk1234 发表于 2015-1-21 20:40
顶一个!mbed开发挺方便的

就是啊,太方便了,而且还有各种外设的库可以修改使用

使用特权

评论回复
地板
Serge_Ding| | 2015-1-22 10:45 | 只看该作者
顶一个,谢谢分享

使用特权

评论回复
5
聿怀嘿嘿| | 2015-1-22 11:57 | 只看该作者
mbed总感觉用得不太习惯、、楼主有空不妨开个教程给大家点福利哈哈?

使用特权

评论回复
6
ichenqiang|  楼主 | 2015-1-22 14:06 | 只看该作者
聿怀嘿嘿 发表于 2015-1-22 11:57
mbed总感觉用得不太习惯、、楼主有空不妨开个教程给大家点福利哈哈?

开教程?我感觉用过mdk或者任何开发软件的,只要看看mbed的classes说明就可以用了。唯一麻烦点的应该就是找外设的库文件。因为一搜一般都有很多,而且都是英文,对于英文特别差的人来说,确实是个问题。

使用特权

评论回复
7
电子发烧者| | 2015-1-22 15:35 | 只看该作者
ST送的STM32F411的板子哪里能找到资料?

使用特权

评论回复
8
ichenqiang|  楼主 | 2015-1-22 17:55 | 只看该作者
电子发烧者 发表于 2015-1-22 15:35
ST送的STM32F411的板子哪里能找到资料?

官网就有

使用特权

评论回复
9
icecut| | 2015-1-22 20:19 | 只看该作者
mbed 是定位开源玩具板卡的.在上面做很难学到什么嵌入式技术.纯软件的技术又因为你代码量不够大,也练不好

使用特权

评论回复
10
ichenqiang|  楼主 | 2015-1-24 19:14 | 只看该作者
icecut 发表于 2015-1-22 20:19
mbed 是定位开源玩具板卡的.在上面做很难学到什么嵌入式技术.纯软件的技术又因为你代码量不够大,也练不好 ...

在性能过剩的时候,用mbed编程,能快速实现功能。就很不错了。而且对于stm32来说,你也不可能让它跑嵌入式系统。最多rtos。板卡的功能就是它芯片的功能,所有芯片都一样,采用那种开发方式,只是由使用者而决定的,你不能因为它是mbed板卡就说是玩具级的,那stm32F4discovery也是玩具板卡?

使用特权

评论回复
11
icecut| | 2015-1-24 20:23 | 只看该作者
ichenqiang 发表于 2015-1-24 19:14
在性能过剩的时候,用mbed编程,能快速实现功能。就很不错了。而且对于stm32来说,你也不可能让它跑嵌入 ...

板卡不算玩具级,如果是玩具级就没必要有双排针了.但是 mbed 的 web 开发环境的确是玩具级的.arm 封装成面向对象的东西.所以在线开发只能玩玩了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

337

帖子

4

粉丝