此例程設定了按鍵可以調整100-1000hz的不同頻率(100的倍數)的方波,另外還加入了串列埠通訊,可以通過串列埠傳送來的數字來設定相對應的頻率;
#include #include"uart.h"
sbit pwmout = p1^0;
sbit led = p2^2;
sbit key1 = p1^2;
sbit key2 = p3^3;
unsigned char highrh = 0; //高電平過載值的高位元組
unsigned char highrl = 0; //高電平過載值的低位元組
unsigned char lowrh = 0; //低電平過載值的高位元組
unsigned char lowrl = 0; //低電平過載值的低位元組
unsigned int fr;
unsigned int k=0,t,i;
unsigned int s= 100;
unsigned char a[3];
unsigned int b=0;
void configpwm(unsigned int fr, unsigned char dc);
void configuart(unsigned int baud);
void delay(unsigned int n)
void main()
keybuf1 = key1; //把當前掃瞄值暫存
if (keybuf1 != backup1) //當前值與前次值不相等說明此時按鍵有動作
backup1 = keybuf1; //更新備份為當前值,以備進行下次比較
}configpwm(s,50);
}keybuf2 = key2; //把當前掃瞄值暫存
if (keybuf2 != backup2) //當前值與前次值不相等說明此時按鍵有動作
backup2 = keybuf2; //更新備份為當前值,以備進行下次比較
}configpwm(s,50);}}}
void configuart(unsigned int baud)
void configpwm(unsigned int fr, unsigned char dc)
void interrupttimer0() interrupt 1
else //當前輸出為低電平時,裝載高電平值並輸出高電平
}/*void timer1init()
void timer1() interrupt 3
} }*/
void comint() interrupt 4 //中斷接收程式
else
*/b=0;s=(a[0]-0x30)*100+(a[1]-0x30)*10+(a[2]-0x30);
k=1;
//sbuf = 't';
} }
if(ti)
}
51微控制器 PWM
pwm,全稱pulse width modulation,譯為脈衝寬度調製。功能 改變脈衝寬度,實現不同效果。可用數碼訊號達到模擬訊號的效果 pwm在微控制器中應用廣泛,不同的應用場合意義不盡相同。先看一張圖 這是乙個週期為10ms,頻率為100hz的波形。每個週期內的高低電平脈衝寬度各不相同,這就...
普中51pwm 基於51微控制器的pwm和串列埠通訊
include include uart.h sbit pwmout p1 0 sbit led p2 2 sbit key1 p1 2 sbit key2 p3 3 unsigned char highrh 0 高電平過載值的高位元組 unsigned char highrl 0 高電平過載值的低...
51微控制器學習 PWM
pwm 脈衝寬度調調製,它是按一定規律改變脈衝序列的脈衝寬度,以調節輸出量和波形的一種調製方式。我們在控制系統中最常用的矩形pwm訊號,在控制時需要調節pwn波的占空比 指的是高電平持續時間在乙個週期時間內的百分比 當用微控制器io口輸出pwm訊號時,可採用下面三種方法 1 利用軟體延時。當高電平延...