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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機編譯的時候出現一大堆錯誤?

[復制鏈接]
跳轉到指定樓層
樓主
ID:656393 發表于 2020-4-4 15:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 liyihang 于 2020-4-4 16:50 編輯

51單片機 麻煩大佬幫忙看看這些問題怎么解決
電路工程文件和源程序在附件里
要實現的功能如下:
密碼檢測狀態:系統啟動時,進入密碼檢測狀態,默認顯示PA----
                      若正確輸入4位密碼時,進入學號顯示狀態
                      若輸入密碼錯誤,數碼管顯示EE----,蜂鳴器在密碼錯誤時發生報警,仍處于密碼檢測狀態
學號顯示狀態:學號顯示nE+學號后四位,一直閃爍直到離開本狀態
                      按下按鍵*,可實現工作狀態切換

編譯時錯誤如下圖所示:                    

單片機源程序如下:
  1. #include<reg51.h>

  2. sbit BEEP=P2^3;
  3. sbit DACS=P2^4;
  4. sbit DAWR=P2^5;
  5. sbit DULA=P2^6;
  6. sbit WELA=P2^7;

  7. //共陰數碼管段碼
  8. unsigned char code segCC[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  9. //共陽數碼管段碼
  10. unsigned char code segCA[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

  11. //延時函數
  12. void Delay(unsigned int i)
  13. {
  14.         unsigned int j;
  15.         while(i--)
  16.         {
  17.                         for(j=0;j<32;j++);                //延時
  18.         }
  19. }

  20. //3-1、增加狀態變量,修改顯示函數Display0()
  21. unsigned char segWE6[]={0x01,0x02,0x04,0x08,0x10,0x20};
  22. unsigned char segDU6[]={0x8C,0x88,0xBF,0xBF,0xBF,0xBF};
  23. unsigned char segDU2[]={0xAB,0x86,0xC0,0xF9,0xA4,0xB0};

  24. //關鍵性變量
  25. unsigned char sysflg; //系統狀態變量,0-密碼檢測,1-密碼錯誤檢測,2-學號顯示,3-DAC轉換
  26. //-----------------------顯示密碼檢測界面-----------------------//
  27. void Display0()
  28. {
  29.         char i;
  30.         for(i=0;i<6;i++)
  31.         {
  32.         DULA=0;WELA=0;
  33.         P0=segWE6[i];WELA=1;WELA=0;
  34.         P0=segDU6[i];DULA=1;DULA=0;
  35.         Delay(5);
  36.         }
  37. }

  38. //按鍵掃描函數,返回值為對應的按鍵編碼
  39. unsigned char GetKey()
  40. {        unsigned char i,j,k=0,l;
  41.         unsigned char KeyScanCode[]={0xef,0xdf,0xbf,0x7f};                //行列掃描的行列碼
  42.         unsigned char KeyCodeTable[]={0xee,0xed,0xeb,0xde,0xdd,0xdb,0xbe,0xbd,0xbb,0x7e,0x7d,0x7b};
  43.         
  44.         P3=0x0f;
  45.         if(P3!=0x0f)                //如果有按鍵被按下
  46.         {
  47.                 for(i=0;i<4;i++)                //依次進行掃描
  48.                 {
  49.                         P3=KeyScanCode[i];
  50.                         for(j=0;j<3;j++)
  51.                         {
  52.                                 k=i*3+j;                                                //計算對應的按鍵編碼
  53.                                 if(P3==KeyCodeTable[k])
  54.                                 {
  55.                                         l=k+1;                                                        //根據鍵值調整到對應按鍵
  56.                                         if(l==11)        l=0;                //按鍵0,調整鍵值為0
  57.                                         if(l==12)        l=11;                //按鍵#,調整鍵值為11,按鍵*鍵值仍為10
  58.                                         return        l;                                        //返回按鍵編碼
  59.                                 }
  60.                         }
  61.                 }
  62.         }
  63.         else
  64.         {
  65.                 return 0xFF;                                        //或者返回0xff
  66.         }
  67. }

  68. void main()
  69. {
  70.         //-----數碼管顯示部分-----//
  71.         if(sysflg==0)
  72.         {
  73.                 segDU6[0]=0x8C;
  74.                 segDU6[1]=0x88;
  75.                 Display0();
  76.         }
  77.         else if(sysflg==1)
  78.         {
  79.                 segDU6[0]=0x86;
  80.                 segDU6[1]=0x86;
  81.                 Display0();
  82.                 BEEP=0;
  83.                 Delay(5);
  84.                 BEEP=1;
  85.                 Delay(3);
  86.         }
  87.         //-----按鍵檢測部分-----//
  88.         keyA=GetKey();
  89.         if(keyB!=keyA)
  90.         {
  91.                 keyB=keyA;
  92.                 if((keyA>=0) && (keyA<10) && (sysflg<=1))
  93.                 {                                                        }
  94.                 else if(keyA==10)
  95.                 {                                                        }
  96.                 else if(keyA==11)
  97.                 {                                                        }
  98.         }
  99. }

  100.         //存儲的密碼
  101.   unsigned char code pwd[]={1,2,3,4};
  102.                 if((keyA>=0) && (keyA<10) && ((sysflg<=1))
  103.                 {
  104.                         segDU6[segidx+2]=segCA[keyA];
  105.                         if(keyA!=pwd[segidx])        errflg=1;
  106.                         segidx++;
  107.                         if(segidx==4)
  108.                         {
  109.                                 segidx=0;
  110.                                 if(errflg==1)        sysflg=1;
  111.                                 else if(errflg==1)        sysflg=2;
  112.                                 errflg=0;
  113.                         }
  114.                 }
  115. //-----------------------顯示學號界面-----------------------//
  116. void Display2()
  117. {
  118.         char i;
  119.         for(i=0;i<6;i++)
  120.         {
  121.                 DULA=0;WELA=0;
  122.                 P0=segWE6[i];WELA=1;WELA=0;
  123.                 P0=segDU2[i];DULA=1;DULA=0;
  124.                 Delay(5);
  125.         }
  126. }
  127.                 else if(sysflg==2)
  128.                 {
  129.                         if(sysCNT<200)                Display2();
  130.                         else
  131.                         {
  132.                                 DULA=0;WELA=0;
  133.                                 P0=0;WELA=1;WELA=0;
  134.                                 P0=0;DULA=1;DULA=0;
  135.                         }
  136.                 }
  137.                         
  138.                 //====3、延時計數部分====
  139.                 sysCNT++;
  140.                 if(sysCNT==500)        sysCNT=0;
  141.                 Delay(5);
  142.         }
  143. }
復制代碼

所有資料51hei提供下載:
單片機.rar (38.91 KB, 下載次數: 8)



電路圖.png (194.15 KB, 下載次數: 20)

電路圖.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

來自 3#
ID:546770 發表于 2020-4-4 18:28 | 只看該作者
幫你修改了語法錯誤,我的電腦沒有安裝proteus,邏輯錯誤就沒辦法了,你這個應該是網上拷貝的吧,以后盡量自己寫或者看書上。

單片機.rar

49.97 KB, 下載次數: 24

回復

使用道具 舉報

沙發
ID:378116 發表于 2020-4-4 17:03 | 只看該作者
點擊錯誤行,即可看到錯誤是什么
回復

使用道具 舉報

地板
ID:367369 發表于 2020-4-4 19:24 | 只看該作者
哪里抄的代碼,連keyA,keyB,segidx這些未定義都不知道,111行多了個(
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表