久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2782|回復: 11
打印 上一主題 下一主題
收起左側

我這個思路對嗎?單片機一鍵切換多功能系統設計

[復制鏈接]
跳轉到指定樓層
樓主
完成一鍵切換多功能系統設計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
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:624769 發表于 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) 的時候,就決定了,這個程序會永遠在某一個分支里面無休止的循環。
回復

使用道具 舉報

板凳
ID:969664 發表于 2021-10-5 10:51 | 只看該作者
188610329 發表于 2021-10-4 18:10
while(1)
                {
                        if(key_count=0)lsd1();

那應該怎么改呀
回復

使用道具 舉報

地板
ID:883031 發表于 2021-10-5 16:49 | 只看該作者
加個按鍵計數器是對的,但是你程序中沒有相應的計數程序,
回復

使用道具 舉報

5#
ID:624769 發表于 2021-10-5 17:24 | 只看該作者

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

要么,做一個中斷程序,用來根據按鍵修改Key_count
回復

使用道具 舉報

6#
ID:624769 發表于 2021-10-5 19:10 | 只看該作者

最后,在補充一下, 你的 if 判斷語句, 判斷是否相等,應該是雙等號,==  而不是單等號。
回復

使用道具 舉報

7#
ID:123289 發表于 2021-10-6 11:33 | 只看該作者
1、做兩個計數器X和Y,每按一次X+1。
2、顯示程序:當X<>Y時,對LED進行顯示切換,顯示的原則:根據X/4的余數(0、1、2、3)進行,你想法中的4種顯示。顯示切換后,讓Y=X。
完了,就這么簡單。
回復

使用道具 舉報

8#
ID:130230 發表于 2021-10-8 15:11 | 只看該作者
用狀態機來寫這種多狀態的程序很適合。
回復

使用道具 舉報

9#
ID:743654 發表于 2021-10-9 08:51 | 只看該作者
四種情況分別設置標志位,通過標志位判斷是哪種情況,你的按鍵定義和判斷在哪,沒看到,P3.0為串口接收端,最好不要用來接按鍵
回復

使用道具 舉報

10#
ID:831736 發表于 2021-10-11 16:11 | 只看該作者
給你一個按鍵按一次加1的程序,然后你自己去想吧。
if(k1==0)//按鍵按下
while(1)
  {
  xianshi();//把正常顯示的程序寫在這里
  if(k1==1)
   {
   _++;//判斷按鍵的數值加1
   break;
   }
  }
這樣就可以按一次加一次了
回復

使用道具 舉報

11#
ID:836515 發表于 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;
   }
  }
}
回復

使用道具 舉報

12#
ID:967988 發表于 2021-10-11 16:21 | 只看該作者
整體思路是對的,這程序有點亂,還是要規范下。
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产午夜精品一区二区三区嫩草 | 国产99精品 | 亚洲第一成人影院 | 成人网在线 | 91免费入口 | 91麻豆精品国产91久久久久久 | 日韩一区二区三区精品 | 性高湖久久久久久久久3小时 | 日韩一级黄色片 | 99精品视频免费在线观看 | 亚洲国产成人精品女人久久久 | 欧美1区| 人人叉 | 国产成人精品免费视频大全最热 | 99精品视频一区二区三区 | 精品一区二区免费视频 | 欧美国产日韩精品 | 97超碰站 | 91黄在线观看 | 午夜影视免费片在线观看 | va精品 | 欧美成人精品 | 精品一二 | 国产伦精品一区二区 | 超碰在线免费av | 色五月激情五月 | 久久国产美女视频 | 一本色道精品久久一区二区三区 | 亚洲综合日韩精品欧美综合区 | 国产精品欧美一区二区三区 | 成人伊人网 | 台湾a级理论片在线观看 | 中文字幕在线观看国产 | 人人干人人爽 | 亚洲天堂免费在线 | 在线观看视频福利 | 最新日韩欧美 | 亚洲成人动漫在线观看 | 午夜影院在线观看视频 | 国产三级精品三级在线观看四季网 | 国产精品毛片av |