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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于stm32f4單片機的智能門鎖程序設計

[復制鏈接]
跳轉到指定樓層
樓主
本設備采用stm32f4  獨立按鍵+as608指紋模塊+jdy30藍牙模塊 +7針spi oled顯示+24c02
具有 指紋解鎖 密碼解鎖 app解鎖
指紋解鎖:可對指紋信息進行 增 刪 改 查
密碼解鎖:輸入正確密碼可解鎖 可更改密碼
app解鎖:可通過app輸入密碼解鎖,可通過app上管理員權限更改密碼(管理員密碼168168或者111111 忘記了)
如需復刻或制作,可按照io分配進行模塊接線 燒錄程序即可。
注意:無24c02的情況下,請將24c02初始化函數屏蔽,否則無法開機。

制作出來的實物圖如下:


目錄
基于stm32f407vet6智能鎖設計    1
簡介:    1
主要功能:    1
應用場所:    1
硬件組成及設計:    1
軟件組成及設計 :        2

基于stm32f407vet6智能鎖設計
簡介:
  應學生客戶要求開發一款可以應通過app,指紋,鍵盤三種方式解鎖的一款智能門鎖。
主要功能:
  此產品主要功能如下:1.可以應用專用的app進行解鎖和修改密碼
2.    可以應用鎖身自帶的鍵盤進行密碼解鎖和修改密碼
3.    可以應用鎖身自帶的指紋錄入器進行解鎖

應用場所:
此產品最大的特點其有三種解鎖方式,其硬件設計為模塊設計,,所以對應的解鎖的方式可以根據客戶需求進行更改,可根據不同場所進行切換,故此產品在滿足一般生活場所的同事更適合于,人員流動大的場所。
硬件組成及設計:
  此產品硬件主要分為以下幾個方面 :1.顯示電路:顯示電路采用7針oled顯示屏(spi通訊方式)
2.    指紋采集電路:指紋采集電路采用正點原子as608指紋模塊進行指紋的錄入刪除對比
3.    鍵盤電路:鍵盤電路為3*4的矩陣鍵盤,由微動按鍵和洞洞板焊接制成(逐點掃描)
4.    通訊電路:此產品通訊為藍牙通訊,采用hc-05藍牙模塊進行與手機app的通訊
5.    主控電路;主控電路采用stm32f407vet6最小系統板進行主要控制。

軟件組成及設計 :   
   此產品軟件部分主要分為以下兩部分:1. stm32f407vet6程序設計:開發工具(keil5)
                                       程序見程序文件夾
2.    app程序設計:開發工具(mit app)
  程序見app.gzjkw.net/#14

IMG_20200129_230637.jpg (4.46 MB, 下載次數: 74)

IMG_20200129_230637.jpg

IMG_20200129_230853.jpg (4.71 MB, 下載次數: 67)

IMG_20200129_230853.jpg

IMG_20200129_230855.jpg (4.41 MB, 下載次數: 63)

IMG_20200129_230855.jpg

IMG_20200129_230904.jpg (4.55 MB, 下載次數: 73)

IMG_20200129_230904.jpg

Keil代碼.7z

341.18 KB, 下載次數: 39, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:474195 發表于 2022-6-17 14:50 | 只看該作者
如有制作問題可聯系本人
回復

使用道具 舉報

