• 大小: 256KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-17
  • 语言: 其他
  • 标签: PID  C语言  直流电机  

资源简介

内含Protues仿真和C程序,可以带动步进电机做个时钟什么的。。

资源截图

代码片段和文件信息

/***********
提供控制器开发订做、单片机项目开发、工控测控传感自动化系统构建、仪器仪表测试设备定制、软件开发EXE编程等服务。永珂科技工作室 QQ 2531263726
http://shop73510260.taobao.com/
***********/
/*----------------载入头文件--------------------*/
#include 
#include 

/*----------------IO口设置----------------------*/
sbit a=P2^4;//L298信号口,{ a=1 ;b=0;}      //启动输出  正转
sbit b=P2^5;//            { a=0 ;b=1;}      //启动输出   反转
sbit  K1 =P1^0 ;                    //减少键 
sbit  K2 =P1^1 ;                    //增加键 
sbit  K3 =P1^2 ;                    //正转键 
sbit  K4 =P1^3 ;                    //反转键 
#define LCD_DATA P0 //LCD接口
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;
sbit LCD_EN = P2^2;

/*----------------全局变量设置-------------------*/
unsigned int  speed_set=6; //设置的转速单位rpm
unsigned int  speed_m=0; //测量的当前转速
unsigned char  zhuanxiang=1; //转向标志,0不转,1正转,2反转.默认正转
unsigned char jishi=0;//计时
unsigned long pusle=0;//脉冲间隔时间
//LCD的变量
unsigned char dispBuff0[16]={‘S‘‘e‘‘t‘
‘:‘‘ ‘‘ ‘‘ ‘‘ ‘‘R‘‘P‘‘M‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘};//LCD第一行显示
unsigned char dispBuff1[16]={‘N‘‘o‘‘w‘
‘:‘‘ ‘‘ ‘‘ ‘‘ ‘‘R‘‘P‘‘M‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘};//LCD第二行显示
//PID算法的变量
int Now_speed[3]={000};  //用于存储当前转速、前一次转速、再前一次转速
int KP=20;//10000us160rpm的比约为70
int KI=2;
int KD=0;
int last_out=0;
#define out_max 10000
#define out_min 0
unsigned int PWMH=0;//PWM波在10000us内高电平时间
bit pid_lock=1;//PID锁存标志位,1表示可以改变定时器1中初值为PWMH

/*----------------子程序预定义--------------------*/
void    Delay20ms() ;//延时函数
void  LCD_Init(void);//LCD子程序
void  LCD_WriteDat(unsigned char lcd_dat);
void  LCD_WriteCmd(unsigned char lcd_cmd);
unsigned char LCD_ReadStatus(void);
void  LCD_Goto(unsigned char xunsigned char y);
void    LCD_Display(unsigned char rowunsigned char *str);
void key();//按键子程序
void Motor_control(void) ;//PID控制电机

/*----------------主程序----------------------*/
void main()
{
/*计时器2设置,用于测量电机脉冲间隔*/
TCLK=0;     //可令T2CON=0;或TCLK=0RCLK=0;
RCLK=0;    //【T2CON中其他位可默认为0,而TCLK和RCLK必须手动置0】
//因RCAP2L和RCAP2H是由软件预设的
/*说明
补充:52单片机定时器2作为16位自动重装计时器。
RCAP2H=0xFF;     // 定时器2的重装载值 
RCAP2L=0xFD;     //16位自动再装入值:定时器2溢出时(CP/RL2=0时),会把 RCAP2H RCAP2L 中的数据装入TH2TL2
*/
RCAP2H=(65536-1000) / 256; // TH2 = (65536-X) / 256;
RCAP2L=(65536-1000) % 256; // TL2 = (65536-X) % 256;
TH2=RCAP2H;
TL2=RCAP2L;
ET2 = 1;
TR2 = 1;
/*计时器0设置,用于设置PWM的周期*/
TMOD=0x11;//定时器0、1工作于方式1
TH0=(65536-10000) / 256;//10000us ,计时器0用于定时产生PWM周期,周期10ms
TL0=(65536-10000) % 256;
ET0=1;  
TR0=1;//开始计时
/*计时器1设置,用于设置PWM的高电平时间*/
TH1=0;
TL1=0;
ET1=1;  
TR1=0;//停止计时
/*外部中断0设置*/
IT0=1;  //外部中断0,0低电平触发,1边沿触发
EX0=1;    //打开外部中断0
EA=1;//开全局中断
/*LCD显示*/
LCD_Init();//LCD初始化
LCD_Display(0dispBuff0);
LCD_Display(1dispBuff1);
Delay20ms();
while(1)
     {key();//按键识别
      Delay20ms();
     }
}

