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

正文內(nèi)容

畢業(yè)設(shè)計-恒溫箱單片機控制系統(tǒng)設(shè)計-資料下載頁

2024-12-03 18:55本頁面

【導讀】機械、石油等工業(yè)中,具有舉足重輕的作用。隨著電子技術(shù)和微型計算機的迅速發(fā)展,微機測量和控制技術(shù)得到了迅速的發(fā)展和廣泛的應用。恒溫箱控制系統(tǒng),其關(guān)鍵技術(shù)為保持箱內(nèi)溫度的恒定,單片機具有體積小、功。能強、成本低、應用面廣等優(yōu)點,可以說,智能控制與自動控制的核心就是單片機。前,一個學習與應用單片機的高潮在全社會大規(guī)模地興起。根據(jù)比較的結(jié)果,采用PID算法控制PWM信號的輸出,控制。加熱設(shè)備的動作,從而達到穩(wěn)定地控制溫度的目的。

  

【正文】 //位選 delay(300)。 } } // // /****************DS18B20 復位函數(shù) ************************/ ow_reset(void) { char presence=1。 while(presence) { while(presence) { DQ=1。_nop_()。_nop_()。//從高拉倒低 DQ=0。 30 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)。 } // 31 /****************DS18B20 讀 1 字節(jié)函數(shù) ************************/ //從總線上取 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(0x44)。 //發(fā)轉(zhuǎn)換命令 ow_reset()。 delay(1)。 32 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_data[0]。 // 兩字節(jié)合成一個整型變量。 return temp。 //返回溫度值 } // /****************溫度數(shù)據(jù)處理函數(shù) ************************/ //二進制高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié) ,這個 //字節(jié)的二進制轉(zhuǎn)換為十進制后 ,就是溫度值的百、十、個位值 ,而剩 //下的低字節(jié)的低半字節(jié)轉(zhuǎn)化成十進制后 ,就是溫度值的小數(shù)部分 /********************************************************/ work_temp(uint tem) { uchar n=0。 if(tem6348) // 溫度值正負判斷 {tem=65536tem。n=1。} // 負溫度求補碼 ,標志位置 1 display[4]=temamp。0x0f。 // 取小數(shù)部分的值 display[0]=ditab[display[4]]。 // 存入小數(shù)部分顯示值 display[4]=tem4。 // 取中間八位 ,即整數(shù)部分的值 display[3]=display[4]/100。 // 取百位數(shù)據(jù)暫存 display[1]=display[4]%100。 // 取后兩位數(shù)據(jù)暫存 display[2]=display[1]/10。 // 取十位數(shù)據(jù)暫存 display[1]=display[1]%10。 /******************符號位顯示判斷 **************************/ if(!display[3]) 33 { display[3]=0x0a。 //最高位為 0 時不顯示 if(!display[2]) { display[2]=0x0a。 //次高位為 0 時不顯示 } } if(n){display[3]=0x0b。} //負溫度時最高位顯示 } /****************模式選擇,加減功能 ************************/ void key_block() { if(!key) //模式切換 { delay2ms()。 if(!key) { mode++。 if(mode==3) mode=1。 while(!key)。 } } if(!k1) { delay2ms()。 if(!k1) { if(mode==2) 34 { code_ge++。 if(code_ge==100) { code_ge=0。 } } while(!k1)。 } } if(!k2) { delay2ms()。 if(!k2) { if(mode==2) { code_ge。 if(code_ge0) { code_ge=99。 } } while(!k2)。 } } } /****************PWM 輸出 PID 算法控制部分 ************************/ 35 void set_pwm() { uchar i。 if(code_ge code_data[0]) out=1。 if(code_ge code_data[0]=10amp。amp。 code_ge code_data[0]0)//判斷溫差是否在 10 度范圍內(nèi) { ut[0]= code_ge code_data[0]。//占空比的第一次初始值 for(i=0。i3。i++) { data_tp=code_data[i]。 st[0]=data_tp。//第 i 次采樣的溫度值賦給 st[0] zliang=*( code_gest[0])*( code_gest[1])+*( code_ge st[2])。//pid 算法增量計算公 式 ut[1]=ut[0]+zliang。//調(diào)節(jié)量 ut[0]=ut[1]。 if (ut[0]10) ut[0]=10。 else if (ut[0]0) ut[0]=0。//把 ut[0]控制在 0 到 10 的范圍之內(nèi) pltime[0]=ut[0]*25。// PWM=pltime[1]。//根據(jù)調(diào)節(jié)后的溫度給占空比賦相應的值 st[2]=st[1]。 st[1]=st[0]。//誤差傳給上一次 out=1。 TMOD=0x21 。//定時器 0 工作方式 1,定時器 1 工作方式 2 TH0=0xfc 。 TL0=0x66 。 //頻率調(diào)節(jié) TH1=PWM 。 //脈寬調(diào)節(jié) 36 TL1=0 。 EA=1。 ET0=1。 ET1=1。 TR0=1 。 do { if(PWM!=pltime[0]) { PWM 。 delayms(10)。 } }while(PWM==pltime[0])。//輸出 pwm的調(diào)節(jié)部分 pltime[1]=pltime[0]。//下一才調(diào)節(jié)的初始值賦值 } } else out=0。//否則輸出以最大的功率調(diào)節(jié) } /****************設(shè)定溫度 ************************/ void play_code() { char k。 dip_code[0]=0。 dip_code[1]=code_ge%10。 dip_code[2]=code_ge/10。 dip_code[3]=12。 for(k=0。k4。k++) //4 位 LED 掃描控制 { Disdata=dis_7[dip_code[k]]。 //數(shù)據(jù)顯示 37 if (k==1){DIN=0。} //小數(shù)點顯示 discan=scan_con[k]。 //位選 delay(300)。 } } // // /****************主函數(shù) ************************/ main() { Disdata=0xff。 //初始化端口 discan=0xff。 for(h=0。h4。h++) //開機顯示 0000 {display[h]=0。} ow_reset()。 //開機先轉(zhuǎn)換一次 write_byte(0xcc)。 //Skip ROM write_byte(0x44)。 //發(fā)轉(zhuǎn)換命令 for(h=0。h100。h++) //開機顯示 0000 {scan()。} while(1) { work_temp(read_temp())。 //處理溫度數(shù)據(jù) key_block()。 switch (mode) { case 1: scan()。 break。 case 2: 38 play_code()。 break。 default: break。 } code_data[0]=temp; set_pwm()。 } } // //***********************結(jié)束 **************************//
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1