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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5222|回復: 3
收起左側

stm32六位藍牙密碼鎖源碼設計

  [復制鏈接]
ID:258358 發表于 2018-12-21 10:47 | 顯示全部樓層 |閱讀模式
這是基于stm32F103RCT6的六位密碼鎖,分為兩種模式:普通模式和管理員模式 ,管理員模式下可更改密碼。密碼輸入方式:手機通過藍牙發
小白一個,大佬勿噴

接線:串口引腳(PA9,PA10)
手機軟件:BLUESPP   可以使用其他軟件
藍牙型號(HC-06)   可以使用其他藍牙模塊
數據類型:十六進制數據 其中0X0E為模式切換    0X0F為清除指令   密碼輸入只能為0-9的數字

單片機源程序如下:

  1. /********************************六位密碼鎖 *************************************************
  2. *接線:PF0~PF7
  3. *矩陣按鍵 S16 為清除數據(清屏)
  4. *矩陣按鍵 S15 為模式切換(普通模式(默認密碼 123456)和管理員模式(默認密碼666666),管理員模式可更改改密碼)
  5. *密碼只能輸入0-9的數字   其他無效
  6. *密碼正確LED0和LED1將會閃爍
  7. *輸入完6位密碼,系統將會自動判斷正確和錯誤
  8. *
  9. *已測試   可能存在BUG  自行修改
  10. ***************************************************************************************************/
  11. #include "sys.h"
  12. #include "delay.h"
  13. #include "usart.h"
  14. #include "led.h"                           
  15. #include "lcd.h"  
  16. #include "key.h"     
  17. #include "usmart.h"
  18. #include "malloc.h"  
  19. #include "rtc.h"
  20. #include "text.h"


  21. /*****************************************************密碼掉電丟失,恢復原始密碼*****************************************************************************/
  22. u8 open_pwd[6]={1,2,3,4,5,6};//初始密碼
  23. u8 root_pwd[6]={6,6,6,6,6,6};;//管理員密碼
  24. extern u8 Password[6];//輸入的密碼
  25. extern u8 Timer;//按鍵次數
  26. extern u8 ROOT,NEWROOT;//模式切換
  27. u8 Root,NewRoot;//管理員模式狀態標志位
  28. int main(void)
  29. {        
  30.         delay_init();                     //延時函數初始化         
  31.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
  32.          LED_Init();                                          //初始化與LED連接的硬件接口
  33.         uart_init(9600);                 //串口初始化為115200        
  34.         LCD_Init();                                           //初始化LCD   
  35.         while(font_init());         //檢查字庫
  36.         while(RTC_Init());                //RTC初始化        ,一定要初始化成功
  37.         while(1)
  38.         {  
  39.          if(NEWROOT!=ROOT)LCD_Clear(WHITE); NEWROOT=ROOT;  //清屏        
  40.                 Usart_ReceiveData() ;
  41.                 LCD_ShowString(10,10,200,16,16,"    -  -     ");           
  42.           LCD_ShowString(150,10,200,16,16,"  :  :  ");                 
  43.                 LCD_ShowNum(5,10,calendar.w_year,4,16);                                                                          
  44.                 LCD_ShowNum(45,10,calendar.w_month,2,16);                                                                          
  45.                 LCD_ShowNum(70,10,calendar.w_date,2,16);         
  46.                         switch(calendar.week)
  47.                         {
  48.                                 case 0:
  49.                                         LCD_ShowString(95,10,200,16,16,"Sunday   ");
  50.                                         break;         
  51.                                 case 1:         
  52.                                         LCD_ShowString(95,10,200,16,16,"Monday   ");
  53.                                         break;         
  54.                                 case 2:         
  55.                                         LCD_ShowString(95,10,200,16,16,"Tuesday  ");
  56.                                         break;         
  57.                                 case 3:         
  58.                                         LCD_ShowString(95,10,200,16,16,"Wednesday");
  59.                                         break;         
  60.                                 case 4:         
  61.                                         LCD_ShowString(95,10,200,16,16,"Thursday ");
  62.                                         break;         
  63.                                 case 5:         
  64.                                         LCD_ShowString(95,10,200,16,16,"Friday   ");
  65.                                         break;         
  66.                                 case 6:         
  67.                                         LCD_ShowString(95,10,200,16,16,"Saturday ");
  68.                                         break;  
  69.                         }
  70.                         LCD_ShowNum(150,10,calendar.hour,2,16);                                                                          
  71.                         LCD_ShowNum(174,10,calendar.min,2,16);                                                                          
  72.                         LCD_ShowNum(198,10,calendar.sec,2,16);                        
  73.                
  74.   /*****************************************************普     通     用    戶   模    式*****************************************************************************/
  75.                 if(ROOT==0)
  76.          {
  77.                 if(Timer<6)
  78.                 {
  79.                 POINT_COLOR=RED;
  80.           Show_Str(80,45,200,16,"普通模式      ",16,0);
  81.           Show_Str(40,70,200,16,"請輸入您的六位密碼       ",16,0);
  82.     Show_Str(40,110,200,16,"密碼為:",16,0);        
  83.                 }
  84.                 if(Timer==6)
  85.                 {
  86.                         if((Password[0]==open_pwd[0])&&(Password[1]==open_pwd[1])&&(Password[2]==open_pwd[2])&&(Password[3]==open_pwd[3])&&(Password[4]==open_pwd[4])&&(Password[5]==open_pwd[5]))
  87.                         {
  88.                                 Show_Str(40,70,200,16,"密碼正確,歡迎使用       ",16,0);
  89.                                 LED0=!LED0;LED1=!LED1;
  90.                         }
  91.                  else
  92.                         {
  93.                                 Show_Str(40,70,200,16,"密碼錯誤,請重新輸入",16,0);
  94.                         }
  95.     }               
  96.         }

  97.         
  98.          /*****************************************************管      理     員     模       式**********************************************************************/
  99. else   //管理員模式
  100. {
  101.   POINT_COLOR=BLUE;
  102.   Show_Str(80,45,200,16,"管理員模式         ",16,0);
  103.   if(Root==0)Show_Str(40,70,200,16,"請輸入管理員密碼    ",16,0);
  104.   if(Root<2)Show_Str(40,110,200,16,"密碼為:",16,0);
  105.         if(Root!=NewRoot) LCD_Fill(0,90,250,180,WHITE ); //狀態發生改變  清屏
  106.         NewRoot=Root;
  107.          if((Timer==6)||(Root==1))
  108.                 {
  109.                         if((Password[0]==root_pwd[0])&&(Password[1]==root_pwd[1])&&(Password[2]==root_pwd[2])&&(Password[3]==root_pwd[3])&&(Password[4]==root_pwd[4])&&(Password[5]==root_pwd[5]))
  110.                         {
  111.                                 if((Timer==6)&&(Root==0))Timer=0;Root=1;
  112.                                 Show_Str(40,70,200,16,"密碼正確,請輸入新密碼       ",16,0);
  113.                         }
  114.                   else
  115.                         {
  116.                                 Show_Str(40,70,200,16,"密碼錯誤,請重新輸入      ",16,0);Root=2;
  117.                                 LCD_Fill(0,100,250,250,WHITE );
  118.                         }
  119.     }               
  120. }         
  121. }
  122. }
