在上一期的测评中,使用AVR128DB48 Curiosity Nano成功驱动了温湿度传感器,
【CuriosityNano测评报告】+使用IO驱动单总线温湿度传感器DHT22
https://bbs.21ic.com/icview-3119748-1-1.html
这里就不再介绍DHT22了,这次将代码移植到PIC18F16Q40 Curiosity Nano上,有2个需要注意的地方:1是MCC生成的关于gpio设置上拉的接口不一致,MCC为AVR128DB48生成的代码gpiox_SetPullUp()而为PIC18F16Q40生成的代码是gpiox_SetPullup()。呵呵哒,仅仅是一个大小写的问题,为啥api接口不一致呢???
2是PIC18F16Q40 的串口printf函数可以打印浮点数,而AVR128DB48的不行。
因此两者的驱动略有区别,稍微修改即可。
dht.h文件内容如下:
- /*
- * File: dht.h
- * Author: qldeng
- *
- * Created on May 29, 2021, 12:17 PM
- */
- #ifndef DHT_H
- #define DHT_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "mcc_generated_files/mcc.h"
- #define delay_ms(d) DELAY_milliseconds(d)
- #define delay_us(d) DELAY_microseconds(d)
- #define u8 uint8_t
- #define u16 uint16_t
- u8 DHT22_Init(void);
- u8 DHT22_Read_Data(float *temperature,float *humidity);
- u8 DHT22_Read_Byte(void);
- u8 DHT22_Read_Bit(void);
- u8 DHT22_Check(void);
- void DHT22_Rst(void);
- #ifdef __cplusplus
- }
- #endif
- #endif /* DHT_H */
dht.c文件内容如下:
主函数调用驱动并打印结果:
接线:使用的是RC2
串口打印结果:
测试工程源码
|