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

正文內(nèi)容

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

2025-05-06 07:47本頁(yè)面

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

  

【正文】 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復(fù)位函數(shù) ************************/ ow_reset(void) { char presence=1。 while(presence) { while(presence) 基于單片機(jī)的蔬菜大棚溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì) 33 { DQ=1。_nop_()。_ nop_()。//從高拉倒低 DQ=0。 delay(50)。 //550 us DQ=1。 delay(6)。 //66 us presence=DQ。 //presence=0 復(fù)位成功 ,繼續(xù)下一 步 } delay(45)。 //延時(shí) 500 us presence=~DQ。 } DQ=1。 //拉高電平 } /****************DS18B20 寫命令函數(shù) ****************** ******/ //向 1WIRE 總線上寫 1 個(gè)字節(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ù) ************************/ 基于單片機(jī)的蔬菜大棚溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì) 34 //從總線上取 1 個(gè)字節(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()。 //總線復(fù)位 delay(200)。 write_byte(0xcc) 。 //發(fā)命令 write_byte(0x4e)。 write_byte(TH)。 //發(fā)命令 write_byte(RS)。 delay(200)。 ow_reset()。 write_byte(0xcc) 。 //發(fā)命令 基于單片機(jī)的蔬菜大棚溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì) 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é)合成一個(gè)整型變量 return temp。 //返回溫度值 } /****************溫度數(shù)據(jù)處理函數(shù) *** *********************/ //二進(jìn)制高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié) ,這個(gè) //字節(jié)的二進(jìn)制轉(zhuǎn)換為十進(jìn)制后 ,就是溫度值的百、十、個(gè)位值 ,而剩 //下的低字節(jié)的低半字節(jié)轉(zhuǎn)化成十進(jìn)制后 ,就是溫度值的小數(shù)部分 /********************************************************/ work_temp(uint tem) { if(tem634 8) // 溫度值正負(fù)判斷 {tem=65536tem。} // 負(fù)溫度求補(bǔ)碼 ,標(biāo)志位置 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í)表示設(shè)備狀基于單片機(jī)的蔬菜大棚溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì) 36 態(tài)發(fā)生改變,該函數(shù)使用寄存器組 1 { get_status()。 // 獲得設(shè)備狀態(tài)信息,并將其存入 dbuf指向的存儲(chǔ)區(qū),數(shù)據(jù)最后一字節(jié)置 0表示數(shù)據(jù)結(jié)束 } /*該函數(shù)接收一幀數(shù)據(jù)并進(jìn)行檢測(cè),無(wú)論該幀是否錯(cuò)誤,函數(shù)均會(huì)返回 * 函數(shù)參數(shù) type保存接收到的命令字 * 當(dāng)接收到數(shù)據(jù)幀錯(cuò)誤或其地址位不為 0時(shí)(非主機(jī)發(fā)送幀),函數(shù)回0,反之返回 1*/ bit recv_cmd(uchar *type) { bit db = 0。 // 當(dāng)接收到的上一個(gè)字節(jié)為 0xdb時(shí),該位置位 bit c0 = 0。 // 當(dāng)接收到的上一個(gè)字節(jié)為 0xc0時(shí),該位置位 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) // 接收到的上一個(gè)字節(jié)為 0xdb 基于單片機(jī)的蔬菜大棚溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì) 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。 // 幀錯(cuò)誤,返回 } i++。 } switch(tmp) // 正常情況 { case 0xc0: // 幀結(jié)束 c0 = 1。 break。 case 0xdb: // 檢測(cè)到轉(zhuǎn)義字符 db = 1。 break。 default: // 普通數(shù)據(jù) data_buf[i] = tmp。 // 保存數(shù)據(jù) ecc = ecc^tmp。 // 計(jì)算校驗(yàn)字節(jié) i++。 基于單片機(jī)的蔬菜大棚溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì) 38 } if(i == __ERRLEN) // 幀超長(zhǎng),錯(cuò)誤,返回 return 0。 } /* 判斷幀是否錯(cuò)誤 */ if(i4) // 幀過(guò)短,錯(cuò)誤,返回 return 0。 if(ecc != 0) // 校驗(yàn)錯(cuò)誤,返回 return 0。 if(data_buf[0] != dev) // 非訪問(wèn)本機(jī)命令,錯(cuò)誤,返回 return 0。 *type = data_buf[1]。 // 獲得命令字 return 1。 // 函數(shù)成功返回 } /*該函數(shù)實(shí)現(xiàn)將溫度和濕度值以 ASCII碼的形式通過(guò) 485串口發(fā)送到 PC機(jī)串口調(diào)試助手, 格式為:設(shè)備號(hào) +T:溫度值 +M:濕 度值 +換行 */ void send_data_pc(void) { send_byte(ASCii[dev])。 //設(shè)備號(hào) 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ù) 基于單片機(jī)的蔬菜大棚溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì) 39 send_byte(ASCii[B2])。 send_byte(ASCii[B3])。 send_byte(0x0d)。 send_byte(0x0a)。 } /* 該函數(shù)發(fā)送一幀數(shù)據(jù)幀,參數(shù) type為命令字、 len為數(shù)據(jù)長(zhǎng) 度、 buf為要發(fā)送的數(shù)據(jù)內(nèi)容 */ void send_data(uchar type, uchar len, uchar *buf) { uchar i。 uchar ecc = 0。
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1