吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

兩種方法教你如何有效地利用51單片機(jī)產(chǎn)生PWM波

MCU開(kāi)發(fā)加油站 ? 來(lái)源:未知 ? 作者:佚名 ? 2017-12-24 09:58 ? 次閱讀

89C51芯片沒(méi)有自帶PWM發(fā)生器,如果要用51來(lái)產(chǎn)生PWM波就必須要用軟件編程的方法來(lái)模擬。方法大概可以分為軟件延時(shí)和定時(shí)器產(chǎn)生兩種方法。下面將逐一介紹。

1 軟件延時(shí)法

利用軟件延時(shí)函數(shù),控制電平持續(xù)的時(shí)間,達(dá)到模擬pwm的效果。

程序如下:

#include sbit pwm=P1^0; main() { while(1) { pwm=1; delayus(60);//置高電平后延時(shí)60us,占空比60% pwm=0; delayus(40); } } void delayus(uint x) { while(x--); }

proteus軟件仿真結(jié)果如下:

可見(jiàn),用這種延時(shí)函數(shù)的方法就能簡(jiǎn)單地模擬出pwm輸出。但是這種方法的缺點(diǎn)也相當(dāng)明顯。當(dāng)程序除了要輸出pwm波還要執(zhí)行其他操作比如鍵盤(pán)掃描、顯示等操作時(shí),需要占用CPU一定的機(jī)器周期,這樣就會(huì)影響pwm的準(zhǔn)確度。現(xiàn)在很少會(huì)用到這種方法,接下來(lái)要介紹的是比較常用的方法。

2 定時(shí)器產(chǎn)生pwm

這種方法利用了定時(shí)器溢出中斷,在中斷服務(wù)程序改變電平的高低,在程序較復(fù)雜、多操作時(shí)仍能輸出較準(zhǔn)確的pwm波形。

2.1 注意事項(xiàng)

2.2.1中斷服務(wù)程序的內(nèi)容。

一般來(lái)說(shuō)中斷服務(wù)程序只完成改變標(biāo)志位、轉(zhuǎn)換高低電平的功能,如果中斷服務(wù)程序中有太多的操作會(huì)影響pwm波的輸出,尤其是除法、取余、浮點(diǎn)數(shù)運(yùn)算會(huì)占用大量的機(jī)器周期,應(yīng)在中斷外完成運(yùn)算。2.2.2定時(shí)器裝入初值的問(wèn)題。

裝入初值不能太接近于定時(shí)器的溢出值。如我們使用定時(shí)器方式1,最多能計(jì)65536個(gè)數(shù),假設(shè)我們轉(zhuǎn)入的初值為65534,那么定時(shí)器計(jì)兩個(gè)數(shù)就會(huì)進(jìn)入中斷,這樣會(huì)使程序紊亂而其他功能無(wú)法正常地執(zhí)行,所以一般要留50-100個(gè)數(shù)的裕量。

2.2 定時(shí)器工作方式

在定時(shí)器工作方式的選擇上,可以選擇定時(shí)器的工作方式0、1、2都可以,本文采用的是工作方式1,即16位定時(shí)器,這樣可以獲得較寬的調(diào)頻范圍。

2.3 定時(shí)器初值的計(jì)算

設(shè)占空比為α,頻率為f

產(chǎn)生高電平時(shí)裝入定時(shí)器高8位的值應(yīng)為

產(chǎn)生高電平時(shí)裝入定時(shí)器低8位的值應(yīng)為

顯然,產(chǎn)生低電平時(shí)的公式只要把α換成(1-α)就行了。

然而在51單片機(jī)中,浮點(diǎn)數(shù)運(yùn)算需要消耗cpu很長(zhǎng)的時(shí)間,為了提高程序效率,通常用100倍的占空比來(lái)計(jì)算。同時(shí),要注意數(shù)據(jù)類(lèi)型,避免超出范圍,影響計(jì)算結(jié)果。關(guān)于C51的乘除法問(wèn)題,可以看以下這篇文章:http://blog.163.com/ssou_1985/blog/static/295320362010311102232210/

修改后的公式如下:a為100倍占空比,fr為0.01倍頻率TH0 = (65535-a*100/fr)/256; //高位初值TL0 = (65535-a*100/fr)%256;同樣,低電平的公式只需把a(bǔ)換成(100-a)即可。

2.4 例程

本例程采用定時(shí)器T0在工作方式1下產(chǎn)生一路PWM,用獨(dú)立鍵盤(pán)控制頻率、占空比的加減,頻率可調(diào)范圍100Hz-10kHz,占空比0-100%(均為理論值,實(shí)際值略低)部分代碼如下:

