久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 基于STM32單片機的PWM直流調速系統仿真與程序設計 [打印本頁]

作者: __myth丶    時間: 2021-4-20 18:22
標題: 基于STM32單片機的PWM直流調速系統仿真與程序設計
本帖包含仿真與例程,是基于STM32單片機的PWM直流電機調速,通過定時器3的三通道即B0口輸出PWM波,繼而通過L298N驅動芯片驅動電機轉動,并通過LCD液晶顯示電機的狀態與擋位。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include "sys.h"
  2. #include "timer.h"
  3. #include "gpio.h"
  4. #include "key.h"
  5. #include "math.h"
  6. #include "lcd12864.h"

  7. int main(void)
  8. {
  9.      u16 arr=60000;
  10.            u16 psc=2;
  11.      u16 led_dt = 550;
  12.            unsigned char KEY=0;
  13.            int start=0;//電機啟停變量
  14.            int D=100;//電機轉速調節參數
  15.            int d=1;//電機擋位變量,擋位1-6

  16.                  RCC_Configuration();        //系統時鐘初始化
  17.      GPIO_Configuration();//端口初始化
  18.                  TIM3_Configuration(arr,psc);//定時器和pwm配置
  19.      Key_Init();
  20.            Init_12864();                                               //初始化12864液晶
  21.      LCD_DispACat(8,8);
  22.            LCD_P6x8Str(5,45,"PWM-->Motor");
  23.      GPIO_ResetBits(GPIOC,GPIO_Pin_5);
  24.                  GPIO_ResetBits(GPIOC,GPIO_Pin_6);

  25.                  while(1)
  26.                  {                                
  27.                                 TIM_SetCompare3(TIM3,led_dt*D); //用的是TIM3的通道2,輸出PWM         送到相應的寄存器中
  28.                           KEY=Key_Scan();
  29. //***********************電機啟停***************************//
  30.         if(KEY==67)//C啟動
  31.                                 {
  32.                                          delay_ms(1);//延時消抖
  33.                                          start=1;
  34.                        GPIO_SetBits(GPIOC,GPIO_Pin_5);
  35.            GPIO_ResetBits(GPIOC,GPIO_Pin_6);
  36.                                           LCDClearScreen(AllScreen);
  37.                                          LCD_P6x8Str(4,25,"    start    ");
  38.                                 }                 
  39.                           if(KEY==68)//D停止
  40.                                 {
  41.                                          start=0;
  42.                        GPIO_ResetBits(GPIOC,GPIO_Pin_5);
  43.            GPIO_ResetBits(GPIOC,GPIO_Pin_6);
  44.                                           LCDClearScreen(AllScreen);
  45.                                    LCD_P6x8Str(4,25,"    stop     ");
  46.                                 }               
  47. //*********************電機正反轉***************************//
  48.                          if((KEY==42)&&(start==1))//“*”的ascll碼是42,控制電機反轉
  49.                                 {
  50.                                         GPIO_SetBits(GPIOC,GPIO_Pin_6);
  51.           GPIO_ResetBits(GPIOC,GPIO_Pin_5);
  52.                                         LCDClearScreen(AllScreen);
  53.                                         LCD_P6x8Str(4,11,"Negative Direction");
  54.                                 }
  55.                           if((KEY==35)&&(start==1))//“#”的ascll碼是35,控制電機正轉
  56.                                 {
  57.                                         GPIO_SetBits(GPIOC,GPIO_Pin_5);
  58.           GPIO_ResetBits(GPIOC,GPIO_Pin_6);
  59.                                         LCDClearScreen(AllScreen);
  60.                                         LCD_P6x8Str(4,11,"Positive Direction");
  61.                                 }
  62. //**********************電機加減速**************************//
  63.                                 if((KEY==65)&&(start==1))//A加速
  64.         {
  65.                                         D=D-20;
  66.                                         d++;
  67.                                         if(D<10)
  68.                                         {
  69.                                                 D=0;
  70.                                                 d=6;
  71.                                         }
  72.                                         LCDClearScreen(AllScreen);
  73.                                         LCD_P6x8Str(4,27,"  Speed up   ");
  74.                                 }
  75.                                 if((KEY==66)&&(start==1))//B減速
  76.         {
  77.                                         D=D+20;
  78.                                         d--;
  79.                                         if(D>100)
  80.                                         {
  81.                                                 D=100;
  82.                                                 d=1;
  83.                                         }
  84.                                         LCDClearScreen(AllScreen);
  85.                                         LCD_P6x8Str(4,27,"  Slow down  ");
  86.                                 }
  87.                                 if(start!=0)
  88.                                 {
  89.                                         Key_Gear(d);
  90.                                 }
  91. //                                        if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_7)== Bit_RESET)
  92.                  }        
  93. }
復制代碼

屏幕可以顯示,但是電機不轉,求幫助:
Desktop.7z (283.04 KB, 下載次數: 42)



作者: 51hei團團    時間: 2021-4-20 19:23
不管按哪個鍵,電機都不轉,問題大概在哪里?
作者: __myth丶    時間: 2021-4-21 12:41
我是作者,俺也不知道咋回事,就是在加LCD之前都還是好好的,加了之后就感覺仿真帶不動了一樣,其實我感覺整個程序和仿真應該沒有問題,但是屏蔽關于LCD的代碼也不管用了。電機是轉的,要先點啟動鍵,才能執行其他操作,但是一點啟動鍵就會變很卡,建議打開示波器會看的明顯一些,再然后你點加速會在卡一會后觀察到PWM波形占空比發生變化。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产电影精品久久 | 中国一级特黄视频 | 夜久久 | 日韩精品在线播放 | 一级特黄视频 | 人人干人人爽 | 亚洲国产欧美日韩 | 99久久久国产精品免费消防器 | 久色网| 91xh98hx 在线 国产 | a中文在线视频 | 国产一区欧美 | 在线国产小视频 | 中文字幕 欧美 日韩 | 一级女毛片 | 欧美日韩a | 毛片区| 无码日韩精品一区二区免费 | 男女羞羞视频在线观看 | 亚洲国产aⅴ精品 | 亚洲国产成人一区二区 | 国产精品成人av | 欧美精品成人 | 日韩毛片在线视频 | 日韩成人免费av | 欧美韩一区二区 | 日韩av中文 | 欧美日韩在线播放 | 韩日视频在线观看 | 在线看片网站 | 91视频电影 | 国产免费a视频 | 最新黄色在线观看 | 在线视频 欧美日韩 | 91精品中文字幕一区二区三区 | 荷兰欧美一级毛片 | 亚洲欧美一区二区三区国产精品 | 国产91在线播放 | 国产精品久久久久久久久久软件 | 国产精品色综合 | 日本国产一区二区 |