⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 叶风 - 利用pid算法和pwm调制实现温度自动控制的源程序.htm

📁 一个经典的PID算法实例 很有参考价值 C语言实现
💻 HTM
📖 第 1 页 / 共 3 页
字号:
            }<BR>&nbsp;&nbsp;&nbsp;&nbsp; EA=1;&nbsp;&nbsp; */<BR>&nbsp;&nbsp; 
            }<BR>void disp_1(unsigned char 
            disp_num1[6])<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp; unsigned char 
            n,a,m;<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
            for(n=0;n&lt;6;n++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp; 
            k=disp_num1[n];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            for(a=0;a&lt;8;a++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            clk=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            m=(disp_num1[n]&amp;1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            disp_num1[n]=disp_num1[n]&gt;&gt;1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            if(m==1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            data1=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            data1=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            _nop_();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            clk=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            _nop_();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            }<BR>&nbsp;}<BR>/*****************************************************<BR>显示子程序<BR>功能:将占空比温度转化为单个字符,显示占空比和测得到的温度<BR>******************************************************/<BR>void 
            display()<BR>{<BR>&nbsp;unsigned char code 
            number[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};<BR>&nbsp;unsigned 
            char disp_num[6];<BR>&nbsp;unsigned int 
            k,k1;<BR>&nbsp;k=high_time;<BR>&nbsp;k=k%1000;<BR>&nbsp;k1=k/100;<BR>&nbsp;if(k1==0)<BR>&nbsp;&nbsp;&nbsp; 
            disp_num[0]=0;<BR>&nbsp;else<BR>&nbsp;&nbsp;&nbsp; 
            disp_num[0]=0x60;<BR>&nbsp;k=k%100;<BR>&nbsp;disp_num[1]=number[k/10];<BR>&nbsp;disp_num[2]=number[k%10];<BR>&nbsp;k=temper;<BR>&nbsp;k=k%100;<BR>&nbsp;disp_num[3]=number[k/10];<BR>&nbsp;disp_num[4]=number[k%10]+1;<BR>&nbsp;disp_num[5]=number[s/10];<BR>&nbsp;disp_1(disp_num);<BR>&nbsp;}<BR>/***********************************************************<BR>主程序<BR>***********************************************************/<BR>&nbsp;main()<BR>&nbsp;{<BR>&nbsp; 
            unsigned char z;<BR>&nbsp; unsigned char 
            a,b,flag_2=1,count1=0;<BR>&nbsp; unsigned char 
            phil[]={2,0xce,0x6e,0x60,0x1c,2};;<BR>&nbsp; 
            TMOD=0x21;&nbsp;&nbsp;&nbsp;<BR>&nbsp; 
            TH0=0x2f;&nbsp;&nbsp;&nbsp;<BR>&nbsp; TL0=0x40;<BR>&nbsp; 
            SCON=0x50;&nbsp;&nbsp;&nbsp;<BR>&nbsp; 
            PCON=0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp; 
            TH1=0xfd;&nbsp;&nbsp;&nbsp;<BR>&nbsp; TL1=0xfd;<BR>&nbsp; 
            PS=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp; 
            EA=1;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp; 
            EX1=0;&nbsp;&nbsp;&nbsp;<BR>&nbsp; 
            ET0=1;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;ES=1;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp; 
            TR0=1;&nbsp;&nbsp;<BR>&nbsp; TR1=1;<BR>&nbsp; 
            high_time=50;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp; 
            low_time=50;</P>
            <P>&nbsp; PIDInit ( &amp;spid ); // Initialize Structure<BR>&nbsp; 
            spid.Proportion = 10; // Set PID Coefficients<BR>&nbsp; 
            spid.Integral = 8;<BR>&nbsp; spid.Derivative =6;<BR>&nbsp; 
            spid.SetPoint = 100; // Set PID Setpoint</P>
            <P>&nbsp; while(1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            if(plus==0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            EA=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            for(a=0;a&lt;5;a++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            for(b=0;b&lt;102;b++){}&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            if(plus==0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            set_temper++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            flag=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            else 
            if(subs==0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            for(a=0;a&lt;5;a++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            for(b=0;a&lt;102;b++){}&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            if(subs==0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            set_temper--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            flag=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            else 
            if(stop==0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            for(a=0;a&lt;5;a++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            for(b=0;b&lt;102;b++){}&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            if(stop==0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            flag=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            }</P>
            <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            EA=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            get_temper();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            b=temper;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            if(flag_2==1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            a=b;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            if((abs(a-b))&gt;5)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            temper=a;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            temper=b;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            a=temper;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            flag_2=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            if(++count1&gt;30)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            display();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            count1=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            compare_temper();&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            }<BR>&nbsp;&nbsp;&nbsp; TR0=0;<BR>&nbsp;&nbsp;&nbsp; 
            z=1;<BR>&nbsp;while(1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            EA=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(stop==0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            for(a=0;a&lt;5;a++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            for(b=0;b&lt;102;b++){}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            if(stop==0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            disp_1(phil);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            EA=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            }<BR>&nbsp;}</P>
            <P><BR>&nbsp;</P></TD></TR></TBODY></TABLE><BR>
      <SCRIPT type=text/javascript><!-- google_ad_client = "pub-6478508614958096"; google_ad_width = 300; google_ad_height = 250; google_ad_format = "300x250_as"; google_ad_type = "text"; //2007-06-17: down google_ad_channel = "3787309853"; google_color_border = "FFFFFF"; google_color_bg = "FFFFFF"; google_color_link = "0000FF"; google_color_text = "333333"; google_color_url = "333333"; //--> </SCRIPT>

      <SCRIPT src="叶风 - 利用PID算法和PWM调制实现温度自动控制的源程序.files/show_ads.js" 
      type=text/javascript> </SCRIPT>
      <BR>&nbsp;&nbsp;(<A 
      href="http://ilovec.123ye.com/book.do?method=list&amp;wordTitle=%C6%C0%A1%B6%C0%FB%D3%C3PID%CB%E3%B7%A8%BA%CDPWM%B5%F7%D6%C6%CA%B5%CF%D6%CE%C2%B6%C8%D7%D4%B6%AF%BF%D8%D6%C6%B5%C4%D4%B4%B3%CC%D0%F2%A1%B7#1">发表评论</A>)
      <P style="LINE-HEIGHT: 140%"><BR>&nbsp;&nbsp;上&nbsp;一&nbsp;页:<A 
      href="http://ilovec.123ye.com/infoAction.do?method=show&amp;infoId=114625">4*4矩阵键盘扫描子程序范例</A></P></TD></TR></TBODY></TABLE>
<TABLE height=10 cellSpacing=0 cellPadding=0 width=730 border=0>
  <TBODY>
  <TR>
    <TD></TD></TR></TBODY></TABLE>
<TABLE style="BORDER-TOP: #bed6f4 6px solid" cellSpacing=0 cellPadding=0 
width=750 border=0>
  <TBODY>
  <TR>
    <TD>&nbsp; </TD></TR></TBODY></TABLE>
<TABLE class=sbody id=tab6 cellSpacing=0 cellPadding=0 width=750 border=0>
  <TBODY>
  <TR>
    <TD align=middle height=20><BR>
      <DIV style="VISIBILITY: hidden">
      <SCRIPT language=JavaScript 
      src="叶风 - 利用PID算法和PWM调制实现温度自动控制的源程序.files/stat.htm" 
      charset=gb2312></SCRIPT>
      </DIV><IFRAME border=0 name=vnet marginWidth=0 marginHeight=0 
      src="叶风 - 利用PID算法和PWM调制实现温度自动控制的源程序.files/CAIJORT6.htm" frameBorder=0 
      noResize width=0 scrolling=no 
height=0></IFRAME></TD></TR></TBODY></TABLE></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -