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

正文內(nèi)容

基于89c52單片機(jī)糧倉的溫濕度控制論文(編輯修改稿)

2024-07-25 00:24 本頁面
 

【文章內(nèi)容簡介】 示、報(bào)警、測量等子程序模塊組成 [6]。 主程序模塊設(shè)計(jì)主程序框圖如圖 所示。程序初始化包括寄存器設(shè)置、堆棧設(shè)置和相關(guān)單元清零設(shè)置等。主程序存放于 89c52 中,啟動(dòng)后循環(huán)執(zhí)行,不停地進(jìn)行采樣計(jì)算,得出實(shí)際溫、濕度值,并與設(shè)定值進(jìn)行比較,實(shí)現(xiàn)聲光報(bào)警信號(hào)。在主程序是單片機(jī)程序的主體,整個(gè)單片機(jī)端系統(tǒng)軟件的功能的實(shí)現(xiàn)都是在其中完成的。軟件設(shè)計(jì)的主要思路是將采集、接收、顯示燈功能編成獨(dú)立的模塊。 是 否 是 否圖 主程序流程圖/* 主函數(shù) *//************************************/void main() { EA=1。 //開總中斷 init_t0()。 //初始化定時(shí)器 init_t1()。 TR0=1。 //定時(shí)器開始工作 TR1=1。 ET0=1。 lcd_init() 。 //初始化 LCD ok_menu()。BEEP=0。while(1) { if(key1==0)Key1 鍵按下?顯示濕度Key2 鍵按下? 顯示溫度開始結(jié)束 { lcd_init。 wendu_Menu ()。 do{ Read_Temperature() 。 Disp_Temperature() 。 baojing()。 }while(key2) 。} if(key2==0){lcd_init。shidu_Menu()。do{ if(int_flag==1) { disp()。 }}while(key1)。 } } 溫度采集模塊程序設(shè)計(jì)根據(jù) DS18B20 的通訊協(xié)議,主機(jī)(單片機(jī))控制 DS18B20 完成溫度轉(zhuǎn)換必須經(jīng)過三個(gè)步驟:每一次讀寫之前都要對(duì) DS18B20 進(jìn)行復(fù)位操作,復(fù)位成功后發(fā)送一條ROM 指令,最后發(fā)送 RAM 指令,這樣才能對(duì) DS18B20 進(jìn)行預(yù)定的操作。復(fù)位要求主CPU 將數(shù)據(jù)線下拉 500 微秒,然后釋放,當(dāng) DS18B20 收到信號(hào)后等待 16~60 微秒左右,后發(fā)出 60~240 微秒的存在低脈沖,主 CPU 收到此信號(hào)表示復(fù)位成功 [7]。 否 是圖 溫度檢測程序流程DS18B20 中的溫度傳感器可完成對(duì)溫度的測量,以 12 位轉(zhuǎn)化為例:用 16 位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以 ℃/LSB 形式表達(dá),其中 S 為符號(hào)位 [8]。圖 DS18B20 溫度值初始化是否成功?初始化從 18B20 讀字節(jié)向 18B20 寫字節(jié)開始結(jié)束讀取溫度這是 12 位轉(zhuǎn)化后得到的 12 位數(shù)據(jù),存儲(chǔ)在 18B20 的兩個(gè) 8 比特的 RAM 中,二進(jìn)制中的前面 5 位是符號(hào)位,如果測得的溫度大于 0,這 5 位為 0,只要將測到的數(shù)值乘于 即可得到實(shí)際溫度;如果溫度小于 0,這 5 位為 1,測到的數(shù)值需要取反加1 再乘于 即可得到實(shí)際溫度(例如+125℃ 的數(shù)字輸出為 07D0H,+℃的數(shù)字輸出為 ℃的數(shù)字輸出為 FF6FH,55℃的數(shù)字輸出為 FC90H) [9]。/********************************************************** /************溫度測量************************************** /********************************************************** //*初始化 ds1820 *//*******************************************************************/Init_DS18B20(void){ DQ = 1 。 //DQ 復(fù)位 Delay(8) 。 //稍做延時(shí) DQ = 0 。 //單片機(jī)將 DQ 拉低 Delay(90) 。 //精確延時(shí) 大于 480us DQ = 1 。 //拉高總線 Delay(8) 。 presence = DQ 。 //如果=0 則初始化成功 =1 則初始化失敗 Delay(100) 。 DQ = 1 。 return(presence) 。 //返回信號(hào),0=presence,1= no presence}/* 讀一個(gè)字節(jié) *//*******************************************************************/ ReadOneChar(void){unsigned char i = 0 。unsigned char dat = 0 。for (i = 8 。 i 0 。 i) { DQ = 0 。 // 給脈沖信號(hào) dat = 1 。 DQ = 1 。 // 給脈沖信號(hào) if(DQ) dat |= 0x80 。 Delay(4) 。 } return (dat) 。}/* 寫一個(gè)字節(jié) *//*******************************************************************/ WriteOneChar(unsigned char dat){ unsigned char i = 0 。 for (i = 8 。 i 0 。 i) { DQ = 0 。 DQ = datamp。0x01 。 Delay(5) 。 DQ = 1 。 dat=1 。 }}/* 讀取溫度 *//*******************************************************************/ Read_Temperature(void){ Init_DS18B20() 。 WriteOneChar(0xCC) 。 // 跳過讀序號(hào)列號(hào)的操作 WriteOneChar(0x44) 。 // 啟動(dòng)溫度轉(zhuǎn)換 Init_DS18B20() 。 WriteOneChar(0xCC) 。 //跳過讀序號(hào)列號(hào)的操作 WriteOneChar(0xBE) 。 //讀取溫度寄存器 temp_data[0] = ReadOneChar() 。 //溫度低 8 位 temp_data[1] = ReadOneChar() 。 //溫度高 8 位 }/* 數(shù)據(jù)轉(zhuǎn)換與溫度顯示 *//*******************************************************************/ Disp_Temperature(){display[4]=temp_data[0]amp。0x0f 。display[0]=ditab[display[4]]+0x30 。 //查表得小數(shù)位的值display[4]=((temp_data[0]amp。0xf0)4)|((temp_data[1]amp。0x0f)4) 。display[3]=display[4]/100+0x30 。display[1]=display[4]%100 。display[2]=display[1]/10+0x30 。display[1]=display[1]%10+0x30 。if(display[3]==0x30) //高位為 0,不顯示{ display[3]=0x20 。 if(display[2]==0x30) //次高位為 0,不顯示display[2]=0x20 。}lcd_pos(0x48) 。 lcd_wdat(display[3]) 。 //百位數(shù)顯示 lcd_pos(0x49) 。 lcd_wdat(display[2]) 。 //十位數(shù)顯示 lcd_pos(0x4a) 。 lcd_wdat(display[1]) 。 //個(gè)位數(shù)顯示 lcd_pos(0x4c) 。 lcd_wdat(display[0]) 。 //小數(shù)位數(shù)顯示 } //報(bào)警void baojing(){if(display[2]=0x32amp。amp。display[1]=0x31){ BEEP=1。}else{BEEP=0。}} 濕度采集模塊顯示電路采用四位七段 LCD 數(shù)碼管顯示即 LED 四位七段數(shù)碼管字符型液晶模塊,是目前使用最廣泛的液晶屏之一。LED 四位七段數(shù)碼管字符型液晶模塊是點(diǎn)陣型液晶驅(qū)動(dòng)方便,經(jīng)編碼后顯示內(nèi)容多樣化 [10]。標(biāo)定即顯示當(dāng)下工作狀態(tài),顯示溫濕度。 是 否 濕度檢測流程圖由圖 可知相對(duì)濕度與電容的關(guān)系可看成直線段,所以有相對(duì)濕度RH= ...........................................()27163RHC??? 圖 電容值與相對(duì)濕度值的關(guān)系所以有()???? ? RHRH???????開定時(shí) T0,T1是否計(jì)滿 1S?關(guān)閉 T0 并根據(jù)頻率算出濕度值開始結(jié)束顯示溫度/****************************************************************************************濕度測量************************************************************************************************/ ///////////////軟件延時(shí) /////////////void delays(unsigned int t) { while(t)。}//定時(shí)器 0 初始化void init_t0(void){ TMOD=(TMODamp。0xF0)||0x01。 //定時(shí)器 0 工作于方式 1// TH0=(6553650000)/256。 //定時(shí) 50ms// TL0=(6553550000)%256。TH0=0x4c。TL0=0x00。}// 定時(shí)器 1 初始化void init_t1(void){ TMOD=(TMODamp。0x0F)|0x50。 //定時(shí)器 1 用作計(jì)時(shí) TH1 =0x00。 TL1 =0x00。}//定時(shí)器 0 中斷服務(wù)程序void int_t0(void) interrupt 1{ TH0=(6553550000)/256。 TL0=(6553550000)%256。 int_count++。 if(int_count==20) { TR1=0。 int_flag=1。 int_count=0x00。 }}//定時(shí)器 1 中斷服務(wù)程序void int_t1(voi
點(diǎn)擊復(fù)制文檔內(nèi)容
語文相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1