/*----------------子程序----------------------*/
//LCD子程序
void  LCD_Init(void)
{
Delay20ms();
/*************************************************
 功能设置: DB5=1;DB6...=0;
  DB4=1:8位接口; 0:4位接口;
  DB3=1:双行显示;0:单行显示;
 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     135787  2018-09-14 12:09  PID算法控制直流电机转速仿真与C程序\ISIS.dmp

     文件     119544  2016-11-11 21:54  PID算法控制直流电机转速仿真与C程序\Last Loaded PID电机转速1602.DBK

     文件      14548  2018-09-13 23:15  PID算法控制直流电机转速仿真与C程序\PID_motor

     文件       4698  2018-09-13 23:15  PID算法控制直流电机转速仿真与C程序\PID_motor.hex

     文件         64  2018-09-13 23:15  PID算法控制直流电机转速仿真与C程序\PID_motor.lnp

     文件      20828  2018-09-13 23:15  PID算法控制直流电机转速仿真与C程序\PID_motor.M51

     文件        379  2018-09-13 23:17  PID算法控制直流电机转速仿真与C程序\PID_motor.plg

     文件      90077  2018-09-13 23:07  PID算法控制直流电机转速仿真与C程序\PID_motor.uvgui.hp

     文件      56347  2018-09-13 23:17  PID算法控制直流电机转速仿真与C程序\PID_motor.uvopt

     文件      13424  2018-09-13 23:17  PID算法控制直流电机转速仿真与C程序\PID_motor.uvproj

     文件       5749  2018-09-13 23:07  PID算法控制直流电机转速仿真与C程序\PID_motor_uvopt.bak

     文件      14452  2018-09-13 22:28  PID算法控制直流电机转速仿真与C程序\PID_motor_uvproj.bak

     文件     119677  2016-11-11 22:08  PID算法控制直流电机转速仿真与C程序\PID电机转速1602.DSN

     文件        792  2018-09-14 12:46  PID算法控制直流电机转速仿真与C程序\PID电机转速1602.PWI

     文件       9023  2018-09-13 22:25  PID算法控制直流电机转速仿真与C程序\PID程序.c

     文件      16616  2018-09-13 23:15  PID算法控制直流电机转速仿真与C程序\PID程序.LST

     文件      16326  2018-09-13 23:15  PID算法控制直流电机转速仿真与C程序\PID程序.OBJ

     文件       6376  2009-05-07 14:37  PID算法控制直流电机转速仿真与C程序\STARTUP.A51

     文件      14051  2016-11-12 16:48  PID算法控制直流电机转速仿真与C程序\STARTUP.LST

     文件        749  2016-11-12 16:48  PID算法控制直流电机转速仿真与C程序\STARTUP.OBJ

     文件      94036  2016-11-12 17:13  PID算法控制直流电机转速仿真与C程序\增量式PID算法直流电机调速proteus仿真和motor-encoder介绍.docx

     文件      63946  2018-09-24 22:37  PID算法控制直流电机转速仿真与C程序\文档1.docx

     目录          0  2019-04-07 21:01  PID算法控制直流电机转速仿真与C程序

----------- ---------  ---------- -----  ----

               817489                    23


评论

共有 条评论