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

正文內(nèi)容

基于pic系列單片機(jī)的改進(jìn)型pid控制器設(shè)計(jì)畢業(yè)論文(參考版)

2025-06-21 17:29本頁面
  

【正文】 //保存上次偏差 PID_e1 = PID_e0。 Hot_T_Run=PID_Out。 if(PID_e0 300) //當(dāng)前溫度比設(shè)定溫度低3度則全速加熱 PID_Out=200。 //恢復(fù)被PID_Out系數(shù)放大的倍數(shù) if(PID_Out 200) PID_Out=200。 //PID比例,積分和微分輸出 } else PID_e_SUM=0。 if(PID_e_SUM 0) // d_out = 1。 } d_out = PID_ki*PID_e_SUM。 //計(jì)算PID比例和微分輸出 if(abs(PID_e0) 200) // { if(abs(PID_e0) 100) //如果溫度相差大于1度時積分累計(jì)限制 { if(PID_e_SUM 100) PID_e_SUM = 100。 if(PID_e_SUM 200) PID_e_SUM = 200。 PID_e_SUM += PID_e0。 //計(jì)算二階偏差 if(ee1 500) //一階偏差的限制范圍 ee1 = 500。 //本次偏差 ee1 = PID_e0PID_e1。 Temp_Set=3700。 //積分輸出 if(!Flag_PID_T_OK) return。 //偏差一階 //signed long ee2。* 當(dāng)偏差絕對值小于△e時,用PID算法,提高穩(wěn)定精度。 } }}/***************************************************************************** 模塊名: PID* 描述: PID調(diào)節(jié)子程序* 采用PIDPD算法。 LED1=1。 } else { MOTOR=0。 LED1=0。 } if(temptemptest) { MOTOR=1。)。 LCD_Write_Data(39。)。 LCD_Write_Data(39。)。 LCD_Write_Data(ge+39。)。 LCD_Write_Data(shi+39。)。 LCD_Write_Data(bai+39。 PID_Math()。 while(1) { keyconve()。 // 從第0行第0個字符位開始顯示 LCD_Puts_ROM(c_LCD_str)。}void main( void ){ LCD_Init( ) 。 LED1=1。 TRISC7=0。 TRISC6=0。)。 // 從第0行第0個字符位開始顯示 //LCD_Put_Char(i+39。 } else if(setflagbai==1) { bai=i。 } if(setflag==1) { if(i=9) { if(setflagge==1) { ge=i。 setflagshi=0。 setflagge=0。 setflagshi=1。 setflagge=0。 setflagshi=0。 setflagge=1。 //顯示 Counter: setflag=0。 LCD_Set_Cursor(0,0)。 setflag=1。 //顯示 Counter: LCD_Set_Cursor(1,0)。 LCD_Set_Cursor(0,0)。 } else if(KeyM==0xbd) { i=0。 } else if(KeyM==0xd7) { i=8。 } else if(KeyM==0xdd) { i=6。 } else if(KeyM==0xe7) { i=4。 } else if(KeyM==0xed) { i=2。 } else { KeyM=0。0x0F。 // 硬件空操作指令 key4L=PORTD。 // D口高四位輸出,低四位輸入 PORTD=key。只保留高四位 if(key!=0xF0) // key不為0b11110000則說明有按鍵按下 { DelayMS(20)。0xF0。 // 低四位輸出0 key=PORTD。 }void keyconve(){ TRISD=0xF0。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。 LCD_Set_Cursor(1,0)。} while(x)。i++)。x) for(i=0。 for(。//負(fù)溫度顯示負(fù)號: temptest=bai*100+shi*10+ge。 if(tflag==0) flagdat=0x20。 //個位 tmp[3]=(int)temper%100%10。 //百位 tmp[1]=(int)(temper%1000)/100。 } temper=temper*()。 else { temper=~temper+1。 //讀內(nèi)部RAM 高八位溫度 //整數(shù)部分處理 temper=(tmpB*256+tmpA)。 //讀內(nèi)部RAM中9字節(jié)的內(nèi)容命令 tmpA=read_one_byte()。 //如果再寫命令必須再次復(fù)位 write_one_byte(0xcc)。 //寫跳過ROM命令,因?yàn)榭偩€上只有一個DS18B20 write_one_byte(0x44)。 //定義讀出RAM的高低位變量 reset()。 }void get_temperature(){ unsigned long temper。 delay15us(4)。NOP()。 DQ_HIGH()。 DQ_LOW()。i8。 } }}unsigned char read_one_byte(){ unsigned char i,data。 NOP()。 delay15us(5)。 delay15us(5)。NOP()。 if (tmp) //tmp=1時 { DQ_LOW()。0x01。i8。 //延時490us } }void write_one_byte(unsigned char data){ unsigned char i,tmp。 //若DS18B20無應(yīng)答,循環(huán)檢查 else state_DQ=0。 delay15us(5)。 //單片機(jī)拉低總線480us950us,然后釋放總線 delay15us(50)。j)//1MHz時約是27,其它主頻請酌情修改 { }} void reset(){ unsigned char state_DQ=1。ms) for(j=27*XTAL_FREQ。 for(ms。 LCD_Write_Data(Temp_HEX) 。 if ( Temp_HEX 9 )Temp_HEX += 0x37 。 Temp_HEX = HEX_Val amp。 else Temp_HEX += 0x30 。 0x0f 。 }}//向LCD輸出16進(jìn)制形式數(shù)據(jù)void LCD_Put_HEX(unsigned char HEX_Val){ unsigned char Temp_HEX 。 Str ++ 。 while (1) { Str_Temp = *Str 。 } else return 。 if (Str_Temp != 0x00 ) { LCD_Write_Data(Str_Temp) 。}//向LCD輸出ROM中的字符串void LCD_Puts_ROM( const char *Str ){ unsigned char Str_Temp。}//設(shè)置顯示坐標(biāo)// Row = (0 or 1)//Column = ( 0 to 15)void LCD_Set_Cursor(unsigned char Row, unsigned char Column){ LCD_Write_CMD( DD_RAM_BASE + Row * 0x40 + Column) 。 NOP()。 LCD_E = 1 。 LCD_RW = 0 。}// LCD寫數(shù)據(jù)時序函數(shù) void LCD_DAT_W_Timing( void ){ LCD_RS = 1 。 NOP()。 LCD_E = 1 。 LCD_RW = 0 。}// LCD寫命令時序函數(shù)void LCD_CMD_W_Timing( void ){ LCD_RS = 0 。 DelayMS(1) 。 } //向LCD寫數(shù)據(jù)void LCD_Write_Data( unsigned char LCD_CMD) { LCD_DATA= LCD_CMD。 LCD_CMD_W_Timing () 。 // 開啟LCD顯示 DelayMS(1)。 // 清空屏幕顯示 DelayMS(1) 。 //設(shè)定輸入方式為地址增量 DelayMS(1)。 // 關(guān)顯示 DelayMS(1)。 //顯示模式設(shè)為2行,8位數(shù)據(jù)模式 DelayMS(1)。 DelayMS(1)。 //數(shù)據(jù)手冊要求等待時間大于40us LCD_DATA = 0x30 。 LCD_CMD_W_Timing()。 DelayMS(1)。 // // 開始輸出軟件復(fù)位序列 LCD_DATA = 0x30。 //LCD數(shù)據(jù)用寄存器也置為輸出 LCD_DATA = 0x00。void LCD_Init(void){ LCD_CTRL_DIR = 0x00。unsigned char KeyM=0,i=17,setflag=0,setflagge=0,setflagshi=0,setflagbai=0。unsigned int temp,tflag,flagdat,temptest。const char c_LCD_str[]=DS18B20 TEST 。void get_temperature()。 // LCD寫命令時序函數(shù)void LCD_DAT_W_Timing ( void ) 。 //向LCD輸出16進(jìn)制形式數(shù)據(jù)void LCD_Set_Cursor( unsigned char Row, unsigned char Column)。 //向LCD輸出ROM中的字符串void LCD_Put_Char( unsigned char ) 。 //向LCD寫數(shù)據(jù)void LCD_Put_String( char * ) 。 //初始化LCDvoid LCD_Write_CMD ( unsigned char ) 。 // 在指定主頻下大約延時1ms,比1ms稍長void DelayMS(unsigned int ms)。DQ=0define MOTOR RC2define LED RC6define LED1 RC0define LED2 RC7 define LCD_CTRL PORTC //控制端口define LCD_CTRL_DIR TRISC //控制端口方向位define LCD_RS RC3 // 指令數(shù)據(jù)控制,1為指令,0為數(shù)據(jù)define LCD_RW RC4 // 讀寫控制,1為讀,0位寫define LCD_E RC5 // 使能信號,有特殊時序要求,下降沿生效define LCD_DATA PORTB // 數(shù)據(jù)端口,PORTD 與 DB0:DB7順次相連define LCD_D
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1