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

正文內(nèi)容

基于pic系列單片機的改進型pid控制器設計(參考版)

2025-06-21 16:51本頁面
  

【正文】 } PID_Out += d_out。 //積分輸出 if(PID_e0 5) // { if(PID_e_SUM 150) PID_e_SUM = 150。 if(PID_e_SUM 100) PID_e_SUM = 100。 PID_Out = PID_kp*PID_e0+PID_kd*ee1。 //偏差之和 if(PID_e_SUM 200) //積分最多累計的溫差 PID_e_SUM = 200。 if(ee1 500) ee1 = 500。 //計算一階偏差 //ee2 = PID_e02*PID_e1+PID_e2。 // PID_e0 = Temp_SetTemp_Now。 Flag_PID_T_OK=0。 //偏差二階 signed long d_out。* PIDout=kp*e(t)+ki*[e(t)+e(t1)+...+e(1)]+kd*[e(t)e(t1)]*============================================================================* 入口: 無* 出口: 無* 改變: PID_T_Run=加熱時間控制*****************************************************************************/void PID_Math(void){ signed long ee1。在偏差絕對值大于△e時,用PD算法,以改善動態(tài)品質(zhì)。 LED2=0。 LED=0。 LED2=1。 LED=1。 } else if(i==12) { displayDS18B20()。039。 LCD_Set_Cursor(1,4)。.39。 LCD_Set_Cursor(1,3)。039。 LCD_Set_Cursor(1,2)。039。 LCD_Set_Cursor(1,1)。039。 if(setflag==1) { LCD_Set_Cursor(1,0)。 keyscan()。 //顯示 Counter: init()。 LCD_Set_Cursor(0,0)。 LED2=1。 LED=0。 TRISC0=0。 // 顯示百位字符 }void init(){ TRISC2=0。039。 } } } //LCD_Set_Cursor(0,12)。 } else if(setflagshi==1) { shi=i。 } else if(KeyM==0x77) { i=16。 setflagbai=1。 } else if(KeyM==0x7b) { i=15。 setflagbai=0。 } else if(KeyM==0x7d) { i=14。 setflagbai=0。 } else if(KeyM==0x7e) { i=13。 // 從第0行第0個字符位開始顯示 LCD_Puts_ROM(c_LCD_str)。 } else if(KeyM==0xb7) { i=12。 // 從第1行第0個字符位開始顯示 LCD_Puts_ROM( )。 // 從第0行第0個字符位開始顯示 LCD_Puts_ROM(SET YOU TEMP)。 } else if(KeyM==0xbb) { i=11。 } else if(KeyM==0xbe) { i=9。 } else if(KeyM==0xdb) { i=7。 } else if(KeyM==0xde) { i=5。 } else if(KeyM==0xeb) { i=3。 //KeyM賦值為0表示無鍵按下,或者一次意外 } }}void keyscan(){ if(KeyM==0xee) { i=1。 //屏蔽key4L高四位,只保留低四位 if(key4L!=0x0F) //不相等說明不是抖動 { KeyM=key | key4L。 // 讀取D口狀態(tài)送至變量key4L key4L=key4Lamp。 //把獲得的高四位鍵值送D口高四位輸出 asm(nop)。 // 軟件消除抖動 TRISD=0x0F。 // 屏蔽低四位,防止干擾。 // 讀取D口狀態(tài)送至變量key key=keyamp。 // D口高四位輸入,低四位輸出 PORTD=0x00。)。 LCD_Write_Data(tmp[3]+39。)。 LCD_Write_Data(39。)。 LCD_Write_Data(tmp[2]+39。)。 LCD_Write_Data(tmp[1]+39。)。 LCD_Write_Data(tmp[0]+39。 }void displayDS18B20(){ get_temperature()。 }void delay15us(unsigned int x) //x必須大于0{ do {x。ix0。 }void delay1ms(unsigned int x) //延時1ms函數(shù){ unsigned char i。//正溫度不顯示符號 else flagdat=0x2d。 temp= tmp[0]*100+tmp[1]*10+tmp[2]。 //十位 tmp[2]=(int)(temper%100)/10。//溫度值擴大10倍,精確到1位小數(shù) tmp[0]=temper/1000。 tflag=1。 if(temper0x0fff) tflag=0。 //讀內(nèi)部RAM 低八位溫度 tmpB=read_one_byte()。 //寫跳過ROM命令,因為總線上只有一個DS18B20 write_one_byte(0xbe)。 //啟動DS18B20溫度轉(zhuǎn)換命令 reset()。 write_one_byte(0xcc)。 //定義變量長整型,用于得到數(shù)碼管顯示的各個溫度位 unsigned char tmpA,tmpB。 //延時61us } return(data)。 if (DQ==1) data=data|0x80。 NOP()。 NOP()。i++) { data=1。 for(i=0。NOP()。 //延時61us DQ_HIGH()。 //延時61us } else { DQ_LOW()。 DQ_HIGH()。 NOP()。 data=1。i++) { tmp=dataamp。 for(i=0。 //檢測到DS18B20應答低電平信號 delay15us(43)。 //延時61us if (DQ) state_DQ=1。 //延時721us DQ_HIGH()。 while(state_DQ) { DQ_LOW()。j0。ms0。}void DelayMS(unsigned int ms) //定義延時函數(shù){ unsigned int j=0。 else Temp_HEX += 0x30 。 0x0f 。 LCD_Write_Data(Temp_HEX) 。 if ( Temp_HEX 9 )Temp_HEX += 0x37 。 Temp_HEX = (HEX_Val 4) amp。 } else return 。 if (Str_Temp != 0x00 ) { LCD_Write_Data(Str_Temp) 。 }}//向LCD輸出字符串,字符串在RAM中void LCD_Put_String( char *Str){ unsigned char Str_Temp。 Str ++ 。 while (1) { Str_Temp = *Str 。 DelayMS(1) 。 LCD_E = 0 。 NOP()。 NOP()。 // 1表示數(shù)據(jù) NOP()。 LCD_E = 0 。 NOP()。 NOP()。 // 0表示命令字 NOP()。 } //向LCD輸出一個字符void LCD_Put_Char(unsigned char LCD_Char){ LCD_Write_Data(LCD_Char) 。 LCD_DAT_W_Timing () 。 DelayMS(1) 。 } //向LCD寫指令void LCD_Write_CMD( unsigned char LCD_CMD) { LCD_DATA= LCD_CMD。 //數(shù)據(jù)手冊要求查忙信號或者等待時間超過40us // 復位序列結(jié)束 LCD_Write_CMD(DISP_ON)。 //數(shù)據(jù)手冊要求查忙信號或者等待時間超過40us LCD_Write_CMD(CLR_DISP)。 //數(shù)據(jù)手冊要求查忙信號或者等待時間超過40us LCD_Write_CMD(ENTRY_INC)。 //數(shù)據(jù)手冊要求查忙信號或者等待時間超過40us LCD_Write_CMD(DISP_OFF)。 //數(shù)據(jù)手冊要求查忙信號或者等待時間超過40us LCD_Write_CMD(DISP_2Line_8Bit)。 LCD_CMD_W_Timing()。 DelayMS(1)。 //數(shù)據(jù)手冊要求等待時間大于100us LCD_DATA = 0x30 。 LCD_CMD_W_Timing()。 //清數(shù)據(jù)寄存器 DelayMS(5)。 // LCD控制用寄存器置為輸出 LCD_DATA_DIR = 0x00。unsigned char ge=0,shi=0,bai=0。unsigned char key=0,key4L=0。 //靜態(tài)數(shù)據(jù)長度為8個字符const char c_LCD_stB[]=00:00:00。void keyscan()。 // LCD寫數(shù)據(jù)時序函數(shù) void delay15us(unsigned int x)。 //設置顯示坐標void LCD_CMD_W_Timing( void ) 。 //向LCD輸出一個字符void LCD_Put_HEX( unsigned char ) 。 //向LCD輸出字符串void LCD_Puts_ROM( const char * ) 。 //向LCD寫指令void LCD_Write_Data( unsigned char ) 。 // 基本功能函數(shù)void LCD_Init (void) 。// XTAL_FREQ為外接晶振主頻,單位為MHzdefine XTAL_FREQ 4 unsigned int tmp[4]。 define DQ RC1define DQ_HIGH() TRISC1=1 //設置數(shù)據(jù)口為輸入define DQ_LOW() TRISC1=0。)。ylabel(39。time(s)39。)。plot(time,u,39。)。ylabel(39。time(s)39。)。,time,yout,39。plot(time,rin,39。error_1=error(k)。y_1=yout(k)。 y_3=y_2。u_2=u_1。u_4=u_3。endif u(k)=110 u(k)=110。u(k)=kp*error(k)+kd*(error(k)error_1)/ts+beta*ki*ei。ki=。 endelseif M==2 beta=。abs(error(k))=20 beta=。abs(error(k))=30 beta=。abs(error(k))=40 beta=。M=1。error(k)=rin(k)yout(k)
點擊復制文檔內(nèi)容
語文相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1