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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于單片機電子密碼鎖的程序有警告,新手求助

[復制鏈接]
跳轉到指定樓層
樓主
求教以下程序有13處警告 , 新手求解,  關于電子密碼鎖的,警告在最后
  1. #include <reg51.h>
  2. #include <string.h>
  3. #define uchar unsigned char
  4. #define unit  unsigned int
  5. uchar Pre_KeyNo = 16, KeyNo = 16;
  6. uchar code Title_Text[] = "Your Password...";
  7. uchar DSY_BUFFER[10] = " ";
  8. uchar UserPassword[10] = " ";
  9. void LCD_Init();
  10. void Display_String(uchar * str,uchar LineNo);
  11. void IIC_24C04_Init();
  12. void Beep();
  13. uchar RecString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N);
  14. uchar SendString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N);
  15. uchar Keys_Scan();
  16. sbit LED_OPEN = P2^7;
  17. sbit BEEP = P3^7;

  18. void DelayMS(int x )
  19. {
  20. uchar  i;
  21. while (x--) for (i = 0;i<120;i++);
  22. }
  23. void Beep()
  24. {
  25. uchar  i;
  26. for (i=0;i<100;i++)
  27. {
  28. DelayMS(1);BEEP= ~BEEP;
  29. }
  30. BEEP=0;
  31. }
  32. void Clear_Password()
  33. {
  34. UserPassword[0] = '\0';
  35. DSY_BUFFER[0] = '\0';
  36. }
  37. void main()
  38. {
  39.    uchar i = 0;
  40.    uchar IIC_Password[10];
  41.    uchar IS_Valid_User = 0;
  42.    P0 = 0xFF;     
  43.    P1 = 0xFF;
  44.    P2 = 0xFF;  
  45.    TMOD = 0x02;                     //T0設置為8位自動重裝模式
  46.    TH0 = 175;                  
  47.    TL0 = 175;
  48.    TR0 = 1;                         //啟動T0
  49.    DelayMS(10);               
  50.    LCD_Init();                      //初始化LCD  
  51.    
  52.    IIC_24C04_Init();                //初始化24C04  
  53.    
  54.    Display_String(Title_Text,0x00); //在第1行顯示標題
  55.    
  56.    //24C04的內容已由初始化BIN文件導入
  57.    //將24C04中預先寫入的密碼讀入pass
  58.    RecString(0xa0, 0 , IIC_Password, 6);   
  59.    IIC_Password[6] = '\0';
  60.    while(1)
  61.    {
  62.       P1 = 0xF0;
  63.       if(P1 != 0xF0) KeyNo = Keys_Scan();  //掃描鍵盤獲取鍵序號KeyNo

  64.       switch ( KeyNo )
  65.       {
  66.            case 0:  case 1: case 2: case 3: case 4:
  67.            case 5:  case 6: case 7: case 8: case 9:
  68.                         
  69.                    if ( i<= 5 )             //密碼限制在6位以內
  70.                    {
  71.                         //如果i為0則執行一次清屏
  72.                         if (i ==0) Display_String("                ",0x40);
  73.                     
  74.                         UserPassword[i] = KeyNo + '0';
  75.                         UserPassword[i+1] = '\0';
  76.               
  77.                         DSY_BUFFER[i] = '*';
  78.                         DSY_BUFFER[i+1] = '\0';
  79.                     
  80.                         Display_String(DSY_BUFFER,0x40);
  81.                      
  82.                         i++;
  83.                     }
  84.                     break;
  85.                
  86.            case 10: //按A鍵開鎖
  87.                     if (strcmp(UserPassword,IIC_Password) == 0)
  88.                     {
  89.                        LED_OPEN = 0;  //點亮LED
  90.                        Clear_Password();
  91.                        Display_String("Unlock OK!      ",0x40);
  92.                        IS_Valid_User = 1;
  93.                     }
  94.                     else
  95.                     {
  96.                        LED_OPEN =1;   //關閉LED
  97.                        Clear_Password();
  98.                        Display_String("ERROR !         ",0x40);
  99.                        IS_Valid_User = 0;
  100.                     }
  101.                     i = 0;
  102.                     break;
  103.                     
  104.            case 11: //按B鍵上鎖
  105.                     LED_OPEN =1;   
  106.                     Clear_Password();
  107.                     Display_String(Title_Text,0x00);
  108.                     Display_String("                ",0x40);
  109.                     i = 0;                        
  110.                     IS_Valid_User = 0;               
  111.                     break;
  112.                                    
  113.            case 12: //按C鍵設置新密碼
  114.                     //如果是合法用戶則提示輸入新密碼
  115.                     if ( !IS_Valid_User ) Display_String("No rights !",0x40);
  116.                     else
  117.                     {
  118.                        i = 0;
  119.                        Display_String("New Password:   ",0x00);
  120.                        Display_String("                ",0x40);
  121.                      }
  122.            
  123.                     break;                        
  124.                     
  125.            case 13: //按D鍵保存新密碼
  126.                     if ( !IS_Valid_User ) Display_String("No rights !",0x40);
  127.                     else
  128.                     {
  129.                        SendString(0xa0, 0 , UserPassword, 6);
  130.                        
  131.                        //重新讀入剛寫的密碼
  132.                        RecString(0xa0, 0 , IIC_Password, 6);   
  133.                        IIC_Password[6] = '\0';                           
  134.                        
  135.                        i = 0;
  136.                        Display_String(Title_Text,0x00);
  137.                        Display_String("Password Saved! ",0x40);
  138.                      }               
  139.                     
  140.                     break;                        
  141.       
  142.            case 14: //按E鍵消除所有輸入
  143.                     i = 0;
  144.                     Clear_Password();
  145.                     Display_String("                ",0x40);            
  146.        }

  147.        Beep();         
  148.        DelayMS(100);
  149.        P1= 0xF0;
  150.        while (P1 != 0xF0);    //如果有鍵未釋放則等待
  151.        while (P1 == 0xF0);    //如果沒有再次按下按鍵則等待
  152.    }
  153. }
