日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用AT89C52定时器输出可调PWM

發布時間:2023/12/29 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用AT89C52定时器输出可调PWM 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

利用AT89C52定時器輸出可調PWM

知識儲備:

PWM即是脈寬沖寬度調制,也稱脈寬調制,其意義就是通過微處理器的數字輸出來對模擬電路進行調制的一種有效技術。

由于單片機只能輸出高電平(1),或者低電平(0),因此對于類似正弦曲波等無法直接輸出。因此需要通過控制高低電平的有效時間,用等效面積的方式輸出曲波。

PWM:

  • 通過改變脈沖列的周期可以調頻;
  • 改變脈沖的寬度或占空比可以調壓

1.定時器:

51單片機中內置定時器有定時器0和定時器1,通過采用定時器中斷的方式輸出PWM波形,可不必占用CPU的內存。

定時器配置:

  • 初始化函數:
  • //若使用函數方式初始化,記得在主函數中調用一遍

    void Time0_Init(void) { TMOD=0x01; //采用方式1進行定時 TH0=(65536-1000)/256; //定時器計數值高位寫入 TL0=(65536-1000)%256; //低位寫入 ET0=1; //使能定時器0中斷允許位 TR0=1; //使能定時器0 EA=1; //使能中斷允許位 }

    如若是定時器1配置:

    只需將其中的:

    TH0換為TH1

    TL0換為TL1

    ET0換為ET1

    TR0換為TR1

    方式零計數:13位計數器 2^13=8192

    方式一計數:16位計數器2^16=65536

    寫入計數值:

    51單片機的晶振是12Mhz,因此機械周期是1us,即是說定時每1us計數一次,因此當我們要寫入計數值是可以這樣:

    定時器(例選用方式一計數)計數到上限值時溢出(65536),因此假設我們要每1ms進入中斷一次,則可以:

    1ms/1us=1000(次)------計數器要計數1000次

    寫入定時器的值就為(65536-1000),定時器將會從會從(65536-1000)這個數每1us自加1,累積1000次后剛好溢出65536,從而進入中斷。

    2.輸出PWM波形

    要想輸入PWM波形要確定兩個值:周期和閾值

    在固定周期內,低于閾值時間輸出高(低電平),高于閾值時間輸出低(高)電平,從而形成一定的矩形脈沖

    通過調節閾值的大小即可確定高(低)電平的占空比

    配置:

    unsigned char variable; //時間t變量

    unsigned char threshold; //設置的閾值

    sbit output=P2^1; //輸出PWM波形的管教

    if(variable<threshold) { output=0; } else if(variable>=threshold1) { output=1; } //將上述步驟通過函數實現

    while(variable==100) { variable=0; }

    3.定時器中斷服務函數的編寫

    通過2中所述如何實現輸出PWM的方式,將其封裝進定時器函數

    編寫定時器中斷服務函數前需要知道中斷號:

    中斷號: 定時器0:1

    ? 定時器1:3

    void Time0(void) interrupt 1 //不用調用 { TH0=(65536-1000)/256; //每次進入定時期中斷都會更新定時值 TL0=(65536-1000)%256; if(variable<threshold) { output=0; } else if(variable>=threshold1) { output=1; }

    while(variable==100) { variable=0; } }

    輸出PWM的大體函數編寫完畢,具體使用功能請各位自行編寫~~

    總結

    以上是生活随笔為你收集整理的利用AT89C52定时器输出可调PWM的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。