標(biāo)題:
stm32六位藍(lán)牙密碼鎖源碼設(shè)計(jì)
[打印本頁(yè)]
作者:
SPOPULAY
時(shí)間:
2018-12-21 10:47
標(biāo)題:
stm32六位藍(lán)牙密碼鎖源碼設(shè)計(jì)
這是基于stm32F103RCT6的六位密碼鎖,分為兩種模式:普通模式和管理員模式 ,管理員模式下可更改密碼。密碼輸入方式:手機(jī)通過藍(lán)牙發(fā)
小白一個(gè),大佬勿噴
接線:串口引腳(PA9,PA10)
手機(jī)軟件:BLUESPP 可以使用其他軟件
藍(lán)牙型號(hào)(HC-06) 可以使用其他藍(lán)牙模塊
數(shù)據(jù)類型:十六進(jìn)制數(shù)據(jù) 其中0X0E為模式切換 0X0F為清除指令 密碼輸入只能為0-9的數(shù)字
單片機(jī)源程序如下:
/********************************六位密碼鎖 *************************************************
*接線:PF0~PF7
*矩陣按鍵 S16 為清除數(shù)據(jù)(清屏)
*矩陣按鍵 S15 為模式切換(普通模式(默認(rèn)密碼 123456)和管理員模式(默認(rèn)密碼666666),管理員模式可更改改密碼)
*密碼只能輸入0-9的數(shù)字 其他無效
*密碼正確LED0和LED1將會(huì)閃爍
*輸入完6位密碼,系統(tǒng)將會(huì)自動(dòng)判斷正確和錯(cuò)誤
*
*已測(cè)試 可能存在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"
/*****************************************************密碼掉電丟失,恢復(fù)原始密碼*****************************************************************************/
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;//按鍵次數(shù)
extern u8 ROOT,NEWROOT;//模式切換
u8 Root,NewRoot;//管理員模式狀態(tài)標(biāo)志位
int main(void)
{
delay_init(); //延時(shí)函數(shù)初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級(jí)分組為組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
LED_Init(); //初始化與LED連接的硬件接口
uart_init(9600); //串口初始化為115200
LCD_Init(); //初始化LCD
while(font_init()); //檢查字庫(kù)
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,"請(qǐng)輸入您的六位密碼 ",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,"密碼錯(cuò)誤,請(qǐng)重新輸入",16,0);
}
}
}
/*****************************************************管 理 員 模 式**********************************************************************/
else //管理員模式
{
POINT_COLOR=BLUE;
Show_Str(80,45,200,16,"管理員模式 ",16,0);
if(Root==0)Show_Str(40,70,200,16,"請(qǐng)輸入管理員密碼 ",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,"密碼正確,請(qǐng)輸入新密碼 ",16,0);
}
else
{
Show_Str(40,70,200,16,"密碼錯(cuò)誤,請(qǐng)重新輸入 ",16,0);Root=2;
LCD_Fill(0,100,250,250,WHITE );
}
}
}
}
}
復(fù)制代碼
0.png
(43.36 KB, 下載次數(shù): 46)
下載附件
2018-12-22 01:48 上傳
所有資料51hei提供下載:
六位密碼鎖 藍(lán)牙.7z
(4.2 MB, 下載次數(shù): 107)
2018-12-22 01:47 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
xode
時(shí)間:
2018-12-23 18:57
謝謝分享,O(∩_∩)O
作者:
linlincm
時(shí)間:
2018-12-25 21:26
請(qǐng)問這個(gè)怎么接線啊??
作者:
趙亞波
時(shí)間:
2020-11-29 11:35
請(qǐng)問是怎么連線的呀
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1