欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 急求幫助 占空比可調pwm波數兩位碼管顯示占空比 [打印本頁]

作者: 天上的一只猩    時間: 2018-12-25 17:45
標題: 急求幫助 占空比可調pwm波數兩位碼管顯示占空比
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char                                                         
uchar time;
double count=50;        //定義占空比,并初始占空比為50%
sbit PWM=P3^0;      //P2^0口輸出PWM
sbit zkb_add=P3^6;   //占空比增加的按鍵 的I/O口
sbit zkb_dec=P3^7;   //占空比減小 的按鍵 的I/O口
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};        //共陽極數碼管0~9編碼

/*******數碼管顯示占空比********************/
void display_pwm()//占空比顯示
{
  uchar shi,ge;
  shi=count/10;    //十位
  ge=count%10;   //個位

  dula=0;
  P1=table[shi];
  delayms(5);
  dula=1;

  wela=0;
  P1=table[ge];
  delayms(5);
  wela=1;
}
/****************延時處理**********************/
void delayms(uint z) //延時xms程序
{
    uint x,y;
        for(y=z;x>0;x--)
                for(y=110;y>0;y--);
}


void keyscan()  //按鍵掃描
{
     display_pwm();
       if(zkb_add==0)            
       {
               count=count+10;        //每按一次占空比增加按鍵占空比加10%
               if(count>100)                                 //限定占空比上限
        {
         count=0;
        }
        }
      if(zkb_dec==0)
      {
          count=count-10;                 //每按一次占空比減小按鍵占空比減10%
               if(count<0)    //限定占空比下限
               {
        count=100;
               }
  }
       
}

/***********定時器0初始化***********/
void timer0_init()
{
  TMOD=0x01; //定時器0工作于方式1
  TH0=(65536-10)/256;
  TL0=(65536-10)%256;
  TR0=1;
  ET0=1;
  EA=1;
}

/**************定時0中斷處理******************/
void timer0_init() interrupt 1
{
       
  TR0=0;    //設置定時器初值期間,關閉定時器
  TH0=(65536-10)/256;
  TL0=(65536-10)%256;
  TR0=1;
  time++;

  if(time<count)          //count為占空比
  {
        PWM=1;           //輸出高電平
  }
  else
        PWM=0;       
  if(time>=100)
  {
        time=0;
  }

  display_pwm();

}

/*********主函數********************/
void main()
{         
        timer0_init();
        delayms(5);
        while(1)
        {
        keyscan();
        }
       

}
//急急急,仿真后數碼管和輸出pwm的io口沒有變化,一直處于高電平  求助一下論壇的朋友老師,還請指正,單片機界的小學生在此謝過。[qq]714881348[/qq]

QQ圖片20181225173204.png (29.81 KB, 下載次數: 143)

QQ圖片20181225173204.png

作者: wulin    時間: 2018-12-25 17:45
本帖最后由 wulin 于 2018-12-29 16:41 編輯

占空比1~99可調,



#include<reg52.h>
typedef unsigned char uchar;
typedef unsigned int uint;

sbit Key1=P3^0;
sbit Key2=P3^1;
sbit PWM=P1^0;
uchar  code table[]={
        0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,
        0x39,0x5e,0x79,0x71};
uchar count,time,i;

void delayms(uint k)
{
        uint i,j;
        for(i=k;i>0;i--)
                for(j=110;j>0;j--);
}
void Timer0Init()                //100微秒@12.000MHz
{
        TMOD |= 0x02;                //設置定時器模式
        TL0 = 0x9C;                //設置定時初值
        TH0 = 0x9C;                //設置定時重載值
        TF0 = 0;                //清除TF0標志
        TR0 = 1;                //定時器0開始計時
        EA=1;
        ET0=1;
}
void display()
{
        static bit num=0;
        P0=0x00;
        if(num)
        {
                P2=~0xfe;
                P0=table[i/10];
                num=~num;
        }
        else
        {
                P2=~0xfd;
                P0=table[i%10];
                num=~num;
        }
}

void main( )
{
        Timer0Init();       
        count=99;
        i=100-count;
        while(1)
        {
                if(!Key1)//
                {
                        delayms(10);
                        if(!Key1)
                        {
                                if(count>1)
                                        count--;               
                                while(!Key1);
                                i=100-count;
                        }
                }
                if(!Key2)
                {
                        delayms(10);
                        if(!Key2)
                        {
                                if(count<99)
                                        count++;               
                                while(!Key2);
                                i=100-count;
                        }
                }
        }
}
void timer0() interrupt        1  
{
        time++;
        if(count>=time)
                PWM=1;
        else   PWM=0;
        if(time>99)
                time=0;
        if(time%10==0)
                display();
}


