资源简介
基于TQ2440和DHT11的温湿度监控系统,界面是用QT写的,运行在TQ2440上Linux系统下的。运行应用程序前需要安装驱动,驱动源码和Makefile已附上,不会操作的就不用下载了。
代码片段和文件信息
//数据引脚链接到GPC9
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define DEVICE_NAME “dht11“
static char DHT11_read_byte ( void )
{
char DHT11_byte ;
unsigned char i ;
unsigned char temp ;
DHT11_byte = 0 ;
for ( i = 0 ; i < 8 ; i ++ )
{
temp = 0 ;
while ( ! (s3c2410_gpio_getpin ( S3C2410_GPC9) ) )
{
temp ++ ;
if ( temp > 12 )
return 1 ;
udelay ( 5 ) ;
}
temp = 0 ;
while ( s3c2410_gpio_getpin ( S3C2410_GPC9) )
{
temp ++ ;
if ( temp > 20 )
return 1 ;
udelay ( 5 ) ;
}
if ( temp > 6 )
{
DHT11_byte <<= 1 ;
DHT11_byte |= 1 ;
}
else
{
DHT11_byte <<= 1 ;
DHT11_byte |= 0 ;
}
}
return DHT11_byte ;
}
static ssize_t DHT11_read ( struct file* filp char __user* buf size_t count loff_t* f_pos )
{
unsigned char DataTemp;
unsigned char i;
unsigned char err;
char tempBuf[5];
// loff_t pos = *f_pos ;
err = 0 ;
s3c2410_gpio_cfgpin ( S3C2410_GPC9 S3C2410_GPC9_OUTP );
s3c2410_gpio_setpin ( S3C2410_GPC9 0 );
msleep ( 18 );
// mdelay ( 18 );
s3c2410_gpio_setpin ( S3C2410_GPC9 1 );
udelay ( 40 );
s3c2410_gpio_cfgpin ( S3C2410_GPC9 S3C2410_GPC9_INP );
if ( !err )
{
DataTemp = 10 ;
while ( !( s3c2410_gpio_getpin ( S3C2410_GPC9) ) && DataTemp )
{
DataTemp --;
udelay ( 10 );
}
if ( !DataTemp )
{
err = 1;
count = -EFAULT;
}
}
if ( !err )
{
DataTemp = 10 ;
while ( ( s3c2410_gpio_getpin ( S3C2410_GPC9) ) && DataTemp )
{
DataTemp --;
udelay ( 10 );
}
if ( !DataTemp )
{
err = 1;
count = -EFAULT;
}
}
if ( !err )
{
for ( i = 0; i < 5; i ++ )
{
tempBuf[i] = DHT11_read_byte () ;
}
DataTemp = 0 ;
for ( i = 0; i < 4; i ++ )
{
DataTemp += tempBuf[i] ;
}
if ( DataTemp != tempBuf[4] )
{
count = -EFAULT;
}
// if ( count > ( 5 - pos ) )
// {
// count = 5 - pos ;
// }
if ( count > 5 )
{
count = 5 ;
}
// pos += count;
// if ( copy_to_user ( buf tempBuf + *f_pos count ) )
if ( copy_to_user ( buf tempBuf count ) )
{
count = -EFAULT ;
}
// *f_pos = pos;
}
s3c2410_gpio_cfgpin ( S3C2410_GPC9 S3C2410_GPC9_OUTP );
s3c2410_gpio_setpin ( S3C2410_GPC9 1 );
return count;
}
static struct file_operations dev_fops = {
.owner = THIS_MODULE
.read = DHT11_read
};
static struct miscdevice misc = {
.minor = MISC_DYNAMIC_MINOR
.name = DEVICE_NAME
.fops = &dev_fops
};
static int __init DHT11_init_module ( void )
{
int ret;
s3c2410
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-01-04 21:04 dht11\
目录 0 2016-01-04 21:05 dht11\.git\
文件 82 2016-01-04 20:33 dht11\.git\COMMIT_EDITMSG
文件 23 2015-12-04 22:08 dht11\.git\HEAD
文件 136 2016-01-04 20:54 dht11\.git\MERGE_MSG
文件 41 2016-01-04 20:54 dht11\.git\REVERT_HEAD
文件 290 2015-12-04 22:11 dht11\.git\config
文件 73 2015-12-04 22:08 dht11\.git\desc
目录 0 2015-12-04 22:08 dht11\.git\hooks\
文件 478 2015-12-04 22:08 dht11\.git\hooks\applypatch-msg.sample
文件 896 2015-12-04 22:08 dht11\.git\hooks\commit-msg.sample
文件 189 2015-12-04 22:08 dht11\.git\hooks\post-update.sample
文件 424 2015-12-04 22:08 dht11\.git\hooks\pre-applypatch.sample
文件 1642 2015-12-04 22:08 dht11\.git\hooks\pre-commit.sample
文件 1348 2015-12-04 22:08 dht11\.git\hooks\pre-push.sample
文件 4951 2015-12-04 22:08 dht11\.git\hooks\pre-reba
文件 1239 2015-12-04 22:08 dht11\.git\hooks\prepare-commit-msg.sample
文件 3611 2015-12-04 22:08 dht11\.git\hooks\update.sample
文件 2368 2016-01-04 21:05 dht11\.git\index
目录 0 2015-12-04 22:08 dht11\.git\info\
文件 240 2015-12-04 22:08 dht11\.git\info\exclude
目录 0 2015-12-04 22:08 dht11\.git\logs\
文件 2060 2016-01-04 20:33 dht11\.git\logs\HEAD
目录 0 2015-12-04 22:11 dht11\.git\logs\refs\
目录 0 2015-12-04 22:08 dht11\.git\logs\refs\heads\
文件 2060 2016-01-04 20:33 dht11\.git\logs\refs\heads\master
目录 0 2015-12-04 22:11 dht11\.git\logs\refs\remotes\
目录 0 2015-12-04 22:11 dht11\.git\logs\refs\remotes\dht11\
文件 858 2016-01-04 20:33 dht11\.git\logs\refs\remotes\dht11\master
目录 0 2016-01-04 20:54 dht11\.git\ob
目录 0 2016-01-04 20:33 dht11\.git\ob
............此处省略216个文件信息
评论
共有 条评论