




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
項(xiàng)目三智慧工廠環(huán)境智能監(jiān)控
馮蓉珍
《微處理器程序設(shè)計(jì)》教學(xué)目標(biāo)和技能要求知識(shí)目標(biāo)1、掌握溫度傳感器DS18B20的基本原理及溫度轉(zhuǎn)換命令;2、理解采集溫度的軟件設(shè)計(jì)流程,學(xué)會(huì)調(diào)用溫度采集函數(shù)并能修改函數(shù)完成溫度采集和顯示;3、掌握光敏傳感器的基本原理并理解ADC模式轉(zhuǎn)換的工作原理;4、掌握ADC轉(zhuǎn)換的代碼實(shí)現(xiàn);5、理解采集光照的軟件設(shè)計(jì)流程,學(xué)會(huì)調(diào)用光照采集函數(shù)并能修改函數(shù)完成光照采集和顯示;6、掌握人體紅外傳感器的基本原理;7、掌握利用兩個(gè)人體紅外傳感器判斷教室里是否有人的方法;8、理解直流電機(jī)和步進(jìn)電機(jī)的工作原理及控制時(shí)序。教學(xué)目標(biāo)和技能要求能力目標(biāo)
1、能利用光敏傳感器采集數(shù)據(jù)控制LED燈亮滅,從而實(shí)現(xiàn)環(huán)境亮度智能控制功能;2、能利用人體紅外傳感器采集數(shù)據(jù)控制LED燈開關(guān)從而實(shí)現(xiàn)LED燈智能控制功能;3、能利用人體紅外傳感器和光敏傳感器控制LED燈從而實(shí)現(xiàn)智慧校園智能燈控功能;4、綜合利用上述三種傳感器實(shí)現(xiàn)能源的智能控制,達(dá)到節(jié)能減排的效果。知識(shí)導(dǎo)圖任務(wù)3.1神奇的傳感器任務(wù)目標(biāo)通過本任務(wù)的設(shè)計(jì)和制作,介紹人體紅外傳感器、光敏傳感器和溫度傳感器的工作原理,要求學(xué)生掌握傳感器采集數(shù)據(jù)并進(jìn)行顯示的基本知識(shí),培養(yǎng)學(xué)生利用傳感器采集數(shù)據(jù)并進(jìn)行顯示的基本能力。知識(shí)準(zhǔn)備1、人體紅外傳感器
圖3-1常用的人體紅外傳感器
任務(wù)3.1
神奇的傳感器知識(shí)準(zhǔn)備
2、光敏傳感器ADC轉(zhuǎn)換原理
在
A/D轉(zhuǎn)換器中,因?yàn)檩斎氲哪M信號(hào)在時(shí)間上是連續(xù)的,而輸出的數(shù)字信號(hào)代碼是離散的,所以A/D轉(zhuǎn)換器在進(jìn)行轉(zhuǎn)換時(shí),必須在一系列選定的瞬間(時(shí)間坐標(biāo)軸上的一些規(guī)定點(diǎn)上)對(duì)輸入的模擬信號(hào)采樣,然后再把這些采樣值轉(zhuǎn)換為數(shù)字量。因此,一般的A/D轉(zhuǎn)換過程是通過采樣保持、量化和編碼這三個(gè)步驟完成的,即首先對(duì)輸入的模擬電壓信號(hào)采樣,采樣結(jié)束后進(jìn)入保持時(shí)間,在這段時(shí)間內(nèi)將采樣的電壓量轉(zhuǎn)化為數(shù)字量,并按一定的編碼形式給出轉(zhuǎn)換結(jié)果,然后開始下一次采樣。圖3-3給出模擬量到數(shù)字量轉(zhuǎn)換過程的框圖。知識(shí)準(zhǔn)備3、溫度傳感器
任務(wù)3.1
神奇的傳感器表3-1引腳說明任務(wù)實(shí)施子任務(wù)一有人來了——人體紅外傳感器應(yīng)用
利用按鈕開關(guān)的閉合和松開模擬人體紅外傳感器檢測到有人和沒人經(jīng)過。有人經(jīng)過點(diǎn)亮led燈,否則,led燈不亮。
1、硬件電路設(shè)計(jì)任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施2、軟件編程
當(dāng)按下開關(guān),即模擬有人經(jīng)過,則P3.6為低電平,定義位變量表示與紅外傳感器連接的端口,sbithw=P3^6;位變量led表示連接led的端口。在主函數(shù)的while循環(huán)中判斷位變量hw的值,hw值為低則點(diǎn)亮led燈,即led=0。sbithw=P3^6;sbitLED=P3^3;主函數(shù)如下:任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施voidmain(void){while(1){if(hw==0){//檢測到有人經(jīng)過
led=0;//點(diǎn)亮led燈
}
else{led=1;
}}}
更簡單的,while循環(huán)體中只要一條語句即可,即led=hw;從hw的取值與輸出端led的值的關(guān)系,可以看到,led的值和hw的一致,因此,可以隨時(shí)讀取hw的值并更新led的值。任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施3、仿真調(diào)試任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施子任務(wù)二感知光亮度——光敏傳感器應(yīng)用
利用光敏傳感器檢測光照強(qiáng)度,數(shù)碼管顯示亮度值。任務(wù)實(shí)現(xiàn):進(jìn)行硬件電路設(shè)計(jì)和軟件編程。1、硬件電路設(shè)計(jì)任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施2、軟件編程新建工程文件夾,新建0832.c文件。定義ADC0832進(jìn)行AD轉(zhuǎn)換的四個(gè)端口:sbitADC_CS=P3^5;sbitADC_CLK=P3^6;sbitADC_DO=P3^7;sbitADC_DI=P3^4;定義控制燈亮滅的光照讀閾值lightH,lightL;利用ADC0832進(jìn)行AD轉(zhuǎn)換的子函數(shù),子函數(shù)如下:任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施2、軟件編程unsignedcharADC0832(void)//把模擬電壓值轉(zhuǎn)換成8位二進(jìn)制數(shù)并返回{unsignedchari,data_c;data_c=0;ADC_CS=0;ADC_DO=0;//片選,DO為高阻態(tài)for(i=0;i<10;i++){;}ADC_CLK=0;Delay(2);ADC_DI=1;ADC_CLK=1;Delay(2);//第一個(gè)脈沖,起始位ADC_CLK=0;Delay(2);ADC_DI=1;ADC_CLK=1;
任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施
Delay(2);//第二個(gè)脈沖,DI=1表示雙通道單極性輸入ADC_CLK=0;Delay(2);ADC_DI=1;ADC_CLK=1;Delay(2);//第三個(gè)脈沖,DI=1表示選擇通道1(CH2)ADC_DI=0;ADC_DO=1;//DI轉(zhuǎn)為高阻態(tài),DO脫離高阻態(tài)為輸出數(shù)據(jù)作準(zhǔn)備ADC_CLK=1;Delay(2);ADC_CLK=0;任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施Delay(2);//經(jīng)實(shí)驗(yàn),這里加一個(gè)脈沖AD便能正確讀出數(shù)據(jù),//不加的話讀出的數(shù)據(jù)少一位(最低位d0讀不出)for(i=0;i<8;i++){ADC_CLK=1;Delay(2);ADC_CLK=0;Delay(2);data_c=(data_c<<1)|ADC_DO;//在每個(gè)脈沖的下降沿DO輸出一位數(shù)據(jù),最終ch為8位二進(jìn)制數(shù)}ADC_CS=1;//取消片選,一個(gè)轉(zhuǎn)換周期結(jié)束return(data_c);//把轉(zhuǎn)換結(jié)果返回}任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施
將三位光照值進(jìn)行處理,獲得百位、十位和個(gè)位,將其存放人disp[]數(shù)組中。第一個(gè)數(shù)碼管顯示光照值的百位數(shù),第二個(gè)數(shù)碼管顯示十位數(shù),第三個(gè)數(shù)碼管顯示個(gè)位數(shù)。
數(shù)碼管被點(diǎn)亮的片選信號(hào)由38譯碼器的abc端來決定。
數(shù)碼管顯示光照度的子函數(shù)如下:任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施voiddisplay_gm(){//disp[0]=smgduan[data_temp/1000];//千位 disp[1]=smgduan[data_temp%1000/100];//百位 disp[2]=smgduan[data_temp%1000%100/10];//十位 disp[3]=smgduan[data_temp%1000%100%10];//個(gè)位
c=0;b=0;a=0; P0=disp[1]; Delay(100);
c=0;b=0;a=1; P0=disp[2]; Delay(100);
c=0;b=1;a=0; P0=disp[3]; Delay(100);
}任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施
當(dāng)光亮度低于lightL的值時(shí)開燈;否則如果光亮度超過lightH的值時(shí)關(guān)燈??刂茻舻拈_關(guān)用一個(gè)子函數(shù)gm_control_led()實(shí)現(xiàn)。代碼如下:voidgm_control_led(){//亮度低于某個(gè)值開燈if(data_temp<lightL){led=0;}//太亮了,不開燈elseif(data_temp>lightH){ led=1;}}任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施主函數(shù)中對(duì)亮度初始值和開關(guān)燈的閾值進(jìn)行設(shè)置,代碼如下:data_temp=0;//光照亮度初始值lightH=200;//光燈閾值lightL=100;//開燈閾值主函數(shù)中不斷循環(huán)三件事,采集光照,數(shù)碼管顯示光照,根據(jù)光照度控制led燈開和關(guān)。代碼如下:while(1){data_temp=ADC0832();//ad轉(zhuǎn)換獲取光照強(qiáng)度 display_gm();//數(shù)碼管顯示光照強(qiáng)度(第1-3個(gè)數(shù)碼管) gm_control_led();//根據(jù)亮度控制燈的狀態(tài)}任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施3、仿真運(yùn)行
把編寫好的程序編譯后將編譯產(chǎn)生的hex文件下載到仿真電路圖中,點(diǎn)擊運(yùn)行按鍵,觀察運(yùn)行結(jié)果,光照的值在0-247之間。任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施子任務(wù)三溫度可見了——溫度傳感器應(yīng)用利用
DS18B20檢測溫度,數(shù)碼管顯示溫度值。任務(wù)實(shí)現(xiàn):進(jìn)行硬件電路設(shè)計(jì)和軟件編程。1、硬件電路設(shè)計(jì)任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施2、軟件編程對(duì)溫度傳感器的操作,首先對(duì)傳感器的初始化:ucharInit_DS18B20(){ucharstatus;DQ=1;Delay(8);DQ=0;Delay(90);DQ=1;Delay(8);status=DQ;Delay(100);DQ=1;returnstatus;}任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施2、軟件編程讀取傳感器一個(gè)字節(jié):ucharReadOneByte() //11011011{uchari,dat=0,bi;DQ=1;for(i=0;i<8;i++){DQ=0;;DQ=1;;;bi=DQ;//0dat=(dat>>1)|(bi<<7);//11011011Delay(30); //1DQ=1;
}returndat;}任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施2、軟件編程//寫一個(gè)字節(jié)
voidWriteOneByte(uchardat)//00110011
{uchari;//00000001
for(i=0;i<8;i++)
{
DQ=0;
DQ=dat&0x01;
Delay(5);
DQ=1;
dat>>=1;//01100110
}
}
任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施2、軟件編程//溫度轉(zhuǎn)換并讀取溫度高低兩個(gè)字節(jié)的二進(jìn)制值voidRead_Temperature(){if(Init_DS18B20()==1)//DS18B20故障DS18B20_IS_OK=0;else{WriteOneByte(0xCC);//跳過序列號(hào)WriteOneByte(0x44);//啟動(dòng)溫度轉(zhuǎn)換Init_DS18B20();//初始化溫度傳感器WriteOneByte(0xCC);//跳過序列號(hào)WriteOneByte(0xBE);//讀取溫度寄存器Temp_Value[0]=ReadOneByte();//溫度低8位Temp_Value[1]=ReadOneByte();//溫度高8位}}Temp_Value[0]和Temp_Value[1]分別存放了溫度的低字節(jié)和高字節(jié)。任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施2、軟件編程//溫度處理函數(shù),獲取溫度具體數(shù)值voidDisplay_Temperature() //*************{charng=0;//正數(shù)//負(fù)數(shù)標(biāo)識(shí)及負(fù)號(hào)顯示位置//如果為負(fù)數(shù)則取反加1,并設(shè)置負(fù)號(hào)標(biāo)識(shí)記負(fù)號(hào)顯示位置if((Temp_Value[1]&0xF8)==0xF8)//1111100011111111
{ Temp_Value[1]=~Temp_Value[1];
Temp_Value[0]=~Temp_Value[0]+1;
if(Temp_Value[0]==0x00){ //求得補(bǔ)碼溢出情況處理 Temp_Value[1]++;
}
ng=1;//負(fù)數(shù)}Temp_Value[0]=((Temp_Value[0]&0xF0)>>4)|((Temp_Value[1]&0x07)<<4);
ng=ng?-Temp_Value[0]:Temp_Value[0];num1=ng;
display(num1);}任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施2、軟件編程//數(shù)碼管顯示溫度voiddisplay(intnum){ ucharbai,shi,ge; if(num>30||num<-5)//溫度不在設(shè)定的上下限之間,則點(diǎn)亮led { LED=0; SEG3=1; P2=0xbf; Delay(500); //10111111 SEG3=0; SEG4=1; P2=0xbf; Delay(500); SEG4=0;;SEG5=0;P2=0x40;Delay(500);SEG5=1
}
任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施
else { LED=1;
if(num>=0) { SEG1=0; P2=0xff; } else {SEG1=1; P2=0xbf;//"-" Delay(500); SEG1=0; num=-num; } bai=num/100; shi=(num%100)/10; ge=num%10;
SEG2=1; P2=table[bai]; Delay(500);SEG2=0;
SEG3=1; P2=table[shi]; Delay(500);SEG3=0; SEG4=1; P2=table[ge]; Delay(500);SEG4=0;
SEG5=0;P2=0x8f;Delay(500); SEG5=1; }}任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施voidmain(void){Read_Temperature();Delay(50000);Delay(50000);while(1){display(num1);//顯示溫度,取消此句,溫度為負(fù)時(shí)會(huì)閃
Read_Temperature();//讀取溫度傳感器的值
Dispose_Temperature();//處理讀取到的溫度高低字節(jié)轉(zhuǎn)換//成具體溫度值,并顯示溫度}}任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施3、仿真調(diào)試任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施能力拓展
本任務(wù)利用光敏傳感器采集光照控制LED燈的開和關(guān)。在仿真圖中調(diào)試運(yùn)行成功后,進(jìn)行能力拓展,實(shí)現(xiàn)開發(fā)板上的光敏傳感器檢測光照強(qiáng)度,數(shù)碼管顯示亮度值的功能。1、硬件電路設(shè)計(jì)任務(wù)3.1
神奇的傳感器任務(wù)實(shí)施1、硬件電路設(shè)計(jì)開發(fā)板連線任務(wù)3.1
神奇的傳感器圖3-15開發(fā)板引腳圖
任務(wù)實(shí)施2、軟件編程
本任務(wù)要實(shí)現(xiàn)的功能是:通過ADC轉(zhuǎn)換電路采集電位器電壓值,將采集轉(zhuǎn)換后的AD值通過數(shù)碼管顯示。
首先將51單片機(jī)的頭文件和XPT2046.h的頭文件包含進(jìn)來,然后定義動(dòng)態(tài)數(shù)碼管、74HC138譯碼器的控制管腳。主函數(shù)功能非常簡單,在while循環(huán)內(nèi)調(diào)用datapros()AD數(shù)據(jù)處理函數(shù),該函數(shù)內(nèi)部又調(diào)用Read_AD_Data(0x94)函數(shù)來讀取電位器對(duì)應(yīng)通道(AIN0)的AD值,0X94即為AIN0通道的控制命令,至于AIN1、AIN2、AIN3通道值可根據(jù)前面介紹的控制命令寄存器計(jì)算(AIN1對(duì)應(yīng)的命令值是0xA4,AIN2對(duì)應(yīng)的命令值是0xD4,AIN3對(duì)應(yīng)的命令值是0xE4),然后在取出各位對(duì)應(yīng)的數(shù)碼管段碼數(shù)據(jù)保存到數(shù)組disp中。最后調(diào)用DigDispl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025湖南株洲茶陵縣總工會(huì)工人文化宮建設(shè)項(xiàng)目專業(yè)技術(shù)人員招聘考前自測高頻考點(diǎn)模擬試題附答案詳解(典型題)
- 2025江蘇丹陽市衛(wèi)生健康委員會(huì)所屬丹陽市人民醫(yī)院招聘22人(南京專場)模擬試卷附答案詳解(典型題)
- 2025湖南省社會(huì)科學(xué)院(湖南省人民政府發(fā)展研究中心)招聘高層次人才14人模擬試卷及答案詳解(必刷)
- 2025年福建省泉州文旅集團(tuán)招聘3人考前自測高頻考點(diǎn)模擬試題附答案詳解(考試直接用)
- 2025呼倫貝爾市發(fā)展和改革委員會(huì)競爭性比選事業(yè)單位工作人員模擬試卷及答案詳解(名校卷)
- 2025河南鄭州惠濟(jì)區(qū)迎賓路社區(qū)衛(wèi)生服務(wù)中心招聘2人考前自測高頻考點(diǎn)模擬試題附答案詳解(黃金題型)
- 2025江蘇連云港市贛榆區(qū)事業(yè)單位招聘31人考前自測高頻考點(diǎn)模擬試題附答案詳解(突破訓(xùn)練)
- 2025湖南郴州資興市面向本市2025屆農(nóng)村訂單定向醫(yī)學(xué)生、基層醫(yī)療衛(wèi)生機(jī)構(gòu)本土化??茖哟稳瞬排囵B(yǎng)醫(yī)學(xué)生考核招聘15人考前自測高頻考點(diǎn)模擬試題及答案詳解(必刷)
- 2025河南鄭州升達(dá)經(jīng)貿(mào)管理學(xué)院專任教師招聘考前自測高頻考點(diǎn)模擬試題及一套完整答案詳解
- 2025廣東東莞市莞城醫(yī)院招聘納入崗位管理的編制外人員9人模擬試卷及答案詳解1套
- 2025呼和浩特市總工會(huì)社會(huì)工作者、專職集體協(xié)商指導(dǎo)員招聘29人考試參考題庫及答案解析
- 2025年礦業(yè)權(quán)評(píng)估師考試(礦業(yè)權(quán)評(píng)估地質(zhì)與礦業(yè)工程專業(yè)能力)全真沖刺試題及答案
- 【公開課】兩種電荷-2025-2026學(xué)年物理人教版(2024)九年級(jí)全一冊(cè)
- 2025年秋招:人力資源專員筆試題庫及答案
- 汽車發(fā)動(dòng)機(jī)課件
- 一節(jié)好課的標(biāo)準(zhǔn)簡短課件
- 殯葬行業(yè)專業(yè)知識(shí)培訓(xùn)課件
- 直播游戲基礎(chǔ)知識(shí)培訓(xùn)
- 德清縣福曜洗滌有限公司年產(chǎn)100萬套牛仔服裝項(xiàng)目環(huán)境影響報(bào)告表
- 重慶市城市建設(shè)投資(集團(tuán))有限公司招聘筆試題庫2025
- (正式版)DB44∕T 2685-2025 《尾礦庫注銷工程安全設(shè)計(jì)導(dǎo)則》
評(píng)論
0/150
提交評(píng)論