freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)的環(huán)境溫濕度檢測(cè)系統(tǒng)(文件)

 

【正文】 電平,命令 RW=1。0x80)。//返回狀態(tài)值(2)寫操作時(shí)序圖48 1602 液晶的寫操作時(shí)序 寫命令字操作和寫數(shù)據(jù)操作的區(qū)別在于RS 的電平不一樣,按照通信要求,寫命令字時(shí),首先應(yīng)讀取LCM 的狀態(tài),等待器件允許操作后;再拉低RS、RW 和EN 的電平,并向數(shù)據(jù)線上送入命令字碼;然后稍作延時(shí),拉高EN 電平,產(chǎn)生高脈沖;最后再次延時(shí)較長(zhǎng)時(shí)間,待命令字寫入后,恢復(fù)器件。 EN=0。 EN=1。//恢復(fù)器件狀態(tài)(3)LCM 的命令字和初始化步驟 1602LCM 命令字 LCM 的初始化步驟為:首先不檢測(cè)器件狀態(tài),寫入三次命令字0x38,每次寫入之后延時(shí)5ms,之后每次寫入命令字或數(shù)據(jù)必須檢測(cè)器件狀態(tài);再次寫入命令字0x38,設(shè)置LCM 的顯示模式;顯示模式設(shè)置完之后就可以對(duì)LCM 進(jìn)行字符顯示或屏幕處理的操作。它通過DI 引腳寫入,DO引腳讀出,采用該公司先進(jìn)的CMOS EEPROM 浮動(dòng)門工藝加工,器件可以經(jīng)受1,000,000 次的寫入/擦除操作,片內(nèi)數(shù)據(jù)保存壽命達(dá)到100 年。同樣具有低功耗、寬電壓和高速通信的特點(diǎn)。環(huán)境的溫濕度一般不會(huì)突變,具有連續(xù)性。照度測(cè)量初期構(gòu)想可使用光敏電阻和模數(shù)轉(zhuǎn)換器件來進(jìn)行檢測(cè),但光敏電阻阻值與照度并不呈線性關(guān)系,大致如下圖所示:圖411 光敏電阻阻值與光強(qiáng)關(guān)系而且,光敏電阻不僅對(duì)可見光敏感,對(duì)不可見光如紅外線也敏感(這常用來檢測(cè)紅外發(fā)射管是否完好),因此這種方案測(cè)量精度不是很高。相應(yīng)測(cè)量電路設(shè)計(jì)為:圖413 用光敏電阻檢測(cè)照度電路其中,相應(yīng)照度算法為: 例如,天氣晴朗時(shí),測(cè)得 DO=0xcc,則L=8400Lx。至此,后期拓展設(shè)計(jì)到此就已經(jīng)結(jié)束,如果還有其他需求,亦可選用合適的器件,來實(shí)現(xiàn)預(yù)期目標(biāo)。市場(chǎng)上的溫濕度檢測(cè)系統(tǒng)的功能為:檢測(cè)并顯示溫濕度數(shù)據(jù),設(shè)置報(bào)警點(diǎn)并報(bào)警,與上層監(jiān)控設(shè)備通信。因此,探索設(shè)計(jì)從不同場(chǎng)合的實(shí)際要求出發(fā),根據(jù)需要擴(kuò)展系統(tǒng)的功能。展望未來,最終的系統(tǒng)應(yīng)該為基于單片機(jī)的多功能環(huán)境檢測(cè)系統(tǒng),它不僅可以檢測(cè)環(huán)境的溫度、濕度、照度等所需的環(huán)境變量并顯示在液晶屏幕上,可以根據(jù)設(shè)定的限值進(jìn)行報(bào)警提示,可以以時(shí)間順序存儲(chǔ)大量的檢測(cè)數(shù)據(jù),并根據(jù)需要發(fā)送給上層分析處理設(shè)備,還可以用紅外遙控實(shí)行遠(yuǎn)程無線控制,除此之外,電源系統(tǒng)可以適應(yīng)各種供電場(chǎng)合,并存儲(chǔ)部分電能,斷電后確保系統(tǒng)可繼續(xù)工作一定時(shí)間。 switch(Key_Code) { case Key_R:Set_Alarm()。//如果Key1 鍵長(zhǎng)按,那么進(jìn)入數(shù)據(jù)發(fā)送狀態(tài) default:break。 _nop_()。 _nop_()。Temp++)。 endif 程序文件—— include include include include //DHT 連接端口 sbit DHT=P1^1。 //8 位串口數(shù)據(jù)接收函數(shù) unsigned char Read_Com() { unsigned char Com_Data=0x00,Temp_Data=0x00,Temp。//先出現(xiàn)低電平約1214 微秒,等待結(jié)束 Delay_10us()。 if(DHT)Temp_Data=0x01。//處理接收的一位數(shù)據(jù),和已接收的數(shù)據(jù)按位相與,即加到最后一位上 } return Com_Data。//拉高總線電平4050 微秒 Delay_10us()。 DHT=1。//接收濕度整數(shù)部分 DHT_Data[1]=Read_Com()。//接收校驗(yàn)位數(shù)據(jù) DHT=1。endif程序文件——include include include //按鍵端口定義sbit Key1=P3^2。 // 秒,一則為一次短按的最長(zhǎng)時(shí)間,另則為延時(shí)去抖動(dòng)if(Key1==0) //判斷長(zhǎng)短按鍵{while(!Key1)。}}elseif(Key2==0) //掃描加一鍵,有長(zhǎng)按不斷調(diào)整功能{Delay_ms(300)。}else return 0xff。//段碼變量unsigned char Seg_Order=0。sbit Bit3=P2^4。Bit4=1。//顯示實(shí)時(shí)溫濕度狀態(tài):45 25if(Show_Status==0){switch(Seg_Order){case 0:Bit4=0。P0=Seg[Humidity%10]。break。}}else//顯示低溫設(shè)定狀態(tài):┣L 00if(Show_Status==1){switch(Seg_Order){case 0:Bit4=0。P0=Seg[12]。break。}}else//顯示高溫報(bào)。P0=Seg[Temp_Low%10]。case 2:Bit2=0。break。P0=Seg[Temperature%10]。case 2:Bit2=0。break。Bit2=1。sbit Bit1=P2^6。//數(shù)碼管顯示狀態(tài)變量unsigned char Show_Status=0。extern void Timer_Start_0()。}elseif(Key3==0){Delay_ms(300)。//消去釋放抖動(dòng)return Key_M。sbit Key3=P3^4。 //校驗(yàn)成功后,把獲得的濕度數(shù)據(jù)賦值給濕度變量Temperature=DHT_Data[2]。//接收溫度整數(shù)部分 DHT_Data[3]=Read_Com()。//先等待DHT 響應(yīng)的低電平結(jié)束4050 微秒 while(DHT)。 Delay_10us()。//主機(jī)與DHT11 通信開始,首先拉低總線 Delay_ms(18)。//等待高電平結(jié)束 Com_Data=1。 Delay_10us()。Temp8。 //溫度數(shù)據(jù)存儲(chǔ)變量 unsigned char Temperature=0。 extern unsigned char Temperature。 while(ms) for(Temp=0。 _nop_()。 extern void Delay_ms(unsigned int ms)。 //如果Key1 鍵短按,那么進(jìn)入報(bào)警設(shè)定狀態(tài) case Key_M:Send_Status()。 //開機(jī)進(jìn)入溫濕度顯示報(bào)警狀態(tài) Timer_Start_0()。因此,以后還必須加強(qiáng)單片機(jī)系統(tǒng)設(shè)計(jì)的能力,畢業(yè)設(shè)計(jì)只是一個(gè)淺薄的入門。后期的探索設(shè)計(jì),提升了系統(tǒng)的性能。前期的設(shè)計(jì),在種類繁多的溫度和濕度傳感器中選定了由廣州奧松公司生產(chǎn)的單總線數(shù)字溫濕度傳感器DHT11,這款傳感器的優(yōu)勢(shì)在于通信協(xié)議相對(duì)來說比較簡(jiǎn)潔,產(chǎn)品價(jià)格低廉,這對(duì)設(shè)計(jì)低成本,高精度的溫濕度檢測(cè)系統(tǒng)十分有必要。圖 414 后期探索設(shè)計(jì)系統(tǒng)結(jié)構(gòu)圖圖415 后期探索設(shè)計(jì)原理總圖 圖416 后期探索設(shè)計(jì)PCB 圖設(shè)計(jì)要求:(1)紅外接收頭的安裝位置紅外接收頭應(yīng)安裝在PCB 的邊緣,便于接收遙控器發(fā)射的紅外線, 位置。硒光電池輸出電壓較小,必須把電壓放大到適當(dāng)值域后,再經(jīng)模數(shù)轉(zhuǎn)換,由單片機(jī)對(duì)比標(biāo)準(zhǔn)照度予以數(shù)據(jù)修正,最后把照度顯示出來。如果要研究過去兩周的溫濕度變化情況,只需在適當(dāng)時(shí)候,由單片機(jī)讀出,發(fā)送給電腦即可。由此,兩芯片與單片機(jī)的通信電路設(shè)計(jì)如圖。(2)DS1302 是由DALLAS(達(dá)拉斯)半導(dǎo)體公司生產(chǎn)的實(shí)時(shí)時(shí)鐘芯片,可對(duì)秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù),從而提供實(shí)時(shí)時(shí)鐘。考慮到單片機(jī)I/O 資源的有限性,可選用串行通信的相關(guān)器件,存儲(chǔ)器選用芯片CSI93C86,時(shí)鐘芯片選用DS1302。//延時(shí)確保命令字寫入 _nop_()。//稍作延時(shí)之后,向數(shù)據(jù)線送入命令字 P0=Temp_Data。//等待器件允許操作 RS=0。 EN=0。//拉高電平,使能器件 _nop_()。相關(guān)程序如下: bit Temp_Status。//讀取最高狀態(tài)_nop_()。//拉高電平,讀取EN=1。(1)讀操作時(shí)序圖46 1602液晶的讀操作時(shí)序以讀器件狀態(tài)為例,從時(shí)序圖中可以看出,在讀狀態(tài)開始時(shí),首先要拉低RS 電平,拉高RW 電平,進(jìn)入讀命令狀態(tài),稍作延時(shí),再拉高EN 電平,使能器件,再次稍作延時(shí),開始讀取D0~D7 的數(shù)據(jù),并取出D7 的位值,若為1,則器件禁止操作,反之為允許操作,從而讀取到器件的當(dāng)前狀態(tài),讀取完畢之后還應(yīng)該恢復(fù)器件狀態(tài),即拉低EN 電平。按照顯示的字符種類可以分為英文字符液晶和中文字符液晶,其中英文字符液晶除了可以顯示ASCII 碼表20H 以后的字符外,還可以顯示一些特殊的符號(hào)。此外,紅外接收頭的電路比較簡(jiǎn)單,如圖所示。調(diào)節(jié)滑動(dòng)變阻器CR1 可實(shí)現(xiàn)發(fā)射距離的控制。此外,發(fā)射脈沖需要38KHz 的載波進(jìn)行高頻調(diào)制。當(dāng)然,它的通信缺點(diǎn)是只能點(diǎn)到點(diǎn)視距傳輸,距離有限,但這對(duì)一些要求不是很高的場(chǎng)合,遠(yuǎn)距離控制已經(jīng)足夠了。這些設(shè)計(jì)有些已經(jīng)試驗(yàn)成功,并且也完成了硬件的制作和軟件的設(shè)計(jì);有些只是從理論上完成了設(shè)計(jì),給出了可能的電路圖或可行的解決方案,現(xiàn)簡(jiǎn)要介紹如下。因此,這個(gè)警告可以不用消除。根據(jù)編譯器的要求,如果一個(gè)函數(shù)同時(shí)出現(xiàn)在主函數(shù)和中斷服務(wù)函數(shù)中,那么程序運(yùn)行可能會(huì)發(fā)生一些不可預(yù)料的結(jié)果。assembling ...piling ...piling ...piling ...piling ...piling ...piling ...piling ...linking...*** WARNING L15: MULTIPLE CALL TO SEGMENTSEGMENT: ?PR?READ_COM?READ_DHTCALLER1: ?C_C51STARTUPCALLER2: ?PR?TIMER1_SERVE?DIGITRON_SHOWProgram Size: data= xdata=0 code=1499creating hex file from TAHDS...TAHDS 0 Error(s), 1 Warning(s).編譯結(jié)果分析綜合編譯后,成功創(chuàng)建了下載文件,但有一個(gè)警告,合理的分析和解釋如下:從編譯結(jié)果來看,警告的問題是多次調(diào)用了函數(shù)Read_DHT,而函數(shù)Read_DHT又調(diào)用了函數(shù)Read_Com。最后,需要說明的是,主函數(shù)的工作很簡(jiǎn)單——掃描按鍵,選擇進(jìn)入報(bào)警設(shè)定狀態(tài)或數(shù)據(jù)發(fā)送狀態(tài)。串口發(fā)送數(shù)據(jù)部分程序?yàn)椋?/按照說明書,只要向串口緩沖器SBUF 送入數(shù)據(jù),就啟動(dòng)一次數(shù)據(jù)發(fā)送SBUF=Temp_Data。為使發(fā)送的數(shù)據(jù)可以在PC 端的接收軟件“串口調(diào)試助手”上清楚明了地顯示,需要對(duì)發(fā)送的數(shù)據(jù)進(jìn)行轉(zhuǎn)碼,由十六進(jìn)制碼轉(zhuǎn)換為ASCII 碼,比如,為使大小為25 的溫度正常顯示,需要進(jìn)行如下轉(zhuǎn)換:String2[12]=Temperature/10+0x30。//波特率不加倍TH1=0xf3。 波特率設(shè)置為保證單片機(jī)和PC之間通信的實(shí)時(shí)性,再考慮定時(shí)器1的本身可以設(shè)置的大小,采用BR=2400bps的波特率比較合適。//等待按鍵釋放 Delay_ms(100)。圖 37 報(bào)警值調(diào)整流程 如此進(jìn)行四次,設(shè)定四個(gè)報(bào)警點(diǎn),最后再把四個(gè)子函數(shù)放入一個(gè)主調(diào)函數(shù)中,即可實(shí)現(xiàn)一次完整的報(bào)警調(diào)整操作。//超過四位后就返回第一位,從而顯示下一位數(shù)碼管。break。P0=Seg[Humidity /10]。//顯示溫度高位 case 1:Bit3=0。 當(dāng)數(shù)碼管顯示實(shí)時(shí)溫濕度數(shù)據(jù)時(shí),前兩位顯示溫度,后兩位顯示濕度;當(dāng)數(shù)碼管處于報(bào)警設(shè)定時(shí),前兩位顯示當(dāng)前設(shè)定的內(nèi)容,后兩位顯示設(shè)定的值,如┫H、60,表示當(dāng)前設(shè)定的為濕度上限,值為60%RH。 數(shù)據(jù)的修改和顯示應(yīng)遵從程序執(zhí)行的時(shí)序,即先修改數(shù)據(jù)再顯示或先顯示再修改數(shù)據(jù)。 _nop_()。 } 10 微秒延時(shí): //nop 一次1 個(gè)機(jī)器周期,加上函數(shù)調(diào)用和返回各2 個(gè)周期,共6+22=10us void Delay_10us() { _nop_()。//等待數(shù)據(jù)1 剩下的高電平時(shí)間結(jié)束,大約11830=88 微秒//以下為接收數(shù)據(jù)處理程序 相關(guān)問題解決方案 (1)精確延時(shí)函數(shù) 毫秒延時(shí): // 一次for 循環(huán)大約8 個(gè)機(jī)器周期,加上while 判斷和函數(shù)調(diào)用、返回,大約共1208+40= 1000us=1ms void Delay_ms(unsigned int ms ) { unsigned char Temp。 (2)合理方案——超時(shí)修改判斷法經(jīng)過后期的不斷實(shí)驗(yàn)分析,采用以下方案較為合理:圖 36 超時(shí)修改數(shù)據(jù)流程 這種方案正是利用了數(shù)據(jù)0 和1 高電平的時(shí)間不同來判斷數(shù)據(jù),先認(rèn)為是數(shù)據(jù)0 的時(shí)間(26~28 微妙),延時(shí)30 微秒越過這個(gè)時(shí)間已經(jīng)足夠了,再檢測(cè)數(shù)據(jù)線是否仍然為高電平,如果是高電平就修改數(shù)據(jù)為1,并且等待數(shù)據(jù)1 剩下的高電平結(jié)束,分字節(jié)接收,因此程序簡(jiǎn)要如下: while(!DHT)。圖 33 傳感器發(fā)送數(shù)據(jù)0 時(shí)序
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1