91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

曬曬我用at89s52做的spwm,源代碼

做逆變是不行的,我測了下同期160多ms ,頻率6.8HZ,不知道要怎么改,請高手指正。。。(很多人說用PIC,或STC的MCU,可我手上只有AT89s52,再者我也只是拿來玩玩,,,學學單片機的)

貼代碼:

#include "at89x52.h"

sbit led0=P0^0;
sbit led1=P0^1;//這里是spwm輸出第一組
sbit led2=P0^2;//這里是spwm第二組
bit flag_out;//標志位用來切換是第一組輸出還是第二組輸出
unsigned char t_num=0;
unsigned char spwm_tab[16]={0,20,38,56,71,83,92,98,100,98,92,83,71,56,38,20};//用excel算的,只取這幾個簡單些

void delayus()
                { 
      unsigned int tm;
       for(tm=2000;tm>0;tm--)
           {

             {;}
        }
    }

void int_time0(void)
                 {
      TMOD=0x02;//之前是TMOD=0x11,中斷后還要加初值,現在改為自動重裝。
                  EA=1;
                  ET0=1;
      TH0=230/256;//
      TL0=230%256;//理論上應該256-230=26us
     }
void timer0(void) interrupt 1
                    {
      static unsigned char c_time=0;
                       if(spwm_tab[t_num]>c_time)
                {
           if(flag_out)led1=1;
        else led2=1;
          }
      else led1=0,led2=0;
      c_time=c_time+1;
      if(c_time>99)
              {
        
         c_time=0;
         t_num=t_num+1;
         if(t_num>15)t_num=0,flag_out=~flag_out;
        }
       // TH0=65530/256;
        //TL0=65530%256;/*這個因為有重裝就不用了,省了兩條指令*/

     }
         
void main (void)
             {
    
     P0=0xff;
               int_time0();
      TR0=1;
     while(1)
            {led0=~led0;
          delayus();
      }

     }

今天改了代碼,順便拍了兩張

 

 

 

周期40多ms,22.7HZ,比之前的代碼要高了,但仍不能實用。。。繼續ing。。。

 

全部回復(9)
正序查看
倒序查看
小礦石
LV.10
2
2012-09-10 18:11
采樣點過于少了,逆變不出來的
0
回復
yuzhou.yu
LV.5
3
2012-09-10 21:11
非常好噢!我頂你!哪天我也用你的程序試試!哈哈,太好了!
0
回復
IGBT2010
LV.8
4
2012-09-11 08:10
樓主,反饋在哪里?
0
回復
廖遠方
LV.9
5
2012-09-11 10:33
 
0
回復
2012-09-11 10:55
@小礦石
采樣點過于少了,逆變不出來的
因為89s52不帶PWM模塊的,所以采樣點多了,會讓整個周期變長,也不知道是不是我的算法不對。。。
0
回復
2012-09-11 10:56
@yuzhou.yu
[圖片]非常好噢!我頂你!哪天我也用你的程序試試!哈哈,太好了![圖片]
幫忙改改呀。。。這個只是個試驗用的。。。
0
回復
支持你
LV.6
8
2012-09-11 10:58
@廖遠方
[圖片] 
飛機起飛了
0
回復
2012-09-11 11:01
@IGBT2010
樓主,反饋在哪里?

只是試驗不帶PWM的單片機能不能出可以用的spwm波,本身AT89S52不帶PWM,也沒有AD,反饋實現起來不容易,也許可以在外圍加個比較器來判斷。。。但那還遠遠沒到那一步,我現在還沒有把頻率做到50HZ,波形也不好看(我用個47K的電阻加三個0.22的安規電容)。。。純粹的試驗玩的

0
回復
小礦石
LV.10
10
2012-09-11 16:32
@廖遠方
[圖片] 
0
回復
主站蜘蛛池模板: 黔江区| 普定县| 嘉义县| 黄浦区| 河东区| 靖远县| 阳谷县| 台北县| 门头沟区| 福州市| 大埔县| 陕西省| 兰西县| 扶余县| 华容县| 庆元县| 无棣县| 大兴区| 芦山县| 阿拉善左旗| 灵山县| 商洛市| 大渡口区| 田林县| 会理县| 兰西县| 林甸县| 老河口市| 中超| 静海县| 孝义市| 维西| 延安市| 锦屏县| 蓬溪县| 高密市| 宁南县| 独山县| 师宗县| 师宗县| 灵台县|