找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 2383|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

求助:51單片機(jī)PWM調(diào)制實(shí)現(xiàn)模擬呼吸燈

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:578842 發(fā)表于 2020-8-7 20:33 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
陳潤(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專用寄存器的頭文件
  • #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í)在不明白怎么解釋,請(qǐng)大神們誰(shuí)知道給我們這些小白講講唄。謝謝各位。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:382826 發(fā)表于 2020-8-8 07:47 | 只看該作者
這就是個(gè)延時(shí)函數(shù)嘛,在for循環(huán)中不斷改變這個(gè)延時(shí)函數(shù)的時(shí)間從而改變燈的亮度。
回復(fù)

使用道具 舉報(bào)

板凳
ID:86926 發(fā)表于 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)就是由亮變暗了。
回復(fù)

使用道具 舉報(bào)

地板
ID:748788 發(fā)表于 2020-8-8 08:14 | 只看該作者
delayms(int xms)函數(shù)中的xms代表延遲時(shí)間,xms--表示減1,每一循環(huán)減1一次,減到0不為真了,延遲函數(shù)就結(jié)束了
回復(fù)

使用道具 舉報(bào)

5#
ID:578842 發(fā)表于 2020-8-8 23:57 | 只看該作者
謝謝大家的解釋。明白了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表