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

QQ登錄

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

搜索
查看: 3227|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)呼吸燈程序與波形演示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
網(wǎng)上找的呼吸燈程序,自己仿照寫(xiě)的
利用定時(shí)器產(chǎn)生pwm,實(shí)現(xiàn)呼吸燈
參考呼吸燈程序,同樣可以實(shí)現(xiàn)控制直流電機(jī)的速度,可以到這個(gè)網(wǎng)頁(yè)去看看https://www.zhihu.com/tardis/sogou/art/83373994

pwm波形:

單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. bit flag;                        //根據(jù)flag判斷變亮或者變暗
  5. uchar count;        //進(jìn)入中斷次數(shù)
  6. uchar pwm;                //根據(jù)這個(gè)數(shù)值來(lái)進(jìn)行點(diǎn)亮或熄滅
  7. uint updata;        //根據(jù)這個(gè)值來(lái)更新占空比,周期120ms
  8. sbit LED=P2^0;        //LED引腳
  9. void timer0();
  10. /*********定時(shí)器初始化函數(shù)***********/
  11. void timer0_init()               
  12. {
  13.         TMOD=0x02;        //定時(shí)器0,方式2
  14.         TH0=0xa3;                //假設(shè)晶振為11.0592M,定時(shí)100us
  15.         TL0=0xa3;               
  16.         ET0=1;                        //開(kāi)定時(shí)器0中斷
  17.         EA=1;                                //開(kāi)總中斷
  18.         TR0=1;                        //開(kāi)定時(shí)器
  19. }

  20. void main()
  21. {
  22.         flag=0;                        //初始為占空比上升
  23.         count=0;
  24.         pwm=10;                        //脈沖周期為2ms,初始占空比50%
  25.         updata=0;
  26.         LED=1;
  27.         timer0_init();
  28.         while(1);
  29. }

  30. void timer0() interrupt 1
  31. {
  32.         count++;
  33.         updata++;
  34.         if(count==pwm)
  35.                 LED=0;
  36.         if(count==20)
  37.         {
  38.                 LED=1;
  39.                 count=0;
  40.         }
  41.         if((updata==1200)&&(flag==0))                //120ms到,根據(jù)flag更新占空比
  42.         {
  43.                 updata=0;
  44.                 pwm++;                                                                                                //每次加1,占空比增加5%
  45.                 if(pwm==19)
  46.                         flag=1;
  47.         }
  48.         if((updata==1200)&&(flag==1))
  49.         {
  50.                 updata=0;
  51.                 pwm--;
  52.                 if(pwm==1)
  53.                         flag=0;
  54.         }
  55. }
復(fù)制代碼

3-PWM的基本參數(shù)
在上圖中,頻率F的值為1/(T1+T2),占空比D的值為T(mén)1/(T1+T2)。通過(guò)改變單位時(shí)間內(nèi)脈沖的個(gè)數(shù)可以實(shí)現(xiàn)調(diào)頻;通過(guò)改變占空比可以實(shí)現(xiàn)調(diào)壓。占空比越大,所得到的平均電壓也就越大,幅值也就越大;占空比越小,所得到的平均電壓也就越小,幅值也就越小。動(dòng)圖演示如圖4所示。

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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