標題: 單片機PWM控制直流電機代碼 [打印本頁]

作者: 其實不然cc    時間: 2017-3-21 09:53
標題: 單片機PWM控制直流電機代碼
  1. #include <reg52.h>

  2. //--定義使用的IO口--//
  3. sbit PWM=P1^0;

  4. //--定義一個全局變量--//
  5. unsigned char timer1;

  6. void Time1Config();

  7. /*******************************************************************************
  8. * 函 數 名       : main
  9. * 函數功能                 : 主函數
  10. * 輸    入       : 無
  11. * 輸    出       : 無
  12. *******************************************************************************/

  13. void main(void)
  14. {
  15.         Time1Config();
  16.         while(1)
  17.         {
  18.                 if(timer1>100)  //PWM周期為100*0.5ms
  19.                 {
  20.                         timer1=0;
  21.                 }
  22.                 if(timer1 < 30)        //改變30這個值可以改變直流電機的速度
  23.                 {
  24.                         PWM=1;
  25.                 }
  26.                 else
  27.                 {
  28.                         PWM=0;
  29.                 }
  30.         }
  31.         

  32. }

  33. /*******************************************************************************
  34. * 函 數 名       : Time1Config
  35. * 函數功能                 : 設置定時器
  36. * 輸    入       : 無
  37. * 輸    出       : 無
  38. *******************************************************************************/

  39. void Time1Config()
  40. {
  41.         TMOD|= 0x10;   //設置定時計數器工作方式1為定時器

  42.         //--定時器賦初始值,12MHZ下定時0.5ms--//  
  43.         TH1 = 0xFE;
  44.         TL1 = 0x0C;

  45.         
  46.         ET1 = 1;          //開啟定時器1中斷
  47.         EA = 1;
  48.         TR1 = 1;         //開啟定時器        
  49. }

  50. /*******************************************************************************
  51. * 函 數 名       : Time1
  52. * 函數功能                 : 定時器1的中斷函數
  53. * 輸    入       : 無
  54. * 輸    出       : 無
  55. *******************************************************************************/

  56. void Time1(void) interrupt 3    //3 為定時器1的中斷號  1 定時器0的中斷號 0 外部中斷1 2 外部中斷2  4 串口中斷
  57. {
  58.         TH1 = 0xFE;  //重新賦初值
  59.         TL1 = 0x0C;
  60.         timer1++;   
  61. }

復制代碼







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1