復制代碼

  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define unit  unsigned int
  5. #define Delay4us(); {_nop_();_nop_(); _nop_();_nop_();}
  6. sbit SCL = P3^2;
  7. sbit SDA = P3^3;
  8. void Start()
  9. {
  10. SDA = 1;SCL = 1;Delay4us();SDA = 0;Delay4us();SCL = 0;
  11. }
  12. void Stop()
  13. {
  14. SDA =0;SCL =1;Delay4us();SDA = 1;Delay4us();SCL=0;
  15. }
  16. void IIC_24C04_Init()
  17. {
  18. SCL = 0; Stop();
  19. }
  20. void ACK()
  21. {
  22. SDA =0;SCL =1;Delay4us();SCL = 0;SDA=1;
  23. }
  24. void No_ACK()
  25. {
  26. SDA =1;SCL =1;Delay4us();SCL = 0;SDA=0;
  27. }
  28. uchar RecByte()
  29. {
  30. uchar i,rd;
  31. rd = 0x00;
  32. SDA = 1;
  33. for(i=0;i<8;i++)
  34. {
  35. SCL =1 ;rd<<=1; rd |=SDA;Delay4us();SCL = 0;Delay4us();
  36. }
  37. SCL=0;
  38. Delay4us();
  39. return rd;
  40. }
  41. uchar SendByte(uchar wd)
  42. {
  43. uchar  i;
  44. bit  ack0;
  45. for(i=0;i<8;i++)
  46. {
  47. SDA=(bit)(wd & 0x80);
  48. _nop_();_nop_();SCL = 1;Delay4us();SCL = 0;wd<<=1;
  49. }
  50. Delay4us();
  51. SDA = 1;
  52. SCL = 1;
  53. Delay4us();
  54. ack0 = !SDA;
  55. SCL = 0;
  56. Delay4us();
  57. return ack0;
  58. }
  59. uchar SendString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N)
  60. {
  61. uchar i;
  62. Start();
  63. if(!SendByte(Slave))  return 0;
  64. if(!SendByte(Subaddr))  return 0;
  65. for(i=0;i<N;i++)
  66. {
  67. if (!SendByte(Buffer[i])) return 0;
  68. }
  69. Stop();
  70. return 1;
  71. }
  72. uchar RecString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N)
  73. {
  74. uchar i;
  75. Start();
  76. if(!SendByte(Slave))  return 0;
  77. if(!SendByte(Subaddr))  return 0;
  78. Start();
  79. if(!SendByte(Slave+1))  return 0;
  80. for(i=0;i<N-1;i++)
  81. {
  82. Buffer[i] = RecByte();
  83. ACK();
  84. }
  85. Buffer[N-1] = RecByte();
  86. No_ACK();
  87. Stop();
  88. return 1;
  89. }
  90. #include <reg51.h>
  91. #define uchar unsigned char
  92. #define unit  unsigned int
  93. void DelayMs(unit x);
  94. uchar Keys_Scan()
  95. {
  96. uchar Tmp,KeyNo = 0;
  97. P1=0x0F;
  98. DelayMs(1);
  99. Tmp = P1 ^ 0x0F;
  100. switch (Tmp)
  101. {
  102. case 1: KeyNo = 0;break;
  103. case 2: KeyNo = 1;break;
  104. case 4: KeyNo = 2;break;
  105. case 8: KeyNo = 3;break;
  106. default:  KeyNo = 16;
  107. }
  108. P1 = 0X0F;
  109. DelayMs(1);
  110. Tmp = P1 >> 4 ^ 0x0F;
  111. switch (Tmp)
  112. {
  113. case 1: KeyNo += 0; break;
  114. case 2: KeyNo += 4; break;
  115. case 4: KeyNo += 8; break;
  116. case 8: KeyNo += 12;
  117. }
  118. return KeyNo;
  119. }
復制代碼

警告


WDR19YWP33X%)U5T$AE6F4X.png (25.71 KB, 下載次數: 38)

WDR19YWP33X%)U5T$AE6F4X.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:332444 發表于 2019-6-10 10:40 | 只看該作者
什么意思?三個文件每個文件單獨檢查告警進行處理即可.
把告警的函數全部注釋掉試看
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区中文字幕 | 亚洲成人一区二区三区 | 日本污视频 | 国产探花在线精品一区二区 | 国产情侣一区 | 久久精品国产一区二区 | 亚洲免费三级 | 国产高清毛片 | 亚洲欧美激情网 | 盗摄精品av一区二区三区 | 麻豆久久久 | 欧美高清视频在线观看 | 成年女人免费v片 | 97伦理最新伦理 | 日本成人综合 | 日韩一二区 | 九九精品久久久 | 国产在线小视频 | 精品国产乱码久久久久久88av | 中文字幕乱码视频32 | 美女黄视频网站 | 日韩一区二区三区在线 | 亚洲天堂成人在线视频 | 国产视频一区在线 | 看羞羞视频 | 在线成人av | 老熟女毛片 | 99综合| 污免费网站 | 色网在线观看 | 欧美日韩精品 | 欧美久久久久久久久 | 爱爱无遮挡 | 国产成人高清 | 亚洲aⅴ一区二区 | 久久人人网 | 久久久久无码国产精品一区 | 国产精品毛片一区二区三区 | 色婷婷亚洲国产女人的天堂 | 91精品国产色综合久久 | 91 中文字幕 |