资源简介
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
相关资源
- STM32+DHT11+OLED+RTC+MQ2+NRF24L01+串口12
- proteus仿真、keil4、DHT11、LCD1602
- DHT11 21 22库文件
- 基于zigbee温湿度传输及控制带wifiAPP查
- stm32之传感器DHT11.zip
- DS18B20温度+DHT11湿度+LCD1602
- DHT11温湿度传感器项目代码.rar
- STM32F103C8T6+DHT11+SGP30+CH340+ADC
- STM32F103C8T6+DHT11+OLED
- 基于STM32的DHT11的温湿度采集GSM报警系
- cc2530-contiki读取DHT11并发送数据例程
- STM32温湿度传感器DHT11代码,通过串口
- 基于proteus 的 STM32 采集DHT11 仿真 +
- DTH11温湿度显示在IIC_OLED上,好用,自
- STM32F103C8T6-DHT11温湿度传感器.rar
- 基于FPGA的DHT11的温湿度数据采集
- SampleApp_dht11.zip
- STM32-UCOSIII实战-----RTC+DHT11+按键+LCD显示
- 基于STC89C52的温湿度检测
- DHT11温湿度传感器例程
- 数字温湿度传感器DHT11详解及例程利用
- STM32DHT11程序
- 里程表 STM32+霍尔传感器+EEPROM+LCD+DHT
- stm32f103+dht11温湿度传感器例程
- DHT11.rar
- 完整工程串口12、DHT11、BH1750、mh-z14
- 温湿度传感器DHT11资料+程序
- 乐鑫Esp8266驱动 ds18b20、dht11 温湿度传
- STM32F103C8T6按键调整参数断电保护,温
- CC2530+DHT11温湿度传感器+HC-SR04超声波传
评论
共有 条评论