板凳
ID:474195 發表于 2022-6-17 14:52 | 只看該作者
程序為早年所寫,邏輯不是很好,勿噴
STM32單片機源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "oled.h"
  5. #include "usart2.h"
  6. #include "gpio.h"
  7. #include "timer.h"
  8. #include "as608.h"
  9. #include "24cxx.h"
  10. #include "myiic.h"
  11. #define moto_down 1400
  12. #define moto_up 2100                   //最大2500
  13. #define time 1000                      //ms
  14. void ifmima(void);                     //密碼判斷函數
  15. void recivemima(void);                 //串口接收密碼函數
  16. void turncode(void);                   //串口密碼更改函數
  17. void press_FR(void);                   //刷指紋
  18. void Add_FR(void);                     //驗證指紋
  19. void gui(u8 i);                        //界面函數
  20. void gpioinit(void);                   //gpio初始化函數
  21. void Del_FR(void);                     //指紋刪除函數
  22. void incode(void);                     //按鍵輸入函數
  23. void tcode(void);                      //按鍵更改密碼函數
  24. u8 key(u8 mode);                       //按鍵掃描函數
  25. u8 turnstr(u8 d);                      //字符轉換還函數
  26. u16 ValidN;                             //模塊內有效指紋個數
  27. u8 mima[6]= {'1','1','1','1','1','1'};                //默認密碼
  28. u16 shurumima[6]= {'0','0','0','0','0','0'};          //輸入密碼
  29. u16 turnmima[7]= {'0','0','0','0','0','0','0'};       //更改密碼
  30. u16 i,j;
  31. u8 len;           //接收數據的長度;
  32. u8 change=0;      //密碼更改標志位 更改1,不更改為0
  33. u8 over=0;        //輸入密碼結束標志位 完成1
  34. u8 ture=2;        //密碼判斷標志位 正確1,錯誤0,等待2
  35. u8 t=0;
  36. u8 reok=0;        //回到主界面標志位 為一回到主界面
  37. int main(void)
  38. {
  39.     PS_StaGPIO_Init();
  40.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //設置系統中斷優先級分組2
  41.     delay_init(168);                                 //初始化延時函數
  42.     pwminit1(84-1,20000-1);
  43.     usart2_init(9600);                               //初始化串口2,用于與指紋模塊通訊
  44.     uart_init(9600);                                       //初始化串口波特率為115200
  45.     OLED_Init();                                                             //初始化OLED
  46.     gpioinit();                                      //gpio初始化(按鍵)
  47.     AT24CXX_Init();                                               //24c02初始化
  48.     while(AT24CXX_Check())                           //等待24c02初始化完畢
  49.     OLED_Clear();
  50.     OLED_ShowCH(0,16,"準備中");
  51.     OLED_Refresh_Gram();
  52.          // AT24CXX_Write(0,(u8*)mima,6);           //       此條用于初始密碼 如果密碼忘記恢復此條密碼初始為111111
  53.     AT24CXX_Read(0,mima,6);
  54.     delay_ms(2000);
  55.     OLED_Clear();                                    //清屏
  56.     gui(0);                                          //主界面
  57.     OLED_Refresh_Gram();                             //更新顯示到OLED
  58.     TIM_SetCompare1(TIM3,moto_down);                 //舵機1500-2400  中值1850
  59.     while(1)
  60.     {
  61.         recivemima();                          //調用串口密碼接收
  62.         if(reok==1) {
  63.             reok=0;    //如果標志位置一回到主屏
  64.             goto OVER;
  65.         }
  66.         switch(key(0))                           //選擇哪個按鍵被按下
  67.         {
  68.         case 0:                                 //按鍵0被按下
  69.             gui(1);                               //進入界面1指紋解鎖
  70.             while(1)                              //進入循環等待(等待操作結束)
  71.             {
  72.                 delay_ms(100);
  73.                 t++;                                 //延時100ms t加一(5秒無操作退出)
  74.                 switch(key(0))                        //選擇次界面 指紋功能選擇
  75.                 {
  76.                 case 0:  {
  77.                     Add_FR();     //指紋添加
  78.                     goto OVER;
  79.                 }
  80.                 case 10: {
  81.                     Del_FR();     //指紋刪除
  82.                     goto OVER;
  83.                 }
  84.                 case 11: {
  85.                     press_FR();    //指紋驗證
  86.                     goto OVER;
  87.                 }
  88.                 }
  89.                 if(t==50) {
  90.                     t=0;    //5秒無操作退出
  91.                     goto OVER;
  92.                 }
  93.             }

  94.         case 10: {
  95.             gui(2);
  96.             while(1)
  97.             {
  98.                 delay_ms(100);
  99.                 t++;
  100.                 switch (key(0))
  101.                 {
  102.                 case 0:
  103.                     while(1) {
  104.                         incode();
  105.                         goto OVER;
  106.                     }
  107.                 case 10:
  108.                     while(1) {
  109.                         tcode();
  110.                         goto OVER;
  111.                     }
  112.                 case 11:
  113.                     goto OVER;
  114.                 }
  115.                 if(t==50) {
  116.                     t=0;
  117.                     goto OVER;
  118.                 }
  119.             }
  120.             /*        case 11:
  121.                     {
  122.                     gui(4);
  123.                     while(1)
  124.                     {
  125.                     if(key(0)==11)goto OVER;

  126.                     if(reok==1)
  127.                     {goto OVER;}
  128.                     }
  129.                     }        */
  130.         }
  131. OVER: {
  132.             OLED_Clear();
  133.             gui(0);
  134.             break;
  135.         }
  136.         }
  137.     }
  138. }

  139. void recivemima(void)                                               //串口接收密碼函數
  140. {
  141.     reok=0;                                                             //標志位清零
  142.     if(USART_RX_STA&0x8000)                                             //如果串口有數據發來
  143.     {
  144.         len=USART_RX_STA&0x3fff;                                           //得到此次接收到的數據長度
  145.         for(i=0; i<len; i++)                                               //數據轉存
  146.         {
  147.             if(USART_RX_BUF[0]!='t') {
  148.                 shurumima[i]=USART_RX_BUF[i];    //如果沒有接收到密碼更改標志位數據存儲在shurumima中
  149.                 change=0;
  150.             }
  151.             if(USART_RX_BUF[0]=='t') {
  152.                 turnmima[i]=USART_RX_BUF[i];           //如果接收到密碼更改標志位數據存儲在turnmima中 密碼更改標志位置一
  153.                 change=1;
  154.             }
  155.         }
  156.         if(change==0)                                                      //密碼更改
  157.         {
  158.             ifmima();                                                         //調用判斷函數
  159.             if(ture==1) {
  160.                 OLED_Clear();
  161.                 OLED_ShowCH(0,16,"密碼正確");
  162.                 OLED_Refresh_Gram();
  163.                 reok=1;
  164.                 TIM_SetCompare1(TIM3,moto_up);
  165.                 delay_ms(time);
  166.                 TIM_SetCompare1(TIM3,moto_down);
  167.             }
  168.             else {
  169.                 OLED_Clear();
  170.                 OLED_ShowCH(0,16,"密碼錯誤");
  171.                 OLED_Refresh_Gram();
  172.                 reok=1;
  173.                 delay_ms(800);
  174.             }
  175.         }
  176.         if(change==1) {
  177.             turncode();
  178.         }
  179.         USART_RX_STA=0;                                                    //清除中斷 標志位
  180.     }
  181. }



  182. void tcode(void)//按鍵更改密碼函數
  183. {
  184.     u8 key1,count=0;
  185.     ture=2;
  186.     incode();                                                   //密碼輸入函數調用
  187.     if(ture==1)                                                   //輸入原密碼正確
  188.     {
  189.         OLED_Clear();
  190.         OLED_ShowCH(0,0,"請輸新密碼");
  191.         OLED_Refresh_Gram();
  192.         key1=key(0);                                                  //獲取當前按鍵值(無按鍵按下是為15)
  193.         while(1)
  194.         {
  195.             key1=key(0);
  196.             while(key1==15)                                             //等待按鍵按下
  197.             {
  198.                 key1=key(0);
  199.             }
  200.             count++;                                                  //計算密碼個數
  201.             OLED_ShowNum(12,23,count,2,12);
  202.             OLED_Refresh_Gram();
  203.             switch(count)                                              //密碼轉存
  204.             {
  205.             case 1:
  206.                 mima[0]=turnstr(key1);
  207.                 break;
  208.             case 2:
  209.                 mima[1]=turnstr(key1);
  210.                 break;
  211.             case 3:
  212.                 mima[2]=turnstr(key1);
  213.                 break;
  214.             case 4:
  215.                 mima[3]=turnstr(key1);
  216.                 break;
  217.             case 5:
  218.                 mima[4]=turnstr(key1);
  219.                 break;
  220.             case 6:
  221.                 mima[5]=turnstr(key1);
  222.                 break;
  223.             }
  224.             if(count==6)                                             //密碼個數為6位
  225.             {
  226.                 count=0;
  227.                 delay_ms(100);
  228.                 break;
  229.             }
  230.             delay_ms(200);
  231.         }
  232.         AT24CXX_Write(0,(u8*)mima,6);
  233.         OLED_Clear();
  234.         OLED_ShowCH(0,16,"密碼修改成功");
  235.         OLED_Refresh_Gram();
  236.         delay_ms(800);
  237.     }
  238.     else
  239.     {
  240.         OLED_Clear();
  241.         OLED_ShowCH(0,16,"密碼修改錯誤");
  242.         OLED_Refresh_Gram();
  243.         delay_ms(800);
  244.         reok=1;
  245.     }
  246. }

  247. void incode(void)                            //按鍵輸入函數
  248. {
  249.     u8 key1,count=0;
  250.     OLED_Clear();
  251.     OLED_ShowCH(0,0,"請輸入密碼");
  252.     OLED_Refresh_Gram();
  253.     key1=key(0);                               //返回15
  254.     while(1)
  255.     {
  256.         key1=key(0);
  257.         while(key1==15)
  258.         {
  259.             key1=key(0);
  260.         }
  261.         count++;
  262.         switch(count)
  263.         {
  264.         case 1:
  265.             shurumima[0]=turnstr(key1);
  266.             break;
  267.         case 2:
  268.             shurumima[1]=turnstr(key1);
  269.             break;
  270.         case 3:
  271.             shurumima[2]=turnstr(key1);
  272.             break;
  273.         case 4:
  274.             shurumima[3]=turnstr(key1);
  275.             break;
  276.         case 5:
  277.             shurumima[4]=turnstr(key1);
  278.             break;
  279.         case 6:
  280.             shurumima[5]=turnstr(key1);
  281.             break;
  282.         }
  283.         if(count==6)
  284.         {
  285.             count=0;
  286.             ifmima();
  287.             delay_ms(100);
  288.             break;
  289.         }
  290.         delay_ms(200);
  291.     }
  292.     if(ture==1) {
  293.         OLED_Clear();
  294.         OLED_ShowCH(0,16,"密碼正確");
  295.         OLED_Refresh_Gram();
  296.         TIM_SetCompare1(TIM3,moto_up);
  297.         delay_ms(time);
  298.         TIM_SetCompare1(TIM3,moto_down);
  299.     }     //舵機開鎖等待1秒后關閉

  300.     if(ture==0) {
  301.         OLED_Clear();
  302.         OLED_ShowCH(0,16,"密碼錯誤");
  303.         OLED_Refresh_Gram();
  304.         delay_ms(800);
  305.     }
  306. }



  307. void turncode(void)//串口更改密碼函數
  308. {
  309.     for(i=0; i<6; i++)
  310.     {
  311.         mima[i]=turnmima[i+1];              //數據轉存(第一位為標志位省去)
  312.     }
  313.     AT24CXX_Write(0,(u8*)mima,6);
  314.     OLED_Clear();
  315.     OLED_ShowCH(0,16,"密碼修改成功");
  316.     OLED_Refresh_Gram();
  317.     reok=1;                              //標志位置一 返回主界面
  318.     delay_ms(800);
  319. }



  320. void ifmima(void)//密碼判斷函數
  321. {
  322.     for(i=0; i<6; i++)
  323.     {
  324.         if(shurumima[i]==mima[i])ture=1;     //數組比較正確標志位置一
  325.         else {
  326.             ture=0;    //不正確標志位置0
  327.             break;
  328.         }
  329.     }
  330.     for(j=0; j<6; j++)
  331.     {
  332.         shurumima[j]='0';                     //清空輸入密碼的數組
  333.     }
  334. }




  335. //刷指紋
  336. void press_FR(void)
  337. {
  338.     SearchResult seach;
  339.     u8 ensure;
  340.     u8 t=0;
  341.     while(1)
  342.     {
  343.         t++;
  344.         ensure = PS_GetImage();
  345.         OLED_Clear();
  346.         OLED_ShowCH(0,0,"請按手指");
  347.         OLED_Refresh_Gram();
  348.         if(ensure == 0x00)    //獲取圖像成功
  349.         {
  350.             ensure = PS_GenChar(CharBuffer1);
  351.             if(ensure == 0x00)  //生成特征成功
  352.             {
  353.                 ensure = PS_HighSpeedSearch(CharBuffer1, 0, 99, &seach);
  354.                 if(ensure == 0x00) //搜索成功
  355.                 {
  356.                     OLED_Clear();
  357.                     OLED_ShowCH(0, 16, "指紋驗證成功");
  358.                     OLED_Refresh_Gram();
  359.                     TIM_SetCompare1(TIM3,moto_up);
  360.                     delay_ms(1000);
  361.                     TIM_SetCompare1(TIM3,moto_down);
  362.                     // delay_ms(1500);
  363.                     delay_ms(1500);
  364.                     break;
  365.                 }
  366.                 else
  367.                 {   OLED_Clear();
  368.                     OLED_ShowCH(0, 16, "驗證失敗");
  369.                     OLED_Refresh_Gram();
  370.                     delay_ms(1500);
  371.                     break;
  372.                 }
  373.             }
  374.             else
  375.             {};
  376.         }
  377.         if(t==10)
  378.         {
  379.             t=0;
  380.             break;
  381.         }
  382.         delay_ms(500);
  383.     }
  384. }


  385. //添加指紋
  386. void Add_FR(void)
  387. {
  388.     u8 i, ensure, processnum = 0;
  389.     u8 ID_NUM = 0;
  390.     while(1)
  391.     {
  392.         switch (processnum)
  393.         {
  394.         case 0:
  395.             i++;
  396.             OLED_Clear();
  397.             OLED_ShowCH(0, 16, "請按手指");
  398.             OLED_Refresh_Gram();
  399.             ensure = PS_GetImage();
  400.             if(ensure == 0x00)
  401.             {
  402.                 ensure = PS_GenChar(CharBuffer1); //生成特征
  403.                 if(ensure == 0x00)
  404.                 {
  405.                     OLED_Clear();
  406.                     OLED_ShowCH(0, 16, "指紋正常");
  407.                     OLED_Refresh_Gram();
  408.                     i = 0;
  409.                     processnum = 1; //跳到第二步
  410.                 }
  411.             }
  412.             break;
  413.         case 1:
  414.             i++;
  415.             OLED_Clear();
  416.             ensure = PS_GetImage();
  417.             if(ensure == 0x00)
  418.             {
  419.                 ensure = PS_GenChar(CharBuffer2); //生成特征
  420.                 if(ensure == 0x00)
  421.                 {
  422.                     OLED_Clear();
  423.                     OLED_ShowCH(0, 16, "指紋正常");
  424.                     OLED_Refresh_Gram();
  425.                     i = 0;
  426.                     processnum = 2; //跳到第三步
  427.                 }
  428.                 else {
  429.                     OLED_ShowCH(0, 16,"失敗");
  430.                     OLED_Refresh_Gram();
  431.                 }
  432.             }
  433.             else {
  434.                 OLED_ShowCH(0, 16, "失敗");
  435.                 OLED_Refresh_Gram();
  436.             }
  437.             break;
  438.         case 2:
  439.             OLED_Clear();
  440.             OLED_ShowCH(0, 16, "對比兩次指紋");
  441.             OLED_Refresh_Gram();
  442.             ensure = PS_Match();
  443.             if(ensure == 0x00)
  444.             {   OLED_Clear();
  445.                 OLED_ShowCH(0, 16, "對比成功");
  446.                 OLED_Refresh_Gram();
  447.                 processnum = 3; //跳到第四步
  448.             }
  449.             else
  450.             {
  451.                 OLED_ShowCH(0, 16, "對比失敗");
  452.                 OLED_Refresh_Gram();
  453.                 i = 0;
  454.                 processnum = 0; //跳回第一步
  455.             }
  456.             delay_ms(500);
  457.             break;
  458.         case 3:
  459.             OLED_Clear();
  460.             OLED_ShowCH(0, 16, "可松開手指");
  461.             OLED_Refresh_Gram();
  462.             delay_ms(800);
  463.             OLED_Clear();
  464.             OLED_ShowCH(0, 16, "生成指紋模板");
  465.             OLED_Refresh_Gram();
  466.             delay_ms(500);
  467.             ensure = PS_RegModel();
  468.             if(ensure == 0x00)
  469.             {   OLED_Clear();
  470.                 OLED_ShowCH(0, 16, "生成指紋模板成功");
  471.                 OLED_Refresh_Gram();
  472.                 processnum = 4; //跳到第五步
  473.             }
  474.             else
  475.             {
  476.                 processnum = 0;
  477.                 OLED_ShowCH(0, 16, "失敗");
  478.                 OLED_Refresh_Gram();
  479.             }
  480.             delay_ms(1000);
  481.             break;
  482.         case 4:
  483.             OLED_Clear();
  484.             OLED_ShowCH(0, 16, "輸入用戶編號");
  485.             OLED_Refresh_Gram();
  486.             while(ID_NUM==0|ID_NUM==15)
  487.             {
  488.                 ID_NUM=key(0);
  489.             }
  490.             OLED_Clear();
  491.             OLED_ShowCH(0, 0, "用戶編號為");
  492.             OLED_ShowNum(0, 32, ID_NUM, 2, 24);
  493.             OLED_Refresh_Gram();
  494.             ensure = PS_StoreChar(CharBuffer2, ID_NUM); //儲存模板
  495.             delay_ms(800);
  496.             if(ensure == 0x00)
  497.             {
  498.                 OLED_Clear();
  499.                 OLED_ShowCH(0, 16, "錄入指紋成功");
  500.                 OLED_Refresh_Gram();
  501.                 delay_ms(1500);
  502.                 OLED_Clear();
  503.                 return ;
  504.             }
  505.             else
  506.             {
  507.                 OLED_Clear();
  508.                 processnum = 0;
  509.                 OLED_ShowCH(0, 16, "失敗");
  510.                 OLED_Refresh_Gram();
  511.             }
  512.             break;
  513.         }
  514.         delay_ms(400);
  515.         if(i == 10) //超過5次沒有按手指則退出
  516.         {
  517.             break;
  518.         }
  519.     }
  520. }


  521. //刪除指紋
  522. void Del_FR(void)
  523. {
  524.     u8  ensure;
  525.     u16 ID_NUM = 0;
  526.     OLED_Clear();
  527.     OLED_ShowCH(0, 2, "輸入清除用戶編號");
  528.     OLED_Refresh_Gram();
  529.     while(ID_NUM==0|ID_NUM==15)
  530.     {
  531.         ID_NUM=key(0);
  532.     }
  533.     ensure = PS_DeletChar(ID_NUM, 1); //刪除單個指紋
  534.     if(ensure == 0)
  535.     {
  536.         OLED_Clear();
  537.         OLED_ShowNum(0, 12, ID_NUM, 2, 12);
  538.         OLED_ShowCH(12, 12, "號刪除指紋成功");
  539.         OLED_Refresh_Gram();
  540.     }
  541.     else
  542.         OLED_ShowCH(0, 16, "刪除失敗");
  543.     delay_ms(1500);
  544. }

  545. void gui(u8 i)
  546. {
  547.     switch(i)
  548.     {
  549.         /*******************************************/
  550.         /*
  551.         主界面
  552.         */
  553.         /*******************************************/
  554.     case 0:
  555.         OLED_Clear();
  556.         OLED_ShowCH(8,  0, "控智控能控鎖控");
  557.         OLED_ShowCH(32, 16, "指紋解鎖");
  558.         OLED_ShowCH(32, 32, "密碼解鎖");
  559. //  OLED_ShowCH(32, 48, "軟件解鎖");
  560.         OLED_Refresh_Gram();
  561.         break;

  562.         /*******************************************/
  563.         /*
  564.         指紋解鎖界面
  565.         */
  566.         /*******************************************/
  567.     case 1:
  568.         OLED_Clear();
  569.         OLED_ShowCH(8,  0, "指控紋控解控鎖");
  570.         OLED_ShowCH(32, 16, "添加指紋");
  571.         OLED_ShowCH(32, 32, "刪除指紋");
  572.         OLED_ShowCH(32, 48, "驗證指紋");
  573.         OLED_Refresh_Gram();
  574.         break;

  575.         /*******************************************/


  576.         /*******************************************/
  577.         /*
  578.         按鍵解鎖主界面
  579.         */
  580.         /*******************************************/
  581.     case 2:
  582.         OLED_Clear();
  583.         OLED_ShowCH(8,  0, "密控碼控解控鎖");
  584.         OLED_ShowCH(32, 16,  "輸入密碼");
  585.         OLED_ShowCH(32, 32,  "修改密碼");
  586.         OLED_ShowCH(40, 48,   "返控回");
  587.         OLED_Refresh_Gram();
  588.         break;



  589.         /*******************************************/
  590.         /*
  591.         按鍵解鎖次界面
  592.         */
  593.         /*******************************************/
  594.     case 3:
  595.         OLED_Clear();
  596.         OLED_ShowCH(8,  0, "密控碼控解控鎖");
  597.         OLED_ShowCH(0, 16,  "請輸入密碼");
  598.         //OLED_ShowCH(32, 32,  "修改密碼");
  599.         OLED_ShowCH(88, 48,   "返回");
  600.         OLED_Refresh_Gram();
  601.         break;


  602.         /*******************************************/
  603.         /*
  604.         軟件解鎖次界面
  605.         */
  606.         /*******************************************/
  607.     case 4:
  608.         OLED_Clear();
  609.         OLED_ShowCH(8,  0, "軟控件控解控鎖");
  610.         OLED_ShowCH(0, 16,  "請連接軟件");
  611.         OLED_ShowCH(88, 48,   "返回");
  612.         OLED_Refresh_Gram();
  613.         break;
  614.     }
  615. }

  616. u8 turnstr(u8 d)
  617. {
  618.     switch(d)
  619.     {
  620.     case 0: {
  621.         return '0';
  622.         break;
  623.     }
  624.     case 1: {
  625.         return '1';
  626.         break;
  627.     }
  628.     case 2: {
  629.         return '2';
  630.         break;
  631.     }
  632.     case 3: {
  633.         return '3';
  634.         break;
  635.     }
  636.     case 4: {
  637.         return '4';
  638.         break;
  639.     }
  640.     case 5: {
  641.         return '5';
  642.         break;
  643.     }
  644.     case 6: {
  645.         return '6';
  646.         break;
  647.     }
  648.     case 7: {
  649.         return '7';
  650.         break;
  651.     }
  652.     case 8: {
  653.         return '8';
  654.         break;
  655.     }
  656.     case 9: {
  657.         return '9';
  658.         break;
  659.     }
  660.     }
  661. }
