接下来我要驱动自己的温湿度传感器DHT11了,由于泰凌微的芯片不能仿真,我只能通过串口打印数据来查看读出的数据了。
我的计划是在已经成功调试的gpio的工程上来实现这些功能,首先是要在此基础上调通串口。我找到串口的例程,把其中的C文件都移植到自己的工程上,增加uart.c和。然后为了测试串口,我修改了主函数的循环代码,每隔打印固定的十六进制数据0x66,增加的代码如图:
在user_init里增加串口的初始化,如图:
按照程序里定义的发送和接收引脚,分别连接到串口线上,烧写上电测试,看到了串口调试助手打印出来了。
接下来驱动传感器了,dht11是单总线接口,该传感器包括一个电阻式测湿元件和一个 NTC测温元件,并与一个高性能 8 位单片机相连接。通过单片机等微处理器简单的电路连接就能够实时的采集本地湿度和温度。传感器内部湿度和温度数据 40Bit 的数据一次性传给单片机,数据采用校验和方式进行校验,有效的保证数据传输的准确性。
DHT11 的技术参数如下:
工作电压范围:3.3V-5.5V
工作电流 :平均 0.5mA
输出:单总线数字信号
测量范围:湿度 20~90%RH,温度 0~50℃
精度 :湿度±5%,温度±2℃
分辨率 :湿度 1%,温度 1℃
我将信号引脚连接到了PB1脚,整个系统的接线如图:
然后是信号脚的初始化,主要是设置引脚的方向,如图:
紧接着是dht11复位,把这一部分程序放在了user_init里面,程序如下:
然后就可以读取传感器的数据了,读取数据的函数如下:
读取出来的温湿度通过串口打印,结果如图,注意显示的都是十六进制,且第一个0x66为测试串口所用,后面的两个字节是温湿度数据:
整个工程结构如图:
为了验证数据的正确性,我用手触摸了传感器,可以看到打印的温湿度发生了变化,证明数据读取正确,这一过程被记录在后面的视频里。
经过这次的调试,我锻炼了自己的动手能力和调试能力,也对泰凌微的芯片理解又加深了一步,最后还是要感谢平台和泰凌微提供的这次试用机会。