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

正文內(nèi)容

基于pic系列單片機(jī)的改進(jìn)型pid控制器設(shè)計(jì)畢業(yè)論文-資料下載頁(yè)

2025-06-18 17:29本頁(yè)面
  

【正文】 temper/1000。 //百位 tmp[1]=(int)(temper%1000)/100。 //十位 tmp[2]=(int)(temper%100)/10。 //個(gè)位 tmp[3]=(int)temper%100%10。 temp= tmp[0]*100+tmp[1]*10+tmp[2]。 if(tflag==0) flagdat=0x20。//正溫度不顯示符號(hào) else flagdat=0x2d。//負(fù)溫度顯示負(fù)號(hào): temptest=bai*100+shi*10+ge。 }void delay1ms(unsigned int x) //延時(shí)1ms函數(shù){ unsigned char i。 for(。x0。x) for(i=0。ii++)。 }void delay15us(unsigned int x) //x必須大于0{ do {x。} while(x)。 }void displayDS18B20(){ get_temperature()。 LCD_Set_Cursor(1,0)。 LCD_Write_Data(tmp[0]+39。039。)。 LCD_Set_Cursor(1,1)。 LCD_Write_Data(tmp[1]+39。039。)。 LCD_Set_Cursor(1,2)。 LCD_Write_Data(tmp[2]+39。039。)。 LCD_Set_Cursor(1,3)。 LCD_Write_Data(39。.39。)。 LCD_Set_Cursor(1,4)。 LCD_Write_Data(tmp[3]+39。039。)。 }void keyconve(){ TRISD=0xF0。 // D口高四位輸入,低四位輸出 PORTD=0x00。 // 低四位輸出0 key=PORTD。 // 讀取D口狀態(tài)送至變量key key=keyamp。0xF0。 // 屏蔽低四位,防止干擾。只保留高四位 if(key!=0xF0) // key不為0b11110000則說(shuō)明有按鍵按下 { DelayMS(20)。 // 軟件消除抖動(dòng) TRISD=0x0F。 // D口高四位輸出,低四位輸入 PORTD=key。 //把獲得的高四位鍵值送D口高四位輸出 asm(nop)。 // 硬件空操作指令 key4L=PORTD。 // 讀取D口狀態(tài)送至變量key4L key4L=key4Lamp。0x0F。 //屏蔽key4L高四位,只保留低四位 if(key4L!=0x0F) //不相等說(shuō)明不是抖動(dòng) { KeyM=key | key4L。 } else { KeyM=0。 //KeyM賦值為0表示無(wú)鍵按下,或者一次意外 } }}void keyscan(){ if(KeyM==0xee) { i=1。 } else if(KeyM==0xed) { i=2。 } else if(KeyM==0xeb) { i=3。 } else if(KeyM==0xe7) { i=4。 } else if(KeyM==0xde) { i=5。 } else if(KeyM==0xdd) { i=6。 } else if(KeyM==0xdb) { i=7。 } else if(KeyM==0xd7) { i=8。 } else if(KeyM==0xbe) { i=9。 } else if(KeyM==0xbd) { i=0。 } else if(KeyM==0xbb) { i=11。 LCD_Set_Cursor(0,0)。 // 從第0行第0個(gè)字符位開(kāi)始顯示 LCD_Puts_ROM(SET YOU TEMP)。 //顯示 Counter: LCD_Set_Cursor(1,0)。 // 從第1行第0個(gè)字符位開(kāi)始顯示 LCD_Puts_ROM( )。 setflag=1。 } else if(KeyM==0xb7) { i=12。 LCD_Set_Cursor(0,0)。 // 從第0行第0個(gè)字符位開(kāi)始顯示 LCD_Puts_ROM(c_LCD_str)。 //顯示 Counter: setflag=0。 } else if(KeyM==0x7e) { i=13。 setflagge=1。 setflagbai=0。 setflagshi=0。 } else if(KeyM==0x7d) { i=14。 setflagge=0。 setflagbai=0。 setflagshi=1。 } else if(KeyM==0x7b) { i=15。 setflagge=0。 setflagbai=1。 setflagshi=0。 } else if(KeyM==0x77) { i=16。 } if(setflag==1) { if(i=9) { if(setflagge==1) { ge=i。 } else if(setflagshi==1) { shi=i。 } else if(setflagbai==1) { bai=i。 } } } //LCD_Set_Cursor(0,12)。 // 從第0行第0個(gè)字符位開(kāi)始顯示 //LCD_Put_Char(i+39。039。)。 // 顯示百位字符 }void init(){ TRISC2=0。 TRISC6=0。 TRISC0=0。 TRISC7=0。 LED=0。 LED1=1。 LED2=1。}void main( void ){ LCD_Init( ) 。 LCD_Set_Cursor(0,0)。 // 從第0行第0個(gè)字符位開(kāi)始顯示 LCD_Puts_ROM(c_LCD_str)。 //顯示 Counter: init()。 while(1) { keyconve()。 keyscan()。 PID_Math()。 if(setflag==1) { LCD_Set_Cursor(1,0)。 LCD_Write_Data(bai+39。039。)。 LCD_Set_Cursor(1,1)。 LCD_Write_Data(shi+39。039。)。 LCD_Set_Cursor(1,2)。 LCD_Write_Data(ge+39。039。)。 LCD_Set_Cursor(1,3)。 LCD_Write_Data(39。.39。)。 LCD_Set_Cursor(1,4)。 LCD_Write_Data(39。039。)。 } else if(i==12) { displayDS18B20()。 } if(temptemptest) { MOTOR=1。 LED=1。 LED1=0。 LED2=1。 } else { MOTOR=0。 LED=0。 LED1=1。 LED2=0。 } }}/***************************************************************************** 模塊名: PID* 描述: PID調(diào)節(jié)子程序* 采用PIDPD算法。在偏差絕對(duì)值大于△e時(shí),用PD算法,以改善動(dòng)態(tài)品質(zhì)。* 當(dāng)偏差絕對(duì)值小于△e時(shí),用PID算法,提高穩(wěn)定精度。* PIDout=kp*e(t)+ki*[e(t)+e(t1)+...+e(1)]+kd*[e(t)e(t1)]*============================================================================* 入口: 無(wú)* 出口: 無(wú)* 改變: PID_T_Run=加熱時(shí)間控制*****************************************************************************/void PID_Math(void){ signed long ee1。 //偏差一階 //signed long ee2。 //偏差二階 signed long d_out。 //積分輸出 if(!Flag_PID_T_OK) return。 Flag_PID_T_OK=0。 Temp_Set=3700。 // PID_e0 = Temp_SetTemp_Now。 //本次偏差 ee1 = PID_e0PID_e1。 //計(jì)算一階偏差 //ee2 = PID_e02*PID_e1+PID_e2。 //計(jì)算二階偏差 if(ee1 500) //一階偏差的限制范圍 ee1 = 500。 if(ee1 500) ee1 = 500。 PID_e_SUM += PID_e0。 //偏差之和 if(PID_e_SUM 200) //積分最多累計(jì)的溫差 PID_e_SUM = 200。 if(PID_e_SUM 200) PID_e_SUM = 200。 PID_Out = PID_kp*PID_e0+PID_kd*ee1。 //計(jì)算PID比例和微分輸出 if(abs(PID_e0) 200) // { if(abs(PID_e0) 100) //如果溫度相差大于1度時(shí)積分累計(jì)限制 { if(PID_e_SUM 100) PID_e_SUM = 100。 if(PID_e_SUM 100) PID_e_SUM = 100。 } d_out = PID_ki*PID_e_SUM。 //積分輸出 if(PID_e0 5) // { if(PID_e_SUM 150) PID_e_SUM = 150。 if(PID_e_SUM 0) // d_out = 1。 } PID_Out += d_out。 //PID比例,積分和微分輸出 } else PID_e_SUM=0。 PID_Out/=100。 //恢復(fù)被PID_Out系數(shù)放大的倍數(shù) if(PID_Out 200) PID_Out=200。 if(PID_Out0) PID_Out=0。 if(PID_e0 300) //當(dāng)前溫度比設(shè)定溫度低3度則全速加熱 PID_Out=200。 if(PID_e0 20) // PID_Out=0。 Hot_T_Run=PID_Out。 //加熱時(shí)間控制輸出 PID_e2 = PID_e1。 //保存上次偏差 PID_e1 = PID_e0。 //保存當(dāng)前偏差}
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1