单片机pid算法实现

单片机pid算法实现

ID:20397656

大小:226.43 KB

页数:20页

时间:2018-10-10

单片机pid算法实现_第1页
单片机pid算法实现_第2页
单片机pid算法实现_第3页
单片机pid算法实现_第4页
单片机pid算法实现_第5页
资源描述:

《单片机pid算法实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、单片机PID算法实现在网络上收集了一个PID控制程序,看到很多研友的毕业设计可能涉及到PID控制,这是一个PID的程序,希望能做到抛砖引玉,仅供大家参考。/*/////////////////////////////////////////////////////////////*//*      initialinterrupter       *//*/////////////////////////////////////////////////////////////*/voidinit_interrupter(void)/**/{TMOD=0x21;/*设置计时器0工作于

2、模式1,设置计时器1工作于模式2*/TL0=0x00; /*T0=0000定时时间为71.1ms;71.1ms*15=1.066s*/TH0=0xdc; /*T0=DC00定时时间为10ms;10ms*100=1s*//*T0=FC66定时时间为1ms;10ms*1000=1s*/TL1=0xfd; /*设置串口通信速率9600bps*/TH1=0xfd;PCON=0x00;/*SMOD=0,速率不倍增*/SCON=0x50;/*8位数据通信,串行通信方式1,允许单片机接收数据*/IP=0x10; /*serialcomispreferential*/IE=0x92; /*定时器0

3、,串口中断允许;定时器1中断禁止*/rs485_receive=0;rs485_transmitte=0;TR0=1;  /*启动定时器0*/TR1=1;  /*启动定时器1*/}voidtimer0_server(void)interrupt1using1/**/{ TL0=0x00;TH0=0xdc;/*T0=DC00timingintervalis10ms;10ms*100=1s*//*T0=FC66timingintervalis1ms;10ms*1000=1s*/ if(flag_serial==1) {  timer0_counter_3++;  if(timer0_c

4、ounter_3>11)  {    timer0_counter_3=0;    flag_serial=0;    pointer_serial_com_data=serial_com_data;    counter_serial_com_data=0;  } } dog=!dog;/*Timer0isfull(10ms),feeddog*/ if(timing_interval==0){timing_interval=1;}/*timing_intervalislostthensetitto1second*/ timer0_counter_1++;/*timer0_coun

5、ter_1issoftwaretimer.whentimer0interruptisfull,itincreaseautomatically*/ if((unsignedchar)(timer0_counter_1/100)==timing_interval)/*timing_intervalarrives*/ {  out_flag=1;/*indexing占空比highlevelbegin*/  /*-scan0809togetcurrentequipment'stemperature-*/  scan_current_Temperature();  origina_addre

6、ss=0x82;  display1_Temperature(current_Temperature,origina_address);  /*-calculateout_value-*/  PID_algorithm_function(PID_mode,PP,II,DD,BB,current_Temperature,seted_temperature);  //out_value=0.5;  if(out_value>0.0)/*out_value=0.0,then占空比iszero*/  {    control_0=1;    ledctrl_address=0x8c;   

7、 leddata_address=0xff;  }  //resettimer0_counter_1andtimer0_counter_2,  timer0_counter_1=0;//indexingtiming_interval'stiming  timer0_counter_2=0;//indexing占空比'stiming } if(out_flag==1) {  timer0_counter_2++;  if(out_value<1.0)  {    if(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。