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

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

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

STC89C52通過(guò)配置相關(guān)寄存器即可實(shí)現(xiàn)Timer的功能控制

h1654155971.7688 ? 來(lái)源:未知 ? 作者:李倩 ? 2018-04-20 08:38 ? 次閱讀

一、PWM

Pulse Width Modulation脈沖寬度調(diào)制,簡(jiǎn)稱PWM。

PWM(脈沖寬度調(diào)制)對(duì)模擬信號(hào)電平進(jìn)行數(shù)字編碼的方法,計(jì)算機(jī)只能輸出0或5V的數(shù)字電壓值而不能輸出模擬電壓,而我們?nèi)绻氆@得一個(gè)模擬電壓值,則需通過(guò)使用高分辨率計(jì)數(shù)器,改變方波的占空比來(lái)對(duì)一個(gè)模擬信號(hào)的電平進(jìn)行編碼。

仍輸出數(shù)字信號(hào),因?yàn)闈M幅值的直流供電只有5V(1)和0V(0)兩種。電壓是以一種連接(1)或斷開(0)的重復(fù)脈沖序列被夾到模擬負(fù)載上去的,連接即是直流供電輸出,斷開即是直流供電斷開。通過(guò)對(duì)連接和斷開時(shí)間的控制,只要帶寬足夠,可以輸出任意不大于最大電壓值的模擬電壓。

輸出電壓=(接通時(shí)間/脈沖時(shí)間)*最大電壓值

12

二、51單片機(jī)Timer

作者用的單片機(jī)是STC89C52,其內(nèi)部有3個(gè)16位Timer,分別為T/C0,T/C1,T/C2,通過(guò)配置相關(guān)寄存器即可實(shí)現(xiàn)Timer的功能控制。

控制PWM需要用到定時(shí)器來(lái)生成不同占空比的波形,采用定時(shí)器中斷的方式。

相關(guān)寄存器:

1.IE寄存器

2. TCON寄存器

3. TMOD寄存器

控制Timer0/1的工作方式

4. Timer0/1計(jì)數(shù)寄存器

TL0

TL1

TH0

TH1

當(dāng)定時(shí)開啟后,TL0(TL1)自動(dòng)跟隨機(jī)器周期加一。當(dāng)TL0(TL1)滿了后,自動(dòng)清零同時(shí)向TH0(TH1)進(jìn)一位,不需要手動(dòng)操作.

而當(dāng)TL0(TL1)和TH0(TH1)都滿了以后,此時(shí)如果定時(shí)中斷和總中斷都已經(jīng)打開,那么就會(huì)發(fā)生溢出中斷,同時(shí)這兩個(gè)寄存器清零

三、運(yùn)用PWM完成呼吸燈

1. 硬件電路

2. 軟件驅(qū)動(dòng)

unsigned char PWM_COUNT; //計(jì)數(shù)

unsigned int HUXI_COUNT; //占空比更新時(shí)間

unsigned char PWM_VLAUE; //占空比比對(duì)值

bit direc_flag; //占空比更新方向

void timer0_init()

{

TMOD=0x02; //模式設(shè)置,00010000,定時(shí)器0,工作于模式2(M1=1,M0=0)

TH0=0x47; //定時(shí)器溢出值設(shè)置,每隔200us發(fā)起一次中斷。

TL0=0X47;

TR0=1; //定時(shí)器0開始計(jì)時(shí)

ET0=1; //開定時(shí)器0中斷

EA=1; //開總中斷

PWM_COUNT =0;

}

void time0() interrupt 1

{

PWM_COUNT++;

HUXI_COUNT++;

if(PWM_COUNT == PWM_VLAUE) //判斷是否到了點(diǎn)亮LED的時(shí)候

LED = 1; //點(diǎn)亮LED

if(PWM_COUNT == 10) //當(dāng)前周期結(jié)束

{

LED = 0; //熄滅LED

PWM_COUNT = 0; //重新計(jì)時(shí)

}

if((HUXI_COUNT == 600) && (direc_flag == 0))

{ //占空比增加10%

HUXI_COUNT = 0;

PWM_VLAUE++;

if(PWM_VLAUE == 9) //占空比更改方向

direc_flag = 1;

}

if((HUXI_COUNT == 600) && (direc_flag == 1))

{ //占空比減少10%

HUXI_COUNT = 0;

PWM_VLAUE--;

if(PWM_VLAUE == 1) //占空比更改方向

direc_flag = 0;

}

}

void main()

