資源簡介
基于Tiny6410,在linux上移植的DHT11溫濕度測量模塊驅(qū)動和簡單應(yīng)用程序。采用簡單的GPIO實現(xiàn)

代碼片段和文件信息
#include???
#include???
#include???
#include???
#include???
#include???
#include???
#include???
#include?
#include???
#include???
#include???
#include???
#include??
#include??
#include?“s3c6410_gpio.h“??
??
?
#define?DEVICE_NAME?“dht11“??
#define?DQ?????????8??
#define?CFG_IN?????0??
#define?CFG_OUT????1??
int?dht11_major?=?0;??
int?dht11_minor?=?0;????
??
//?定義設(shè)備類型????
struct?cdev?cdev;??
?
static?struct?class?*dht11_class;??
??
/*?函數(shù)聲明?*/??
static?int?dht11_open(struct?inode?*inode?struct?file?*filp);??
?
static?ssize_t?dht11_read(struct?file?*filp?char?__user?*buf??
????????????????????????????size_t?count?loff_t?*f_pos);??
??
static?int?dht11_release(struct?inode?*inode?struct?file?*file);
unsigned?char??dht11_read_byte(void);
??
/******************************************************************************************************??
**?函數(shù)名稱:?dht11_open()??
**?函數(shù)功能:?打開設(shè)備,初始化dht11??
**?入口參數(shù):?inode:設(shè)備文件信息;?filp:?被打開的文件的信息??
**?出口參數(shù):?成功時返回0失敗返回-1??
**?備????注:??
******************************************************************************************************/??
static?int?dht11_open(struct?inode?*inode?struct?file?*filp)??
{??
????printk(KERN_ERR?“open?sht11?success?\n“);
????return?0;??
}??
//讀取dht11發(fā)送的8位數(shù)據(jù)?
unsigned?char??dht11_read_byte(void)??
{??????
????int?i=0;??
????int?num;???
????unsigned?char?flag=0;??
????unsigned?char?data=0;??
??????
??
????for(num=0;num<8;num++)??
????{????????????????
??????????i=0;??
??????????while(!s3c6410_gpio_getpin(DQ))??
??????????{??
????????????udelay(10);??
????????????i++;??
????????????if(i>10)??
????????????break;??
???????????}??
????????????flag=0x0;??
????????????udelay(28);??????????????
???????????if(s3c6410_gpio_getpin(DQ))??
???????????{??
????????????flag=0x01;????????????
???????????}??
????????????i=0;??
???????????while(s3c6410_gpio_getpin(DQ))??
???????????{??
????????????udelay(10);??
????????????i++;??
????????????if(i>12)??
????????????break;??
???????????}??
???????????data<<=1;??
???????????data|=flag;??
????}????
????return?data;??
}
/******************************************************************************************************??
**?函數(shù)名稱:?dht11_read()??
**?函數(shù)功能:?讀出dht11??
**?入口參數(shù):?????
******************************************************************************************************/??
static?ssize_t?dht11_read(struct?file?*filp?char?__user?*buf??
????????????????????????????size_t?count?loff_t?*f_pos)??
{??
???? ????
???? int?i=0err;
???? unsigned?char?bufe[6]={0x00x00x00x00x00x0};
???? s3c6410_gpio_cfgpin(DQ?CFG_OUT);??
??????s3c6410_gpio_setpin(DQ?1);??
????????udelay(2);??
??????s3c6410_gpio_setpin(DQ?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????6648??2016-09-05?16:12??dht11.c
?????文件??????101051??2016-09-05?16:13??dht11_t.ko
?????文件?????????609??2016-09-05?16:12??dht11_test.c
?????文件????????8043??2016-09-05?16:13??dht11_test.test
?????文件????????1478??2016-08-29?10:05??s3c6410_gpio.h
?????文件??????527170??2012-02-14?19:01??DHT11說明書最新版.pdf
- 上一篇:AdaBoost實戰(zhàn)代碼
- 下一篇:五點差分格式解泊松方程和拉普拉斯方程
評論
共有 條評論