㈠ 電子密碼鎖設計基於51單片機
[1]單片機多功能密碼鎖系統/防火防盜系統設計
實現功能:
1、 密碼鎖功能/可以修改密碼, 下次開機後新密碼仍然有效
2、 支持一鍵恢復初始密碼
3、 可添加防火防盜報警功能
4、 可進行功能定製
☆已作出的實物優酷視頻演示地址:
http://v.youku.com/v_show/id_XMTUwMjg3MjQyOA==.html
單片機藍牙密碼鎖系統
實現功能:
1、 密碼鎖功能/可以修改密碼, 下次開機後新密碼仍然有效
2、 支持一鍵恢復初始密碼
3、 手機藍牙可以實現輸入密碼進行開鎖
4、 可進行功能定製
☆已作出的實物優酷視頻演示地址:
http://v.youku.com/v_show/id_XMjgxNjQ0MjA4MA==.htm
㈡ 單片機電子密碼鎖設計,採用4×4鍵盤實現密碼的輸入功能,當密碼輸入正確之後,鎖就打開,如果輸入的密碼
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define KEY P3 //鍵盤輸入埠
#define No_key 20 //無按鍵時的返回值
#define lcddata P2 //1602的數據輸入埠
sbit lcden= P1^2;
sbit lcdrs= P1^0;
sbit lcdrw= P1^1;
sbit light= P1^3;
sbit light1= P1^4;
uchar j ; //用來統計輸入 個數的全局變數
uchar aa; //用來在定時器中計數的 全局變數
uchar code table[]= " Hello!";
uchar code table1[]=" OK! " ;
uchar code table2[]="Enter please:" ;
uchar code key_table[16] =
{
1,2,3,10,
4,5,6,11,
7,8,9,12,
0,13,14,15
};
uchar password[]={2,0,1,0,9,3} ; //設定初始密碼
uchar save[6]; //保存輸入的數據
uchar conflag ; //確認標志
uchar lockflag; //鎖鍵盤標志
uchar startflag; //開始標志
void delay(uint z); //延時子函數
void wright_com(uchar com); //寫指令函數
void wright_data(uchar date) ; //寫數據函數
void init(); //初始化
void display_OK(); // 顯示OK
void delete(); //刪除輸入的最後一個數
uchar keyscan() ; //帶返回值的鍵盤掃描程序
void enter_code(uchar t); //輸入密碼函數,把輸入的數據存入數組中並在屏幕上顯示相應的東西,
void confirm(); //確認密碼對不對,把輸入的數據與密碼逐一對比,完全一樣剛正確,
void succeed_an(); //輸入密碼成功時的 響應,
void fail_an(); //輸入密碼 失敗時 響應
void lockkey(); //鎖鍵盤三秒
void alarm(); //發出警報聲
void reset(); //復位函數
void display_enter(); //顯示輸入
void main(void)
{
uchar temp;
init();
while(1)
{
if(lockflag)
{
temp=keyscan(); // 鎖鍵期間也要進行鍵盤掃描
if(temp!=No_key) //重新記時三秒
{
aa=0; //重新在定時器中計數
}
}
else
{
temp=keyscan(); //反復掃描輸入,等待隨時輸入
if(temp!=No_key) //有按鍵按下才進行下面的操作
{
if(temp==10)
{
reset();
startflag=1; //開始標志置位
}
if(startflag)
{
enter_code(temp); //每掃描一次鍵盤就要進行一次處理,保存輸入的數值
if(temp==13) //按下確認鍵盤就要進行密碼確認
{
confirm(); //進行確認判斷
if(conflag) //密碼確認為正確
{
succeed_an(); //密碼正確,作出相應的反應
}
else
{
fail_an(); //密碼錯誤,作相應反應
}
}
if(temp==14)
{
delete(); //作刪除操作
}
}
}
}
}
}
/****** 顯示enter********/
void display_enter()
{
uchar num;
wright_com(0x80);
for(num=0;num<13;num++)
{
wright_data(table2[num]);
}
}
/****** 顯示OK********/
void display_OK()
{
uchar num;
wright_com(0x80);
for(num=0;num<13;num++)
{
wright_data(table1[num]);
}
}
/****** 刪除最後一個********/
void delete()
{
wright_com(0x80+0x40+j); //確定刪除對象
wright_data(' '); //顯示空格即為刪除
save[--j]=0; //刪除後數據清零
wright_com(0x80+0x40+j); //為下次輸入數據時寫好位置,必須是在最後一個後面
}
/****** 對各種變數進行復位********/
void reset()
{
uchar num;
display_enter();
wright_com(0x80+0x40); //擦除屏幕上的顯示
for(num=0;num<6;num++)
{
save[num]=0; //對輸入的數值進行清零
wright_data(' '); //顯示的是空格
}
wright_com(0x80+0x40); //下次再輸入時可以又從起始位置輸入
lockflag=0; //各種變數要清零回起始狀態
conflag=0;
j=0;
}
/****** 輸入密碼正確進行響應********/
void succeed_an()
{
light=0; //燈亮
display_OK(); //顯示成功
delay(1000);
light=1; //燈滅
}
/****** 輸入密碼錯誤進行響應********/
void fail_an()
{
alarm();
lockkey();
}
/****** 發出警報聲**********/
void alarm() //這個以後再擴展它
{
}
/******鎖鍵盤三秒************/
void lockkey()
{
lockflag=1;
}
/******輸入密碼並在屏幕上顯示星號******/
void enter_code(uchar t)
{
if(t>=0&&t<10)
{
if(j==0)
{
wright_com(0x80+0x40) ; //第一輸入時要先寫入地址指令,否則無法顯示
wright_data('*') ;
}
else
{
wright_data('*') ;//不是第一個輸入則不用再寫地址
}
save[j++]=t; //保存輸入的數據
}
}
/******校對密碼以確定是不是正確的**********/
void confirm()
{
uchar k;
for(k=0;k<6;k++)
{
if(password[k]!=save[k]) //對數組中的內容進行逐一比較,一旦有數據不對馬上退出循環
{
break;
}
}
if(k==6) //要是條件退出的話說明六個數全對密碼
{
conflag=1; // 進行標志密碼正確
}
}
/******中斷服務程序**********/
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; //重裝初值
if(lockflag)
{
aa++;
light1=0;
if(aa>=60) //三秒到了
{
aa=0; //清零可以方便下次再使用
light1=1; //關閉警報
lockflag=0; //標志清零解除鍵鎖,方便下次使用
}
}
}
/******初始化***********/
void init()
{
uchar num;
/*****定時器初始化****/
TMOD=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1; //開啟總中斷
TR0=1;//把定時器關閉
/****1602初始化******/
lcdrw=0; //這個必須要置 零,否則無法正常顯示
lcden=0;
wright_com(0x38) ; //初始化
wright_com(0x0c) ; //打開游標 0x0c不顯示游標 0x0e游標不閃,0x0f游標閃
wright_com(0x01) ; //清顯示
wright_com(0x80) ;
for(num=0;num<9;num++)
{
wright_data(table[num]);
delay(1);
}
}
/******1602寫入指令************/
void wright_com(uchar com)
{
lcdrs=0;
lcddata=com;
delay(1);
lcden=1;
delay(1);
lcden=0;
}
/******1602寫入數據***********/
void wright_data(uchar date)
{
lcdrs=1;
lcddata=date;
delay(1);
lcden=1;
delay(1);
lcden=0;
}
/******延時函數************/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--) ;
}
/**********4x4矩陣鍵盤掃描函數*********/
uchar keyscan()
{
uchar temp,num=No_key; //num的初值要為無鍵盤按下時的返回值
/*********掃描第一行****************/
KEY=0xfe;
temp=KEY;
temp=temp&0xf0; //讀出高四位
while(temp!=0xf0)
{
delay(5); //延時消抖
temp=KEY;
temp=temp&0xf0;
while(temp!=0xf0) //確認確實有按鍵按下
{
temp=KEY;
switch(temp) //根據這八個電平可以確定是哪個按鍵按下
{
case 0xee:num=1;
break;
case 0xde:num=2;
break;
case 0xbe:num=3;
break;
case 0x7e:num=10;
break;
}
while(temp!=0xf0) //等待鬆手
{
temp=KEY;
temp=temp&0xf0;
}
}
}
/*********掃描第二行***************/
KEY=0xfd;
temp=KEY;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=KEY;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=KEY;
switch(temp)
{
case 0xed:num=4;
break;
case 0xdd:num=5;
break;
case 0xbd:num=6;
break;
case 0x7d:num=11;
break;
}
while(temp!=0xf0)
{
temp=KEY;
temp=temp&0xf0;
}
}
}
/*********掃描第三行****************/
KEY=0xfb;
temp=KEY;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=KEY;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=KEY;
switch(temp)
{
case 0xeb:num=7;
break;
case 0xdb:num=8 ;
break;
case 0xbb:num=9;
break;
case 0x7b:num=12;
break;
}
while(temp!=0xf0)
{
temp=KEY;
temp=temp&0xf0;
}
}
}
/*********掃描第四行****************/
KEY=0xf7;
temp=KEY;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=KEY;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=KEY;
switch(temp)
{
case 0xe7:num=0;
break;
case 0xd7:num=13;
break;
case 0xb7:num=14;
break;
case 0x77:num=15;
break;
}
while(temp!=0xf0)
{
temp=KEY;
temp=temp&0xf0;
}
}
}
return num;
}
㈢ 電子信息工程畢業論文
823. 110kv變電站電氣二次部分設計
824. 基於AT89C51的電話遠程式控制制系統
825. 數字電子秤的設計
826. 基於單片機的數字電子鍾設計
827. 濕度感測器在農作物生長環境參數監測儀中的應用
828. 基於單片機的數字頻率計的設計
829. 簡易數控直流穩壓源的設計
830. 基於凌陽單片機的語音實時採集系統設計
831. 簡單語音識別演算法研究
832. 基於數字溫度計的多點溫度檢測系統
833. 家用可燃氣體報警器的設計
834. 基於61單片機的語音識別系統設計
835. 紅外遙控密碼鎖的設計
836. 簡易無線對講機電路設計
837. 基於單片機的數字溫度計的設計
838. 甲醛氣體濃度檢測與報警電路的設計
839. 基於單片機的水溫控制系統設計
840. 設施環境中二氧化碳檢測電路設計
841. 基於單片機的音樂合成器設計
842. 設施環境中濕度檢測電路設計
843. 基於單片機的家用智能匯流排式開關設計
844. 籃球賽計時記分器
845. 汽車倒車防撞報警器的設計
846. 設施環境中溫度測量電路設計
847. 等脈沖頻率調制的原理與應用
848. 基於單片機的電加熱爐溫
849. 病房呼叫系統
850. 單片機打鈴系統設計
851. 智能散熱器控制器的設計
852. 電子體溫計的設計
853. 基於FPGA音頻信號處理系統的設計
854. 基於MCS-51數字溫度表的設計
855. 基於SPCE061A的語音控制小車設計
856. 基於VHDL的智能交通控制系統
857. 基於VHDL語言的數字密碼鎖控制電路的設計
858. 基於單片機的超聲波測距系統的設計
859. 基於單片機的八路搶答器設計
860. 基於單片機的安全報警器
861. 基於SPCE061A的易燃易爆氣體監測儀設計
862. 基於CPLD的LCD顯示設計
863. 基於單片機的電話遠程式控制制家用電器系統設計
864. 基於單片機的交通信號燈控制電路設計
865. 單片機的數字溫度計設計
866. 基於單片機的可編程多功能電子定時器
867. 基於單片機的空調溫度控制器設計
868. 數字人體心率檢測儀的設計
869. 基於單片機的室內一氧化碳監測及報警系統的研究
870. 基於單片機的數控穩壓電源的設計
871. 原油含水率檢測電路設計
872. 基於AVR單片機幅度可調的DDS信號發生器
873. 四路數字搶答器設計
874.單色顯示屏的設計
875.基於CPLD直流電機控制系統的設計
876.基於DDS的頻率特性測試儀設計
877.基於EDA的計算器的設計
878.基於EDA技術的數字電子鍾設計
879.基於EDA技術的智力競賽搶答器的設計
880.基於FPGA的18路智力競賽電子搶答器設計
881.基於USB介面的數據採集系統設計與實現
882.基於單片機的簡易智能小車的設計
883.基於單片機的脈象信號採集系統設計
884.一種斬控式交流電子調壓器設計
885.通信用開關電源的設計
886.雞舍燈光控制器
887.三相電機的保護控制系統的分析與研究
888.信號高精度測頻方法設計
889.高精度電容電感測量系統設計
890.虛擬信號發生器設計和遠程實現
891.脈沖調寬型伺服放大器的設計
892.超聲波測距語音提示系統的研究
893.電表智能管理裝置的設計
894.智能物業管理器的設計
895.基於虛擬儀器技術的數字濾波及頻率測試
896.基於無線傳輸技術的室溫控制系統設計----溫度控制器軟體設計
897.基於計算機視覺的構件表面缺陷特徵提取
898.基於無線傳輸技術的室溫控制系統設計----溫度控制器硬體設計
899.基於微控制器的電容器儲能放電系統設計
890.基於單片機的語音提示測溫系統的研究
891.基於單片機的數字鍾設計
892.基於單片機的數字電壓表的設計
893.基於單片機的交流調功器設計
894.基於SPI通信方式的多道信號採集器設計
895.基於LabVIEW的虛擬頻譜分析儀的設計
896.功率因數校正器的設計
897.全自動電壓表的設計
898.基於Labview的虛擬數字鍾設計
899.溫度箱模擬控制系統
900.水塔智能水位控制系統
901.基於單片機的全自動洗衣機
902.數字流量計
903.簡易無線電遙控系統
904.基於單片機的步進電機的控制
905.基於AT89S51單片機的數字電子時鍾
906.基於51單片機的LED點陣顯示屏系統的設計與實現
907.超聲波測距儀的設計
908.簡易數字電壓表的設計
909.虛擬信號發生器設計及遠程實現
910.智能物業管理器的設計
911.信號高精度測頻方法設計
912.三相電機的保護控制系統的分析與研究
913.溫度監控系統設計
914.數字式溫度計的設計
915.全自動節水灌溉系統--硬體部分
916.電子時鍾的設計
917.基於單片機的電阻爐溫度控制系統
918.基於GSM網路的無線LED廣告牌系統的設計
919.基於單片機的數字函數發生器的設計
920.基於AT89S52的無線自動車庫門
921.基於單片機的自動門控系統設計
922.基於單片機的遙控燈光系統
923.基於MultiSim 8的高頻電路模擬技術
924.數字式脈搏計
925.實用信號源的設計
926.無線多路遙控發射與接收
927.TL494開關電源的設計
928.數字頻率計設計
929.基於單片機的電梯控制系統
930.基於單片機的產品自動計數器
931.水溫控制系統的設計
932.智能音樂鬧鍾設計
933.防盜門密碼鎖的設計
934.多功能時鍾打點系統設計
935.多功能倒計時顯示牌
936.程式控制濾波器的設計
937.多功能程式控制電源設計
938.電子秤的設計
939.電紅外線感應自動門的設計
940.單片機控制的語音錄放系統的設計
941.超聲波測距儀
942.MP3的設計與實現
943.±5V直流穩壓電源的設計
944.用單片機進行溫度的控制及LCD顯示系統的設計
945.雙音報警器
946.可編程動態廣告牌控制系統設計
947.基於單片機的遙控燈光系統
·單片機交通燈控制系統設計--帶模擬的
·壓力容器液位檢測裝置
·電子密碼鎖設計
·多路智能報警器設計
·病房無線呼叫系統
·太陽能熱水器中央控制器的設計與實現
·汽車安全氣囊應用研究
·煤氣報警器的設計
·基於AT89S51單片機的計程車計價器
·紅外防盜報警器的設計
·紅外聲控報警系統的設計
·智能家居的發展
·超聲波倒車雷達設計
·直流開關變送器的研究
·基於AT89S51單片機的數字電子鍾設計
·電子時鍾設計 課程設計
·基於凌陽16位單片機的智能錄音電話
·基於單片機的照明控制系統
·電子日歷鍾
·電力監控系統
·電梯控制系統的設計
·電壓型三相交流變頻調速系統設計
·多點溫度採集系統與控制器設計
·多功能秒錶系統設計
·多路開關直流穩壓電源
·公交車自動報站系統的硬體設計原理
·紅外線感應燈控制系統
·交通燈定時控制系統
·快速煤質監測儀的I/O單元設計
·鋰電池智能充電控制器的設計
·六相非同步電機缺相運行性能分析
·煤礦井下安全監控系統的設計
·數控可調穩壓電源
·音樂控制系統的設計
·面向移動機器人的遠程PDA控制器通信系統設計
·面向移動機器人的遠程PDA控制器主控電路設計
·開關電源的設計研究
·220KV變電站電氣部分設計
·直流電機PWM控制系統
·醫用數顯測溫儀設計
·電力負荷預測技術
·串聯電容補償裝置的設計研究
·充電電池容量測試電路設計
·間冷式電冰箱電氣控制實驗模擬台
·基於51單片機數控直流電源的設計
·基於單片機實現紅外測溫儀設計
·基於單片機的數字萬用表設計
·基於單片機的直流同步電機調速系統研究
·基於單片機的電子秤畢業設計論文
·紅外感應水龍頭
·路燈的節能控制
·多功能智能信號發生器
·鍋爐液位控制系統
·電氣傳動控制系統
·電動自行車調速系統的設計
·脈沖電鍍電源的設計
·基於MSP430單片機的多路數據採集系統的設計
·水塔水位自動控制裝置
·印染絲光過程的濃燒鹼的在線控制
·基於單片機的自動化點焊控制系統
·100kW微機控制單晶硅加熱電源設計
·防火卷簾門智能控制裝置設計
·基於單片機溫濕度控制系統
·計程車計費系統設計
·基於PID控制演算法的恆溫控制系統
·基於CAN匯流排的教學模擬汽車模型的設計
·基於單片機的溫度測量系統設計
·智能化住宅中的防盜防火報警系統設計
·火災自動監控報警系統設計
·旅客列車自動報站多媒體系統
·鋰電池智能充電器設計
·醫療呼叫系統設計
·基於單片機的飲水機溫度控制系統設計
·基於脈寬調制技術的D類音頻放大器
·雙技術玻璃破碎探測器
其中這些有開題報告
1. 用單片機進行溫度的控制及LCD顯示系統的設計
2. 基於MultiSim 8的高頻電路模擬技術
3. 簡易數字電壓表的設計
4. 虛擬信號發生器設計及遠程實現
5. 智能物業管理器的設計
6. 信號高精度測頻方法設計
7. 三相電機的保護控制系統的分析與研究
8. 溫度監控系統設計
9. 數字式溫度計的設計
10. 全自動節水灌溉系統--硬體部分
11. 電子時鍾的設計
12. 全自動電壓表的設計
13. 脈沖調寬型伺服放大器的設計
14. 基於虛擬儀器技術的數字濾波及頻率測試
15. 基於無線傳輸技術的室溫控制系統設計——溫度控制器硬體設計
16. 溫度箱模擬控制系統
17. 基於無線傳輸技術的室溫控制系統設計——溫度控制器軟體設計
18. 基於微控制器的電容器儲能放電系統設計
19. 基於機器視覺的構件表面缺陷特徵提取
20. 基於單片機的語音提示測溫系統的研究
21. 基於單片機的步進電機的控制
22. 單片機的數字鍾設計
23. 基於單片機的數字電壓表的設計
24. 基於單片機的交流調功器設計
25. 基於SPI通信方式的多通道信號採集器設計
26. 基於LabVIEW虛擬頻譜分析儀的設計
27. 功率因數校正器的設計
28. 高精度電容電感測量系統設計
29. 電表智能管理裝置的設計
30. 基於Labview的虛擬數字鍾設計
31. 超聲波測距語音提示系統的研究
32. 斬控式交流電子調壓器設計
33. 基於單片機的脈象信號採集系統設計
34. 基於單片機的簡易智能小車設計
35. 基於FPGA的18路智力競賽電子搶答器設計
36. 基於EDA技術的智力競賽搶答器的設計
37. 基於EDA技術的數字電子鍾設計
38. 基於EDA的計算器的設計
39. 基於DDS的頻率特性測試儀設計
40. 基於CPLD直流電機控制系統的設計
41. 單色顯示屏的設計
42. 擴音電話機的設計
43. 基於單片機的低頻信號發生器設計
44. 35KV變電所及配電線路的設計
45. 10kV變電所及低壓配電系統的設計
46. 6Kv變電所及低壓配電系統的設計
47. 多功能充電器的硬體開發
48. 鎳鎘電池智能充電器的設計
49. 基於MCS-51單片機的變色燈控制系統設計與實現
50. 智能住宅的功能設計與實現原理研究
51. 用IC卡實現門禁管理系統
52. 變電站綜合自動化系統研究
53. 單片機步進電機轉速控制器的設計
54. 無刷直流電機數字控制系統的研究與設計
55. 液位控制系統研究與設計
56. 智能紅外遙控暖風機設計
57. 基於單片機的多點無線溫度監控系統
58. 蔬菜公司恆溫庫微機監控系統
59. 數字觸發提升機控制系統
60. 倉儲用多點溫濕度測量系統
61. 礦井提升機裝置的設計
62. 中頻電源的設計
63. 數字PWM直流調速系統的設計
64. 基於ARM的嵌入式溫度控制系統的設計
65. 鍋爐控制系統的研究與設計
66. 動力電池充電系統設計
67. 多電量採集系統的設計與實現
68. PWM及單片機在按摩機中的應用
69. IC卡預付費煤氣表的設計
70. 基於單片機的電子音樂門鈴的設計
71. 新型計程車計價器控制電路的設計
72. 單片機太陽能熱水器測控儀的設計
73. LED點陣顯示屏-軟體設計
74. 雙容液位串級控制系統的設計與研究
75. 三電平Buck直流變換器主電路的研究
76. 基於PROTEUS軟體的實驗板模擬
77. 基於16位單片機的串口數據採集
78. 電機學課程CAI課件開發
79. 單片機教學實驗板——軟體設計
80. 63A三極交流接觸器設計
81. 匯流排式智能PID控制儀
82. 自動售報機的設計
83. 斷路器的設計
84. 基於MATLAB的水輪發電機調速系統模擬
85. 數控纏繞機樹脂含量自控系統的設計
86. 軟膠囊的單片機溫度控制(硬體設計)
87. 空調溫度控制單元的設計
88. 基於人工神經網路對諧波鑒幅
89. 基於單片機的魚用投餌機自動控制系統的設計
90. 鍋爐汽包水位控制系統
91. 基於單片機的玻璃管加熱控制系統設計
92. 基於AT89C51單片機的號音自動播放器設計
93. 基於單片機的普通銑床數控化設計
94. 基於AT89C51單片機的電源切換控制器的設計
95. 基於51單片機的液晶顯示器設計
96. 超聲波測距儀的設計及其在倒車技術上的應用
97. 智能多路數據採集系統設計
98. 公交車報站系統的設計
99. 基於RS485匯流排的遠程雙向數據通信系統的設計
100. 賓館客房環境檢測系統
101. 智能充電器的設計與製作
102. 基於單片機的戶式中央空調器溫度測控系統設計
103. 基於單片機的乳粉包裝稱重控制系統設計
104. 基於單片機的定量物料自動配比系統
105. 基於單片機的液位檢測
106. 基於單片機的水位控制系統設計
107. 基於VDMOS調速實驗系統主電路模板的設計與開發
108. 基於IGBT-IPM的調速實驗系統驅動模板的設計與開發
109. HEF4752為核心的交流調速系統控制電路模板的設計與開發
110. 基於87C196MC交流調速實驗系統軟體的設計與開發
111. 87C196MC單片機最小系統單板電路模板的設計與開發
112. 電子密碼鎖控制電路設計
113. 基於單片機的數字式溫度計設計
114. 列車測速報警系統
115. 基於單片機的步進電機控制系統
116. 語音控制小汽車控制系統設計
117. 智能型客車超載檢測系統的設計
118. 直流機組電動機設計
119. 單片機控制交通燈設計
120. 中型電弧爐單片機控制系統設計
121. 中頻淬火電氣控制系統設計
122. 新型洗浴器設計
123. 新型電磁開水爐設計
124. 基於電流型逆變器的中頻冶煉電氣設計
125. 6KW電磁採暖爐電氣設計
126. 基於CD4017電平顯示器
127. 多路智力搶答器設計
128. 智能型充電器的電源和顯示的設計
129. 基於單片機的溫度測量系統的設計
130. 龍門刨床的可逆直流調速系統的設計
131. 音頻信號分析儀
132. 基於單片機的機械通風控制器設計
133. 論電氣設計中低壓交流接觸器的使用
134. 論人工智慧的現狀與發展方向
135. 淺論配電系統的保護與選擇
136. 淺論揚州帝一電器的供電系統
137. 淺談光纖光纜和通信電纜
138. 淺談數據通信及其應用前景
139. 淺談塑料光纖傳光原理
140. 淺析數字信號的載波傳輸
141. 淺析通信原理中的增量控制
142. 太陽能熱水器水溫水位測控儀分析
143. 電氣設備的漏電保護及接地
144. 論「人工智慧」中的知識獲取技術
145. 論PLC應用及使用中應注意的問題
146. 論感測器使用中的抗干擾技術
147. 論電測技術中的抗干擾問題
148. 論高頻電路的頻譜線性搬移
149. 論高頻反饋控制電路
150. 論工廠導線和電纜截面的選擇
151. 論工廠供電系統的運行及管理
152. 論供電系統的防雷、接地保護及電氣安全
153. 論交流變頻調速系統
154. 論人工智慧中的知識表示技術
155. 論雙閉環無靜差調速系統
156. 論特殊應用類型的感測器
157. 論無損探傷的特點
158. 論在線檢測
159. 論專家系統
160. 論自動測試系統設計的幾個問題
161. 淺析時分復用的基本原理
162. 試論配電系統設計方案的比較
163. 試論特殊條件下交流接觸器的選用
164. 自動選台立體聲調頻收音機
165. 基於立體聲調頻收音機的研究
166. 基於環繞立體聲轉接器的設計
167. 基於紅外線報警系統的研究
168. 多種變化彩燈
169. 單片機音樂演奏控制器設計
170. 單目視覺車道偏離報警系統
171. 基於單片機的波形發生器設計
172. 智能毫伏表的設計
173. 微機型高壓電網繼電保護系統的設計
174. 基於單片機mega16L的煤氣報警器的設計
175. 串列顯示的步進電機單片機控制系統
176. 編碼發射與接收報警系統設計:看護機
177. 編碼發射接收報警設計:愛情鳥
178. 紅外快速檢測人體溫度裝置的設計與研製
179. 用單片機控制的多功能門鈴
180. 電氣控制線路的設計原則
181. 電氣設備的選擇與校驗
182. 淺論10KV供電系統的繼電保護的設計方案
183. 智能編碼電控鎖設計
184. 自行車里程,速度計的設計
185. 等精度頻率計的設計
186. 基於嵌入式系統的原油含水分析儀的硬體與人機界面設計
187. 數字電子鍾的設計與製作
188. 溫度報警器的電路設計與製作
189. 數字電子鍾的電路設計
190. 雞舍電子智能補光器的設計
191. 電子密碼鎖的電路設計與製作
192. 單片機控制電梯系統的設計
193. 常用電器維修方法綜述
194. 控制式智能計熱表的設計
195. 無線射頻識別系統發射接收硬體電路的設計
196. 基於單片機PIC16F877的環境監測系統的設計
197. 基於ADE7758的電能監測系統的設計
198. 基於單片機的水溫控制系統
199. 基於單片機的雞雛恆溫孵化器的設計
200. 自動存包櫃的設計
201. 空調器微電腦控制系統
202. 全自動洗衣機控制器
203. 小功率不間斷電源(UPS)中變換器的原理與設計
204. 智能溫度巡檢儀的研製
205. 保險箱遙控密碼鎖
206. 基於藍牙技術的心電動態監護系統的研究
207. 低成本智能住宅監控系統的設計
208. 大型發電廠的繼電保護配置
209. 直流操作電源監控系統的研究
210. 懸掛運動控制系統
211. 氣體泄漏超聲檢測系統的設計
212. FC-TCR型無功補償裝置控制器的設計
213. 150MHz頻段窄帶調頻無線接收機
214. 數字顯示式電子體溫計
215. 基於單片機的病床呼叫控制系統
216. 基於單片微型計算機的多路室內火災報警器
217. 基於單片微型計算機的語音播出的作息時間控制器
218. 交通信號燈控制電路的設計
219. 單片機控制的全自動洗衣機畢業設計論文
220. 單片機脈搏測量儀
221. 紅外報警器設計與實現
㈣ 單片機課程設計—簡易密碼鎖
如果我們要算for(b=0;b<50000;b++);晶振為12M,先要設置一下項目的所用的晶振頻率。
㈤ 51單片機關於密碼鎖的畢業設計,論文
程序設計內容
(1). 密碼的設定,在此程序中密碼是固定在程序存儲器ROM中,假設預設的密碼為「12345」共5位密碼。
(2). 密碼的輸入問題:由於採用兩個按鍵來完成密碼的輸入,那麼其中一個按鍵為功能鍵,另一個按鍵為數字鍵。在輸入過程中,首先輸入密碼的長度,接著根據密碼的長度輸入密碼的位數,直到所有長度的密碼都已經輸入完畢;或者輸入確認功能鍵之後,才能完成密碼的輸入過程。進入密碼的判斷比較處理狀態並給出相應的處理過程。
(3).按鍵禁止功能:初始化時,是允許按鍵輸入密碼,當有按鍵按下並開始進入按鍵識別狀態時,按鍵禁止功能被激活,但啟動的狀態在3次密碼輸入不正確的情況下發生的。
C語言源程序
#includeunsignedcharcodeps[]={1,2,3,4,5};
unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
unsignedcharpslen=9;unsignedchartemplen;
unsignedchardigit;unsignedcharfuncount;
unsignedchardigitcount;
unsignedcharpsbuf[9];
bitcmpflag;
bithibitflag;
biterrorflag;
bitrightflag;
unsignedintsecond3;
unsignedintaa;
unsignedintbb;
bitalarmflag;
bitexchangeflag;
unsignedintcc;
unsignedintdd;
bitokflag;
unsignedcharoka;
unsignedcharokb;
voidmain(void)
{
unsignedchari,j;
P2=dispcode[digitcount];
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%6;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(cmpflag==0)
{
if(P3_6==0)//functionkey
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P3_6==0)
{
if(hibitflag==0)
{
funcount++;
if(funcount==pslen+2)
{
funcount=0;
cmpflag=1;
}
P1=dispcode[funcount];
}
else
{
second3=0;
}
while(P3_6==0);
}
}
if(P3_7==0)//digitkey
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P3_7==0)
{
if(hibitflag==0)
{
digitcount++;
if(digitcount==10)
{
digitcount=0;
}
P2=dispcode[digitcount];
if(funcount==1)
{
pslen=digitcount;
templen=pslen;
}
elseif(funcount>1)
{
psbuf[funcount-2]=digitcount;
}
}
else
{
second3=0;
}
while(P3_7==0);
}
}
}
else
{
cmpflag=0;
for(i=0;i
{
if(ps[i]!=psbuf[i])
{
hibitflag=1;
i=pslen;
errorflag=1;
rightflag=0;
cmpflag=0;
second3=0;
gotoa;
}
}
cc=0;
errorflag=0;
rightflag=1;
hibitflag=0;
a: cmpflag=0;
}
}
}
voidt0(void)
interrupt1using0{ TH0=(65536-500)/256;
TL0=(65536-500)%6;
if((errorflag==1)&&(rightflag==0))
{
bb++;
if(bb==800)
{
bb=0;
alarmflag=~alarmflag;
}
if(alarmflag==1)
{
P0_0=~P0_0;
}
aa++;
if(aa==800)
{
aa=0;
P0_1=~P0_1;
}
second3++;
if(second3==6400)
{
second3=0;
hibitflag=0;
errorflag=0;
rightflag=0;
cmpflag=0;
P0_1=1;
alarmflag=0;
bb=0;
aa=0;
}
}
if((errorflag==0)&&(rightflag==1))
{
P0_1=0;
cc++;
if(cc<1000)
{
okflag=1;
}
elseif(cc<2000)
{
okflag=0;
}
else
{
errorflag=0;
rightflag=0;
hibitflag=0;
cmpflag=0;
P0_1=1;
cc=0;
oka=0;
okb=0;
okflag=0;
P0_0=1;
}
if(okflag==1)
{
oka++;
if(oka==2)
{
oka=0;
P0_0=~P0_0;
}
}
else
{
okb++;
if(okb==3)
{
okb=0;
P0_0=~P0_0;
}
}
}
}
㈥ 基於單片機的電子密碼鎖設計
功能鍵
S6---S15 數字鍵0-9
S16---更改密碼 S17---更改密碼完畢後確認
S18---重試密碼、重新設定 S19---關閉密碼鎖
初始密碼:000000 密碼位數:6位
注意:掉電後,所設密碼會丟失,重新上點時,密碼恢復為原始的000000
與P1相連的8位發光LED點亮代表鎖被打開;熄滅代表鎖被鎖上
程序功能: 本程序結合了24C02存儲器的存儲功能,可以掉電保存密碼。
第一次運行時,若輸入000000原始密碼後無反應,可以試驗著將主程序中前面的
一小段被注釋線屏蔽的程序前的注釋線刪掉,然後重新編譯下載(可以將密碼還原為000000)。
此後,再將這小段程序屏蔽掉,再編譯下載。方可正常使用。
1、開鎖:
下載程序後,直接按六次S7(即代表數字1),8位LED亮,鎖被打開,輸入密碼時,
六位數碼管依次顯示小橫杠。
2、更改密碼:
只有當開鎖(LED亮)後,該功能方可使用。
首先按下更改密碼鍵S16,然後設置相應密碼,此時六位數碼管會顯示設置密碼對應
的數字。最後設置完六位後,按下S17確認密碼更改,此後新密碼即生效。
3、重試密碼:
當輸入密碼時,密碼輸錯後按下鍵S18,可重新輸入六位密碼。
當設置密碼時,設置中途想更改密碼,也可按下此鍵重新設置。
4、關閉密碼鎖:
按下S19即可將打開的密碼鎖關閉。
推薦初級演示步驟:輸入原始密碼000000---按下更改密碼按鍵S16---按0到9設置密碼---按S17
確認密碼更改---按S18關閉密碼鎖---輸入新的密碼打開密碼鎖
*******************************************************************************/
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar old1,old2,old3,old4,old5,old6; //原始密碼000000
uchar new1,new2,new3,new4,new5,new6; //每次MCU採集到的密碼輸入
uchar a=16,b=16,c=16,d=16,e=16,f=16; //送入數碼管顯示的變數
uchar wei,key,temp;
bit allow,genggai,ok,wanbi,retry,close; //各個狀態位
sbit la=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
sbit sda=P2^0; //IO口定義
sbit scl=P2^1;
unsigned char code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};
/*****************IIC晶元24C02存儲器驅動程序************************************/
void nop()
{
_nop_();
_nop_();
}
/////////24C02讀寫驅動程序////////////////////
void delay1(unsigned int m)
{ unsigned int n;
for(n=0;n<m;n++);
}
void init() //24c02初始化子程序
{
scl=1;
nop();
sda=1;
nop();
}
void start() //啟動I2C匯流排
{
sda=1;
nop();
scl=1;
nop();
sda=0;
nop();
scl=0;
nop();
}
void stop() //停止I2C匯流排
{
sda=0;
nop();
scl=1;
nop();
sda=1;
nop();
}
void writebyte(unsigned char j) //寫一個位元組
{
unsigned char i,temp;
temp=j;
for (i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
nop();
sda=CY; //temp左移時,移出的值放入了CY中
nop();
scl=1; //待sda線上的數據穩定後,將scl拉高
nop();
}
scl=0;
nop();
sda=1;
nop();
}
unsigned char readbyte() //讀一個位元組
{
unsigned char i,j,k=0;
scl=0; nop(); sda=1;
for (i=0;i<8;i++)
{
nop(); scl=1; nop();
if(sda==1)
j=1;
else
j=0;
k=(k<<1)|j;
scl=0;
}
nop();
return(k);
}
void clock() //I2C匯流排時鍾
{
unsigned char i=0;
scl=1;
nop();
while((sda==1)&&(i<255))
i++;
scl=0;
nop();
}
////////從24c02的地址address中讀取一個位元組數據/////
unsigned char read24c02(unsigned char address)
{
unsigned char i;
start();
writebyte(0xa0);
clock();
writebyte(address);
clock();
start();
writebyte(0xa1);
clock();
i=readbyte();
stop();
delay1(100);
return(i);
}
//////向24c02的address地址中寫入一位元組數據info/////
void write24c02(unsigned char address,unsigned char info)
{
start();
writebyte(0xa0);
clock();
writebyte(address);
clock();
writebyte(info);
clock();
stop();
delay1(5000); //這個延時一定要足夠長,否則會出錯。因為24c02在從sda上取得數據後,還需要一定時間的燒錄過程。
}
/****************************密碼鎖程序模塊********************************************************/
void delay(unsigned char i)
{
uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
{
la=0;
P0=table[a];
la=1;
la=0;
wela=0;
P0=0xfe;
wela=1;
wela=0;
delay(5);
P0=table[b];
la=1;
la=0;
P0=0xfd;
wela=1;
wela=0;
delay(5);
P0=table[c];
la=1;
la=0;
P0=0xfb;
wela=1;
wela=0;
delay(5);
P0=table[d];
la=1;
la=0;
P0=0xf7;
wela=1;
wela=0;
delay(5);
P0=table[e];
la=1;
la=0;
P0=0xef;
wela=1;
wela=0;
delay(5);
P0=table[f];
la=1;
la=0;
P0=0xdf;
wela=1;
wela=0;
delay(5);
}
void keyscan()
{
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:
key=0;
wei++;
break;
case 0xde:
key=1;
wei++;
break;
case 0xbe:
key=2;
wei++;
break;
case 0x7e:
key=3;
wei++;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:
key=4;
wei++;
break;
case 0xdd:
key=5;
wei++;
break;
case 0xbd:
key=6;
wei++;
break;
case 0x7d:
key=7;
wei++;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xeb:
key=8;
wei++;
break;
case 0xdb:
key=9;
wei++;
break;
case 0xbb:
genggai=1;
wei=0;
break;
case 0x7b:
if(allow)
ok=1;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xe7:
retry=1;
break;
case 0xd7:
close=1;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
}
}
void shumima() //對按鍵採集來的數據進行分配
{
if(!wanbi)
{
switch(wei)
{
case 1:new1=key;
if(!allow) a=17;
else a=key; break;
case 2:new2=key;
if(a==17) b=17;
else b=key; break;
case 3:new3=key;
if(a==17) c=17;
else c=key; break;
case 4:new4=key;
if(a==17) d=17;
else d=key; break;
case 5:new5=key;
if(a==17) e=17;
else e=key; break;
case 6:new6=key;
if(a==17) f=17;
else f=key;
wanbi=1; break;
}
}
}
void yanzheng() //驗證密碼是否正確
{
if(wanbi) //只有當六位密碼均輸入完畢後方進行驗證
{
if((new1==old1)&(new2==old2)&(new3==old3)&(new4==old4)&(new5==old5)&(new6==old6))
allow=1; //當輸入的密碼正確,會得到allowe置一
}
}
void main()
{
init(); //初始化24C02
/*********下面的一小段程序的功能為格式化密碼存儲區。************
******當24c02中這些存儲區由於其他程序的運行而導致***************
*******所存數據發生了變化,或者密碼遺忘時, ********************
******可以刪掉其前面的注釋線,然後重新編譯下載。****************
******而將密碼還原為000000後,請將下面的程序用******************
******注釋屏蔽掉,重新編譯、下載,方可正常使用****************/
// write24c02(110,0x00);
// write24c02(111,0x00);//24c02的第110到115地址單元作為密碼存儲區
// write24c02(112,0x00);
// write24c02(113,0x00);
// write24c02(114,0x00);
// write24c02(115,0x00);
/*******************************************************************/
old1=read24c02(110);
old2=read24c02(111);
old3=read24c02(112);
old4=read24c02(113);
old5=read24c02(114);
old6=read24c02(115);
while(1)
{
keyscan();
shumima();
yanzheng();
if(allow) //驗證完後,若allow為1,則開鎖
{
P1=0x00;
if(!genggai)
wanbi=0;
}
if(genggai) //當S16更改密碼鍵被按下,genggai會被置一
{
if(allow) //若已經把鎖打開,才有更改密碼的許可權
{
while(!wanbi) //當新的六位密碼沒有設定完,則一直在這里循環
{
keyscan();
shumima();
if(retry|close) //而當探測到重試鍵S18或者關閉密碼鎖鍵S19被按下時,則跳出
{ wanbi=1;
break;
}
display(a,b,c,d,e,f);
}
}
}
if(ok) //更改密碼時,當所有六位新密碼均被按下時,可以按下此鍵,結束密碼更改
{ //其他時間按下此鍵無效
ok=0; wei=0;
genggai=0;
old1=new1;old2=new2;old3=new3; //此時,舊的密碼將被代替
old4=new4;old5=new5;old6=new6;
//新密碼寫入存儲區。
write24c02(110,old1);
write24c02(111,old2);
write24c02(112,old3);
write24c02(113,old4);
write24c02(114,old5);
write24c02(115,old6);
a=16;b=16;c=16;d=16;e=16;f=16;
}
if(retry) //當重試按鍵S18被按下,retry會被置位
{
retry=0; wei=0;wanbi=0;
a=16;b=16;c=16;d=16;e=16;f=16;
new1=0;new2=0;new3=0;new4=0;new5=0;new6=0;
}
if(close) //當關閉密碼鎖按鍵被按下,close會被置位
{
close=0;genggai=0;//所有變數均被清零。
wei=0; wanbi=0;
allow=0;
P1=0xff;
a=16;b=16;c=16;d=16;e=16;f=16;
new1=0;new2=0;new3=0;new4=0;new5=0;new6=0;
}
display(a,b,c,d,e,f); //實時顯示
}
}
對著代碼自己做吧,,要是還做不出來,,那我就不說什麼了,,
㈦ 單片機指紋密碼鎖的特色與創新
隨著人民生活水平的提高,如何實現家庭防盜這一問題也變得尤其突出,傳統的機械鎖由於其構造簡單,安全性低,無法滿足人們的需求。隨著電子產品向智能化和微型化的不斷發展,單片機已成為電子產品研製和開發中首選的控制器,所以具有防盜報警功能的電子密碼鎖控制系統逐漸代替傳統的機械式密碼控制系統,克服了機械式密碼鎖控制的密碼量少,安全性能差的缺點。
在傳統的身份認證中,我們往往使用密碼加密法,但是這種方法只是"防君子不防小人"。在高明的黑客眼裡,由幾個字元組成的密碼脆弱得不堪一擊。現在,科技的發展讓我們有了新的選擇——生物識別技術。將生物識別技術應用於筆記本、門鎖等方面,可以對文件、財產起保護作用,並且可以進行身份識別。生物識別技術的發展主要起始於指紋研究,它亦是目前應用最為廣泛的生物識別技術。
本設計開發了一款基於單片機的指紋識別電子密碼鎖系統。該系統以STC89C52單片機作為模塊核心,通過串口通信控制ZFM-60指紋模塊實現錄取指紋並存儲指紋數據,並通過HS12864-15C液晶顯示比對流程及比對結果,輔以直流繼電器與發光二極體模擬開鎖的動作。本系統具有體積小、性價比高、傳輸速度快、適合家庭及單位使用。
關鍵詞:單片機,密碼鎖,指紋識別
㈧ 基於單片機課程設計密碼鎖
採用數字密碼鎖電路的好處就是設計簡單。用以74LS112雙JK觸發器構成的數字邏輯電路作為密碼鎖的核心控制,共設了9個用戶輸入鍵,其中只有4個是有效的密碼按鍵,其它的都是干擾按鍵,若按下干擾鍵,鍵盤輸入電路自動清零,原先輸入的密碼無效,需要重新輸入;如果用戶輸入密碼的時間超過40秒(一般情況下,用戶不會超過40秒,若用戶覺得不便,還可以修改)電路將報警80秒,若電路連續報警三次,電路將鎖定鍵盤5分鍾,防止他人的非法操作。
電路由兩大部分組成:密碼鎖電路和備用電源(UPS),其中設置UPS電源是為了防止因為停電造成的密碼鎖電路失效,使用戶免遭麻煩。
密碼鎖電路包含:鍵盤輸入、密碼修改、密碼檢測、開鎖電路、執行電路、報警電路、鍵盤輸入次數鎖定電路。