本設計以STC89C52單片機為核心控制器,加上其他的模塊一起組成藍牙密碼鎖的整個系統,其中包含中控部分、輸入部分和輸出部分。中控部分采用了STC89C52單片機,其主要作用是獲取輸入部分數據,經過內部處理,控制輸出部分。輸入由五部分組成,第一部分是DS1302時鐘模塊,通過該模塊可檢測當前的時間;第二部分是儲存模塊,采用AT24C02芯片,存儲按鍵輸入的信息;第三部分是DS18B20溫度檢測模塊,通過該模塊可檢測當前的溫度;第四部分是4*4矩陣鍵盤,按鍵主要功能有一鍵關門、顯示時間、重新設置密碼、取消鍵、確認鍵、輸入密碼;第五部分是供電電路,給整個系統進行供電。輸出由三部分組成,第一部分是LCD1602顯示模塊, 通過該模塊可以顯示門的開關狀態、輸入的密碼顯示、重置密碼時的顯示等;第二部分是藍牙模塊,通過該模塊可連接手機;第三部分是蜂鳴器,當鍵盤鎖定且有按鍵按下時,蜂鳴器作為按鍵音提醒。
#include "main.h"
#include "lcd1602.h"
#include "key.h"
#include "IIC.h"
#include "ds18b20.h"
#include "ds1302.h"
#include "uart.h"
/**********************************
變量定義
**********************************/
extern uchar uart_num;
uint temp_value;
uint randdata;
uint randdata1;
uchar TimeOutCounter = 0;
uchar LeftOrRight = 0;
uchar key_bianma = 0; //按鍵編碼標志位變量
uchar key_num = 0; //按鍵掃描標志位變量
uchar flag_key_en = 1; //按鍵使能標志位變量
uchar flag_reset_password = 0; //重置密碼標志位變量
uchar flag_reset_adminpassword = 0;
uchar flag_stat_door = 0; //門狀態標志位
uchar flag_reset_password_num = 0; //重置密碼次數標志位變量
uchar flag_error_num = 0; //密碼錯誤次數標志位變量
uchar flag_error_time = 180; //密碼錯誤時間標志位變量
uchar password[6] = {1,2,3,4,5,6}; //初始密碼數組
uchar adminpassword[6] = {1,2,3,4,5,6}; //初始管理員密碼數組
uchar password_input[6] = {0,0,0,0,0,0}; //輸入密碼數組
uchar password_reset[6] = {0,0,0,0,0,0}; //重置密碼數組
uchar password_num = 0; //密碼數量標志位變量
uint time_jishi = 0; //10ms計時變量
/**********************************
函數聲明
**********************************/
void Delay_function(uint x); //延時函數
void Key_function(void); //按鍵函數
void Ensure_function(void); //確定函數
void Reset_password_function(void); //重置密碼函數
void Write_init_EEPROM();
void Timer0Init();
/****
******* 主函數
*****/
void main()
{
Timer0Init();
Uart_Init();
Ds1302_Init();
Lcd1602_Init(); //LCD1602初始化
Delay_function(50); //延時50ms
lcd1602_clean(); //清屏
Delay_function(50); //延時50ms
Init_IIC(); //總線初始化,拉高釋放總線
Delay_function(50); //延時50ms
//寫過一次后關閉,無需重復寫初值
// Write_init_EEPROM(); //寫入初始密碼123456到E2PROM
// ds1302_write_time();
lcd1602_display_str(1,0,"===Coded Lock===");//初始化界面
lcd1602_display_str(2,0,"Password:");
while(1)
{
//將密碼從24C02中讀出來,包括管理員密碼以及使用密碼
password[0]=read_add(1);
password[1]=read_add(2);
password[2]=read_add(3);
password[3]=read_add(4);
password[4]=read_add(5);
password[5]=read_add(6);
adminpassword[0]=read_add(7);
adminpassword[1]=read_add(8);
adminpassword[2]=read_add(9);
adminpassword[3]=read_add(10);
adminpassword[4]=read_add(11);
adminpassword[5]=read_add(12);
Key_function(); //按鍵函數
Reset_password_function(); //重置密碼函數
//輸入密碼三次錯誤后執行如下程序
if(flag_error_num == 3)
{
flag_key_en = 0;
?
-
藍牙
+關注
關注
114文章
5835瀏覽量
170625 -
密碼鎖
+關注
關注
6文章
249瀏覽量
35040 -
51單片機
+關注
關注
274文章
5705瀏覽量
123801
發布評論請先 登錄
相關推薦
評論