標題:
stm32六位藍牙密碼鎖源碼設計
[打印本頁]
作者:
SPOPULAY
時間:
2018-12-21 10:47
標題:
stm32六位藍牙密碼鎖源碼設計
這是基于stm32F103RCT6的六位密碼鎖,分為兩種模式:普通模式和管理員模式 ,管理員模式下可更改密碼。密碼輸入方式:手機通過藍牙發(fā)
小白一個,大佬勿噴
接線:串口引腳(PA9,PA10)
手機軟件:BLUESPP 可以使用其他軟件
藍牙型號(HC-06) 可以使用其他藍牙模塊
數據類型:十六進制數據 其中0X0E為模式切換 0X0F為清除指令 密碼輸入只能為0-9的數字
單片機源程序如下:
/********************************六位密碼鎖 *************************************************
*接線:PF0~PF7
*矩陣按鍵 S16 為清除數據(清屏)
*矩陣按鍵 S15 為模式切換(普通模式(默認密碼 123456)和管理員模式(默認密碼666666),管理員模式可更改改密碼)
*密碼只能輸入0-9的數字 其他無效
*密碼正確LED0和LED1將會閃爍
*輸入完6位密碼,系統(tǒng)將會自動判斷正確和錯誤
*
*已測試 可能存在BUG 自行修改
***************************************************************************************************/
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "key.h"
#include "usmart.h"
#include "malloc.h"
#include "rtc.h"
#include "text.h"
/*****************************************************密碼掉電丟失,恢復原始密碼*****************************************************************************/
u8 open_pwd[6]={1,2,3,4,5,6};//初始密碼
u8 root_pwd[6]={6,6,6,6,6,6};;//管理員密碼
extern u8 Password[6];//輸入的密碼
extern u8 Timer;//按鍵次數
extern u8 ROOT,NEWROOT;//模式切換
u8 Root,NewRoot;//管理員模式狀態(tài)標志位
int main(void)
{
delay_init(); //延時函數初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優(yōu)先級分組為組2:2位搶占優(yōu)先級,2位響應優(yōu)先級
LED_Init(); //初始化與LED連接的硬件接口
uart_init(9600); //串口初始化為115200
LCD_Init(); //初始化LCD
while(font_init()); //檢查字庫
while(RTC_Init()); //RTC初始化 ,一定要初始化成功
while(1)
{
if(NEWROOT!=ROOT)LCD_Clear(WHITE); NEWROOT=ROOT; //清屏
Usart_ReceiveData() ;
LCD_ShowString(10,10,200,16,16," - - ");
LCD_ShowString(150,10,200,16,16," : : ");
LCD_ShowNum(5,10,calendar.w_year,4,16);
LCD_ShowNum(45,10,calendar.w_month,2,16);
LCD_ShowNum(70,10,calendar.w_date,2,16);
switch(calendar.week)
{
case 0:
LCD_ShowString(95,10,200,16,16,"Sunday ");
break;
case 1:
LCD_ShowString(95,10,200,16,16,"Monday ");
break;
case 2:
LCD_ShowString(95,10,200,16,16,"Tuesday ");
break;
case 3:
LCD_ShowString(95,10,200,16,16,"Wednesday");
break;
case 4:
LCD_ShowString(95,10,200,16,16,"Thursday ");
break;
case 5:
LCD_ShowString(95,10,200,16,16,"Friday ");
break;
case 6:
LCD_ShowString(95,10,200,16,16,"Saturday ");
break;
}
LCD_ShowNum(150,10,calendar.hour,2,16);
LCD_ShowNum(174,10,calendar.min,2,16);
LCD_ShowNum(198,10,calendar.sec,2,16);
/*****************************************************普 通 用 戶 模 式*****************************************************************************/
if(ROOT==0)
{
if(Timer<6)
{
POINT_COLOR=RED;
Show_Str(80,45,200,16,"普通模式 ",16,0);
Show_Str(40,70,200,16,"請輸入您的六位密碼 ",16,0);
Show_Str(40,110,200,16,"密碼為:",16,0);
}
if(Timer==6)
{
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]))
{
Show_Str(40,70,200,16,"密碼正確,歡迎使用 ",16,0);
LED0=!LED0;LED1=!LED1;
}
else
{
Show_Str(40,70,200,16,"密碼錯誤,請重新輸入",16,0);
}
}
}
/*****************************************************管 理 員 模 式**********************************************************************/
else //管理員模式
{
POINT_COLOR=BLUE;
Show_Str(80,45,200,16,"管理員模式 ",16,0);
if(Root==0)Show_Str(40,70,200,16,"請輸入管理員密碼 ",16,0);
if(Root<2)Show_Str(40,110,200,16,"密碼為:",16,0);
if(Root!=NewRoot) LCD_Fill(0,90,250,180,WHITE ); //狀態(tài)發(fā)生改變 清屏
NewRoot=Root;
if((Timer==6)||(Root==1))
{
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]))
{
if((Timer==6)&&(Root==0))Timer=0;Root=1;
Show_Str(40,70,200,16,"密碼正確,請輸入新密碼 ",16,0);
}
else
{
Show_Str(40,70,200,16,"密碼錯誤,請重新輸入 ",16,0);Root=2;
LCD_Fill(0,100,250,250,WHITE );
}
}
}
}
}
復制代碼
0.png
(43.36 KB, 下載次數: 46)
下載附件
2018-12-22 01:48 上傳
所有資料51hei提供下載:
六位密碼鎖 藍牙.7z
(4.2 MB, 下載次數: 107)
2018-12-22 01:47 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
xode
時間:
2018-12-23 18:57
謝謝分享,O(∩_∩)O
作者:
linlincm
時間:
2018-12-25 21:26
請問這個怎么接線??
作者:
趙亞波
時間:
2020-11-29 11:35
請問是怎么連線的呀
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1