typora-root-url: ./
【畢業(yè)設計】58-基于51單片機的智能語音密碼鎖設計(原理工程+PCB工程+仿真工程+源代碼+答辯論文+實物圖)
任務書
主要研究內(nèi)容:
掌握電子密碼鎖的原理、構造、以及運用51單片機設計出一款簡易密碼鎖,實現(xiàn)相應的一些要求;掌握并且實際運用所學知識,將書中知識轉化為實際能力;對密碼鎖的應用和未來的發(fā)展進行分析。
研究方法:
通過相關的書籍和網(wǎng)上資料,查閱相關資料,收集有用的信息。研究已有的設計,逐步完善自己的設計,同時咨詢指導老師,以達到專業(yè)標準,順利完成合格的設計。
要求:
設計一個具有設置數(shù)字密碼任設、存儲、畫面顯示、語言播報以及具有報警功能的密碼鎖。密碼鎖具有語言播報和狀態(tài)顯示功能。一次性只允許三次密碼輸入操作,支持密碼修改。具有報警功能。
原理圖工程文件
原理圖截圖
PCB工程文件
仿真模型工程文件
源代碼工程
仿真截圖
實物圖片
答辯論文低重復率文檔,26009字
英文文獻及翻譯
任務書
設計說明書
摘要
本次設計基于51單片機的智能語音密碼鎖設計,電子密碼鎖需要實現(xiàn)密碼鎖的開鎖、解鎖、以及更改密碼等功能,再通過LED燈和蜂鳴器輔助表示其狀態(tài)等功能。需要使用51單片機及其外圍電路組成控制系統(tǒng)。單片機最小系統(tǒng)、LCD1602顯示器、鍵盤、AT2402儲存器、蜂鳴器、LED、語音模塊、喇叭組合而成。
通過對當前關于鎖的發(fā)展背景分析,確定系統(tǒng)功能實現(xiàn)。然后對系統(tǒng)的硬件與軟件進行設計。整個系統(tǒng)是以模塊化的形式設計電路的各個子電路為一個功能模塊,最后匯總到一起組成的控制系統(tǒng)應用電路。軟件設計同樣是以模塊化的形式編寫程序,按照功能對軟件驅動劃分最后調(diào)用到主函數(shù)中。最后制作實物,通過對系統(tǒng)電路連接,并將程序導入到單片中,運行調(diào)試。
最后測試系統(tǒng)功能與系統(tǒng)穩(wěn)定性,總結完成設計的相應功能,完成了本次的設計。
設計框架架構
前 言… 1
第一章 緒論… 2
第一節(jié) 電子密碼鎖的研究背景… 2
第二節(jié) 電子密碼鎖的研究現(xiàn)狀及趨勢… 3
一、研究現(xiàn)狀… 3
二、研究趨勢… 3
第三節(jié) 電子密碼鎖的研究意義… 4
第四節(jié) 論文主要研究內(nèi)容… 5
第五節(jié) 本章小節(jié)… 6
第二章 電子密碼鎖的設計方案… 7
第一節(jié) 系統(tǒng)的設計功能分析… 7
第二節(jié) 元器件使用方案選擇… 7
一、主控制器選擇… 7
二、顯示器件的選擇… 8
第二節(jié) 電子密碼鎖的系統(tǒng)結構… 9
第三節(jié) 本章小結… 9
第三章 電子密碼鎖的硬件設計… 11
第一節(jié) 單片機最小系統(tǒng)… 11
第二節(jié) 矩陣按鍵電路… 12
第三節(jié) AT24C02電路… 13
第四節(jié) LCD1602顯示器電路… 14
第五節(jié) 蜂鳴器及LED電路… 14
第六節(jié) 語音播報電路… 15
第六節(jié) 電源電路… 16
第七節(jié) 系統(tǒng)的總電路… 17
第八節(jié) 本章小結… 18
第四章 系統(tǒng)的軟件設計… 19
第一節(jié) 編程軟件的介紹… 19
第二節(jié) 主程序設計… 20
第三節(jié) AT24C02程序設計… 21
第四節(jié) 矩陣鍵盤程序設計… 21
第五節(jié) 蜂鳴器報警及LED程序設計… 22
第六節(jié) LCD1602顯示程序設計… 23
第七節(jié) 語音播報程序設計… 24
第八節(jié) 本章小結… 25
第五章 實物制作與調(diào)試… 26
第一節(jié) 實物制作與調(diào)試… 26
第三節(jié) 功能測試… 28
第四節(jié) 本章小節(jié)… 34
結 論… 35
致 謝… 37
參考文獻… 38
附 錄… 40
一、英文原文… 40
二、英文翻譯… 43
三、源代碼… 46
設計說明書及設計文件
開發(fā)項目需要使用的軟件,百度云共享
AD16
鏈接:https://pan.baidu.com/s/1FIhJkE0Pv2mRxJIooRzKNA
提取碼:uqvd
Keil4
鏈接:https://pan.baidu.com/s/1_0qtwROJ6hDeioyG0XL-xg
提取碼:t82c
Visio
鏈接:https://pan.baidu.com/s/1aS8FCZat7lAdHjclNa8owA
提取碼:l9o1
Proteus
鏈接:https://pan.baidu.com/s/1GinRzP3QHtfVOIBxJ5yD3w
提取碼:u0vb
其他資料
matlab2018b
鏈接:https://pan.baidu.com/s/1xVTUiPleysWvhy-Xl_JqNg
提取碼:4tpn
NI Multisim 14.0
鏈接:https://pan.baidu.com/s/15K4Lms3Jx0ba3DPXTxVCeQ
提取碼:vwpy文章來源:http://www.zghlxwxcb.cn/news/detail-445626.html
本文資料提?。嘿Y料文章來源地址http://www.zghlxwxcb.cn/news/detail-445626.html
源碼展示
#include <reg52.h> //調(diào)用單片機頭文件
#define uchar unsigned char //無符號字符型 宏定義 變量范圍0~255
#define uint unsigned int //無符號整型 宏定義 變量范圍0~65535
uchar i; //變量
sbit relay = P2^2; //繼電器定義
sbit beep = P3^3; //蜂鳴器定義
sbit beiguan = P2^3; //背光
uint flag_time;
uint flag_guan;
uchar dis_smg[7]={0};
uchar password[7]={0}; //密碼保存
uchar password_bj[7]={0}; //密碼比較
uchar code password_r[6] = {1,2,3,1,2,3} ;
uchar code password_gl[6] = {5,2,0,0,2,5} ;
uchar password_xg[6]; //密碼修改
uchar flag_password; //密碼正確否
uchar flag_password_cichu1;//密碼錯誤次數(shù)
uchar flag_200ms=1; //200毫秒的變量
uchar menu_1,menu_i;
/***********************語音模塊控制IO口的定義************************/
sbit VBUSY = P3^4; //忙腳
sbit VDATA = P3^5; //數(shù)據(jù)輸入腳
sbit VCS = P3^6; //片選腳
sbit VCLK = P3^7; //時鐘腳
sbit scl = P2^1; //24c02信號引腳
sbit sda = P2^0; //24c02數(shù)據(jù)引腳
/***********************1ms延時函數(shù)*****************************/
void delay_1ms(uint q)
{
uint i,j;
for(i=0;i<q;i++)
for(j=0;j<120;j++);
}
/***********************語音模塊子程序************************/
void Send_threelines(unsigned char addr)
{
unsigned char i;
VCS=0; //片選腳 低電平
for(i=0;i<8;i++) //8位的數(shù)據(jù) 要循環(huán)8次1位1位的寫入
{
VCLK=0; //時鐘腳 低電平
if(addr&0x01 == 0x01)
{
VDATA=1; //數(shù)據(jù)輸入腳 寫數(shù)據(jù)1
}
else
VDATA=0; //數(shù)據(jù)輸入腳 寫數(shù)據(jù)0
addr<<=1; //數(shù)據(jù)左移一位
VCLK=1; //時鐘腳 高電平
}
VCS=1; //片選腳 高電平
while(VBUSY == 0); //忙等待
}
sbit rs=P2^5; //寄存器選擇信號 H:數(shù)據(jù)寄存器 L:指令寄存器
sbit rw=P2^6; //寄存器選擇信號 H:數(shù)據(jù)寄存器 L:指令寄存器
sbit e =P2^7; //片選信號 下降沿觸發(fā)
/********************************************************************
* 名稱 : delay_uint()
* 功能 : 小延時。
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void delay_uint(uint q)
{
while(q--);
}
/********************************************************************
* 名稱 : write_com(uchar com)
* 功能 : 1602指令函數(shù)
* 輸入 : 輸入的指令值
* 輸出 : 無
***********************************************************************/
void write_com(uchar com)
{
rs=0; //寫指令
rw=0; //對1602寫操作
P0=com; //P0口對1602寫指令數(shù)據(jù)
delay_uint(25);
e=1; //e=1使能信號
delay_uint(100); //延時一下等1602完成操作
e=0;
}
/********************************************************************
* 名稱 : write_data(uchar dat)
* 功能 : 1602寫數(shù)據(jù)函數(shù)
* 輸入 : 需要寫入1602的數(shù)據(jù)
* 輸出 : 無
***********************************************************************/
void write_data(uchar dat)
{
rs=1; //寫數(shù)據(jù)
rw=0; //對1602寫操作
P0=dat; //P0口對1602寫數(shù)據(jù)
delay_uint(25);
e=1; //e=1使能信號
delay_uint(100); //延時一下等1602完成操作
e=0;
}
/*********************光標控制***********************/
void lcd1602_guanbiao(uchar open_off,uchar add)
{
if(open_off == 1) //開光標
{
write_com(0x80+add); //將光標移動到秒個位
write_com(0x0f); //顯示光標并且閃爍
}
else
{
write_com(0x0c); //關光標
}
}
/***********************lcd1602上顯示兩位十進制數(shù)************************/
void write_lcd2(uchar hang,uchar add,uchar date)
{
if(hang==1)
write_com(0x80+add); //1602寫第一行的地址
else
write_com(0x80+0x40+add); //1602寫第二行的地址
write_data(0x30+date/10%10); //顯示十位數(shù)
write_data(0x30+date%10); //顯示個位數(shù)
}
/***********************lcd1602上顯示這字符函數(shù)************************/
void write_string(uchar hang,uchar add,uchar *p)
{
if(hang==1)
write_com(0x80+add); //1602寫第一行的地址
else
write_com(0x80+0x40+add); //1602寫第二行的地址
while(1)
{
if(*p == '\0') break; //\0字符串的結尾標志 break結束while循環(huán) 結束寫字符
write_data(*p); //寫數(shù)據(jù)
p++; //指針地址加1
}
}
/***********************lcd1602初始化設置************************/
void init_1602()
{
write_com(0x38); //顯示模式設置:16×2顯示,5×7點陣,8位數(shù)據(jù)接口 不檢測忙信號
write_com(0x0c); //開顯示 不顯示光標
write_com(0x06); //當寫一個字符是,地址指針加 1
write_string(1,0," Password Lock ");
write_string(2,0," Input: ");
lcd1602_guanbiao(1,7+0x40); //開光標 第2行第7位顯示光標
}
/***************啟始信號 ***************************/
void start()
{
sda = 1;
scl = 1;
sda = 0;
scl = 0;
}
/****************結束信號 **************************/
void stop()
{
sda = 0;
scl = 1;
sda = 1;
scl = 0;
}
/*****************檢測應答*************************/
void ack()
{
uchar i;
sda = 1;
scl = 1;
while((i < 100) & (sda == 1)) i++;
scl =0;
}
/*****************非應答*************************/
void no_ack()
{
sda = 1;
scl = 1;
scl = 0;
}
/*****************寫一個字節(jié)*************************/
void write_iic(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
scl = 0;
dat <<= 1 ;
sda = CY;
scl = 1;
}
scl = 0;
}
到了這里,關于【畢業(yè)設計】58-基于51單片機的智能語音密碼鎖設計(原理工程+PCB工程+仿真工程+源代碼+答辯論文+實物圖)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!