標(biāo)題:
求助:51單片機(jī)PWM調(diào)制實(shí)現(xiàn)模擬呼吸燈
[打印本頁(yè)]
作者:
wps10025
時(shí)間:
2020-8-7 20:33
標(biāo)題:
求助:51單片機(jī)PWM調(diào)制實(shí)現(xiàn)模擬呼吸燈
陳潤(rùn)源home
發(fā)表于 2019-3-22 16:28
51單片機(jī)PWM調(diào)制實(shí)現(xiàn)模擬呼吸燈(Proteus仿真+程序
http://www.torrancerestoration.com/bbs/dpj-153979-1.html
#include<reg52.h> //調(diào)用含有51專(zhuān)用寄存器的頭文件
#define uchar unsigned char //用uchar代替unsigned char
#define uint unsigned int //用uint代替unsigned int
void delayms(int xms) //脈寬調(diào)制函數(shù)
{
while(xms--);
}
void main() //主函數(shù)
{
uint T=400,N=0; //定義周期
while(1)
{
for(N=1;N<T;N++) //從暗逐漸變亮
{
P1=0x00;
delayms(N);
P1=0xff;
delayms(T-N);
}
P1=0xff;
for(N=T-1;N>0;N--) //從亮逐漸變暗
{
P1=0x00;
delayms(N);
P1=0xff;
delayms(T-N);
}
delayms(N+10); //增加看到的熄滅效果
}
}
其中
void delayms(int xms) //脈寬調(diào)制函數(shù)
{
while(xms--);
}
感覺(jué)用的很巧妙,但細(xì)細(xì)品味又實(shí)在不明白怎么解釋?zhuān)?qǐng)大神們誰(shuí)知道給我們這些小白講講唄。謝謝各位。
作者:
zhanghoub
時(shí)間:
2020-8-8 07:47
這就是個(gè)延時(shí)函數(shù)嘛,在for循環(huán)中不斷改變這個(gè)延時(shí)函數(shù)的時(shí)間從而改變燈的亮度。
作者:
藍(lán)魄
時(shí)間:
2020-8-8 08:12
就是總共400ms,由暗變亮,400ms就是周期時(shí)間,也就是暗和亮的總時(shí)間。亮Nms,滅T-Nms。由于N的慢慢自增,所以N的值是越來(lái)越大的,也就是亮的時(shí)間越來(lái)越長(zhǎng),滅的時(shí)間等于T(400ms)-N的時(shí)長(zhǎng),由于N在增大,所以,滅的時(shí)長(zhǎng)就變短了,這樣就能實(shí)現(xiàn)亮度的調(diào)整了。反過(guò)來(lái)就是由亮變暗了。
作者:
wwh2382
時(shí)間:
2020-8-8 08:14
delayms(int xms)函數(shù)中的xms代表延遲時(shí)間,xms--表示減1,每一循環(huán)減1一次,減到0不為真了,延遲函數(shù)就結(jié)束了
作者:
wps10025
時(shí)間:
2020-8-8 23:57
謝謝大家的解釋。明白了
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1