注:T0_H , T0_L , T1_H , T1_L 均用于暫時(shí)存儲(chǔ)初值,進(jìn)入中斷服務(wù)程序后直接給寄存器TH0、TL0賦值,避免了在中斷中計(jì)算。

注:flag為pwm輸出標(biāo)志,flag=1輸出高電平,flag=0輸出低電平

2.5 軟件仿真結(jié)果

2.5.1 頻率為100Hz

a.占空比約15%

b.占空比95%

2.5.2 頻率為10KHz

a.占空比15%

b.占空比90%

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    114

    文章

    5198

    瀏覽量

    214874
  • 51單片機(jī)
    +關(guān)注

    關(guān)注

    274

    文章

    5705

    瀏覽量

    124294

原文標(biāo)題:51單片機(jī)產(chǎn)生PWM方法

文章出處:【微信號(hào):mcugeek,微信公眾號(hào):MCU開(kāi)發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    51單片機(jī)pwm和spwm

    51單片機(jī)pwm
    發(fā)表于 01-08 15:54 ?2次下載

    51單片機(jī)核心板原理圖

    51單片機(jī)核心板原理圖
    發(fā)表于 12-16 11:30 ?3次下載

    51單片機(jī)中為什么很少出現(xiàn)printf的身影

    51單片機(jī)中為什么很少出現(xiàn) printf 的身影?是用不了嗎? 不是的,51單片機(jī)可以用 printf,只是不建議使用。 平時(shí)我們?cè)诓僮飨到y(tǒng)上寫(xiě)C語(yǔ)言代碼,使用 printf 可以把數(shù)
    的頭像 發(fā)表于 12-03 10:46 ?523次閱讀
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>中為什么很少出現(xiàn)printf的身影

    基于51單片機(jī)的手動(dòng)數(shù)字時(shí)鐘

    具體實(shí)現(xiàn)功能由51單片機(jī)+8位共陰數(shù)碼管+獨(dú)立按鍵構(gòu)成。具體功能:(1)利用數(shù)碼管顯示時(shí)分秒,顯示格式為“時(shí)-分-秒”;(2)利用6個(gè)按鍵控制時(shí)、分、秒,設(shè)定好后自動(dòng)開(kāi)始時(shí)鐘顯示;(3
    的頭像 發(fā)表于 10-22 14:12 ?297次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的手動(dòng)數(shù)字時(shí)鐘

    基于51單片機(jī)的遙控開(kāi)關(guān)仿真(雙機(jī)通信)

    單片機(jī)最小系統(tǒng)、繼電器及LED燈構(gòu)成;(4)由于仿真無(wú)法模擬無(wú)線模塊通信,故利用單片機(jī)RXD、TXD端口模擬,通過(guò)遙控器的開(kāi)關(guān)實(shí)現(xiàn)對(duì)主機(jī)LED燈的控制,實(shí)現(xiàn)LED燈的點(diǎn)亮及熄滅。仿真演示視頻:基于
    的頭像 發(fā)表于 10-22 14:12 ?392次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的遙控開(kāi)關(guān)仿真(雙機(jī)通信)

    如何實(shí)現(xiàn)51單片機(jī)與PC機(jī)的串行通信

    的詳細(xì)步驟和方法。 硬件連接 首先,我們需要將51單片機(jī)與PC機(jī)的串行接口連接起來(lái)。通常,我們使用RS-232接口進(jìn)行連接。RS-232接口是一種常用的串行通信接口,它使用9個(gè)引腳進(jìn)行
    的頭像 發(fā)表于 10-21 11:35 ?1288次閱讀

    51單片機(jī)驅(qū)動(dòng)

    電子發(fā)燒友網(wǎng)站提供《51單片機(jī)驅(qū)動(dòng).exe》資料免費(fèi)下載
    發(fā)表于 09-20 11:46 ?5次下載

    51單片機(jī)晶振的問(wèn)題總結(jié)

    電子發(fā)燒友網(wǎng)站提供《51單片機(jī)晶振的問(wèn)題總結(jié).doc》資料免費(fèi)下載
    發(fā)表于 09-07 09:32 ?0次下載

    stm32和51單片機(jī)的區(qū)別是什么

    。 性能差異: STM32具有更高的主頻和更大的內(nèi)存空間,可以處理更復(fù)雜的任務(wù)和算法。 51單片機(jī)的主頻和內(nèi)存空間相對(duì)較小,適用于簡(jiǎn)單的控制和數(shù)據(jù)處理任務(wù)。 外設(shè)差異: STM32具有更豐富的外設(shè),如多種類(lèi)型的通信接口(SPI、I2C、UART等)、ADC、DAC、
    的頭像 發(fā)表于 09-02 09:33 ?914次閱讀

    樹(shù)莓派和51單片機(jī)哪個(gè)有優(yōu)勢(shì)

    樹(shù)莓派和51單片機(jī)兩種不同的硬件平臺(tái),它們各自有其特點(diǎn)和優(yōu)勢(shì)。在決定使用哪一個(gè)之前,我們需要了解它們的基本特性、應(yīng)用場(chǎng)景和開(kāi)發(fā)難度。 1. 簡(jiǎn)介 1.1 樹(shù)莓派(Raspberry Pi) 樹(shù)莓派
    的頭像 發(fā)表于 09-02 09:04 ?969次閱讀

    51單片機(jī)復(fù)位電路電容怎么放電

    51單片機(jī)的復(fù)位電路中,電容的放電過(guò)程是實(shí)現(xiàn)復(fù)位功能的關(guān)鍵環(huán)節(jié)之一。以下是關(guān)于51單片機(jī)復(fù)位電路中電容放電的介紹: 放電過(guò)程 電容充電狀態(tài) :在
    的頭像 發(fā)表于 08-06 10:52 ?785次閱讀

    51、STM32單片機(jī)的編程方式一樣嗎?

    STM32和51單片機(jī)兩種常見(jiàn)的單片機(jī)系列,它們?cè)谟布軜?gòu)、性能特點(diǎn)和編程方式等方面有所不同。但是從c語(yǔ)言編程的角度來(lái)說(shuō),我認(rèn)為是大同小異的。我們來(lái)對(duì)比一下它們的編程特點(diǎn):
    的頭像 發(fā)表于 05-18 08:04 ?2485次閱讀
    <b class='flag-5'>51</b>、STM32<b class='flag-5'>單片機(jī)</b>的編程方式一樣嗎?

    ?51單片機(jī)串口通信詳細(xì)介紹-小白必看

    51單片機(jī)串口通信是單片機(jī)與外部設(shè)備通信的重要方式,它基于串行通信的原理,以字節(jié)為單位進(jìn)行數(shù)據(jù)傳輸。在51單片機(jī)中,串口通信主要依賴(lài)于
    的頭像 發(fā)表于 04-17 09:33 ?2150次閱讀
    ?<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>串口通信詳細(xì)介紹-小白必看

    【原創(chuàng)】51單片機(jī)PWM控制直流電機(jī)轉(zhuǎn)速,仿真、原理圖和代碼

    單片機(jī)產(chǎn)生脈寬可調(diào)的脈沖信號(hào)并輸入到L298驅(qū)動(dòng)芯片來(lái)控制直流電機(jī)工作的。 該直流電機(jī)PWM控制系統(tǒng)由以下電路模塊組成: 設(shè)計(jì)輸入部分:這一模塊主要是利用帶中斷的獨(dú)立式鍵盤(pán)來(lái)實(shí)現(xiàn)對(duì)直流
    發(fā)表于 03-13 00:33

    51單片機(jī)流水燈制作

    ?流水燈是學(xué)習(xí)51單片機(jī)的一個(gè)基本項(xiàng)目,是我們對(duì)單片機(jī)IO口輸出認(rèn)識(shí)的基本項(xiàng)目。當(dāng)然學(xué)會(huì)了花樣流水燈也很好玩。 下面就分享一種51單片機(jī)流水
    的頭像 發(fā)表于 02-26 10:06 ?1705次閱讀
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>流水燈制作
    大发888娱乐大发体育| 百家乐有什么打法| 星际娱乐城| 皇马百家乐官网的玩法技巧和规则 | 玩百家乐官网最好方法| 澳门百家乐怎么下载| 澳门百家乐官网怎样下注| 百樂坊百家乐的玩法技巧和规则| 时时博百家乐官网的玩法技巧和规则| 长子县| 多台百家乐的玩法技巧和规则| 巨星百家乐官网的玩法技巧和规则 | 百家乐官网网上真钱赌场娱乐网规则| 名人线上娱乐城| KK百家乐娱乐城 | 百家乐官网赌博机原理| 大发888真钱游戏官方网站| 百家乐电话投注多少| 网上玩百家乐官网会出签吗| 赢真钱的棋牌游戏| 永利百家乐娱乐网| 百家乐官网游戏单机牌| 网络百家乐赌场| 百家乐园云顶娱乐主页| 南京百家乐官网的玩法技巧和规则| 贵族娱乐城| 哪家百家乐优惠最好且信誉不错 | 百家乐2号技术| 百家乐官网正式版| 沙龙百家乐官网怎申请| 大发888游戏官方| 百家乐色子玩法| 百家乐官网赌博技巧网| 博彩百家乐最新优惠| 百家乐官网赌博筹| 网上百家乐官网有人赢过吗| 波音娱乐城送彩金| 百家乐看大路| 百家乐网址是多少| 百家乐官网群bet20| 百家乐官网龙虎台布多少钱|