找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2576|回復(fù): 8
收起左側(cè)

單片機(jī)呼吸燈程序調(diào)試問題

[復(fù)制鏈接]
ID:143767 發(fā)表于 2022-4-20 10:20 | 顯示全部樓層 |閱讀模式
各位好,想請教大家下面的程序哪里有問題,問題描述:這是一個按鍵控制呼吸燈的程序,正常情況下按鍵按一下呼吸燈打開慢慢到最亮,再按一下按鍵呼吸燈慢慢熄滅,但是現(xiàn)在打開時呼吸燈最亮一下然后熄滅,再慢慢到最亮,不知問題出在哪里

單片機(jī)源程序如下:
#include <reg52.h>
unsigned char ID=0;
unsigned int Toff=0;
sbit LED=P1^0;         
sbit S1=P1^1;   
void no();
void off();
void Delay(unsigned int t);
void main(void)
{
   S1=1;
   LED=1;
   while(1)
   {
     if(S1==0)
     {
      Delay(500);                          
       if(S1==0)
         {
                                        while(S1==0);           
          ID++;
          if(ID==3)
                                         
          {
           ID=0;
          }
         }
          switch(ID)
{
          case 1:
          no();
          break;
          case 2:
          off();
          break;
          }
      }
  }
}

void no(void)
{
         
     for(Toff=1;Toff<500;Toff++)  
      {
               LED=0;                                         
               Delay(Toff);            
               LED=1;                                         
              Delay(500-Toff);           
      }  
      LED=0;
                        Delay(1000);
//      while (1);
}
void off(void)
{                        
   for(Toff=500;Toff>0;Toff--)   
    {
             LED=0;                     
             Delay(Toff);               
             LED=1;                    
            Delay(500-Toff);            
     }
      LED=1;
                 Delay(1000);
//      while (1);
}

void Delay(unsigned int t)   
{                        
while(--t);                 
}

回復(fù)

使用道具 舉報

ID:121859 發(fā)表于 2022-4-20 15:10 | 顯示全部樓層
可能是你的硬件連接是“1”點亮,還有就是Switch里面,再加一個default:break;分支。
回復(fù)

使用道具 舉報

ID:143767 發(fā)表于 2022-4-20 15:29 | 顯示全部樓層
zhxiufan 發(fā)表于 2022-4-20 15:10
可能是你的硬件連接是“1”點亮,還有就是Switch里面,再加一個default:break;分支。

好的,謝謝,我試試看
回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2022-4-20 16:44 | 顯示全部樓層
本帖最后由 188610329 于 2022-4-20 16:45 編輯

  for(Toff=500;Toff>0;Toff--)     // 要么,這里變501
     {
              LED=0;                     
              Delay(Toff);               
              LED=1;                    
             Delay(500-Toff);            //要么,這里變501
      }

void Delay(unsigned int t)   
{                        
while(--t);                 //又或者這里變 t--
}
回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2022-4-20 17:26 | 顯示全部樓層
188610329 發(fā)表于 2022-4-20 16:44
for(Toff=500;Toff>0;Toff--)     // 要么,這里變501
     {
              LED=0;                    ...

for(Toff=500;Toff>0;Toff--)    // 要么,這里變499
回復(fù)

使用道具 舉報

ID:482001 發(fā)表于 2022-4-20 17:46 來自手機(jī) | 顯示全部樓層
樓主把no函數(shù)的Toff=1改成Toff=0試試
回復(fù)

使用道具 舉報

ID:390416 發(fā)表于 2022-4-21 08:30 | 顯示全部樓層
void RGB_Buffer_Allot()
{
        static u8 xdata Blue_PWM,Red_PWM,Green_PWM,CHANGE_Mode=0;
        static u8 count=0;
        count++;
        if(count>100)                                                        //count是速度控制。
        {
                count=0;
                switch(CHANGE_Mode)
                {
                        case 0:       
                                        Red_PWM=0;                               
                                        Green_PWM++;                        //綠燈漸漸亮起
                                        Blue_PWM=0;
                                        if(Green_PWM==255)
                                        {
                                                CHANGE_Mode=2;                //綠燈最亮了,進(jìn)入2
                                        }
                                        break;
                        case 1:        Red_PWM=0;
                                        Green_PWM--;                        //綠燈漸漸滅掉
                                        Blue_PWM=0;
                                        if(Green_PWM==0)
                                        {
                                                CHANGE_Mode=2;                //綠燈黑了,進(jìn)入2
                                        }
                                        break;                               
                }                                                               
                PWM_Write_Byte[2]=Green_PWM;
        }
}
這段代碼,你改一下,用按鍵控制(CHANGE_Mode)的狀態(tài)就行了。
回復(fù)

使用道具 舉報

ID:143767 發(fā)表于 2022-4-21 10:25 | 顯示全部樓層
謝謝,謝謝諸位的幫助,我依次調(diào)試看看
回復(fù)

使用道具 舉報

ID:1006076 發(fā)表于 2022-4-22 18:07 | 顯示全部樓層
dj3365191 發(fā)表于 2022-4-21 10:25
謝謝,謝謝諸位的幫助,我依次調(diào)試看看

樓主結(jié)果怎么樣了?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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