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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機 串口修改LCD密碼鎖密碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:1152144 發表于 2025-5-29 17:18 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我是51單片機小白,做一個LCD密碼鎖的項目遇到了困難。在題目要求的串口修改密碼鎖密碼這個功能上,我一直找不到錯誤,有沒有大佬能幫幫我QAQ。題目要求是密碼鎖初始密碼為123,用電腦通過串口發送“123-789”將密碼從123修改為789,我不知道哪里寫錯了,請求大佬們幫忙,謝謝大佬們了

串口改變LCD密碼鎖的密碼.zip

59.92 KB, 下載次數: 0

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

使用道具 舉報

沙發
ID:1121801 發表于 2025-5-30 08:37 | 只看該作者
一般都不會下載附件,你最好把代碼直接貼上來.
估計一下,應該是對字符"-"的判斷有問題.或者是你程序中的字符'-'與你輸入的字符"-"不匹配.
回復

使用道具 舉報

板凳
ID:1152144 發表于 2025-5-30 15:00 | 只看該作者
cyi8 發表于 2025-5-30 08:37
一般都不會下載附件,你最好把代碼直接貼上來.
估計一下,應該是對字符"-"的判斷有問題.或者是你程序中的字 ...

OK,謝謝你的提醒
這是我的代碼,我刪除了原來的按鍵部分,只留下了串口部分,但是這部分是用AI寫的,和我原來寫的差不多,多了一部分東西.我對代碼修改了一部分,原本interrupt 4這里是檢測\n為結束標志的,后面為了方便我就該為了以一個空格為結束標志,然后發現沒有現象,我就在interrupt進去的時候加了個燈亮,出來的時候加了個燈滅,發現會正常熄滅。然后我就在但是就是在主函數中if(UART_RX_Complete)加了個LCD顯示,這里就不會顯示,我不知道為什么。希望大佬們能做出指正
  1. #include <REGX52.H>
  2. #include "LCD1602.h"
  3. #include "Delay.h"
  4. #include "MatrixKey.h"
  5. #include "UART.h"

  6. sbit LED=P2^0;

  7. unsigned char KeyNum;
  8. unsigned int Password=123;
  9. unsigned int SetWord;
  10. unsigned char Count;
  11. unsigned char state;
  12. unsigned char Counter;

  13. unsigned char i;
  14. unsigned char dash_pos = 0;
  15. unsigned int old_password = 0;
  16. unsigned int new_password = 0;
  17. unsigned char valid = 1;

  18. unsigned char UART_RX_Buffer[10]={0};
  19. unsigned char UART_RX_Count = 0;
  20. unsigned char UART_RX_Complete = 0;

  21. void main()
  22. {
  23.         LED=1;
  24.         
  25.         LCD_Init();
  26.         UartInit();
  27.                 LCD_ShowString(2,1,"CODE LOCK:");
  28.         while(1)
  29.         {
  30.                 Counter = 0;
  31.                 if(UART_RX_Complete)
  32.                 {
  33.                                 LCD_Init();
  34.                         LCD_ShowString(1,1,"CODE LOCK:");
  35.                         UART_RX_Complete=0;
  36.                         
  37.                         old_password = 0;
  38.                         new_password = 0;
  39.                         valid = 1;
  40.                
  41.                
  42.                         for(i=0;i<10;i++)
  43.                         {
  44.                                 if(UART_RX_Buffer[i]=='-')
  45.                                 {
  46.                                         dash_pos=i;
  47.                                         break;
  48.                                 }
  49.                                 
  50.                         }
  51.                         
  52.                         if(dash_pos == 0|| dash_pos>9)
  53.                         {
  54.                                 LCD_ShowString(1,1,"FORMAT ERROR!");
  55.                                 goto CLEAR_BUFFER;
  56.                         }
  57.                         

  58.                         
  59.                         for(i=0;i< dash_pos;i++)
  60.                         {
  61.                                 if(UART_RX_Buffer[i]<'0' ||UART_RX_Buffer[i] > '9')
  62.                                 {
  63.                                         valid = 0;
  64.                                         break;
  65.                                 }
  66.                                 old_password = old_password*10 + (UART_RX_Buffer[i] - '0');
  67.                                 
  68.                         }
  69.                         
  70.                         if(valid)
  71.                         {
  72.                                 for(dash_pos+1;i<10;i++)
  73.                                 {
  74.                                         if(UART_RX_Buffer[i] == '\0')break;
  75.                                                 if(UART_RX_Buffer[i]<'0' ||UART_RX_Buffer[i] > '9')
  76.                                         {
  77.                                                 valid = 0;
  78.                                                 break;
  79.                                         }
  80.                                         new_password = new_password*10 + (UART_RX_Buffer[i] - '0');
  81.                                 }
  82.                                 
  83.                         }
  84.                         
  85.                         if(valid)
  86.                         {
  87.                                         if(old_password == Password)
  88.                                         {
  89.                                                 Password = new_password;
  90.                                                 LCD_ShowString(1, 1, "PASSWORD UPDATED!");
  91.                                                 LCD_ShowNum(2, 1, Password, 3);
  92.                                                 LED = 0;
  93.                                                 Delay(5000);
  94.                                                 LED = 1;
  95.                                                 state = 0;
  96.                                                 LCD_ShowString(1,1,"                ");
  97.                                                 LCD_ShowString(2,1,"                ");
  98.                                         }
  99.                                         else
  100.                                         {
  101.                                                         LCD_ShowString(1, 1, "OLD PWD WRONG!   ");
  102.                                         }
  103.                         }
  104.                         
  105.                
  106.                         else
  107.                                 {
  108.                                                 LCD_ShowString(1, 1, "INVALID CHARACTER!");
  109.                                 }
  110.                                 
  111.         CLEAR_BUFFER:
  112.                                 for(i=0;i<10;i++)
  113.                                 {
  114.                                         UART_RX_Buffer[i] = 0;
  115.                                 }
  116.                                 UART_RX_Count = 0;
  117.                         }
  118.         /*************************************¼üÅÌÃÜÂëÊäÈ벿·Ö**************************/        


  119.         }
  120. }
  121. /*************************************´®¿ÚÖжϺ¯ÊýÄ£°å**************************/
  122.         void UART_Routnine() interrupt 4
  123.         {
  124.                 if(RI==1)//ÅжÏÊǽÓÊÕÖжÏ
  125.                 {
  126.                         LED = 0;
  127.                         if(UART_RX_Count < 9)
  128.                         {
  129.                                 UART_RX_Buffer[UART_RX_Count] = SBUF;
  130.                                 UART_RX_Count++;
  131.                                 if(SBUF == ' ')
  132.                                 {
  133.                                         UART_RX_Buffer[UART_RX_Count] = '\0';
  134.                                         UART_RX_Complete = 1;
  135.                                         UART_RX_Count = 0;
  136.                                 }
  137.                         }
  138.                         RI = 0;

  139.                         LED = 1;
  140.                 }
  141.                 if(TI==1)
  142.                 {
  143.                         TI=0;
  144.                 }
  145.         
  146. }
復制代碼

回復

使用道具 舉報

地板
ID:584814 發表于 2025-5-31 22:35 | 只看該作者
同是STC15W408AS,只要引腳對上應該就沒問題。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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