日韩在线不卡免费视频一区,日韩欧美精品一区二区三区经典,日产精品码2码三码四码区,人妻无码一区二区三区免费,日本feerbbwdh少妇丰满

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

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

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

貼代碼:

#include "at89x52.h"

sbit led0=P0^0;
sbit led1=P0^1;//這里是spwm輸出第一組
sbit led2=P0^2;//這里是spwm第二組
bit flag_out;//標(biāo)志位用來(lái)切換是第一組輸出還是第二組輸出
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算的,只取這幾個(gè)簡(jiǎn)單些

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

             {;}
        }
    }

void int_time0(void)
                 {
      TMOD=0x02;//之前是TMOD=0x11,中斷后還要加初值,現(xiàn)在改為自動(dòng)重裝。
                  EA=1;
                  ET0=1;
      TH0=230/256;//
      TL0=230%256;//理論上應(yīng)該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;/*這個(gè)因?yàn)橛兄匮b就不用了,省了兩條指令*/

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

     }

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

 

 

 

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

 

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

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

0
回復(fù)
小礦石
LV.10
10
2012-09-11 16:32
@廖遠(yuǎn)方
[圖片] 
0
回復(fù)
發(fā)