请选择 进入手机版 | 继续访问电脑版
搜索
查看: 1003|回复: 3

avr单片机PWM控制直流电机转速和正反转 带proteus仿真和源程序

[复制链接]
发表于 2016-10-26 13:57:59 | 显示全部楼层 |阅读模式
用uln2003控制,下面是仿真原理图:
原理图.png

源程序:
  1. /*****************************************************
  2. This program was produced by the
  3. CodeWizardAVR V2.03.4 Standard
  4. Automatic Program Generator
  5. ?Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
  6. http://www.hpinfotech.com

  7. Project :
  8. Version :
  9. Date    : 7/26/2009
  10. Author  :
  11. Company :
  12. Comments:


  13. Chip type           : ATmega32
  14. Program type        : Application
  15. Clock frequency     : 12.000000 MHz
  16. Memory model        : Small
  17. External RAM size   : 0
  18. Data Stack size     : 512
  19. *****************************************************/

  20. #include <mega32.h>
  21. #include <delay.h>

  22. // Declare your global variables here

  23. void Motor_Speed (int x)
  24. {
  25. switch (x)
  26.    {
  27.     case 0:    PORTB = 0x00;
  28.                break;
  29.                
  30.     case 6:    PORTB = 0x08;
  31.                break;               
  32.    
  33.     case 12:   PORTB = 0x28;
  34.                break;
  35.                
  36.     case -6:   PORTB = 0x10;
  37.                break;                        
  38.                
  39.     case -12:  PORTB = 0x30;
  40.                break;                    
  41.    }
  42. }
  43. //////////////////////////////////////////////////////////////////
  44. void main(void)
  45. {
  46. // Declare your local variables here

  47. // Input/Output Ports initialization
  48. // Port A initialization
  49. // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
  50. // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
  51. PORTA=0x00;
  52. DDRA=0x00;

  53. // Port B initialization
  54. // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
  55. // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
  56. PORTB=0x00;
  57. DDRB=0xFF;

  58. // Port C initialization
  59. // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
  60. // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
  61. PORTC=0x00;
  62. DDRC=0xFF;

  63. // Port D initialization
  64. // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
  65. // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
  66. PORTD=0x00;
  67. DDRD=0xFF;

  68. // Timer/Counter 0 initialization
  69. // Clock source: System Clock
  70. // Clock value: Timer 0 Stopped
  71. // Mode: Normal top=FFh
  72. // OC0 output: Disconnected
  73. TCCR0=0x00;
  74. TCNT0=0x00;
  75. OCR0=0x00;

  76. // Timer/Counter 1 initialization
  77. // Clock source: System Clock
  78. // Clock value: Timer 1 Stopped
  79. // Mode: Normal top=FFFFh
  80. // OC1A output: Discon.
  81. // OC1B output: Discon.
  82. // Noise Canceler: Off
  83. // Input Capture on Falling Edge
  84. // Timer 1 Overflow Interrupt: Off
  85. // Input Capture Interrupt: Off
  86. // Compare A Match Interrupt: Off
  87. // Compare B Match Interrupt: Off
  88. TCCR1A=0x00;
  89. TCCR1B=0x00;
  90. TCNT1H=0x00;
  91. TCNT1L=0x00;
  92. ICR1H=0x00;
  93. ICR1L=0x00;
  94. OCR1AH=0x00;
  95. OCR1AL=0x00;
  96. OCR1BH=0x00;
  97. OCR1BL=0x00;

  98. // Timer/Counter 2 initialization
  99. // Clock source: System Clock
  100. // Clock value: Timer 2 Stopped
  101. // Mode: Normal top=FFh
  102. // OC2 output: Disconnected
  103. ASSR=0x00;
  104. TCCR2=0x00;
  105. TCNT2=0x00;
  106. OCR2=0x00;

  107. // External Interrupt(s) initialization
  108. // INT0: Off
  109. // INT1: Off
  110. // INT2: Off
  111. MCUCR=0x00;
  112. MCUCSR=0x00;

  113. // Timer(s)/Counter(s) Interrupt(s) initialization
  114. TIMSK=0x00;

  115. // Analog Comparator initialization
  116. // Analog Comparator: Off
  117. // Analog Comparator Input Capture by Timer/Counter 1: Off
  118. ACSR=0x80;
  119. SFIOR=0x00;

  120. while (1)
  121.       {
  122.             Motor_Speed(6);
  123.             delay_ms(3000);
  124.       
  125.             Motor_Speed(12);
  126.             delay_ms(3000);
  127.       
  128.             Motor_Speed(-6);
  129.             delay_ms(3000);
  130.       
  131.             Motor_Speed(-12);
  132.             delay_ms(3000);
  133.       
  134.             Motor_Speed(0);
  135.             delay_ms(3000);     
  136.       };
  137. }
复制代码


DC_Motor_Multi_Speed_Simulation.rar (61.12 KB, 下载次数: 8)
回复

使用道具 举报

发表于 2016-10-26 15:53:32 | 显示全部楼层
不错,以前有项目上用过。现在不这样用了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-26 16:04:45 | 显示全部楼层
anny 发表于 2016-10-26 15:53
不错,以前有项目上用过。现在不这样用了

现在怎么处理呢?
回复 支持 反对

使用道具 举报

发表于 2016-10-26 16:48:07 | 显示全部楼层

用驱动芯片
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /5 下一条

facebook google plus twitter linkedin youku weibo rss
©2019 Microchip Corporation

小黑屋|手机版|Archiver|Microchip技术社区

GMT+8, 2019-6-25 07:48 , Processed in 0.283868 second(s), 9 queries , MemCache On.

快速回复 返回顶部 返回列表