51微控制器pwm程式詳解

更新时间: 2025-05-14 12:12:43

最佳答案

51微控制器的pwm調速頻率主要透過一個定時器和一個IO口來實現PWM的輸出。在一個週期裡面,首先讓IO口輸出高電平,並定時一定的時間然後再將IO口輸出低電平,定時一定的時間。然後在while裡面迴圈輸出即可。需要改變佔空比的話就改變高電平的時間與低電平的時間比。我們來看看51微控制器的PWM調速程式。

  51微控制器PWM調速程式

  /*******************************************************************/ /* 程式名:PWM直流電機調速 */

  /* 晶振:11.00592 MHz CPU型號:AT89C51 */

  /* 直流電機的PWM波控制,可以直接的調速從0到20級的調速 */

  /*****************************************************************/ #include《reg51.h》

  #define TH0_TL0 (65536-1000)//設定中斷的間隔時長

  unsigned char count0 = 50;//低電平的佔空比 unsigned char count1 = 0;//高電平的佔空比

  bit Flag = 1;//電機正反轉標誌位,1正轉,0反轉

  sbit Key_add=P2 ^ 0; //電機減速 sbit Key_dec=P2 ^ 1; //電機加速 sbit Key_turn=P2 ^ 2; //電機換向

  sbit PWM1=P2^6;//PWM 通道 1,反轉脈衝 sbit PWM2=P2^7;//PWM 通道 2,正轉脈衝

  unsigned char Time_delay;

  /************函式宣告**************/ void Delay(unsigned char x); void Motor_speed_high(void); void Motor_speed_low(void); void Motor_turn(void); void Timer0_init(void);

  /****************延時處理**********************/ void Delay(unsigned char x)

  {

  Time_delay = x;

  while(Time_delay != 0);//等待中斷,可減少PWM輸出時間間隔

  }

  /*******按鍵處理加pwm佔空比,電機加速**********/ void Motor_speed_high(void)//

  {

  if(Key_add==0)

  {

  Delay(10); if(Key_add==0)

  {

  count0 += 5;

  if(count0 》= 100)

  {

  count0 = 100;

  }

  }

  while(!Key_add);//等待鍵鬆開

  }

  }

  /******按鍵處理減pwm佔空比,電機減速*****/ void Motor_speed_low(void)

  {

  }

  }

  /************電機正反向控制**************/ void Motor_turn(void)

  {

  if(Key_turn == 0)

  {

  Delay(10); if(Key_turn == 0)

  {

  Flag = ~Flag;

  if(Key_dec==0)

  {

  Delay(10); if(Key_dec==0)

  {

  count0 -= 5;

  if(count0 《= 0)

  {

  count0 = 0;

  }

  }

  while(!Key_dec );

  }

  while(!Key_turn);

  }

  }

  /***********定時器0初始化***********/ void Timer0_init(void)

  {

  TMOD=0x01; //定時器0工作於方式1 TH0=TH0_TL0/256; TL0=TH0_TL0%256; TR0=1; ET0=1; EA=1; }

  /*********主函式********************/ void main(void)

  {

  Timer0_init(); while(1)

  {

  Motor_turn(); Motor_speed_high(); Motor_speed_low();

  }

  }

  /**************定時0中斷處理******************/ void Timer0_int(void) interrupt 1 using 1

  {

  TR0 = 0;//設定定時器初值期間,關閉定時器 TL0 = TH0_TL0 % 256;

  TH0 = TH0_TL0 / 256 //定時器裝初值 TR0 = 1;

  if(Time_delay != 0)//延時函式用

  {

  Time_delay--;

  }

  if(Flag == 1)//電機正轉

  {

  PWM1 = 0;

  if(++count1 《 count0)

  {

  PWM2 = 1; } else PWM2 = 0;

  if(count1 》= 100) { count1=0; } }

  else //電機反轉

  {

  PWM2 = 0;

  if(++count1 《 count0) { PWM1 = 1; } else PWM1 = 0;

  if(count1 》= 100)

  {

  count1=0;

  }

  }

  }

您好,51微控制器PWM程式是一種透過控制微控制器輸出的脈衝寬度來實現模擬訊號輸出的技術。下面是一個PWM程式的詳細解釋:

1. 定義相關的暫存器變數:首先需要定義相關的暫存器變數,包括控制脈衝寬度的暫存器(如TCON、TH、TL等),以及控制輸出埠的暫存器(如P0、P1等)。

2. 初始化PWM引數:將相關的暫存器變數初始化,包括設定計數器的初值和過載值,設定輸出埠的初始狀態等。

3. 編寫PWM輸出函式:根據需要,編寫PWM輸出函式,實現根據輸入引數控制脈衝寬度和頻率的功能。

4. 呼叫PWM輸出函式:在主程式中呼叫PWM輸出函式,根據需要控制PWM輸出的脈衝寬度和頻率。

5. 迴圈執行:程式會一直迴圈執行,直到程式結束或者出現異常情況。

需要注意的是,不同的微控制器型號和廠商可能會有些許差異,具體的PWM程式實現可能會有所不同。因此,在編寫PWM程式時,需要根據具體的微控制器型號和廠商的文件進行參考。

51微控制器PWM程式是利用定時器和計數器產生週期性的脈衝來控制電機、LED等器件的電流大小的程式。透過調節PWM的佔空比,可以改變輸出電壓或電流的大小,從而實現對器件的控制。

具體實現方法是利用51微控制器的定時器產生一個固定頻率的時鐘訊號,透過修改計數器的值來控制佔空比,進而控制輸出電壓或電流大小。

為了提高PWM控制的穩定性和精度,通常需要進行相關的計算和校準,比如計算計數器初值、調整時鐘頻率等。

繼續學習常見問答

車險報價哪家便宜

1、太平洋車險的價效比很高,在車險價格優惠方面力度比較大,緊跟網際網路時代,尤其在網上優惠更大,私家車業險可多省15%,而且萬以下,資料齊全,可一天賠付。2、平安車險也是在網上直銷的,省去了中間商的差價。其中私家車商業保險最多也可省15%,...


2023醫保每月幾號返款

一般是月底打錢,具體幾號要以參保地當地實際法規為準。每個月的醫療保險費用通常都是月底劃扣的,因此相關的資金打入到個人賬戶一般是每個月二十號左右的時間。不同地區會有不同的標準,因此具體每月幾號打錢,要以參保地當地的實際情況為準。大家可以直接查...


rog筆記本設定cpu溫度和電壓

ROG筆記本可以透過ROGGamingCenter軟體進行CPU溫度和電壓的設定。具體的操作步驟如下:1.開啟ROGGamingCenter:在Windows作業系統中,可以透過桌面快捷方式、工作列圖示或開始選單中的ROGGamingCen...


imessage刪除後怎麼恢復

第一步:恢復不小心刪掉的iMessage資訊,把資料蛙蘋果恢復專家下載到電腦上,下載的同時將刪掉的iMessage的iPhone手機用資料線連線到電腦上,可以選擇原裝資料線進行操作,這樣可以保證資料傳輸的穩定。第二步:下載完成之後,執行資料...


奧迪s4與rs4有什麼區別

主要區別是:1.售價和定位都不一樣。S4的廠商指導價為46.88萬元,是一款效能型車型。RS4的廠商指導價為81.28萬元,屬於高效能車型。2.不同型號和尺寸S4是轎車,尺寸為4770*1847*1404MM,軸距2825MM,後備箱容積4...


怎麼測量鋰電池容量

鋰電池容量測試是以滿電電壓和設定的終止電壓為引數的,因為鋰電池的最低放電電壓是2.75V,所以,小於3V的電壓已經對鋰電池測試沒有意義;固定電流放電一般用多少C表示,鋰電池一般用0.5C放電進行測試。  1、把電池充滿電,單隻鋰電池充充滿電...


怎麼檢視12pro電池實際容量

可以透過以下步驟檢視iPhone12Pro電池的實際容量:1.開啟手機,前往“設定”-“電池與效能”,並點選“電量百分比”。2.在彈出的頁面中,觀察電池電量百分比及電池容量。需要注意的是,不同版本的iOS系統可能會有所不同,可能會對檢視結果...


1+9r如何查電池容量

要查詢1+9r手機的電池容量,您可以按照以下步驟進行操作:1.開啟手機設定:點選手機主螢幕上的“設定”圖示,通常是一個齒輪或者有一個齒輪圖案。2.進入電池設定:在設定選單中,找到與電池相關的選項。這通常被標記為“電池”、“電源”或者“電池和...


豪沃防凍液怎麼排氣

豪沃防凍液排氣步驟如下:1.確認發動機已經冷卻至室溫狀態,不能在加熱狀態下進行排氣。2.打開發動機艙蓋,找到散熱器上方的排氣閥。3.使用專用的排氣鉗或者扳手扳動排氣閥鬆開,閥門上會有一些空氣和防凍液排出來。4.等到冷卻水滴出並且不再有汽泡冒...


excel表格文字框如何在手機上修改

WPS手機版表格插入文字框:1、開啟WPS,開啟表格檔案,點選左上角的編輯,然後點選左下角的方框,找到插入,點選文字框就可以插入文字框了。如何修改文字框哪?1、在手機表格中,點左下角的按鈕,打開了表格的屬性面板後,再點選:插入。2、在插入展...