{

HUXI_COUNT = 0;

PWM_COUNT = 0;

PWM_VLAUE = 5;

direc_flag = 0;

LED = 1; //默認(rèn)LED熄滅

timer0_init(); //定時(shí)器0初始化

while(1);

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6040

    文章

    44594

    瀏覽量

    636923
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    114

    文章

    5195

    瀏覽量

    214361

原文標(biāo)題:51單片機(jī)PWM的控制(呼吸燈)

文章出處:【微信號(hào):weixin21ic,微信公眾號(hào):21ic電子網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    關(guān)于STC89C52與AT89S52的問(wèn)題

    了 現(xiàn)在手上只有STC89C52芯片,不知道是否可以把原來(lái)設(shè)計(jì)使用的AT89S52STC89C52芯片來(lái)使用,(直接把原來(lái)的程序燒進(jìn)去)就是只換芯片 板子沒有任何改變 求助大家?guī)兔獯鹬x謝了!!
    發(fā)表于 12-23 22:27

    at89s52stc89c52

    請(qǐng)問(wèn)一下:這兩種芯片at89s52stc89c52可以相互替換嗎?而且用于at89s52的程序可用于stc89c52嗎?今天做了電路板,但由于條件不足程序不能燒進(jìn)at
    發(fā)表于 06-14 18:11

    采用STC89C52單片機(jī)實(shí)現(xiàn)智能電子密碼鎖的控制功能

    ,寫人數(shù)據(jù)有效保存時(shí)間可達(dá)100年。片內(nèi)DataFlash(E2PROM)地址如表1所示。 2.2 相關(guān)特殊功能寄存器 與使用STC89C52RC單片機(jī)內(nèi)部E2PROM有關(guān)的特
    發(fā)表于 07-19 02:04

    基于STC89C52單片機(jī)的點(diǎn)陣屏設(shè)計(jì)

    、STC89C52STC89C52STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash存儲(chǔ)STC89C5
    發(fā)表于 07-19 08:34

    STC89C52定時(shí)的介紹

    目錄定時(shí)的介紹STC89C52定時(shí)資源定時(shí)框圖定時(shí)工作模式中斷系統(tǒng)單片機(jī)引腳圖中斷服務(wù)流程中斷資源定時(shí)
    發(fā)表于 01-13 08:05

    STC89C52芯片的編程

    編程STC89C51或52芯片,如下圖放置STC89C52芯片,插好串口線和USB線,這里我們用了USB取電,先不要按下右下角的電源開關(guān)。
    發(fā)表于 08-05 14:08 ?371次下載

    基于STC89C52單片機(jī)控制的溫度控制系統(tǒng)課程設(shè)計(jì)

    基于STC89C52單片機(jī)控制的溫度控制系統(tǒng)
    發(fā)表于 01-06 17:00 ?152次下載

    單片機(jī)STC89C52程序

    單片機(jī)STC89C52源程序。
    發(fā)表于 01-11 18:16 ?112次下載

    STC89C52單片機(jī)介紹

    STC89C52單片機(jī)介紹。
    發(fā)表于 05-20 13:55 ?257次下載

    stc89c52引腳圖及引腳功能說(shuō)明

    本文為您帶來(lái)單片機(jī)STC89C52引腳圖,及STC89C52各個(gè)具體的引腳功能說(shuō)明,詳情請(qǐng)看如下全文內(nèi)容。
    發(fā)表于 09-21 11:35 ?38.7w次閱讀
    <b class='flag-5'>stc89c52</b>引腳圖及引腳<b class='flag-5'>功能</b>說(shuō)明

    基于STC89C52的紅外遙控智能太陽(yáng)能熱水控制系統(tǒng)

    基于STC89C52的紅外遙控智能太陽(yáng)能熱水控制系統(tǒng)基于STC89C52的紅外遙控智能太陽(yáng)能熱水控制
    發(fā)表于 03-02 11:05 ?10次下載
    基于<b class='flag-5'>STC89C52</b>的紅外遙控智能太陽(yáng)能熱水<b class='flag-5'>器</b><b class='flag-5'>控制</b>系統(tǒng)

    51單片機(jī)(STC89C52)的中斷和定時(shí)

    STC89C51/STC89C52 Timer內(nèi)部不帶振蕩源, 必須外接晶振采用11.0592MHz,或22.1184MHz,可方便得到串口通訊的標(biāo)準(zhǔn)時(shí)鐘.STC89
    發(fā)表于 11-18 11:21 ?63次下載
    51單片機(jī)(<b class='flag-5'>STC89C52</b>)的中斷和定時(shí)<b class='flag-5'>器</b>

    STC89C52單片機(jī)

    STC89C52單片機(jī),STC89C52STC89C52看到濤哥這篇文章了,紀(jì)念一下還在搞嵌入式的我們!硬件實(shí)物圖實(shí)物抽象化的圖為:這個(gè)STC89C52名字是什么意思呢?STC89C52
    發(fā)表于 11-23 17:06 ?111次下載
    <b class='flag-5'>STC89C52</b>單片機(jī)

    STC89C52

    STC89C52
    發(fā)表于 11-25 15:51 ?162次下載
    <b class='flag-5'>STC89C52</b>

    STC89C52芯片手冊(cè)

    STC89C52芯片手冊(cè)_.pdf
    發(fā)表于 02-10 14:30 ?575次下載