资源简介
linux平台下,DHT11驱动程序,增加超时等待机制,稳定,包括应用测试程序,已在MINI2440测试通过。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
/* 相关引脚定义方便以后移植 */
#define DQ S3C2410_GPB(1)
#define CFG_IN S3C2410_GPIO_INPUT
#define CFG_OUT S3C2410_GPIO_OUTPUT
#define TIME_OUT_DEALY 100
// dht11主次设备号(动态分配)
static int dht11_major = 0;
static int dht11_minor = 0;
static int dht11_nr_devs = 1;
unsigned short temperaturehumidity;
unsigned char checknum;
static volatile unsigned char values[6]={000000};
// 定义设备类型
static struct dht11_device
{
struct cdev cdev;
};
struct dht11_device *dht11_devp; /*设备结构体指针 */
static struct class *dht11_class;
static struct class_device *dht11_class_dev;
/* 函数声明 */
static int dht11_open(struct inode *inode struct file *filp);
static int dht11_init(void);
static ssize_t dht11_read(struct file *filp char __user * buf size_t count loff_t * f_pos);
void dht11_setup_cdev(struct dht11_device *dev int index);
static void set_pin_high(void)
{
s3c2410_gpio_cfgpin(DQCFG_OUT);
s3c2410_gpio_setpin(DQ 1);
}
static void set_pin_low(void)
{
s3c2410_gpio_cfgpin(DQCFG_OUT);
s3c2410_gpio_setpin(DQ 0);
}
static int set_pin_delay_get(unsigned int time)
{
s3c2410_gpio_cfgpin(DQCFG_IN);
udelay(time);
if(s3c2410_gpio_getpin(DQ))
return 1;
else
return 0;
}
static int set_pin_get(void)
{
if(s3c2410_gpio_getpin(DQ))
return 1;
else
return 0;
}
static int dht11_open(struct inode *inode struct file *filp)
{
int flag = 0;
flag = dht11_init();
if (flag & 0x01)
{
printk(KERN_WARNING “open dht11 failed\n“);
return -1;
}
printk(KERN_NOTICE “open dht11 successful\n“);
return 0;
}
static int dht11_init(void)
{
int retval = 0;
set_pin_high();
return retval;
}
static int read_word_data(void)
{
int i;
int counter=0;
int timerout_counter=0;
int timerout_flag=0;
int ret=0;
start:
set_pin_low(); //
mdelay(20); //18ms
set_pin_high(); //
if(set_pin_delay_get(50)) //
{
printk(KERN_INFO“can not detect the low ack!“);
counter++;
if(counter>5)
{
ret=-1;
goto stop;
}
goto start;
}
counter=0;
timerout_counter=0;
while((!set_pin_get())&&(timerout_counter++ if(timerout_counter>=TIME_OUT_DEALY)
{
timerout_flag=1;
goto out_err;
}
timerout_counter=0;
while((set_pin_get())&&(timerout_count
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
I.A.... 8056 2014-07-27 15:03 linxu_dht11\dht11\app_mini2440_dht11
I.A.... 829 2014-07-27 15:03 linxu_dht11\dht11\app_mini2440_dht11.c
I.A.... 829 2014-07-27 14:54 linxu_dht11\dht11\app_mini2440_dht11.c~
I.A.... 157 2014-07-27 10:05 linxu_dht11\dht11\Makefile
I.A.... 112 2014-07-27 10:04 linxu_dht11\dht11\Makefile~
I.A.... 8959 2014-07-27 14:53 linxu_dht11\mini2440_dht11.c
I..D... 0 2014-07-27 15:09 linxu_dht11\dht11
目录 0 2014-07-27 15:17 linxu_dht11
----------- --------- ---------- ----- ----
18942 8
相关资源
- labview 温湿度界面
- cc2530 zigbee 智能家居 温湿度dht11 wifi转
- Dht11温湿度模块库文件
- 树莓派教程--Qt工程中使用DHT11传感器
- 基于Qt界面显示的温湿度检测
- Arduino uno+esp8266+onenet+dht11温湿度传感器
- DHT11的51单片机驱动
- DHT11+CC2530 湿度传感器裸机工程源代码
- dht11+12864程序
- 基于STM32F103ZET DHT11 温湿度传感器程序
- MSP430G2553驱动DHT11温湿度传感器
- DHT11在linux上的驱动程序
- 基于Arduino的DHT11库文件
- jz2440的DHT11驱动 +QT5.6的温湿度监测系
- Arduino-DHT11温湿度传感器库文件
- DHT11库文件
- dht11 k60.zip
- dht11的12864显示程序
- DHT11液晶显示C程序+PCB原理图
- 温湿度传感器DHT11+1602显示+串口
- 温湿度传感器DHT11在mini2440上基于lin
- DHT11传感器
- 基于arduino的无线温湿度传输系统
- DHT11驱动STC12C5A单片机
- 基于STM32F4的DHT11温湿度传感器的源代
- DHT11库文件和
- DHT11基于msp430
- STC15F2K60S2读取DHT11温湿度传感器数据串
- DHT11温湿度传感器MSP430F149)
- stc12单片驱动DHT11温湿度传感器
评论
共有 条评论