標(biāo)題: 基于51單片機(jī)和Proteus的PWM輸出程序 [打印本頁]

作者: 染落莫a    時(shí)間: 2020-5-14 17:17
標(biāo)題: 基于51單片機(jī)和Proteus的PWM輸出程序
共有10個(gè)級(jí)別的脈沖寬度波形,可以通過觀察LED的亮暗時(shí)間的變化,或者通過虛擬示波器觀察P0.0腳輸出脈沖寬度不斷變化的十個(gè)級(jí)別。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>

  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. uchar PWM_T=0;         //占空比控制變量
  6. sbit PWM_OUT=P0^0;

  7. void main()
  8. {
  9.         bit flag=1;                //控制LED燈漸亮漸熄方式
  10.         uint n;
  11.         TMOD=0x02;                  //定時(shí)器T0,8位方式2定時(shí)模式
  12.         TH0=241;                  //15μs溢出一次(11.0592M)
  13.         TL0=241;
  14.         TR0=1;
  15.         ET0=1;
  16.         EA=1;
  17.         PWM_OUT=1;
  18.         while(1)
  19.         {
  20.                 for (n=0;n<30000;n++);                 //延時(shí),將響應(yīng)定時(shí)器T0中斷
  21.                 if (flag==1)
  22.                 PWM_T++;
  23.                 else
  24.                 PWM_T--;
  25.                 if (PWM_T>=10)
  26.                 flag=0;
  27.                 if (PWM_T==0)
  28.                 flag=1;
  29.         }
  30. }

  31. timer0()interrupt 1 using 2
  32. {
  33.         static uchar t;                  //用t保存當(dāng)前時(shí)間在1s的比例位置
  34.         t++;                                  //每15μs增1
  35.         if (t==10)                          //1.5ms的周期
  36.         {
  37.                 t=0;
  38.                 PWM_OUT=0;
  39.         }
  40.         if (PWM_T==t)
  41.         PWM_OUT=1;
  42. }
復(fù)制代碼

所有資料51hei提供下載:
51PWM.rar (45.65 KB, 下載次數(shù): 67)








歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1