版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
P.PAGE1實驗名稱:姓名:學號:P.PAGE1裝訂線裝訂線專業(yè):測控技術與儀器姓名:顏睿專業(yè):測控技術與儀器姓名:顏睿學號:3130103850日期:2018.4.28地點:創(chuàng)客空間課程名稱:嵌入式系統(tǒng)設計指導老師:馬永昌成績:________________實驗名稱:綜合實驗一dht11和人體感應傳感器實驗類型:驗證型同組學生姓名:孫凡原一、實驗目的和要求(必填) 二、實驗內容和原理(必填)三、主要儀器設備(必填) 四、操作方法和實驗步驟五、實驗數(shù)據(jù)記錄和處理 六、實驗結果與分析(必填)七、討論、心得一、實驗目的和要求1.掌握字符設備驅動程序的基本結構和開發(fā)方法2.掌握用戶空間調用設備驅動的方法3.掌握用戶和內核的交互二、實驗內容和原理1.編寫溫濕度傳感器DHT11驅動,傳輸打印溫濕度信息2.編寫人體感應傳感器驅動,控制LED燈亮滅原理:溫濕度傳感器DHT11:1.引腳圖實際使用傳感器沒有NC引腳2.數(shù)據(jù)采集a.數(shù)據(jù)總時序用戶主機發(fā)送一次開始信號后,DHT11從低功耗模式轉換到高速模式,待主機開始信號結束后,DHT11發(fā)送響應信號,送出40bit的數(shù)據(jù),幵觸發(fā)一次信采集。b.主機發(fā)送起始信號連接DHT11的DATA引腳的I/O口輸出低電平,且低電平保持時間不能小于18ms,然后等待DHT11作出應答信號。c.檢測從機應答信號DHT11的DATA引腳檢測到外部信號有低電平時,等待外部信號低電平結束,延遲后DHT11的DATA引腳處于輸出狀態(tài),輸出80微秒的低電平作為應答信號,緊接著輸出80微秒的高電平通知外設準備接收數(shù)據(jù)。d.接收數(shù)據(jù)(1)數(shù)據(jù)判定規(guī)則
位數(shù)據(jù)“0”的格式為:50微秒的低電平和26-28微秒的高電平,位數(shù)據(jù)“1”的格式為:50微秒的低電平加70微秒的高電平。接收數(shù)據(jù)時可以先等待低電平過去,即等待數(shù)據(jù)線拉高,再延時60us,因為60us大于28us且小于70us,再檢測此時數(shù)據(jù)線是否為高,如果為高,則數(shù)據(jù)判定為1,否則為0。
if(err)
{
printk(KERN_ERR"[%s%d]:Requestbuttongpiofailed\n",__func__,__LINE__);
return-EFAULT;
}
err=gpio_request_one(config.led_num,GPIOF_OUT_INIT_LOW,"LEDlight");
if(err)
{
printk(KERN_ERR"[%s%d]:Requestledgpiofailed\n",__func__,__LINE__);
gpio_free(config.button_num);
return-EFAULT;
}
err=gpio_request_one(config.out_num,GPIOF_IN,"LightButton");
if(err)
{
printk(KERN_ERR"[%s%d]:Requestbuttongpiofailed\n",__func__,__LINE__);
gpio_free(config.button_num);
gpio_free(config.led_num);
return-EFAULT;
}
err=gpio_request_one(config.led1_num,GPIOF_OUT_INIT_LOW,"LEDlight");
if(err)
{
printk(KERN_ERR"[%s%d]:Requestledgpiofailed\n",__func__,__LINE__);
gpio_free(config.out_num);
gpio_free(config.button_num);
gpio_free(config.led_num);
}
flag=1;
break;
}
case1:
{
gpio_direction_output(config.led_num,0);//設置led輸出
gpio_direction_input(config.button_num);//設置人體傳感器輸入
gpio_set_value(config.led_num,0);//關led
if(gpio_get_value(config.button_num)==0)//人體感應輸入低電平,led滅
{
gpio_set_value(config.led_num,0);
}
elseif(gpio_get_value(config.button_num)==1)//人體感應輸入高電平,led亮
{
gpio_set_value(config.led_num,1);
}
gpio_direction_output(config.led1_num,0);//設置led1輸出(實際并未使用)
gpio_direction_output(config.out_num,1);//設置溫濕度傳感器數(shù)據(jù)端的引腳為輸出
gpio_set_value(config.led1_num,0);
gpio_set_value(config.out_num,0);//根據(jù)dht11的數(shù)據(jù)傳輸規(guī)則進行操作
mdelay(20);
gpio_set_value(config.out_num,1);
udelay(40);
gpio_direction_input(config.out_num);
while(gpio_get_value(config.out_num)==0)
{}
while(gpio_get_value(config.out_num)==1)
{}
for(i=0;i<40;i++)
{
while(gpio_get_value(config.out_num)==0)
{}
udelay(50);
if(gpio_get_value(config.out_num)==1)//獲得的數(shù)據(jù)存入buff[40]數(shù)組
{
buff[i]=1;
while(gpio_get_value(config.out_num)==1)
{}
}
else
buff[i]=0;
}
for(i=0;i<16;i++)//濕度移位相加
{
humi=humi*2+buff[i];
}
for(i=16;i<32;i++)//溫度移位相加
{
temper=temper*2+buff[i];
}
config.humidity=humi;
config.temperature=temper;
gpio_direction_output(config.out_num,1);//測量結束引腳置高電平
gpio_set_value(config.out_num,1);
mdelay(2000);//延時一段時間再測量
if(copy_to_user((void*)arg,&config,sizeof(structgpio_config)))//數(shù)據(jù)傳入用戶態(tài)
{
printk(KERN_ERR"[%s%d]:copytouserfailed!\n",__func__,__LINE__);
return-EFAULT;
}
flag=1;
break;
}
default:
printk(KERN_INFO"[%s%d]:Invalidcmd",__func__,__LINE__);
break;
}
return0;}
staticstructfile_operationsdemo_fops={
.owner=THIS_MODULE,
.open=demo_open,
.release=demo_release,
.unlocked_ioctl=demo_ioctl,};staticint__initdemo_init(void){
interr;
printk(KERN_INFO"DemoInit\n");
err=alloc_chrdev_region(&demo_devno,0,1,DRIVER_NAME);
if(err<0){
gotoerr;
}
cdev_init(&demo_dev,&demo_fops);
err=cdev_add(&demo_dev,demo_devno,1);
if(err<0)
{
printk(KERN_ERR"[%s,%d]addcdevfailed\n",__func__,__LINE__);
gotoFREE_DEVNO;
}
//自動生成設備文件在/dev目錄下,文件名為DEVICE_NAME
demo_class=class_create(THIS_MODULE,DEVICE_NAME);
if(IS_ERR(demo_class))
{
printk(KERN_ERR"[%s,%d]classcreatefailed\n",__func__,__LINE__);
gotoDEV_FREE;
}
device_create(demo_class,NULL,demo_devno,NULL,DEVICE_NAME);
return0;DEV_FREE:
cdev_del(&demo_dev);FREE_DEVNO:
unregister_chrdev_region(demo_devno,1);err:
returnerr;}staticvoiddemo_exit(void){
if(flag)
{
gpio_free(config.button_num);
gpio_free(config.led_num);
gpio_free(config.out_num);
gpio_free(config.led1_num);
}
device_destroy(demo_class,demo_devno);
class_destroy(demo_class);
cdev_del(&demo_dev);
unregister_chrdev_region(demo_devno,1);
printk(KERN_INFO"Demoexit\n");}module_init(demo_init);module_exit(demo_exit);MODULE_AUTHOR("hyg");MODULE_DESCRIPTION("BUTTONLEDDriver");MODULE_LICENSE("GPL");2.應用程序demo.c#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>#include<sys/ioctl.h>#include<sys/time.h>#include<sys/ioctl.h>#include<errno.h>#include<fcntl.h>structgpio_config{
intbutton_num;
intout_num;
intled_num;
intled1_num;
inthumidity;
inttemperature;};intmain(intargc,char**argv){
intfd;
floath;
floatt;
structgpio_configconfig;
config.button_num=26;//人體感應傳感器引腳
config.led_num=3;//led引腳
config.out_num=5;//dht11引腳
config.led1_num=6;//未使用
config.humidity=0;//濕度
config.tempe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州省貴陽市花溪區(qū)高坡民族中學2024-2025學年度第一學期12月質量監(jiān)測九年級數(shù)學試卷
- 2021年高考英語考點總動員系列-專題03-介詞和介詞短語(解析版)
- 【名師一號】2020-2021學年新課標化學必修一-綜合能力檢測4-非金屬及其化合物
- 四年級數(shù)學(上)計算題專項練習及答案
- 2021高考地理二輪專項突破:自然地理事物特征描述和原理闡釋(2)課后訓練及詳解
- 《肝硬化的臨床表現(xiàn)》課件
- 【名師一號】2020-2021學年蘇教版化學必修二雙基限時練21-蛋白質和氨基酸
- 【2022屆走向高考】高三數(shù)學一輪(北師大版)基礎鞏固:第4章-第7節(jié)-正弦定理、余弦定理的應用舉例
- 《甲狀腺術后的護理》課件
- 室內配線工年終工作總結計劃匯報
- 2024年全國教育大會精神全文課件
- DL-T5153-2014火力發(fā)電廠廠用電設計技術規(guī)程
- 租賃(出租)物品清單表
- 提高聚氯乙烯卷材地面一次驗收合格率
- 【部編版】2022年語文七年級上:作文能力提升—謀篇布局(含答案)
- 甲型H1N1流感防治應急演練方案(1)
- 稀土高鐵鋁合金電力電纜應用參數(shù).
- 陳振明《公共管理學》(課堂PPT)
- 數(shù)據(jù)結構-圖(1)
- LU和QR分解法解線性方程組
- 漏油器外殼的落料、拉深、沖孔級進模的設計【畢業(yè)論文絕對精品】
評論
0/150
提交評論