如何基于51單片機(jī)利用定時(shí)器的實(shí)現(xiàn)PWM的方法詳細(xì)概述
出處:電子說(shuō) 發(fā)布于:2018-06-13 14:53:13
	  51單片機(jī)是可以輸出PWM的,比較的麻煩。此時(shí)需要用到內(nèi)部定時(shí)器來(lái)實(shí)現(xiàn),可用兩個(gè)定時(shí)器實(shí)現(xiàn),也可以用一個(gè)定時(shí)器實(shí)現(xiàn)。
  用兩個(gè)定時(shí)器的方法是用定時(shí)器T0來(lái)控制頻率,定時(shí)器T1來(lái)控制占空比。大致的的編程思路是這樣的:T0定時(shí)器中斷讓一個(gè)I0口輸出高電平,在這個(gè)定時(shí)器T0的中斷當(dāng)中起動(dòng)定時(shí)器T1,而這個(gè)T1是讓IO口輸出低電平,這樣改變定時(shí)器T0的初值就可以改變頻率,改變定時(shí)器T1的初值就可以改變占空比。
  下面重點(diǎn)介紹用一個(gè)定時(shí)器的實(shí)現(xiàn)PWM的方法。以周期為1ms(1kHZ)為例,要產(chǎn)生其它頻率的PWM波,程序中只需作簡(jiǎn)單修改即可。用一個(gè)定時(shí)器時(shí)(如定時(shí)器T0),首先要確定PWM的周期T和占空比D,確定了這些以后,就可以用定時(shí)器產(chǎn)生一個(gè)時(shí)間基準(zhǔn)t,比如定時(shí)器溢出n次的時(shí)間是PWM的高電平的時(shí)間,則D*T=n*t,類(lèi)似的可以求出PWM低電平時(shí)間需要多少個(gè)時(shí)間基準(zhǔn)n。
  因?yàn)檫@里我們是產(chǎn)生周期為1ms(1kHZ)的PWM,所以可設(shè)置中斷的時(shí)間基準(zhǔn)為0.01ms,,然后中斷100次即為1ms。在中斷子程序內(nèi),可設(shè)置一個(gè)變量如time,在中斷子程序內(nèi),有三條重要的語(yǔ)句:
  1、當(dāng)time>=100時(shí),time清零(此語(yǔ)句保證頻率為1kHZ);
  2、當(dāng)time>n時(shí)(n應(yīng)該在0-100之間變化開(kāi)),讓單片相應(yīng)的I/O口輸出低電平;
  3、當(dāng)time<=n時(shí),讓單片相應(yīng)的I/O口輸出高電平,此時(shí)占空比就為%n。
  下面程序產(chǎn)生30%占空比的pwm:
  #include<reg51.h>
  #define uint unsigned int
  #define uchar unsigned char
  sbit PWM=P2^0;//  P2.0輸出pwm
  uchar time;  // 定義占空比的變量
  void main()
  {
  TMOD=0x01;//定時(shí)器0工作方式1
  TH0=0xff;//(65536-10)/256;//賦初值定時(shí)
  TL0=0xf7;//(65536-10)%256;//0.01ms
  EA=1;//開(kāi)總中斷
  ET0=1;//開(kāi)定時(shí)器0中斷
  TR0=1;//啟動(dòng)定時(shí)器0
  while(1)
  {
  }
  }
  void tim0() interrupt 1
  {
  TR0=0;//賦初值時(shí),關(guān)閉定時(shí)器
  TH0=0xff;//(65536-10)/256;//賦初值定時(shí)
  TL0=0xf7;//(65536-10)%256;//0.01ms
  TR0=1;//打開(kāi)定時(shí)器
  time++;
  if(time>=100)  <span style="font-family:'KaiTi_GB2312';">//1khz</span>
  time=0;
  if(time<=30)   <span style="font-family:'KaiTi_GB2312';">//占空比%30,可改</span>
  PWM=1;
  else PWM=0;
  }
  的到波形,在示波器上顯示如下圖所示
	
 
	  如何基于51單片機(jī)利用定時(shí)器的實(shí)現(xiàn)PWM的方法詳細(xì)概述
  如果想修改占空比,直接在程序里面修改下面這句即可。
  if(time<=30)//占空比%30,可改占空比
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://www.udpf.com.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是C51數(shù)據(jù)類(lèi)型擴(kuò)充定義2025/10/27 13:59:22
 - 51單片機(jī)電平特性是什么2025/9/26 13:11:43
 - 單片機(jī)檢測(cè)直流信號(hào):常用電路全解析2025/8/21 15:49:26
 - 探秘三極管在單片機(jī)中的關(guān)鍵作用2025/8/18 16:24:42
 - 51單片機(jī)和52單片機(jī)有什么區(qū)別2025/8/8 16:52:42
 
- 編碼器的工作原理及作用1
 - 超強(qiáng)整理!PCB設(shè)計(jì)之電流與線(xiàn)寬的關(guān)系2
 - 三星(SAMSUNG)貼片電容規(guī)格對(duì)照表3
 - 電腦藍(lán)屏代碼大全4
 - 國(guó)標(biāo)委發(fā)布《電動(dòng)汽車(chē)安全要求第3部分:人員觸電防護(hù)》第1號(hào)修改單5
 - 通俗易懂談上拉電阻與下拉電阻6
 - 繼電器的工作原理以及驅(qū)動(dòng)電路7
 - 電容單位8
 - 跟我學(xué)51單片機(jī)(三):?jiǎn)纹瑱C(jī)串口通信實(shí)例9
 - 一種三極管開(kāi)關(guān)電路設(shè)計(jì)10
 
- BOOST芯片的VIN與VOUT非常接近時(shí),會(huì)出現(xiàn)什么情況?
 - 如何在無(wú)線(xiàn)電連接設(shè)備中嵌入安全性
 - ADI芯品兼具高精度與低延遲的SAR ADC
 - Allegro發(fā)布革命性10MHz TMR電流傳感器ACS3
 - 串口、UART、RS232、RS485、USB、COM 口全面解析
 - 變壓器基礎(chǔ)知識(shí):原理、結(jié)構(gòu)與應(yīng)用
 - 一款高集成度雙通道、寬頻、自感式數(shù)字電感電容傳感芯片 - MLC12G
 - PCB生產(chǎn)制造中銀層缺陷應(yīng)對(duì)措施
 - 電路板電鍍中4種特殊的電鍍方法
 - 高通SA8155P芯片的接口協(xié)議
 









