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

標題: 我這個思路對嗎?單片機一鍵切換多功能系統設計 [打印本頁]

作者: jerry1203    時間: 2021-10-4 11:30
標題: 我這個思路對嗎?單片機一鍵切換多功能系統設計
完成一鍵切換多功能系統設計1 個按鍵 K,由 P3.0 控制,8 個 LED發光二極管,由 P1 口控制。(1)系統上電時 8 個 LED 全滅(2)第一次按下開關 K 的時候,8 個LED 全亮;第二次按下開關 K 的時候,高四位 LED亮;第三次按下開關 K 的時候,交叉亮滅;第四次按下開關 K 的時候,低四位 LED亮。再按開關 K 的時候,又從第一次開始。

單片機源程序如下:
#include <reg51.h>
void delay(unsigned char i)
{
        unsigned char j,k;
        for(k=0;k<i;k++)
        for(j=0;j<255;j++);
}
void lsd1()
{
        P1=0xff;
        }
        void lsd2()
        {
P1=0x00;
                }
void lsd3()
{
P1=0x01;
}
        void main()
        {
                unsigned char key_count,l;
                P3=0xff;
                for(l=0;l<5;l++)
                        key_count=l
                while(1)
                {
                        if(key_count=0)lsd1();
                                if(key_count=1)lsd2();
                                if(key_count=2)lsd3();
                                if(key_count=3)0x0f;
                                if(key_count=4)0xf0;
                        }
        }
請問我這個思路對嗎,不對在哪里
剛剛學習單片機,不太會寫

捕獲.PNG (79.44 KB, 下載次數: 119)

捕獲.PNG

作者: 188610329    時間: 2021-10-4 18:10
              while(1)
                {
                        if(key_count=0)lsd1();
                                if(key_count=1)lsd2();
                                if(key_count=2)lsd3();
                                if(key_count=3)0x0f;
                                if(key_count=4)0xf0;
                        }

這是,你這個程序的核心部分, 雖然,你里面很多 if, 看似這個程序會有變化,但是你這個程序沒有任何中斷。所以,key_count 永遠不會發生改變, 在進入while(1) 的時候,就決定了,這個程序會永遠在某一個分支里面無休止的循環。
作者: jerry1203    時間: 2021-10-5 10:51
188610329 發表于 2021-10-4 18:10
while(1)
                {
                        if(key_count=0)lsd1();

那應該怎么改呀
作者: cn_zhx    時間: 2021-10-5 16:49
加個按鍵計數器是對的,但是你程序中沒有相應的計數程序,
作者: 188610329    時間: 2021-10-5 17:24
jerry1203 發表于 2021-10-5 10:51
那應該怎么改呀

你要么,在 while(1)  里面增加一個 判斷 按鍵  賦值 Key_count 的代碼。

要么,做一個中斷程序,用來根據按鍵修改Key_count
作者: 188610329    時間: 2021-10-5 19:10
jerry1203 發表于 2021-10-5 10:51
那應該怎么改呀

最后,在補充一下, 你的 if 判斷語句, 判斷是否相等,應該是雙等號,==  而不是單等號。
作者: yzwzfyz    時間: 2021-10-6 11:33
1、做兩個計數器X和Y,每按一次X+1。
2、顯示程序:當X<>Y時,對LED進行顯示切換,顯示的原則:根據X/4的余數(0、1、2、3)進行,你想法中的4種顯示。顯示切換后,讓Y=X。
完了,就這么簡單。
作者: jizhongbiao    時間: 2021-10-8 15:11
用狀態機來寫這種多狀態的程序很適合。
作者: cheney03    時間: 2021-10-9 08:51
四種情況分別設置標志位,通過標志位判斷是哪種情況,你的按鍵定義和判斷在哪,沒看到,P3.0為串口接收端,最好不要用來接按鍵
作者: 一giao我里giao    時間: 2021-10-11 16:11
給你一個按鍵按一次加1的程序,然后你自己去想吧。
if(k1==0)//按鍵按下
while(1)
  {
  xianshi();//把正常顯示的程序寫在這里
  if(k1==1)
   {
   _++;//判斷按鍵的數值加1
   break;
   }
  }
這樣就可以按一次加一次了
作者: 沒啥好名    時間: 2021-10-11 16:14
一giao我里giao 發表于 2021-10-11 16:11
給你一個按鍵按一次加1的程序,然后你自己去想吧。
if(k1==0)//按鍵按下
while(1)

你錯了,是這樣
if(k1==0)//按鍵按下
{
while(1)
  {
  xianshi();//把正常顯示的程序寫在這里
  if(k1==1)
   {
   _++;//判斷按鍵的數值加1
   break;
   }
  }
}
作者: iwqtthf    時間: 2021-10-11 16:21
整體思路是對的,這程序有點亂,還是要規范下。




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