<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于51單片機雙極型PWM 的軟件實(shí)現

基于51單片機雙極型PWM 的軟件實(shí)現

作者: 時(shí)間:2012-11-27 來(lái)源:網(wǎng)絡(luò ) 收藏

Keil C是基于標準C內核的第三方語(yǔ)言,利用它可以很方便高效地實(shí)現對單片機的高級編程。C51是目前使用最普遍的8位單片機,價(jià)格低廉。它與軟件編程結合,可以比較方便地滿(mǎn)足眾多功能要求,甚至取代一些復雜的硬件電路,簡(jiǎn)化硬件設計,并提高系統的可靠性和降低成本?;谶@個(gè)思想,本文提出了一種在C上軟件實(shí)現相對復雜的 的新方法。

1 PWM 控制原理
PWM(Pulse Width Modulation)即脈沖寬度調制,它通過(guò)控制信號去調制方波脈沖的寬度,從而獲得控制的實(shí)現。
產(chǎn)生PWM 信號可以由硬件方法和軟件方法實(shí)現。傳統的硬件模擬方法是把調制信號和載波(一般是三角波)同時(shí)接入運算放大器的兩個(gè)輸入端作比較而得到。而軟件的實(shí)現,特別是基于單片機的軟件實(shí)現方法,主要是利用其內部提供的定時(shí)器,通過(guò)改變定時(shí)器的定時(shí)初值獲得不同的脈沖持續時(shí)間,如果把系統的控制信號和定時(shí)器的定時(shí)初值線(xiàn)性對應起來(lái),就可獲得控制信號對脈寬調制的PWM 信號。所以這樣線(xiàn)性的對應過(guò)程就成為這個(gè)實(shí)現過(guò)程的關(guān)鍵??刂菩盘柕姆N類(lèi)不同,采用不同的計算方法,又可以獲得不同的PWM,見(jiàn)文獻[3]。

2 在A(yíng)T89C51中實(shí)現的方法
51系列單片機提供了非常豐富的資源,它除了擁有4個(gè)通用并口和1個(gè)串口外,還有外部中斷和內部定時(shí)器等。而且,不同的型號還集成有不同的功能,比如AT89C51就在片內集成了4 K 的ROM,這樣存儲空間可以滿(mǎn)足一般的編程需要,而不必去構建程序存儲器,既提高了工作效率和系統的穩定性,又降低了生產(chǎn)成本。
基于A(yíng)T89C的PWM 軟件實(shí)現的重要硬件支撐是該單片機內部的定時(shí)器。在A(yíng)T89C51內實(shí)現PWM 的基本過(guò)程:首先選定脈沖的頻率T,然后根據控制信號的變化范圍,這里假設是(0~V),則可以求出t時(shí)刻通過(guò)控制信號V(t)的對應脈沖的正、負脈沖持續時(shí)間。這兩個(gè)時(shí)間長(cháng)度在單片機里是通過(guò)給定時(shí)器賦相應的初值而得,即定時(shí)器獲得這樣的定時(shí)初值后就在機器周期的同步下,從這個(gè)初值加1計數,定時(shí)器滿(mǎn)時(shí)則產(chǎn)生相應時(shí)間長(cháng)度的溢出中斷,再利用這個(gè)中斷所響應的服務(wù)程序去控制單片機某一引腳相應的正、負電平極性的持續時(shí)間。如果上述過(guò)程連續進(jìn)行,就可在這個(gè)引腳獲得寬度隨控制信號V(t)大小變化的PWM方波信號。
AT89C每個(gè)機器周期由6個(gè)狀態(tài)組成,每個(gè)狀態(tài)又有兩個(gè)時(shí)鐘周期,這樣一個(gè)機器周期就等于12個(gè)時(shí)鐘周期,即機器頻率為時(shí)鐘頻率的12分頻。通過(guò)對工作模式寄存器TMOD的賦值操作,把定時(shí)器設為內部定時(shí)狀態(tài)并選擇不同的定時(shí)方式。然后假設PWM 的周期T小于定時(shí)器一次溢出時(shí)間,即T2Nus,這里的N為定時(shí)器的位數。這樣就可以得到脈寬(脈沖持續時(shí)間)twx定時(shí)初值Twx的關(guān)系:
twx=(2N-Twx)×12/f us (1)
如果所用晶振為12 MHz,定時(shí)器為方式1,即為16位定時(shí)(這時(shí)定時(shí)有比較大的計數范圍,用途更為廣泛),這樣上式變?yōu)椋?BR>twx=(216 - Twx )us (2)
之后再根據功率器件的時(shí)間特性和工作的平均功率值,確定一個(gè)合適的PWM 信號周期T,很顯然這個(gè)周期T就是由高電平脈寬twh和低電平脈寬twl組成,即:
T=twh+ twl (3)
當調制PWM 脈寬的誤差信號V(f)(這個(gè)信號一般是由傳感器采集后經(jīng)過(guò)相關(guān)處理后得到的誤差信號)的變化范圍是(0~V)或(-V~V)時(shí),PWM脈寬與誤差信號為線(xiàn)性關(guān)系(實(shí)際可能不是線(xiàn)性的,但一般可以忽略或者可以通過(guò)前級進(jìn)行軟件補償),可以從單片機的1個(gè)引腳得到PWM 信號,具體的過(guò)程在相關(guān)文獻已有敘述,見(jiàn)文獻[4]。
然而,單片機一般是單極型的,它的邏輯0對應的實(shí)際電平是0 V,邏輯1對應的實(shí)際電平是+5 V。嚴格地說(shuō),在這種單片機上只能夠輸出單極型的PWM 信號。采用AT89C51結合軟件編程實(shí)現 控制的設計思想是這樣的:從AT89C51的一個(gè)引腳得到正的單極型PWM 信號輸出,對另一個(gè)引腳做相應的設計和定義,讓它承擔對應的“負”極型PWM 信號的輸出。即當調制PWM 脈寬的誤差信號為正時(shí),對應的PWM 就從AT89C51單片機的一個(gè)引腳輸出;當誤差信號為負時(shí),對應的PWM 就從另外一個(gè)引腳輸出,盡管這個(gè)輸出信號的模擬電平也是正的,但它對應的是負值的誤差信號所產(chǎn)生的PWM 輸出,又是驅動(dòng)負極型功率器件,和負極型PWM 功能一樣,于是可以把它等效為負極型PWM;當誤差信號為零時(shí),相應的兩個(gè)引腳都沒(méi)有輸出,然后再把這兩個(gè)引腳接入PWM 功率驅動(dòng)電路的輸入端。通過(guò)對誤差信號正負的判別,再利用AT89C51的兩個(gè)引腳就實(shí)現了雙極型的PWM。具體電路如圖1所示。

pwm相關(guān)文章:pwm是什么


51單片機相關(guān)文章:51單片機教程


pwm相關(guān)文章:pwm原理



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 51單片機 雙極型PWM C51系列

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>