下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、經(jīng)典 PID 調(diào)節(jié),恒溫控制。2009-08-11 20:37#include #include #include#include struct PID unsigned int SetPoint; / 設(shè)定目標(biāo) Desired Value unsigned int Proportion; / 比例常數(shù) Proportional Const unsigned int Integral; / 積分常數(shù) Integral Const unsigned int Derivative; / 微分常數(shù) Derivative Const unsigned int LastError; / Error-1
2、unsigned int PrevError; / Error-2 unsigned int SumError; / Sums of Errors ;struct PID spid; / PID Control Structure unsigned int rout; / PID Response (Output) unsigned int rin; / PID Feedback (Input)sbit data 仁 P1A0;sbit clk=P1Ai; sbit plus=P2A0;sbit subs=P2A1; sbit stop=P2A2; sbit output=P3A4; sbit
3、 DQ=P3A3; unsigned char flag,flag_1=0; unsigned char high_time,low_time,count=0;/ 占空比調(diào)節(jié)參數(shù) unsigned char set_temper=35;unsigned char temper; unsigned char i; unsigned char j=0; unsigned int s;/*延時子程序,延時時間以12M晶振為準(zhǔn),延時時間為30usX time*/void delay(unsigned char time)unsigned char m,n; for(n=0;ntime;n+) for(
4、m=0;m2;m+)/*寫一位數(shù)據(jù)子程序*/void write_bit(unsigned char bitval)EA=0;DQ=0; /* 拉低 DQ 以開始一個寫時序 */ if(bitval=1)_nop_();DQ=1; /* 如要寫 1,則將總線置高 */delay(5); /* 延時 90us 供 DA18B20 采樣 */DQ=1;/*釋放 DQ 總線 */_nop_();_nop_();EA=1;/* 寫一字節(jié)數(shù)據(jù)子程序*/void write_byte(unsigned char val)unsigned char i;unsigned char temp;EA=0;TR0
5、=0;for(i=0;ii; /*移位操作,將本次要寫的位移到最低位 */ temp=temp&1;write_bit(temp); /* 向總線寫該位 */ delay(7); /* 延時 120us 后 */ TR0=1;EA=1;/* 讀一位數(shù)據(jù)子程序*/unsigned char read_bit()unsigned char i,value_bit;EA=0;DQ=0;/*拉低 DQ ,開始讀時序 */_nop_();_nop_();DQ=1; /* 釋放總線 */for(i=0;i2;i+) value_bit=DQ;EA=1;return(value_bit);/* 讀一字節(jié)數(shù)據(jù)
6、子程序*/unsigned char read_byte()unsigned char i,value=0;EA=0;for(i=0;i8;i+)if(read_bit() /* 讀一字節(jié)數(shù)據(jù),一個時序中讀一次,并作移位處理 */ value|=0x01i;delay(4);/*延時 80us 以完成此次都時序,之后再讀下一數(shù)據(jù)*/EA=1;return(value);/*復(fù)位子程序* unsigned char reset()unsigned char presence;EA=0;DQ=0; /* 拉低 DQ 總線開始復(fù)位 */ delay(30); /* 保持低電平 480us*/DQ=1
7、; /* 釋放總線 */delay(3);presence=DQ;/* 獲取應(yīng)答信號 */delay(28); /* 延時以完成整個時序 */EA=1;return(presence);/* 返回應(yīng)答信號,有芯片應(yīng)答返回0,無芯片則返回 1*/* 獲取溫度子程序* void get_temper()unsigned char i,j;doi=reset(); /* 復(fù)位 */while(i!=0); /*1 為無反饋信號 */i=0xcc; /* 發(fā)送設(shè)備定位命令 */ write_byte(i);i=0x44; /* 發(fā)送開始轉(zhuǎn)換命令 */ write_byte(i);delay(180);
8、 /*延時 */doi=reset(); /* 復(fù)位 */while(i!=0);i=0xcc; /* 設(shè)備定位 */ write_byte(i);i=0xbe; /* 讀出緩沖區(qū)內(nèi)容 */ write_byte(i);j=read_byte();i=read_byte();i=(i4;temper=i|j; /* 獲取的溫度放在 temper 中 */ /*=Initialize PID Structure =*/ void PIDInit (struct PID *pp)memset ( pp,0,sizeof(struct PID);/*=PID 計算部分=*/ unsigned int
9、 PIDCalc( struct PID *pp, unsigned int NextPoint ) unsigned int dError,Error;Error = pp-SetPoint - NextPoint; / 偏差 pp-SumError += Error; / 積分 dError = pp-LastError - pp-PrevError; / 當(dāng)前微分 pp-PrevError = pp-LastError; pp-LastError = Error;return (pp-Proportion * Error / 比例項 + pp-Integral * pp-SumEror
10、/ 積分項 + pp-Derivative * dError); / 微分項 /* 溫度比較處理子程序*/ compare_temper() unsigned char i;if(set_tempertemper) if(set_temper-temper1) high_time=100; low_time=0; else for(i=0;i10;i+) get_temper(); rin = s; / Read Input rout = PIDCalc ( &spid,rin ); / Perform PID Interation if (high_time=100) high_time=(
11、unsigned char)(rout/800);else high_time=100;low_time= (100-high_time);else if(set_temper0) high_time=0; low_time=100;else for(i=0;i10;i+) get_temper();rin = s; / Read Inputrout = PIDCalc ( &spid,rin ); / Perform PID Interation if (high_time100)high_time=(unsigned char)(rout/10000);else high_time=0;l
12、ow_time= (100-high_time);/ else/ /*T0 中斷服務(wù)子程序,用于控制電平的翻轉(zhuǎn) ,40us*100=4ms 周期 */ void serve_T0() interrupt 1 using 1if(+count=(high_time) output=1;else if(count=100)output=0;elsecount=0;TH0=0x2f;TL0=0xe0;/* 串行口中斷服務(wù)程序,用于上位機通訊 */ void serve_sio() interrupt 4 using 2/* EA=0;RI=0;i=SBUF;if(i=2) while(RI=0) RI=0; set_temper=SBUF; SBUF=0x02; while(TI=0) TI=0;else if(i=3)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國蛋黃醬行業(yè)市場營銷模式及投資競爭力分析報告版
- 2024-2030年中國航空障礙燈行業(yè)產(chǎn)業(yè)鏈分析及投資兼并重組整合研究報告
- 2024-2030年中國老鷹茶市場營銷模式及發(fā)展規(guī)劃分析報告權(quán)威版
- 2024-2030年中國編程燒錄器行業(yè)運營模式及未來發(fā)展趨勢預(yù)測報告
- 2024-2030年中國紫草項目可行性研究報告
- 2024-2030年中國精萘行業(yè)運行形勢及投資風(fēng)險分析報告
- 2024-2030年中國硅酸乙酯行業(yè)發(fā)展形勢及投資可行性分析報告版
- 社會組織性侵害預(yù)防工作制度
- 醫(yī)療機構(gòu)設(shè)備捐贈協(xié)議書
- 國家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 3-02-03-01 消防員(2022年版)
- GB/T 36242-2018燃?xì)饬髁坑嬻w積修正儀
- GB/T 2818-2014井用潛水異步電動機
- 5 汪曾祺《跑警報》.電子教案教學(xué)課件
- 敘事療法課件
- 國家開放大學(xué)電大《計算機應(yīng)用基礎(chǔ)(本)》終結(jié)性考試試題答案(格式已排好)任務(wù)一
- 阿米巴經(jīng)營管理課件
- 小學(xué)質(zhì)量檢測匯報材料范文推薦11篇
- 質(zhì)量管理體系內(nèi)部審核培訓(xùn)知識課件
- 絕密資料機械制造工藝學(xué)知識點
- 智能電網(wǎng)-課件
評論
0/150
提交評論