復制代碼
0.png
所有資料51hei提供下載:
六位密碼鎖 藍牙.7z (4.2 MB, 下載次數: 107)

評分

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

查看全部評分

回復

使用道具 舉報

ID:337376 發表于 2018-12-23 18:57 | 顯示全部樓層
謝謝分享,O(∩_∩)O
回復

使用道具 舉報

ID:454897 發表于 2018-12-25 21:26 | 顯示全部樓層
請問這個怎么接線啊??
回復

使用道具 舉報

ID:849033 發表于 2020-11-29 11:35 | 顯示全部樓層
請問是怎么連線的呀
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区片 | 91中文在线观看 | 精品国产一级 | 91一区二区三区 | 精品在线免费看 | 亚洲自拍偷拍免费视频 | 国产视频在线一区二区 | 在线播放亚洲 | 久久久精品高清 | 久久久123 | 精品成人一区二区 | a视频在线观看 | 亚洲精品一区在线观看 | 成人av免费网站 | 亚洲精品一二三区 | 欧美黄色片 | 国产亚洲精品精品国产亚洲综合 | 波多野结衣中文视频 | 日韩欧美国产精品一区 | 国产成人精品亚洲日本在线观看 | 国内自拍真实伦在线观看 | 91欧美精品成人综合在线观看 | 五月婷婷视频 | 国产精品99精品久久免费 | 国产精品久久久99 | 亚洲精选一区 | 成人欧美一区二区三区在线观看 | 91在线一区二区三区 | 日韩av一区二区在线观看 | 国产精品一区一区三区 | 国产精品日产欧美久久久久 | jlzzxxxx18hd护士| 日本三级电影在线看 | 中文字幕在线二区 | 黄色欧美 | 人人艹人人爽 | 成人在线观看欧美 | 国产欧美一区二区三区久久手机版 | 国产一区二区三区四 | 欧美日韩国产精品激情在线播放 | 国产美女在线观看 |