加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入

基于51單片機(jī)的藍(lán)牙密碼鎖設(shè)計(jì)

10/22 09:09
1241
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗(yàn)、收獲成長(zhǎng)和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
實(shí)物圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

本設(shè)計(jì)以STC89C52單片機(jī)為核心控制器,加上其他的模塊一起組成藍(lán)牙密碼鎖的整個(gè)系統(tǒng),其中包含中控部分、輸入部分和輸出部分。

中控部分采用了STC89C52單片機(jī),其主要作用是獲取輸入部分?jǐn)?shù)據(jù),經(jīng)過內(nèi)部處理,控制輸出部分。

輸入由五部分組成:
第一部分是DS1302時(shí)鐘模塊,通過該模塊可檢測(cè)當(dāng)前的時(shí)間;
第二部分是儲(chǔ)存模塊,采用AT24C02芯片,存儲(chǔ)按鍵輸入的信息;
第三部分是DS18B20溫度檢測(cè)模塊,通過該模塊可檢測(cè)當(dāng)前的溫度;
第四部分是4*4矩陣鍵盤,按鍵主要功能有一鍵關(guān)門、顯示時(shí)間、重新設(shè)置密碼、取消鍵、確認(rèn)鍵、輸入密碼;
第五部分是供電電路,給整個(gè)系統(tǒng)進(jìn)行供電。

輸出由三部分組成:
第一部分是LCD1602顯示模塊, 通過該模塊可以顯示門的開關(guān)狀態(tài)、輸入的密碼顯示、重置密碼時(shí)的顯示等;
第二部分是藍(lán)牙模塊,通過該模塊可連接手機(jī);
第三部分是蜂鳴器,當(dāng)鍵盤鎖定且有按鍵按下時(shí),蜂鳴器作為按鍵音提醒。

#include "main.h"

#include "lcd1602.h"

#include "key.h"

#include "IIC.h"

#include "ds18b20.h"

#include "ds1302.h"

#include "uart.h"

/**********************************

變量定義

**********************************/

extern char time_buf[8];

extern uchar uart_num;

uint temp_value;

uint randdata;

uint randdata1;

uchar TimeOutCounter = 0;

uchar LeftOrRight = 0;

uchar key_bianma = 0; //按鍵編碼標(biāo)志位變量

uchar key_num = 0; //按鍵掃描標(biāo)志位變量

uchar flag_key_en = 1; //按鍵使能標(biāo)志位變量

uchar flag_reset_password = 0; //重置密碼標(biāo)志位變量

uchar flag_reset_adminpassword = 0;

uchar flag_stat_door = 0; //門狀態(tài)標(biāo)志位

uchar flag_reset_password_num = 0; //重置密碼次數(shù)標(biāo)志位變量

uchar flag_error_num = 0; //密碼錯(cuò)誤次數(shù)標(biāo)志位變量

uchar flag_error_time = 180; //密碼錯(cuò)誤時(shí)間標(biāo)志位變量

uchar password[6] = {1,2,3,4,5,6}; //初始密碼數(shù)組

uchar adminpassword[6] = {1,2,3,4,5,6}; //初始管理員密碼數(shù)組

uchar password_input[6] = {0,0,0,0,0,0}; //輸入密碼數(shù)組

uchar password_reset[6] = {0,0,0,0,0,0}; //重置密碼數(shù)組

uchar password_num = 0; //密碼數(shù)量標(biāo)志位變量

uint time_jishi = 0; //10ms計(jì)時(shí)變量

/**********************************

函數(shù)聲明

**********************************/

void Delay_function(uint x); //延時(shí)函數(shù)

void Key_function(void); //按鍵函數(shù)

void Ensure_function(void); //確定函數(shù)

void Reset_password_function(void); //重置密碼函數(shù)

void Write_init_EEPROM();

void Timer0Init();

/****

******* 主函數(shù)

*****/

void main()

{

Timer0Init();

Uart_Init();

Ds1302_Init();

Lcd1602_Init(); //LCD1602初始化

Delay_function(50); //延時(shí)50ms

lcd1602_clean(); //清屏

Delay_function(50); //延時(shí)50ms

Init_IIC(); //總線初始化,拉高釋放總線

Delay_function(50); //延時(shí)50ms

//寫過一次后關(guān)閉,無需重復(fù)寫初值

// 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(); //按鍵函數(shù)

Reset_password_function(); //重置密碼函數(shù)

//輸入密碼三次錯(cuò)誤后執(zhí)行如下程序

if(flag_error_num == 3)

{

flag_key_en = 0;

紛傳文章借鑒與此

  • 有需要資料的可了解一下.docx

相關(guān)推薦

電子產(chǎn)業(yè)圖譜