利用AT89C52定時器輸出可調PWM

2021-10-07 20:19:32 字數 1785 閱讀 9107

知識儲備:

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

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

pwm:

1.定時器:

51微控制器中內建定時器有定時器0和定時器1,通過採用定時器中斷的方式輸出pwm波形,可不必占用cpu的記憶體。

定時器配置:

初始化函式:

//若使用函式方式初始化,記得在主函式中呼叫一遍

void time0_init(void)

如若是定時器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=threshold1)//將上述步驟通過函式實現

while(variable==100)

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

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

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

中斷號:定時器0:1

​ 定時器1:3

void time0(void) interrupt 1 //不用呼叫

while(variable==100) }

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

STC89C52微控制器定時器2整理

定時器2 16位自動重裝載和捕獲能力的定時計數器 tf2 exf2 rclk tclk exen2 tr2 c t2 cp rl2 溢位標誌位 定時器外部標誌 接收時鐘標誌 傳送時鐘標誌 外部使能 啟動 停止控制位 選擇位捕獲重灌標誌 定時 計數器2溢位標誌,t2溢位時置位,並申請中斷。只能用軟體清...

基於AT89C52和MQ 2的煙霧報警器設計

摘要 介紹了一種基於at89c52 微控制器和mq 2 型半導體電阻式煙霧感測器的煙霧報警器設計。該煙霧報警器具有聲光報警 濃度顯示以及與上位機串列埠通訊等功能。其結構簡單,低廉,效能穩定,具有較好的實用價值。隨著社會高速發展,火災對於人類的生產生活造成了巨大的危害。煙霧報警器是用來監測環境中煙霧的...

89c51微控制器的簡單應用2 中斷 定時器

一 蜂鳴器的應用 lab mcu51開發板上控制蜂鳴器的埠是p3 7,低電平有效,可利用它進行音階發聲 以下為簡單的 include include define uint unsigned int define uchar unsigned char unsigned int i,a,k unsi...