发布时间 : 星期一 文章基于430单片机的PID温度控制毕业设计更新完毕开始阅读4a419b4fde80d4d8d15a4f5b
中北大学信息商务学院2013届本科毕业设计说明书
Delay(60000); //延时800ms以上 do {
i = Init_18B20(); } while(i); Skip(); Read_SP();
return ReadTemp(); // 后街换算处理和显示 去看门狗 }
void Disp_Numb(uint temper) {
b=temper/16;
hang6[1] = b% 10+48; hang6[0] = b / 10+48; Disp_HZ(0x80,hang1,5); Disp_HZ(0x85,hang6,2); }
void init_TB(void) {
P4DIR = 0x0f; // p4.1 output mode
P4SEL = 0x03; // p4.1 option select / 选择SMCLK = HF xtal TBCTL = TBSSEL_2 + TBCLR; // ACLK, clear TBR TBCTL |= MC_1; // 设置递增模式 TBCCR0 = 2535; //初始化CCR0 TBCCTL1 = OUTMOD_7;
TBCCR1 = 1; // ccr1 Pwm cycle }
33
中北大学信息商务学院2013届本科毕业设计说明书
void init_PID(void) {
K=15; //比例项 Ti=0.01; //积分 Td=10; //微分 ev=0;//误差
Mi=0;//上次回路初始值 gei=50;// 给定值 Xx=-20; Sx=2000; }
void PID(void) {
ev=gei-b; // 误差计算 BL=K*ev;// 比例项计算 Wl=KB*Wl+BL;// 比例增量 if(Wl<0)//增量下线 Wl=0;
if(Wl>2000)//增量上线 Wl=2000;
JF=Ti*ev+Mi;// 积分项 (滞后严重) Mi=Mi+JF; //
if(Mi>Sx) //积分上线 Mi=Sx;
if(Mi WF=Td*(ev-ev1); //微分 ev1=ev; 34 中北大学信息商务学院2013届本科毕业设计说明书 chu=BL+WF+Wl; //PID 输出 if(chu>0) if(chu<65535) TBCCR1=chu; if(chu<0) TBCCR1=1; if(chu>65535) TBCCR1=65534; } #pragma vector=WDT_VECTOR //中断程序入口地址 __interrupt void watchdog_timer (void) { uint f,g,h; a++; if(a==0) PID(); if(a>=240) a=0; hang7[4]= TBCCR1+48; hang7[3]=(TBCCR1/10)+48; hang7[2]=( TBCCR1/100)+48; hang7[1]=( TBCCR1/1000)+48; hang7[0]=( TBCCR1/10000)+48; Disp_HZ(0x90,hang8,4); Disp_HZ(0x94,hang7,4); f=K; hang9[6]= f+48; 35 中北大学信息商务学院2013届本科毕业设计说明书 hang9[5]=(f/10)+48; Disp_HZ(0x88,hang9,4); g=Td; hang10[6]= g+48; hang10[5]=(g/10)+48; Disp_HZ(0x8c,hang10,4); h=KB; hang11[9]= g+48; hang11[10]=(g/10)+48; Disp_HZ(0x98,hang11,6); } void main(void) { P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT = 0XFF; P3DIR = 0XFF;P3OUT = 0XFF; P4DIR = 0XFF;P4OUT = 0XFF; P5DIR = 0XFF;P5OUT = 0XFF; P6DIR = 0XFF;P6OUT = 0XFF; WDTCTL =WDT_ADLY_1000; IE1 |= WDTIE; BCSCTL1 &= ~XT2OFF; // do { IFG1 &= ~OFIFG; // for (i = 0xFF; i > 0; i--); // } while ((IFG1 & OFIFG)); // 打开XT2高频晶体振荡器 清除晶振失败标志 等待8MHz晶体起振 晶振失效标志仍然存在? 36