此貼包括程序加仿真,是基于32單片機的PWM直流電機調速系統,應用了KEIL5和PROTEUS8.9兩款軟件,所用驅動芯片為L298N.
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png (25.36 KB, 下載次數: 49)
下載附件
2021-4-19 19:24 上傳
單片機源程序如下:
- #include "sys.h"
- #include "timer.h"
- #include "gpio.h"
- #include "key.h"
- int main(void)
- {
- u16 arr=999;
- u16 psc=71;
- u16 led_dt = 5000;
- unsigned char KEY=0;
- int D=1;//電機擋位變量,初始擋位為一檔
- RCC_Configuration(); //系統時鐘初始化
- GPIO_Configuration();//端口初始化
- TIM3_Configuration(arr,psc);//定時器和pwm配置
- Key_Init();
- GPIO_SetBits(GPIOA,GPIO_Pin_8);
- GPIO_ResetBits(GPIOA,GPIO_Pin_9);
- while(1)
- {
- TIM_SetCompare2(TIM3,led_dt*D); //用的是TIM3的通道2,輸出PWM 送到相應的寄存器中
- KEY=Key_Scan();
- if(KEY==42)//“*”的ascll碼是42,控制電機反轉
- {
- GPIO_SetBits(GPIOA,GPIO_Pin_9);
- GPIO_ResetBits(GPIOA,GPIO_Pin_8);
- KEY=0;
- }
- if(KEY==35)//“#”的ascll碼是35,控制電機正轉
- {
- GPIO_SetBits(GPIOA,GPIO_Pin_8);
- GPIO_ResetBits(GPIOA,GPIO_Pin_9);
- KEY=0;
- }
- // if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_7)== Bit_RESET)
- }
- }
復制代碼
Proteus仿真不轉 求幫助:
基于stm32的PWM直流電機調速.7z
(246.71 KB, 下載次數: 17)
2021-4-19 19:27 上傳
點擊文件名下載附件
|