网站导航: 首页 > 设计参考 > 正文 文章搜索
单片机驱动直流电机C语言源代码
 
文章编号:
090106141055
文章分类: 电路 电机驱动
点 击:
...
关 键 词: 直流电机
文章来源:
网络
摘 要:

直流电机的开环控制Keil c51源代码

 
  1. //-----------------------函数声明,变量定义--------------------------------------------------------   
  2. #include <reg51.h>   
  3. #include <intrins.h>   
  4. #include<ABSACC.H>     
  5. //-----------------------定义管脚--------------------------------------------------------   
  6. sbit PWM=P1^0;             //PWM波形输出    
  7. sbit DR=P1^1;              //方向控制   
  8. #define  timer_data  (256-100) //定时器预置值,12M时钟是,定时0.1ms   
  9. #define  PWM_T 100         //定义PWM的周期T为10ms   
  10. unsigned char PWM_t;       //PWM_t为脉冲宽度(0~100)时间为0~10ms   
  11. unsigned char PWM_count;   //输出PWM周期计数   
  12. unsigned char time_count;  //定时计数   
  13. bit direction;             //方向标志为   
  14. //--------------------------------------------------------------------------------------------------   
  15. // 函数名称:timer_init   
  16. // 函数功能:初始化设施定时器   
  17. //--------------------------------------------------------------------------------------------------   
  18. void timer_init()   
  19. {   
  20.     TMOD=0x22; /*定时器1为工作模式2(8位自动重装),0为模式2(8位自动重装) */  
  21.     PCON=0x00;   
  22.     TF0=0;    
  23.     TH0=timer_data;   //保证定时时长为0.1ms   
  24.     TL0=TH0;   
  25.     ET0=1;   
  26.     TR0=1;            //开始计数   
  27.     EA=1;             //中断允许   
  28. }   
  29. //--------------------------------------------------------------------------------------------------   
  30. // 函数名称:setting_PWM   
  31. // 函数功能:设置PWM的脉冲宽度和设定方向   
  32. //--------------------------------------------------------------------------------------------------   
  33. void setting_PWM()   
  34. {   
  35.     if(PWM_count==0)  //初始设置   
  36.     {   
  37.         PWM_t=20;   
  38.         direction=1;   
  39.     }   
  40. }   
  41. //--------------------------------------------------------------------------------------------------   
  42. // 函数名称:IntTimer0   
  43. // 函数功能:定时器中断处理程序   
  44. //--------------------------------------------------------------------------------------------------   
  45. void IntTimer0() interrupt 1   
  46. {   
  47.     time_count++;   
  48.     DR=direction;   
  49.     if(time_count>=PWM_T)   
  50.     {   
  51.         time_count=0;   
  52.         PWM_count++;   
  53.         setting_PWM();  //每输出一个PWM波调用一次   
  54.     }   
  55.     if(time_count<PWM_t)   
  56.         PWM=1;   
  57.     else    
  58.         PWM=0;   
  59. }   
  60. //--------------------------------------------------------------------------------------------------   
  61. // 函数名称:main   
  62. // 用户主函数   
  63. // 函数功能:主函数   
  64. //--------------------------------------------------------------------------------------------------   
  65. void main()   
  66. {   
  67.     timer_init();   
  68.     setting_PWM();   
  69. }   
  70.   

 

 
相关文章:

12 下一页
 
最新开源项目
 
 
  查看更多...  
 
本站相关产品   淘宝网店
 




 
  查看更多...  

 

本站程序由百合电子工作室开发和维护
Copyright @ baihe electric studio
渝ICP备09006681号-4