復制代碼


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 69av网| 欧美日韩高清一区二区三区 | 日韩伦理一区二区 | 亚洲国产一区视频 | 久久久人成影片一区二区三区 | av乱码 | 亚洲一区二区三区免费 | 97超碰免费 | 亚洲欧美日韩在线一区二区 | 国产成人精品一区二区三区视频 | 在线色网址 | 久久精品视频网站 | 久久久高清| 激情黄色在线观看 | 亚洲精品粉嫩美女一区 | 日本特黄a级高清免费大片 国产精品久久性 | 中文字幕高清在线 | av一级在线观看 | 超级乱淫av片免费播放 | 成人精品国产免费网站 | 亚洲精品视频网站在线观看 | av在线免费观看网站 | 在线成人精品视频 | 欧美在线a | 亚洲精品欧美 | 国产精品日韩 | 久久久国产视频 | 欧美成人影院在线 | 久久精品网 | 国产一在线观看 | 国产精品揄拍一区二区 | 99视频免费看 | 日韩精品成人 | 美女爽到呻吟久久久久 | 国产精品一区二区无线 | 丝袜美腿一区 | 91精品国产综合久久久久久 | 日韩一区二区三区在线观看 | 五月激情婷婷在线 | 成人国产a | 亚洲精品视频在线观看视频 |