作者: 我要上哈工大    時間: 2018-12-25 19:33
啊。我也是初學者。剛剛看了下,我對PWM目前還不是很了解;等我過兩天學習了再和你交流~
作者: 我要上哈工大    時間: 2018-12-26 11:23
你占空比上下限那里有點問題吧。。上下限反了,超過上限應該就是100,不應該是0.。我覺得;還要就是按鍵防抖延時我好像沒看到。?
作者: MR_CHEN12    時間: 2018-12-26 12:26
我有PWM輸出占空比可調周期可調的程序,通過按鍵調解,并在1602顯示當前PWM的信息,需要嗎
作者: 天上的一只猩    時間: 2018-12-26 14:20
MR_CHEN12 發表于 2018-12-26 12:26
我有PWM輸出占空比可調周期可調的程序,通過按鍵調解,并在1602顯示當前PWM的信息,需要嗎

首先感謝這位朋友的回答 。占空比可調的程序我已經有了。現在的問題就是兩位共陽極數碼管顯示的問題。不知道這位朋友能不能幫我看一下程序哪里出問題了 或者電路圖。謝謝
作者: 天上的一只猩    時間: 2018-12-26 14:23
我要上哈工大 發表于 2018-12-26 11:23
你占空比上下限那里有點問題吧。。上下限反了,超過上限應該就是100,不應該是0.。我覺得;還要就是按鍵防 ...

嗯 按鍵防抖的確沒有考慮到 還請這位朋友點撥一下。還有就是現在波形輸出無誤且可調了。但是數碼管不能正常顯示 只能亮88 00,不知道怎么回事
作者: 我要上哈工大    時間: 2018-12-27 18:39
void Motor_speed_high(void)
{
        if(Key1==0)
        {
                  Delay(10);
                  if(Key1==0)
                  {
                    count0 += 25;
  
                    if(count0 >= 100)
                    {
                            count0 = 100;
                    }
                  }
                  while(!Key1);
        }
}

這是我用PWM調電機轉速時的程序,就比你多了延時防抖
作者: 我要上哈工大    時間: 2018-12-27 18:47
還有,朋友你的占空比上下限的設定真的弄反了哈哈哈
作者: 周超然    時間: 2018-12-28 10:24
先各個部分確認,你的顯示有沒有問題?數字都正常顯示么?
還有就是pwm用個定時器控制頻率,01多少控制占空比,自己去研究下,不難
作者: huiyu    時間: 2018-12-28 15:12
嗯 按鍵防抖的確沒有考慮到 還請這位朋友點撥一下。還有就是現在波形輸出無誤且可調了。但是數碼管不能正常顯示 只能亮88 00
作者: 天上的一只猩    時間: 2018-12-28 23:00
huiyu 發表于 2018-12-28 15:12
嗯 按鍵防抖的確沒有考慮到 還請這位朋友點撥一下。還有就是現在波形輸出無誤且可調了。但是數碼管不能正常 ...

數碼管顯示問題需要改中斷時間和數碼管延時時間  我的分別是 20ms 和 2ms   
按鍵消抖目前沒整明白
作者: 天上的一只猩    時間: 2018-12-29 10:44
周超然 發表于 2018-12-28 10:24
先各個部分確認,你的顯示有沒有問題?數字都正常顯示么?
還有就是pwm用個定時器控制頻率,01多少控制占 ...

pwm周期20ms pwm端波形沒有問題 按鍵也能控制占空比增減
作者: 天上的一只猩    時間: 2018-12-29 21:11
wulin 發表于 2018-12-29 15:58
占空比1~99可調,

謝謝你占空比程序  現在有另外的問題就是  輸出電壓和占空比不線性  
作者: 大懶貓的可樂    時間: 2018-12-30 19:37
第一:檢查一下數碼管是共陰還是共陽,代碼里面是共陽
作者: 天上的一只猩    時間: 2018-12-30 22:25
大懶貓的可樂 發表于 2018-12-30 19:37
第一:檢查一下數碼管是共陰還是共陽,代碼里面是共陽

是共陽
作者: 單片機123..    時間: 2019-1-9 16:49
請問這個有pcb圖嗎




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