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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3867|回復: 28
收起左側

stc8單片機點亮LED的問題

[復制鏈接]
ID:879924 發表于 2022-3-23 13:51 | 顯示全部樓層 |閱讀模式
stc8單片機,IO控制LED,IO口接LED正!
IO P0^0-P0^4分別控制第1-第5個LED!
IO P1^0-P1^4分別接5個開關,IO對地觸發!
一旦對應的P1口電平被拉低,對應的P0口電平就會拉高,LED點亮!

要求按順序點亮5個LED!如果順序錯了,
會全部滅掉,重新開始點!

但是遇到的問題是:
每次一上電,第一個LED就會亮,
然后順序對了也會全部滅掉,
但是第二次就對了,
第二次第一個LED也不會亮了。

請問這是什么原因。浚浚
回復

使用道具 舉報

ID:879924 發表于 2022-3-23 21:50 | 顯示全部樓層
本帖最后由 macboa 于 2022-3-24 10:12 編輯
  1. void main(void)
  2. {

  3.         unsigned char flag=1;
  4.         unsigned char getflag0=0,getflag1=0,getflag2=0,getflag3=0,getflag4=0;
  5.         unsigned char i=0;
  6.         unsigned char j=0,k=0;const unsigned char setMagnetic_Switch[5]={0,1,2,3,4};
  7.         unsigned char getMagnetic_Switch[5]={0,0,0,0,0};
  8.         
  9.         P0M0=0x00;
  10.         P0M1=0x00;
  11.         P1M0=0x00;
  12.         P1M1=0x00;
  13.         P2M0=0x00;
  14.         P2M1=0x00;
  15.         P3M0=0x00;
  16.         P3M1=0x00;
  17.         P4M0=0x00;
  18.         P4M1=0x00;
  19.         P5M0=0x00;
  20.         P5M1=0x00;
  21.         
  22.         Magnetic_Switch0=1;
  23.         Magnetic_Switch1=1;
  24.         Magnetic_Switch2=1;
  25.         Magnetic_Switch3=1;
  26.         Magnetic_Switch4=1;
  27.         
  28.         Speaker_Switch0=1;
  29.         Speaker_Switch1=1;
  30.         Speaker_Switch2=1;
  31.         Speaker_Switch3=1;
  32.         Speaker_Switch4=1;

  33.         
  34.         getLED0=1;
  35.         getLED1=1;
  36.         getLED2=1;
  37.         getLED3=1;
  38.         getLED4=1;
  39.         
  40.         
  41.         Right_Out1=1;
  42.         Right_Out2=1;

  43.         Wrong_Out=1;


  44.         while(1)
  45.         {        
  46. //獲取
  47.                 while(j<5)
  48.                 {
  49.                         if(Magnetic_Switch0==0&&Magnetic_Switch1!=0&&Magnetic_Switch2!=0&&Magnetic_Switch3!=0&&Magnetic_Switch4!=0&&getflag0==0)
  50.                         {
  51.                                 getMagnetic_Switch[j]=0;
  52.                                 getflag0=1;
  53.                                 getLED0=0;
  54.                                 j++;
  55.                         }
  56.                         if(Magnetic_Switch1==0&&Magnetic_Switch0!=0&&Magnetic_Switch2!=0&&Magnetic_Switch3!=0&&Magnetic_Switch4!=0&&getflag1==0)
  57.                         {
  58.                                 getMagnetic_Switch[j]=1;
  59.                                 getflag1=1;
  60.                                 getLED1=0;
  61.                                 j++;
  62.                         }
  63.                         if(Magnetic_Switch2==0&&Magnetic_Switch0!=0&&Magnetic_Switch1!=0&&Magnetic_Switch3!=0&&Magnetic_Switch4!=0&&getflag2==0)
  64.                         {
  65.                                 getMagnetic_Switch[j]=2;
  66.                                 getflag2=1;
  67.                                 getLED2=0;
  68.                                 j++;
  69.                         }
  70.                         if(Magnetic_Switch3==0&&Magnetic_Switch0!=0&&Magnetic_Switch1!=0&&Magnetic_Switch2!=0&&Magnetic_Switch4!=0&&getflag3==0)
  71.                         {
  72.                                 getMagnetic_Switch[j]=3;
  73.                                 getflag3=1;
  74.                                 getLED3=0;
  75.                                 j++;
  76.                         }
  77.                         if(Magnetic_Switch4==0&&Magnetic_Switch0!=0&&Magnetic_Switch1!=0&&Magnetic_Switch2!=0&&Magnetic_Switch3!=0&&getflag4==0)
  78.                         {
  79.                                 getMagnetic_Switch[j]=4;
  80.                                 getflag4=1;
  81.                                 getLED4=0;
  82.                                 j++;
  83.                         }
  84.                 }
  85.                 j=0;
  86.                 //比較

  87.                 while(1)
  88.                 {
  89.                         if(setMagnetic_Switch[k]==getMagnetic_Switch[k])
  90.                         {               
  91.                                 k++;
  92.                                 if(k<5)
  93.                                         continue;
  94.                                 k=0;
  95.                                 Wrong_Out=1;
  96.                                 Right_Out1=0;
  97.                                 delay1000ms();

  98.                                 while(getLED0==0||getLED1==0||getLED2==0||getLED3==0||getLED4==0)
  99.                                 {
  100.                                         if(Speaker_Switch0==0)
  101.                                         {
  102.                                                 getLED0=1;
  103.                                         }
  104.                                         if(Speaker_Switch1==0)
  105.                                         {
  106.                                                 getLED1=1;
  107.                                         }
  108.                                         if(Speaker_Switch2==0)
  109.                                         {
  110.                                                 getLED2=1;
  111.                                         }
  112.                                         if(Speaker_Switch3==0)
  113.                                         {
  114.                                                 getLED3=1;
  115.                                         }
  116.                                         if(Speaker_Switch4==0)
  117.                                         {
  118.                                                 getLED4=1;
  119.                                         }
  120.                                 }        
  121.                                 Right_Out2=0;
  122.                                 Wrong_Out=1;
  123.                                 delay1000ms();               
  124.                                 i=6000;
  125.                                 while(i>0)
  126.                                 {
  127.                                         delay1000ms();
  128.                                         i--;
  129.                                 }        
  130.                                 i=0;
  131.                                 break;
  132.                         }
  133.                         else
  134.                         {

  135.                                 getLED0=0;
  136.                                 getLED1=0;
  137.                                 getLED2=0;
  138.                                 getLED3=0;
  139.                                 getLED4=0;
  140.                                 delay1000ms();
  141.                                 getLED0=1;
  142.                                 getLED1=1;
  143.                                 getLED2=1;
  144.                                 getLED3=1;
  145.                                 getLED4=1;
  146.                                 delay1000ms();
  147.                                 getLED0=0;
  148.                                 getLED1=0;
  149.                                 getLED2=0;
  150.                                 getLED3=0;
  151.                                 getLED4=0;
  152.                                 delay1000ms();
  153.                                 getLED0=1;
  154.                                 getLED1=1;
  155.                                 getLED2=1;
  156.                                 getLED3=1;
  157.                                 getLED4=1;
  158.                                 delay1000ms();
  159.                                 getLED0=0;
  160.                                 getLED1=0;
  161.                                 getLED2=0;
  162.                                 getLED3=0;
  163.                                 getLED4=0;
  164.                                 delay1000ms();
  165.                                 getLED0=1;
  166.                                 getLED1=1;
  167.                                 getLED2=1;
  168.                                 getLED3=1;
  169.                                 getLED4=1;
  170.                                 delay1000ms();
  171.                                 
  172.                                 
  173.                                 Wrong_Out=0;
  174.                                 Right_Out1=1;
  175.                                 break;
  176.                         }
  177.                 }
  178.                 Magnetic_Switch0=1;
  179.                 Magnetic_Switch1=1;
  180.                 Magnetic_Switch2=1;
  181.                 Magnetic_Switch3=1;
  182.                 Magnetic_Switch4=1;
  183.                 getflag0=0;
  184.                 getflag1=0;
  185.                 getflag2=0;
  186.                 getflag3=0;
  187.                 getflag4=0;

  188.                 Speaker_Switch0=1;
  189.                 Speaker_Switch1=1;
  190.                 Speaker_Switch2=1;
  191.                 Speaker_Switch3=1;
  192.                 Speaker_Switch4=1;
復制代碼


回復

使用道具 舉報

ID:879924 發表于 2022-3-24 10:06 | 顯示全部樓層
111捕獲.PNG
回復

使用道具 舉報

ID:220661 發表于 2022-3-23 15:45 | 顯示全部樓層
沒程序,靠猜還是靠起卦?
回復

使用道具 舉報

ID:161164 發表于 2022-3-23 16:19 | 顯示全部樓層
程序呢?線路圖呢?上傳圖片呢?什么都沒有,人家想幫你也幫不上呀
回復

使用道具 舉報

ID:879924 發表于 2022-3-23 16:23 來自手機 | 顯示全部樓層
本帖最后由 macboa 于 2022-3-24 10:07 編輯

你好 這是電路圖 111捕獲.PNG
回復

使用道具 舉報

ID:1005707 發表于 2022-3-23 16:40 | 顯示全部樓層
把程序貼上來哦
回復

使用道具 舉報

ID:857072 發表于 2022-3-23 16:42 來自手機 | 顯示全部樓層
限流電阻都不需要的嘛
回復

使用道具 舉報

ID:879924 發表于 2022-3-23 16:48 | 顯示全部樓層
lkc8210 發表于 2022-3-23 16:19
程序呢?線路圖呢?上傳圖片呢?什么都沒有,人家想幫你也幫不上呀

已經發了哈 。麻煩看看
回復

使用道具 舉報

ID:879924 發表于 2022-3-23 20:43 | 顯示全部樓層
本帖最后由 macboa 于 2022-3-24 10:08 編輯

此電路圖錯誤,刪掉
111捕獲.PNG
回復

使用道具 舉報

ID:101869 發表于 2022-3-23 20:59 來自手機 | 顯示全部樓層
實際不能這樣設計電路,單片機iO正極驅動能力很弱的,而且LED要加限流電阻的。對于STC8芯片要配置IO口模式的,默認是高阻抗。你也沒有貼出程序,
回復

使用道具 舉報

ID:879924 發表于 2022-3-23 21:48 | 顯示全部樓層
非凡科技 發表于 2022-3-23 20:59
實際不能這樣設計電路,單片機iO正極驅動能力很弱的,而且LED要加限流電阻的。對于STC8芯片要配置IO口模式 ...

已經改為灌電流了,加了電阻,這個圖是個縮略圖 ,,不知道為啥程序發不上來
回復

使用道具 舉報

ID:220661 發表于 2022-3-24 08:30 | 顯示全部樓層
P0口配置位就不對了,得推挽才能高電平驅動LED。
回復

使用道具 舉報

ID:879924 發表于 2022-3-24 09:01 來自手機 | 顯示全部樓層
這個電路圖是錯的,實際是采用灌電流。加了限流電阻。 麻煩各位大佬在給看看程序。
回復

使用道具 舉報

ID:879924 發表于 2022-3-24 09:01 來自手機 | 顯示全部樓層
gongnn 發表于 2022-3-24 08:30
P0口配置位就不對了,得推挽才能高電平驅動LED。

電路圖是錯的 已改成灌電流了
回復

使用道具 舉報

ID:879924 發表于 2022-3-24 10:11 | 顯示全部樓層
各位大佬  麻煩再給小弟看看
回復

使用道具 舉報

ID:161164 發表于 2022-3-24 10:34 | 顯示全部樓層
macboa 發表于 2022-3-23 16:48
已經發了哈 。麻煩看看

程序呢?
回復

使用道具 舉報

ID:879924 發表于 2022-3-24 10:34 | 顯示全部樓層
本帖最后由 macboa 于 2022-3-24 11:42 編輯

程序在二樓
回復

使用道具 舉報

ID:879924 發表于 2022-3-24 11:43 | 顯示全部樓層

程序在二樓,可能正在審核中
回復

使用道具 舉報

ID:507641 發表于 2022-3-24 12:20 | 顯示全部樓層
關鍵字有沒有用對,程序?
回復

使用道具 舉報

ID:879924 發表于 2022-3-24 12:41 | 顯示全部樓層
lkc8210 發表于 2022-3-23 16:19
程序呢?線路圖呢?上傳圖片呢?什么都沒有,人家想幫你也幫不上呀

void main(void)
{

        unsigned char flag=1;
        unsigned char getflag0=0,getflag1=0,getflag2=0,getflag3=0,getflag4=0;
        unsigned char i=0;
        unsigned char j=0,k=0;const unsigned char setMagnetic_Switch[5]={0,1,2,3,4};
        unsigned char getMagnetic_Switch[5]={0,0,0,0,0};
        
        P0M0=0x00;
        P0M1=0x00;
        P1M0=0x00;
        P1M1=0x00;
        P2M0=0x00;
        P2M1=0x00;
        P3M0=0x00;
        P3M1=0x00;
        P4M0=0x00;
        P4M1=0x00;
        P5M0=0x00;
        P5M1=0x00;
        
        Magnetic_Switch0=1;
        Magnetic_Switch1=1;
        Magnetic_Switch2=1;
        Magnetic_Switch3=1;
        Magnetic_Switch4=1;
        
        Speaker_Switch0=1;
        Speaker_Switch1=1;
        Speaker_Switch2=1;
        Speaker_Switch3=1;
        Speaker_Switch4=1;

        
        getLED0=1;
        getLED1=1;
        getLED2=1;
        getLED3=1;
        getLED4=1;
        
        
        Right_Out1=1;
        Right_Out2=1;

        Wrong_Out=1;


        while(1)
        {        
//獲取
                while(j<5)
                {
                        if(Magnetic_Switch0==0&&Magnetic_Switch1!=0&&Magnetic_Switch2!=0&&Magnetic_Switch3!=0&&Magnetic_Switch4!=0&&getflag0==0)
                        {
                                getMagnetic_Switch[j]=0;
                                getflag0=1;
                                getLED0=0;
                                j++;
                        }
                        if(Magnetic_Switch1==0&&Magnetic_Switch0!=0&&Magnetic_Switch2!=0&&Magnetic_Switch3!=0&&Magnetic_Switch4!=0&&getflag1==0)
                        {
                                getMagnetic_Switch[j]=1;
                                getflag1=1;
                                getLED1=0;
                                j++;
                        }
                        if(Magnetic_Switch2==0&&Magnetic_Switch0!=0&&Magnetic_Switch1!=0&&Magnetic_Switch3!=0&&Magnetic_Switch4!=0&&getflag2==0)
                        {
                                getMagnetic_Switch[j]=2;
                                getflag2=1;
                                getLED2=0;
                                j++;
                        }
                        if(Magnetic_Switch3==0&&Magnetic_Switch0!=0&&Magnetic_Switch1!=0&&Magnetic_Switch2!=0&&Magnetic_Switch4!=0&&getflag3==0)
                        {
                                getMagnetic_Switch[j]=3;
                                getflag3=1;
                                getLED3=0;
                                j++;
                        }
                        if(Magnetic_Switch4==0&&Magnetic_Switch0!=0&&Magnetic_Switch1!=0&&Magnetic_Switch2!=0&&Magnetic_Switch3!=0&&getflag4==0)
                        {
                                getMagnetic_Switch[j]=4;
                                getflag4=1;
                                getLED4=0;
                                j++;
                        }
                }
                j=0;
                //比較

                while(1)
                {
                        if(setMagnetic_Switch[k]==getMagnetic_Switch[k])
                        {               
                                k++;
                                if(k<5)
                                        continue;
                                k=0;
                                Wrong_Out=1;
                                Right_Out1=0;
                                delay1000ms();

                                while(getLED0==0||getLED1==0||getLED2==0||getLED3==0||getLED4==0)
                                {
                                        if(Speaker_Switch0==0)
                                        {
                                                getLED0=1;
                                        }
                                        if(Speaker_Switch1==0)
                                        {
                                                getLED1=1;
                                        }
                                        if(Speaker_Switch2==0)
                                        {
                                                getLED2=1;
                                        }
                                        if(Speaker_Switch3==0)
                                        {
                                                getLED3=1;
                                        }
                                        if(Speaker_Switch4==0)
                                        {
                                                getLED4=1;
                                        }
                                }        
                                Right_Out2=0;
                                Wrong_Out=1;
                                delay1000ms();               
                                i=6000;
                                while(i>0)
                                {
                                        delay1000ms();
                                        i--;
                                }        
                                i=0;
                                break;
                        }
                        else
                        {

                                getLED0=0;
                                getLED1=0;
                                getLED2=0;
                                getLED3=0;
                                getLED4=0;
                                delay1000ms();
                                getLED0=1;
                                getLED1=1;
                                getLED2=1;
                                getLED3=1;
                                getLED4=1;
                                delay1000ms();
                                getLED0=0;
                                getLED1=0;
                                getLED2=0;
                                getLED3=0;
                                getLED4=0;
                                delay1000ms();
                                getLED0=1;
                                getLED1=1;
                                getLED2=1;
                                getLED3=1;
                                getLED4=1;
                                delay1000ms();
                                getLED0=0;
                                getLED1=0;
                                getLED2=0;
                                getLED3=0;
                                getLED4=0;
                                delay1000ms();
                                getLED0=1;
                                getLED1=1;
                                getLED2=1;
                                getLED3=1;
                                getLED4=1;
                                delay1000ms();
                                
                                
                                Wrong_Out=0;
                                Right_Out1=1;
                                break;
                        }
                }
                Magnetic_Switch0=1;
                Magnetic_Switch1=1;
                Magnetic_Switch2=1;
                Magnetic_Switch3=1;
                Magnetic_Switch4=1;
                getflag0=0;
                getflag1=0;
                getflag2=0;
                getflag3=0;
                getflag4=0;

                Speaker_Switch0=1;
                Speaker_Switch1=1;
                Speaker_Switch2=1;
                Speaker_Switch3=1;
                Speaker_Switch4=1;

回復

使用道具 舉報

ID:879924 發表于 2022-3-24 16:11 來自手機 | 顯示全部樓層
還是不行 愁人。仿真沒問題。
回復

使用道具 舉報

ID:879924 發表于 2022-3-24 20:43 來自手機 | 顯示全部樓層
SURUBU1976 發表于 2022-3-24 12:20
關鍵字有沒有用對,程序?

程序在二樓
回復

使用道具 舉報

ID:879924 發表于 2022-3-24 22:12 來自手機 | 顯示全部樓層
SURUBU1976 發表于 2022-3-24 12:20
關鍵字有沒有用對,程序?

程序在二樓
回復

使用道具 舉報

ID:161164 發表于 2022-3-25 00:16 | 顯示全部樓層
macboa 發表于 2022-3-24 11:43
程序在二樓,可能正在審核中

1. 程序不全,頭文檔呢?sbit呢?delay1000ms()呢?
2. 程序結構極其不合理,不要while(1)包while(1)包while(XXX)
3. 按鍵掃描太累贅,為什么看Magnetic_Switch0是不是0時還要看其它Magnetic_Switch?你會同時按其它鍵嗎?
4. i是unsigned char,最大是255,不可能i=6000;


回復

使用道具 舉報

ID:879924 發表于 2022-3-25 23:33 來自手機 | 顯示全部樓層
lkc8210 發表于 2022-3-25 00:16
1. 程序不全,頭文檔呢?sbit呢?delay1000ms()呢?
2. 程序結構極其不合理,不要while(1)包while(1)包w ...

小弟是個菜雞 剛學沒多久。大佬見笑了。1.因為程序比較簡單沒用頭文件。2. 因為實在太菜了,結構確實不合理,但我又不知道其他方法。請大佬指點一下。3.sbit 忘記上傳了,我發圖片傳一下。4.確實是的,已經修改
CFCA5F70-FFC5-467C-9E22-6356495DEEA4.jpeg
回復

使用道具 舉報

ID:879924 發表于 2022-3-25 23:35 來自手機 | 顯示全部樓層
lkc8210 發表于 2022-3-25 00:16
1. 程序不全,頭文檔呢?sbit呢?delay1000ms()呢?
2. 程序結構極其不合理,不要while(1)包while(1)包w ...

小弟是個菜雞 剛學沒多久。大佬見笑了。1.因為程序比較簡單沒用頭文件。sbit 忘記上傳了,我發圖片傳一下。 delay1000ms()就是用stcisp生成的這個應該不會錯。2. 因為實在太菜了,結構確實不合理,但我又不知道其他方法。請大佬指點一下。3.確實是想保險點,怕同時按下。4.已經修改。
2C623454-D2F0-4C04-9FE9-B39F32D1B1F3.jpeg
回復

使用道具 舉報

ID:879924 發表于 2022-3-26 10:44 | 顯示全部樓層
macboa 發表于 2022-3-25 23:35
小弟是個菜雞 剛學沒多久。大佬見笑了。1.因為程序比較簡單沒用頭文件。sbit 忘記上傳了,我發圖片傳一下 ...

回復

使用道具 舉報

ID:879924 發表于 2022-3-27 10:37 | 顯示全部樓層
各位大佬 已補充,麻煩再給看看吧???
回復

使用道具 舉報

ID:161164 發表于 2022-3-27 12:34 | 顯示全部樓層
macboa 發表于 2022-3-27 10:37
各位大佬 已補充,麻煩再給看看吧???

沒救了
砍掉重煉吧
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人在线免费观看 | 久久99精品久久久久久 | 久久精品91| 国产精品美女久久久av超清 | 亚洲免费视频在线观看 | 香蕉久久a毛片 | 亚洲一区二区三区免费视频 | 一级毛片色一级 | 欧美激情久久久 | 国产亚洲精品久久久久久豆腐 | 国产中文字幕av | 国产精品一区二区不卡 | 91精品国产麻豆 | 午夜视频在线免费观看 | 国内精品伊人久久久久网站 | 国产午夜精品一区二区三区四区 | 国产精品一区在线观看 | 国产高清免费视频 | 国产一区2区 | 国内精品久久久久久影视8 最新黄色在线观看 | 九七午夜剧场福利写真 | 日韩福利在线 | 久久人| 影音先锋中文字幕在线观看 | 久久成人亚洲 | 精品久久久久国产 | 亚洲精品视频久久 | 欧美日韩国产精品一区 | 国产美女视频 | 久久精品免费一区二区三 | 日日想夜夜操 | 超碰成人在线观看 | 天天插天天狠天天透 | 成人超碰| 国产视频福利一区 | 成人动漫视频网站 | 一区二区三区日 | 国产98色在线 | 日韩 | 一级片网站视频 | 亚洲福利网 | 亚洲vs天堂|