【香蕉派BPI-M2 Berry试用体验】+DHT11温湿度采集显示

  • 黄莨元
  • LV5工程师
  • |      2017-08-12 00:38:37
  • 浏览量 1466
  • 回复:5
本帖最后由 黄莨元 于 2017-8-12 00:42 编辑 本篇文章主要介绍,如何使用香蕉派的GPIO口驱动DHT11温湿度传感器采集室内的温湿度,并在数码管上进行显示,DHT11温湿度传感器属于单总线数据传输,协议的时间要求很高,数码管使用的是共引四位数码管,其中,实验中前两位显示的是室内环境中的湿度,而数码管后两位显示的是室内环境的温度,下面介绍数码管和DHT11温湿度传感器的工作原理。一、四位数码管1、原理说明
  • 标准的数码管从显示内容上分7段和8段数码管两种。8段比7段多一个右下角的小数点。还有一些其他特殊的如可以显示米字形的数码管不在本文讨论范围内,其实原理都是一样的。
  • 8段数码管由8个发光二极管组成,其中7个用于组成数字,1个用于显示小数点。每一根的编号如下图的右上角所示(A-G,DP)
2、SMA420364数码管 3、静态显示和动态扫描显示静态扫描:静态显示,就是前面说的每一个数字需要占用8个io口,每多一个数字就需要额外的8个io口,如果数字位数不多,io口够用的话,这样做完全没问题。动态扫描显示:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划”a,b,c,d,e,f,g,dp”的同名端连在一起引出8个引脚,每个数字再单独引出共阳(阴)端,这样总引脚数就只要8 + 数字个数即可,本文使用的8段4位数码管正是引出了12个引脚。当香蕉派输出8个段信号时,所有数码管都会接收到相同的信号,但究竟是哪个数码管会显示出字形,取决于这个数码管对应的共阳(阴)极(后统称位选端)有无导通。所以我们只要将需要显示的数码管的位选端选通,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的位选端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。参考文章:http://www.geekfans.com/article-5088-1.html二、DHT11温湿度传感器1、引脚图DHT11有四个引脚端,NC可以悬空,单总线传输数据,使用比较方便,而且价格低廉。 2、数据结构 3、数据传输协议3.1、开始发送数据 主机发送开始信号后,延时等待 20us-40us 后读取 DH11T 的回应信号,读取总线为低电平,说明 DHT11 发送响应信号,DHT11 发送响应信号后,再把总线拉高,准备发送数据,每一 bit 数据都以低电平开始,格式见下面图示。如果读取响应信号为高电平,DHT11 没有响应,请检查线路是否连接正常。3.2、数字“0”的表示方法 3.3、数字“1”的表示方法 三、程序编译运行使用wiringPi库编写好下面的c程序,进行编译运行即可,代码会贴出来,使用到的香蕉派GPIO口也备注出来了。
# gcc digital.c -o display -lwiringPi
# ./display 
效果:四位数码管,前两位显示的是湿度,后两位显示的是温度,其中湿度单位是%,温度单位是摄氏度。 源码: 四、总结 DHT11温湿度采集及显示的文章介绍就先到这里了,通过这篇文章,笔者更加熟悉了wiringPi库的使用了,最后,感谢云汉电子社区和香蕉派公司给予了笔者评测香蕉派BPI -M2 Berry开发板的机会,笔者会尽自己最大的努力完成测评的,谢谢。
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:2
辛迪可乐 2017-08-22
DS18B20可以用吗
0   回复
举报
发布
黄莨元 回复 2017-08-22
DS18b20也可以用的
0   回复
举报
lygo 2017-08-17
厉害
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子