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

正文內(nèi)容

優(yōu)秀畢業(yè)論文設(shè)計:基于單片機(mcu)的蔬菜大棚溫濕度監(jiān)測系統(tǒng)設(shè)計-資料下載頁

2025-05-06 07:47本頁面

【導讀】路的設(shè)計,包括溫度測量電路、濕度測量電路、鍵盤與顯示電路以及報警電路;描子程序流程圖和溫濕度程序流程圖,最后運用C語言對各個部分進行了編程。量、顯示、調(diào)節(jié)和報警功能。

  

【正文】 5=1。S4=1。S3=1。S2=1。S1=1。 Disdata=dis_7[B2]。 DIN=1。 delay(200)。 Disdata=0x00。 S8=0。S7=1。S6=1。S5=1。S4=1。S3=1。S2=1。S1=1。 Disdata=dis_7[B3]。 delay(200)。 Disdata=0x00。 } /****************DS18B20復位函數(shù) ************************/ ow_reset(void) { char presence=1。 while(presence) { while(presence) 基于單片機的蔬菜大棚溫濕度監(jiān)測系統(tǒng)設(shè)計 33 { DQ=1。_nop_()。_ nop_()。//從高拉倒低 DQ=0。 delay(50)。 //550 us DQ=1。 delay(6)。 //66 us presence=DQ。 //presence=0 復位成功 ,繼續(xù)下一 步 } delay(45)。 //延時 500 us presence=~DQ。 } DQ=1。 //拉高電平 } /****************DS18B20 寫命令函數(shù) ****************** ******/ //向 1WIRE 總線上寫 1 個字節(jié) void write_byte(uchar val) { uchar i。 for(i=8。i0。i) { DQ=1。_nop_()。_nop_()。 //從高拉倒低 DQ=0。_nop_()。_nop_()。_nop_()。_nop_()。 //5 us DQ=valamp。0x01。 //最低位移出 delay(6)。 //66 us val=val/2。 //右移 1 位 } DQ=1。 delay(1)。 } /****************DS18B20 讀 1 字節(jié)函數(shù) ************************/ 基于單片機的蔬菜大棚溫濕度監(jiān)測系統(tǒng)設(shè)計 34 //從總線上取 1 個字節(jié) uchar read_byte(void) { uchar i。 uchar value=0。 for(i=8。i0。i) { DQ=1。_nop_()。_nop_()。 value=1。 DQ=0。_nop_()。_nop_()。_nop_()。_nop_()。 //4 us DQ=1。_nop_()。_nop_()。_nop_()。_nop_()。 //4 us if(DQ)value|=0x80。 delay(6)。 //66 us } DQ=1。 return(value)。 } /****************讀出溫度函數(shù) * ***********************/ // read_temp() { ow_reset()。 //總線復位 delay(200)。 write_byte(0xcc) 。 //發(fā)命令 write_byte(0x4e)。 write_byte(TH)。 //發(fā)命令 write_byte(RS)。 delay(200)。 ow_reset()。 write_byte(0xcc) 。 //發(fā)命令 基于單片機的蔬菜大棚溫濕度監(jiān)測系統(tǒng)設(shè)計 35 write_byte(0x44)。 delay(200)。 ow_reset()。 write_byte(0xcc) 。 //發(fā)命令 write_byte(0xbe)。 temp_data[0]=read_byte()。 //讀溫度值的第字節(jié) temp_data[1]=read_byte()。 //讀溫度值的高字節(jié) temp=temp_data[1]。 temp=8。 temp=temp|temp_d ata[0]。 // 兩字節(jié)合成一個整型變量 return temp。 //返回溫度值 } /****************溫度數(shù)據(jù)處理函數(shù) *** *********************/ //二進制高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié) ,這個 //字節(jié)的二進制轉(zhuǎn)換為十進制后 ,就是溫度值的百、十、個位值 ,而剩 //下的低字節(jié)的低半字節(jié)轉(zhuǎn)化成十進制后 ,就是溫度值的小數(shù)部分 /********************************************************/ work_temp(uint tem) { if(tem634 8) // 溫度值正負判斷 {tem=65536tem。} // 負溫度求補碼 ,標志位置 1 display[3]=temamp。0x0f。 // 取小數(shù)部分的值 display[0]=ditab[display[3]]。 // 存入小數(shù)部分顯示值 display[3] =tem4。 // 取中間八位 ,即整數(shù)部分的值 display[2]=display[3]%100/10。 // 取十位數(shù)據(jù)暫存 display[1]=display[3]%100%10。 } /////////////////////////////////////////////////////////////////////////////////// void READSTATUS() interrupt 0 using 1 // 產(chǎn)生外部中斷 0時表示設(shè)備狀基于單片機的蔬菜大棚溫濕度監(jiān)測系統(tǒng)設(shè)計 36 態(tài)發(fā)生改變,該函數(shù)使用寄存器組 1 { get_status()。 // 獲得設(shè)備狀態(tài)信息,并將其存入 dbuf指向的存儲區(qū),數(shù)據(jù)最后一字節(jié)置 0表示數(shù)據(jù)結(jié)束 } /*該函數(shù)接收一幀數(shù)據(jù)并進行檢測,無論該幀是否錯誤,函數(shù)均會返回 * 函數(shù)參數(shù) type保存接收到的命令字 * 當接收到數(shù)據(jù)幀錯誤或其地址位不為 0時(非主機發(fā)送幀),函數(shù)回0,反之返回 1*/ bit recv_cmd(uchar *type) { bit db = 0。 // 當接收到的上一個字節(jié)為 0xdb時,該位置位 bit c0 = 0。 // 當接收到的上一個字節(jié)為 0xc0時,該位置位 uchar data_buf[__ERRLEN]。 // 保存接收到的幀 uchar tmp。 uchar ecc = 0。 uchar i。 M_DE = 0。 // 置發(fā) 送禁止,接收允許 M_RE = 0。 /* 接收一幀數(shù)據(jù) */ i = 0。 while(!c0) // 循環(huán)直至幀接收完畢 { RI = 0。 while(!RI)。 tmp = SBUF。 RI = 0。 if(db == 1) // 接收到的上一個字節(jié)為 0xdb 基于單片機的蔬菜大棚溫濕度監(jiān)測系統(tǒng)設(shè)計 37 { switch(tmp) { case 0xdd: data_buf[i] = 0xdb。 // 0xdbdd表示 0xdb ecc = ecc^0xdb。 db = 0。 break。 case 0xdc: data_buf[i] = 0xc0。 // 0xdbdc表示 0xc0 ecc = ecc^0xc0。 db = 0。 break。 default return 0。 // 幀錯誤,返回 } i++。 } switch(tmp) // 正常情況 { case 0xc0: // 幀結(jié)束 c0 = 1。 break。 case 0xdb: // 檢測到轉(zhuǎn)義字符 db = 1。 break。 default: // 普通數(shù)據(jù) data_buf[i] = tmp。 // 保存數(shù)據(jù) ecc = ecc^tmp。 // 計算校驗字節(jié) i++。 基于單片機的蔬菜大棚溫濕度監(jiān)測系統(tǒng)設(shè)計 38 } if(i == __ERRLEN) // 幀超長,錯誤,返回 return 0。 } /* 判斷幀是否錯誤 */ if(i4) // 幀過短,錯誤,返回 return 0。 if(ecc != 0) // 校驗錯誤,返回 return 0。 if(data_buf[0] != dev) // 非訪問本機命令,錯誤,返回 return 0。 *type = data_buf[1]。 // 獲得命令字 return 1。 // 函數(shù)成功返回 } /*該函數(shù)實現(xiàn)將溫度和濕度值以 ASCII碼的形式通過 485串口發(fā)送到 PC機串口調(diào)試助手, 格式為:設(shè)備號 +T:溫度值 +M:濕 度值 +換行 */ void send_data_pc(void) { send_byte(ASCii[dev])。 //設(shè)備號 send_byte(84)。 //發(fā)送 T: send_byte(58)。 send_byte(ASCii[display[2]])。 //發(fā)送溫度數(shù)據(jù) send_byte(ASCii[display[1]])。 send_byte(46)。 send_byte(ASCii[display[0]])。 send_byte(32)。 //發(fā)送空格 send_byte(77)。 //發(fā)送 M: send_byte(58)。 send_byte(ASCii[B1])。 //發(fā)送濕度數(shù)據(jù) 基于單片機的蔬菜大棚溫濕度監(jiān)測系統(tǒng)設(shè)計 39 send_byte(ASCii[B2])。 send_byte(ASCii[B3])。 send_byte(0x0d)。 send_byte(0x0a)。 } /* 該函數(shù)發(fā)送一幀數(shù)據(jù)幀,參數(shù) type為命令字、 len為數(shù)據(jù)長 度、 buf為要發(fā)送的數(shù)據(jù)內(nèi)容 */ void send_data(uchar type, uchar len, uchar *buf) { uchar i。 uchar ecc = 0。
點擊復制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1