![嵌入式系統(tǒng)綜合實驗一_第1頁](http://file4.renrendoc.com/view15/M00/04/26/wKhkGWeF9fOAMG0vAAHxie6tT6w443.jpg)
![嵌入式系統(tǒng)綜合實驗一_第2頁](http://file4.renrendoc.com/view15/M00/04/26/wKhkGWeF9fOAMG0vAAHxie6tT6w4432.jpg)
![嵌入式系統(tǒng)綜合實驗一_第3頁](http://file4.renrendoc.com/view15/M00/04/26/wKhkGWeF9fOAMG0vAAHxie6tT6w4433.jpg)
![嵌入式系統(tǒng)綜合實驗一_第4頁](http://file4.renrendoc.com/view15/M00/04/26/wKhkGWeF9fOAMG0vAAHxie6tT6w4434.jpg)
![嵌入式系統(tǒng)綜合實驗一_第5頁](http://file4.renrendoc.com/view15/M00/04/26/wKhkGWeF9fOAMG0vAAHxie6tT6w4435.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
P.PAGE1實驗名稱:姓名:學(xué)號:P.PAGE1裝訂線裝訂線專業(yè):測控技術(shù)與儀器姓名:顏睿專業(yè):測控技術(shù)與儀器姓名:顏睿學(xué)號:3130103850日期:2018.4.28地點:創(chuàng)客空間課程名稱:嵌入式系統(tǒng)設(shè)計指導(dǎo)老師:馬永昌成績:________________實驗名稱:綜合實驗一dht11和人體感應(yīng)傳感器實驗類型:驗證型同組學(xué)生姓名:孫凡原一、實驗?zāi)康暮鸵螅ū靥睿? 二、實驗內(nèi)容和原理(必填)三、主要儀器設(shè)備(必填) 四、操作方法和實驗步驟五、實驗數(shù)據(jù)記錄和處理 六、實驗結(jié)果與分析(必填)七、討論、心得一、實驗?zāi)康暮鸵?.掌握字符設(shè)備驅(qū)動程序的基本結(jié)構(gòu)和開發(fā)方法2.掌握用戶空間調(diào)用設(shè)備驅(qū)動的方法3.掌握用戶和內(nèi)核的交互二、實驗內(nèi)容和原理1.編寫溫濕度傳感器DHT11驅(qū)動,傳輸打印溫濕度信息2.編寫人體感應(yīng)傳感器驅(qū)動,控制LED燈亮滅原理:溫濕度傳感器DHT11:1.引腳圖實際使用傳感器沒有NC引腳2.數(shù)據(jù)采集a.數(shù)據(jù)總時序用戶主機(jī)發(fā)送一次開始信號后,DHT11從低功耗模式轉(zhuǎn)換到高速模式,待主機(jī)開始信號結(jié)束后,DHT11發(fā)送響應(yīng)信號,送出40bit的數(shù)據(jù),幵觸發(fā)一次信采集。b.主機(jī)發(fā)送起始信號連接DHT11的DATA引腳的I/O口輸出低電平,且低電平保持時間不能小于18ms,然后等待DHT11作出應(yīng)答信號。c.檢測從機(jī)應(yīng)答信號DHT11的DATA引腳檢測到外部信號有低電平時,等待外部信號低電平結(jié)束,延遲后DHT11的DATA引腳處于輸出狀態(tài),輸出80微秒的低電平作為應(yīng)答信號,緊接著輸出80微秒的高電平通知外設(shè)準(zhǔn)備接收數(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);//設(shè)置led輸出
gpio_direction_input(config.button_num);//設(shè)置人體傳感器輸入
gpio_set_value(config.led_num,0);//關(guān)led
if(gpio_get_value(config.button_num)==0)//人體感應(yīng)輸入低電平,led滅
{
gpio_set_value(config.led_num,0);
}
elseif(gpio_get_value(config.button_num)==1)//人體感應(yīng)輸入高電平,led亮
{
gpio_set_value(config.led_num,1);
}
gpio_direction_output(config.led1_num,0);//設(shè)置led1輸出(實際并未使用)
gpio_direction_output(config.out_num,1);//設(shè)置溫濕度傳感器數(shù)據(jù)端的引腳為輸出
gpio_set_value(config.led1_num,0);
gpio_set_value(config.out_num,0);//根據(jù)dht11的數(shù)據(jù)傳輸規(guī)則進(jìn)行操作
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);//測量結(jié)束引腳置高電平
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;
}
//自動生成設(shè)備文件在/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.應(yīng)用程序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;//人體感應(yīng)傳感器引腳
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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年液壓機(jī)生產(chǎn)線項目投資價值分析報告
- 二零二五年度企業(yè)辦公環(huán)境植物養(yǎng)護(hù)與能源節(jié)約合同
- 2024年12月2025上海申康醫(yī)院發(fā)展中心公開招聘3人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 抗疫請戰(zhàn)申請書
- 2025年中國牛骨清湯市場調(diào)查研究報告
- 新媒體編輯部申請書
- 上崗申請書模板
- 2020英語中考真題:9 鎮(zhèn)江市
- 高中獎學(xué)金申請書范文
- 保釋申請書格式
- 2024年注冊安全工程師考試題庫及參考答案【完整版】
- 府谷縣飛馬梁煤礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 2024年中國科學(xué)技術(shù)大學(xué)少年創(chuàng)新班數(shù)學(xué)試題真題(答案詳解)
- 衛(wèi)生院藥房工作計劃
- 國家基本基藥培訓(xùn)課件
- 部編版小學(xué)語文一年級下冊第一單元教材解讀分析
- 2024年新疆維吾爾自治區(qū)成考(專升本)大學(xué)政治考試真題含解析
- 網(wǎng)絡(luò)安全與制造業(yè)
- 中考數(shù)學(xué)考點集訓(xùn)分類訓(xùn)練10 二次函數(shù)的實際應(yīng)用(含答案)
- 船舶管理臺賬全套表格模板
- 2024年新改版青島版(六三制)四年級下冊科學(xué)全冊知識點
評論
0/150
提交評論