基于单片机的电子密码锁设计程序及电路图

合集下载

基于单片机的电子密码锁设计课件

基于单片机的电子密码锁设计课件
3、硬件电路
3.5 晶振部分
根据实际情况,本设计中采用12MHZ做为系统的外部晶振,电容取值为20pF。
图3-6 晶振电路原理图
3、硬件电路
3.6 显示部分
为了提高密码锁的密码显示效果能力。本设计的显示部分由液晶显示LCD1602取代普通的数码管来完成。其显示部分引脚接口如图3-8所示:
基于单片机的电子密码锁设计
1、系统结构分析
图1-1 系统结构框图
本设计系统主要由单片机芯片、电源输入部分、键盘输入部分、密码存储部分、复位部分、晶振部分显示部分、报警部分、开锁部分组成。
AT 89S51
键盘输入
复位电路
密码存储电路
晶振电路
电源输入
显示电路
报警电路
开锁电路
选用单片机AT89S51作为本设计的主控芯片。 采用矩阵键盘进行功能按键的输入。 外接AT24C02芯片用于密码的存储与修改。 利用LCD1602液晶显示器进行显示。 利用蜂鸣器进行报警工作。
图3-3 键盘输入原理图
3.3 电源输入部分
3、硬件电路
密码锁主控制部分电源需要用5V直流电源供电,其电路如图3-5所示:
图3-4 电源输入电路原理图
3.4 复位部分 根据实际情况选择如图3-6所示的复位电路。该电路在最简单的复位电路下增加了手动复位按键。
3、硬件电路
图3-5 电源输入电路原理图
2、方案设计
3.1 存储芯片AT24C02
3、硬件电路
图3-1 AT24C02的电路接线图
3.2 矩阵键盘 采用4*4矩阵式键盘实现密码输入功能。 4*4键盘不但能完成密码的输入,还能作特别功能键使用,比如修改密码功能等。
3、硬件电路
图3-2 矩阵键盘

基于单片机的电子密码锁

基于单片机的电子密码锁

基于单片机的电子密码锁第一章:引言电子密码锁是随着科技的不断进步,应用于各个领域的一种新型门禁系统。

相较于传统的机械锁具,电子密码锁具有更高的安全性与便捷性。

而基于单片机的电子密码锁,则是通过单片机作为核心控制器,通过输入正确的密码才能进行开锁操作。

本文旨在介绍基于单片机的电子密码锁的原理、设计和实现过程。

第二章:电子密码锁的工作原理2.1 单片机简介单片机是一种集成了微处理器、存储器和各种输入输出接口于一体的微型计算机系统。

它具有体积小、功耗低、性能稳定等特点,适用于各种电子设备的控制系统。

2.2 电子密码锁的组成部分基于单片机的电子密码锁由输入模块、控制模块、显示模块和输出模块组成。

输入模块用于输入密码,控制模块用于验证密码的正确性和执行开锁指令,显示模块用于显示相关信息,输出模块用于控制锁的状态。

2.3 电子密码锁的工作原理当用户输入密码时,控制模块将用户输入的密码与预设密码进行比较。

如果输入的密码正确,则控制模块发送开锁指令,输出模块解除锁的限制,用户可以开启门。

否则,控制模块继续等待用户输入密码。

第三章:电子密码锁的设计步骤3.1 系统需求分析根据实际应用需求,确定电子密码锁系统的功能、性能和外观设计等方面的要求。

3.2 硬件设计根据系统需求,设计硬件电路,包括输入模块、控制模块、显示模块和输出模块等。

3.3 软件设计基于单片机的电子密码锁需要编写适用的软件程序。

根据密码验证算法,编写程序实现密码的比较和开锁指令的发送。

3.4 电子密码锁的制作流程根据硬件设计和软件设计的结果,进行电子密码锁的组装和制作。

3.5 电子密码锁的测试与调试对制作完成的电子密码锁进行测试,包括考虑用户输入的密码是否正确、开锁是否正常、显示是否准确等方面的问题。

第四章:电子密码锁的功能与特点4.1 密码设置与管理用户可以根据需要设置密码,并进行密码的管理,包括密码的增、删、改等功能。

4.2 多种开锁方式电子密码锁可以支持多种开锁方式,例如密码开锁、指纹识别、刷卡开锁等。

基于单片机电子密码锁的设计原理

基于单片机电子密码锁的设计原理

本科生毕业设计目录设计总说明 (I)DESIGN INTRODUCTION ................................................................ 错误!未定义书签。

第1章绪论 . (1)1.1背景 (1)1.2电子锁 (1)1.3电子密码锁的特点 (1)1.4电子密码锁的发展趋势 (2)第2章系统总体设计 (2)2.1系统结构 (3)2.2 系统组成 (3)2.3 系统可行性分析 (3)第3章硬件电路设计 (4)3.1单片机AT89C51简介 (4)3.1.1 主要特性 (5)3.1.2 管脚说明 (5)3.1.3 震荡特性 (7)3.1.4 芯片擦除 (7)3.2 4×4矩阵键盘 (7)3.3复位电路 (8)3.4 振荡电路 (8)3.5 数码管 (8)3.6 发光二极管LED (9)3.7 电动锁 (10)3.8 蜂鸣器 (10)3.9 完整电路图 (11)第4章软件程序设计 (13)4.1软件设计流程图 (14)4.2 具体功能软件实施 (15)第5章结束语及展望 (21)第6章鸣谢 (22)第7章参考文献 (23)附录 (22)设计总说明在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。

若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。

随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。

为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。

密码锁具有安全性高、成本低、功耗低、易操作等优点。

在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。

随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。

基于51单片机的电子密码锁系统设计制作,电路图+源程序

基于51单片机的电子密码锁系统设计制作,电路图+源程序

基于51单片机的电子密码锁系统设计制作,电路图+源程序这款基于51单片机的电子密码锁系统,单片机用STC89C52RC单片机,电路简单,制作过程中不需要进行调试,支持密码掉电保存功能!密码储存于单片机内部自带的的EEPROM中,不需要外置AT24C01保存密码,是学习电子密码锁比较好的教学试验系统,主要功能如下:1、1602液晶菜单显示。

2、6位密码,密码可重置,重置密码时,先输入原始密密,正确后输入新密码,再交输入新密码,两次输入的密码一致辞时,密码修改成功。

开锁时,密码通过键盘输入,若密码正确,则将锁打开,诺密码不正确时,无法开锁,密码输入错误三次时,蜂鸣器报警并且锁定键盘,10分钟。

3、支持掉电保存密码功能。

单片机中的密码是储存于单片内部的EEPROM中,在密码锁系统断电时,储存在密码锁系统中的密码不会丢失。

4、密码锁系统采用5V继电器模拟开锁过程。

5、输入的正确时,继电器吸合2-3秒,开锁指示灯亮2-3秒,模拟开锁。

6、密码错误报警且有错误提示(显示Error)。

7、密码正确开锁指示。

8、4X4矩阵键盘输入。

9、随时可修改密码存储,支持掉电保存密码功能,功能更为实用。

10、密码可以由用户自己修改设定(只支持6位密码),锁打开后才能修改密码。

修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。

源程序如下:1. #include<reg52.h>2. #define uint unsigned int3. #define uchar unsigned char4. void key_scan();5. uchar count0,count1,count3,num,n=0,temp,a,j,count4;6. uchar mima[8]; //初始密码存储区7. uchar tab_key[50]; //输入密码存储区8. uchar code table[]={9. 0x3f,0x06,0x5b,0x4f,10. 0x66,0x6d,0x7d,0x07,11. 0x7f,0x6f,0x77,0x7c,12. 0x39,0x5e,0x79,0x71};13. bit enterflag; //确认键按下与否的标志14. bit mimaflag; //密码正确与否的标志15. bit xiugaiflag; //修改密码标志16. bit enter1flag; //修改密码确认键标志17. sbit red=P3^7;18. sbit bell=P3^6;19. sbit rs=P2^0;20. sbit rw=P2^1;21. sbit lcden=P2^2;22. sbit scl=P3^4;23. sbit sda=P3^5;24. uchar code table1[]="input the passco";25. uchar code table2[]="de: --------";26. uchar code table3[]="*";27. uchar code table4[]="right (^_^) ";28. uchar code table5[]="first error";29. uchar code table6[]="second error";30. uchar code table7[]="third error see ";31. uchar code table8[]="u tomorrow (^_^)";32. uchar code table9[]="define the passc";33. uchar code table10[]="ode: --------";34. uchar code table11[]="code is new";35. //******************************键盘消抖函数*******************************36. void delay1()37. { ;; }38. void delay2(uchar x)39. {40. uchar a,b;41. for(a=x;a>0;a--)42. for(b=100;b>0;b--);43. }44.45. void delay(uint z)46. {47. uint x,y;48. for(x=z;x>0;x--)49. for(y=110;y>0;y--);50. }51.52. //****************************e^2room的初始化*******************************53. void start() //开始信号54. {55. sda=1;56. delay1();57. scl=1;58. delay1();59. sda=0;60. delay1();61. }62.63. void stop() //停止64. {65. sda=0;66. delay1();67. scl=1;68. delay1();69. sda=1;70. delay1();71. }72. //****************************应答信号*************************************73. void respond()74. {75. uchar i;76. scl=1;77. delay1();78. while((sda==1)&&(i<250))i++;79. scl=0;80. delay1();81. }82. //*****************************写字节操作函数**********************************83. void write_byte(uchar date)84. {85. uchar i,temp;86. temp=date;87. for(i=0;i<8;i++)88. {89. temp=temp<<1; //保持最高位,左移到进位CY90. scl=0;91. delay1();92. sda=CY;93. delay1();94. scl=1;95. delay1();96. }97. scl=0;98. delay1();99. sda=1;//总线释放100. delay1();101. }102. //*******************************读字节操作函数***************************** 103. uchar read_byte()104. {105. uchar i,k;106. scl=0;107. delay1();108. sda=1;109. delay1();110. for(i=0;i<8;i++)111. {112. scl=1;113. delay1();114. k=(k<<1)|sda; //或运算,放到最低位115. scl=0;116. delay1();117. }118. return k;119. }120. //**********************************写地址函数****************************** 121. void write_add(uchar address,uchar date)122. {123. start();124. write_byte(0xa0);125. respond();126. write_byte(address);127. respond();128. write_byte(date);129. respond();130. stop();131. }132. //*******************************读地址函数************************************* 133. uchar read_add(uchar address)134. {135. uchar date;136. start();137. write_byte(0xa0);138. respond();139. write_byte(address);140. respond();141. start();142. write_byte(0xa1);143. respond();144. date=read_byte();145. stop();146. return date;147. }148. //****************************LCD1602的初始化******************************* 149. void write_com(uchar com)150. {151. rs=0;152. lcden=0;153. P0=com;154. delay(5);155. lcden=1;156. delay(5);157. lcden=0;158. }159.160. void write_date(uchar date)161. {162. rs=1;163. lcden=0;164. P0=date;165. delay(5);166. lcden=1;167. delay(5);168. lcden=0;169. }170.171. //***************************************密码比较函数******************************** 172. bit mimacmp()173. {174. bit flag;175. uchar i;176. for(i=0;i<8;i++)177. {178. if(mima[i]==tab_key[i])179. flag=1;180. else181. {182. flag=0;183. i=8;184. }185. }186. return(flag); //返回flag187. }188.189. ////**********************************LCD显示函数开始**************************************190. void lcd_display()191. {192. uchar i=0;193. write_com(0x80+0x40+8);194. for(i=0;i<n;i++)195. {196. write_date(table3[0]);197. }198. }199.200. //****************************************键盘功能分配函数群开始****************************201. //** 0 ** 1 **2 ** 3**202. //** 4** 5** 6 **7 **203. //**8** 9** 确认(A) **无效(B)204. //**取消(C)**修改密码键(D)**确认修改键(E)**无效(F)205.206. void key_manage1()207. {208. tab_key[n]=0;209. n++;210. if(xiugaiflag==1)211. {212. mima[count4]=0;213. count4++;214. }215. }216.217. void key_manage2()218. {219.220. tab_key[n]=1;221. n++;222. if(xiugaiflag==1)223. {224. mima[count4]=1;225. count4++;226. }227. }228.229. void key_manage3()230. {231.232. tab_key[n]=2;233. n++;234. if(xiugaiflag==1)235. {236. mima[count4]=2;237. count4++;238. }239. }240.241. void key_manage4() 242. {243. tab_key[n]=3; 244. n++;245. if(xiugaiflag==1) 246. {247. mima[count4]=3; 248. count4++;249. }250. }251.252. void key_manage5() 253. {254. tab_key[n]=4; 255. n++;256. if(xiugaiflag==1) 257. {258. mima[count4]=4; 259. count4++;260. }261. }262.263. void key_manage6() 264. {265. tab_key[n]=5; 266. n++;267. if(xiugaiflag==1) 268. {269. mima[count4]=5; 270. count4++;271. }272. }273. void key_manage7() 274. {275. tab_key[n]=6; 276. n++;277. if(xiugaiflag==1) 278. {279. mima[count4]=6; 280. count4++;281. }282. }283. void key_manage8() 284. {285. tab_key[n]=7; 286. n++;287. if(xiugaiflag==1) 288. {289. mima[count4]=7; 290. count4++;291. }292. }293.294. void key_manage9()295. {296. tab_key[n]=8;297. n++;298. if(xiugaiflag==1)299. {300. mima[count4]=8;301. count4++;302. }303. }304. void key_manage10()305. {306. tab_key[n]=9;307. n++;308. if(xiugaiflag==1)309. {310. mima[count4]=9;311. count4++;312. }313. }314. //**********************************确认键**************************************************************315. void key_manage11()316. {317. enterflag=1; //确认键按下318. if(n==8) //只有输入8个密码后按确认才做比较319. mimaflag=mimacmp();320. else321. mimaflag=0;322. if(enterflag==1)323. {324. enterflag=0;325. n=0;326. //用FFFFFFFF清除已经输入的密码327. for(count3=0;count3<8;count3++)328. {329. delay(5);330. tab_key[count3]=0x0f;331. }332.333. TR1=1; //打开计数器1334. count1=0; //定时器1由50MS累计到1S 所用的计数器335. if(mimaflag==1)336. {337. a=0;338.339. write_com(0x01);340. write_com(0x80);341. for(count3=0;count3<16;count3++)342. {343. write_date(table4[count3]); //密码正确,显示RIGHT,绿灯亮344. delay(5);345. }346. }347.348. else349. {350. n=0;351. red=0;352. bell=0;353. a++;354. if(a==1)355. {356. for(count3=0;count3<8;count3++) //ffffffff清除密码357. {358. delay(5);359. tab_key[count3]=0x0f;360. }361. write_com(0x01); 362. write_com(0x80);363. for(count3=0;count3<16;count3++)364. {365. write_date(table5[count3]); //密码错误,显示 first error,红灯亮366. delay(5);367. }368. TR1=1;369. }370. if(a==2)371. {372. for(count3=0;count3<8;count3++) //ffffffff清除密码373. {374. delay(5);375. tab_key[count3]=0x0f;376. }377. write_com(0x01);378. write_com(0x80);379. for(count3=0;count3<16;count3++)380. {381. write_date(table6[count3]); //密码错误,显示SECOND ERROR,红灯亮382. delay(5);383. }384. TR1=1;385. }386.387. if(a==3)388. {389. for(count3=0;count3<8;count3++) //ffffffff清除密码390. {391. delay(5);392. tab_key[count3]=0x0f;393. }394. write_com(0x01);395. write_com(0x80);396. for(count3=0;count3<16;count3++)397. {398. write_date(table7[count3]); //密码错误,显示third error see,红灯亮399. delay(5);400. }401. write_com(0x80+0x40);402. for(count3=0;count3<16;count3++)403. {404. write_date(table8[count3]);//密码错误,显示 U TOMORROW ,红灯亮405. delay(5);406. }407. TR1=0;408.409. }410.411. }412. }413.414. }415. void key_manage12()416. {417. tab_key[n]=11;418. n++; //密码计数清零419.420. }421. //****************************************************取消键********************************************422. void key_manage13()423. {424.425. n=0; //密码计数清零426. write_com(0x80); //指针所指位置427. for(count3=0;count3<16;count3++)428. {429. write_date(table1[count3]); //第一行显示INPUT THE PASSPORD:430. delay(5);431. }432. write_com(0x80+0x40);433. for(count3=0;count3<16;count3++)434. {435. write_date(table2[count3]); //开机显示--------436. delay(5);437. tab_key[count3]=0x0f; //用FFFFFFFF清楚已经输入的密码438. }439.440. }441. //*******************************************修改密码键********************************** 442. void key_manage14()443. {444. uchar aa=0;445. n=0;446. xiugaiflag=1;447. write_com(0x01);448. write_com(0x80);449. for(count3=0;count3<16;count3++)450. {451. write_date(table9[count3]); //显示define the password452. delay(5);453. tab_key[count3]=0x0f; //用FFFFFFFF清楚已经输入的密码454. }455. write_com(0x80+0x40);456. for(count3=0;count3<16;count3++)457. {458. write_date(table10[count3]); //显示--------459. delay(5);460. }461. TR0=1;462.463. }464. //******************************************修改密码键的确认键********************************465. void key_manage15()466. {467. n=0;468. enter1flag=1;469. if(enter1flag==1)470. {471. enter1flag=0;472. count4=0;473. for(count3=0;count3<16;count3++)474. {475. tab_key[count3]=0x0f; //用FFFFFFFF清楚已经输入的密码476. }477. write_com(0x01);478. write_com(0x80);479. for(count3=0;count3<16;count3++)480. {481. write_date(table11[count3]);482. delay(100);483. }484. TR1=1;485. count1=0;486. }487. }488. void key_manage16()489. {490. tab_key[n]=15;491. n++;492. }493.494. //****************************************定时器1的50MS,共延时1秒*****************************495. void time_1() interrupt 3496. {497.498. TH1=(65536-50000)/256;499. TL1=(65536-50000)%256;500. if(count1<20)501. {502. count1++;503. }504. else //计时到1S505. {506. TR1=0;507. count1=0;508. mimaflag=0;509.510. red=1;511. bell=1;512. //显示FFFFFFFF513. write_com(0x01);514. write_com(0x80);515. for(count3=0;count3<16;count3++)516. {517. write_date(table1[count3]); //显示INPUT THE PASSCODE518. delay(5);519. }520. write_com(0x80+0x40);521. for(count3=0;count3<16;count3++)522. {523. write_date(table2[count3]); //开机显示FFFFFFFF524. delay(5);525. }526. }527.528. }529. //***********************************************定时0**********************************************530. void time_0() interrupt 1531. {532.533. TH0=(65536-50000)/256;534. TL0=(65536-50000)%256;535. if(count4<8)536. {537. key_scan();538. }539. else540. {541. TR0=0;542. count4=0;543. }544. }545.546. //初始化函数547. void init()548. {549.550. uchar i;551. lcden=0;552. write_com(0x38); //打开显示模式设置553. write_com(0x0c); //打开显示,光标等等设置未零554. write_com(0x06); //当读或写一个字符后地址指针加一,且光标加一,当写一个字符后整频显示左移,555. write_com(0x01); //清零指令556. write_com(0x80); //指针所指位置557.558. //定时器初始化559. TMOD=0x11; //T0,T1工作方式1560. TH0=(65536-2000)/256;561. TL0=(65536-2000)%256; //T0初始化2MS563. TH1=(65536-50000)/256;564. TL1=(65536-50000)%256; //T1初始化50MS565.566. TR1=0;567. ET1=1;568. EA=1;569. TR0=0;570. ET0=1;571.572. count0=0; //初始没有密码输入,故为零573. enterflag=0; //没有确认键按下574. mimaflag=0; //密码正确与否键先置零575.576. red=1; //红灯不亮577. //************密码存入EPROM中**********************************578. sda=1;579. delay(5);580. scl=1;581. delay(5);582. for(i=0;i<8;i++)583. {584. write_add(i,8);585. delay2(100);586. }587. for(i=0;i<8;i++)588. {589. mima[i]=read_add(i);590. delay(5);591. }592.593. }594. void main()595. { rw=0;596. init();597. write_com(0x80); //指针所指位置598. for(count3=0;count3<16;count3++)599. {600. write_date(table1[count3]); //第一行显示INPUT THE PASSPORD: 601. delay(5);602. }603. write_com(0x80+0x40);604. for(count3=0;count3<16;count3++)605. {606. write_date(table2[count3]); //开机显示FFFFFFFF607. delay(5);608. }609. while(1)610. {611. key_scan(); //调用键盘扫描函数612. lcd_display();613. }614.615. }616. //**************************************************键盘扫描函数开始********************************619. //**********扫描第一行*********620. P1=0xfe;621. temp=P1;622. temp=temp&0xf0;623. if(temp!=0xf0)624. {625. delay(100);626. if(temp!=0xf0)627. {628. temp=P1;629. switch(temp)630. {631. case 0xee:632. key_manage1();633. break;634.635. case 0xde:636. key_manage2();637. break;638.639. case 0xbe:640. key_manage3();641. break;642.643. case 0x7e:644. key_manage4();645. break;646. }647. while(temp!=0xf0)648. {649. temp=P1;650. temp=temp&0xf0;651. }652. }653. }654. //**************************************************扫描第二行***********************************655. P1=0xfd;656. temp=P1;657. temp=temp&0xf0;658. if(temp!=0xf0)659. {660. delay(100);661. if(temp!=0xf0)662. {663. temp=P1;664. switch(temp)665. {666. case 0xed:667. key_manage5();668. break;669.670. case 0xdd:671. key_manage6();674. case 0xbd:675. key_manage7();676. break;677.678. case 0x7d:679. key_manage8();680. break;681. }682. while(temp!=0xf0)683. {684. temp=P1;685. temp=temp&0xf0;686. }687. }688. }689. //*********************************************扫描第三行***********************************690. P1=0xfb;691. temp=P1;692. temp=temp&0xf0;693. if(temp!=0xf0)694. {695. delay(100);696. if(temp!=0xf0)697. {698. temp=P1;699. switch(temp)700. {701. case 0xeb:702. key_manage9();703. break;704.705. case 0xdb:706. key_manage10();707. break;708.709. case 0xbb:710. key_manage11();711. break;712.713. case 0x7b:714. key_manage12();715. break;716. }717. while(temp!=0xf0)718. {719. temp=P1;720. temp=temp&0xf0;721. }722. }723. }724.725. //***************************************************扫描第四行****************************************727. temp=P1;728. temp=temp&0xf0; 729. if(temp!=0xf0) 730. {731. delay(100);732. if(temp!=0xf0) 733. {734. temp=P1;735. switch(temp) 736. {737. case 0xe7:738. key_manage13(); 739. break;740.741. case 0xd7:742. key_manage14(); 743. break;744.745. case 0xb7:746. key_manage15(); 747. break;748.749. case 0x77:750. key_manage16(); 751. break;752. }753. while(temp!=0xf0) 754. {755. temp=P1;756. temp=temp&0xf0; 757. }758. }759. }760. }复制代码。

单片机密码锁设计带原理图电路图

单片机密码锁设计带原理图电路图

单片机密码锁设计(汇编语言-)带原理图电路图-2016(总14页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--单片机密码锁设计(汇编语言)带原理图电路图什么是密码锁电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。

硬件设计基于AT89C51为核心的单片机控制的电子密码锁设计。

本设计能完成开锁,修改密码,密码错误报警,LCD显示密码等基本的密码锁功能。

设计的电路框如图1。

电路的功能单元设计1.单片机AT89C51组成基本框图单片机引脚介绍P0:P0口是一个漏极开路的8位双向I/O口。

在访问片外存储器时P0分时提供低8位地址线和8位双向数据线。

当不接片外存储器或不扩展I/O口时,P0可作为一个通用输入/输出口。

P0口作输入口使用时,应先向口锁存器写“1”,P0口作输出口时,需接上拉电阻。

P1:P1口是一个内部提供上拉电阻的8位双向I/O口,因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”。

P2:P2口也是一个内部提供上拉电阻的8位双向I/O口,在访问片外存储器时,输出高8位地址。

P3:P3口除了一般的准双向通用I/O口外,还有第二功能。

VCC:+5V电源VSS:接地 ALE:地址锁存器控制信号。

在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。

此外,由于ALE是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。

/PSEN:外部程序存储器读选通信号。

在读外部ROM时,/PSEN有效(低电平),以实现外部ROM单元的读操作。

/EA:访问程序存储控制信号。

当/EA信号为低电平时,对ROM的读操作限定在外部程序存储器;当/EA信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。

毕业设计(论文)-基于单片机的电子密码锁设计

毕业设计(论文)-基于单片机的电子密码锁设计

目录单片机电子密码锁的设计 (1)第1章绪论 (3)1.1引言 (3)1.2电子密码锁的背景 (3)1.3电子锁设计的意义的本设计特点 (4)第2章系统总体方案设计 (5)第3章硬件电路设计 (8)3.1键盘电路设计 (8)3.2LED显示电路 (9)3.3开锁电路 (11)3.4报警电路 (12)第4章软件设计 (12)4.1软件设计思路 (12)4.2各子程序设计 (13)第5章系统调试 (18)第6章单片机电子密码锁的应用趋势 (19)第7章设计总结与展望 (19)附录 (23)源程序清单 (23)单片机电子密码锁的设计摘要:随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统机械锁由于构造简单,被撬事件屡见不鲜;电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。

本设计以单片机AT89C51作为密码锁监控装置的检测和控制核心,分为主机控制和从机执行机构(本设重点介绍主机设计),实现钥匙信息在主机上的初步认证注册、密码信息的加密、钥匙丢失报废等功能。

根据51单片机之间的串行通信原理,这便于对密码信息的随机加密和保护。

而且采用键盘输入的电子密码锁具有较高的优势。

采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,提高信号传输的抗干扰性,减少错误动作,而且功率消耗低;反应速度快、传输效率高、工作稳定可靠等。

软件设计采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。

测试结果表明,本系统各项功能已达到本设计的所有要求。

关键词:单片机;密码锁;单片机设计,电子锁。

The design of electronic locks SCMABSTRACT:Along with the exaltation of social science and the living level of people, how carry out the family to guard against theft, this problem also change particularly outstanding.Because of the simple construct of traditional machine lock,the affairs of theft is hackneyed.the electronics lock is safer because of its confidentiality, using the vivid good, the safe coefficient is high, being subjected to the large customer close.It can carry out the key information to register in the main on board initial attestation, the password information encrypt etc. Go to correspond by letter the principle according to the string between 51 machines, this is easy to encrypt and protect to the passwords information random. Adopt the numerical signal codes,not only can carry out many controls of the road information, raise the anti- interference that signal deliver, reduce the mistake action,but also the power consume is low,Respond quickly,the efficiency deliver is high, work stable credibility etc. The software design adoption the design thought from top to bottom, to make the system toward wear distribute type,turn to the direction development of small, strengthen the system and can expand the stability and circulate.Test the result enunciation, various functions of this system are already all request of this design.KEYWORD:singlechip;cryptogram lock;singlechip design; electronics lock.第1章绪论1.1 引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的喜爱。

电子密码锁单片机设计完整程序电路

电子密码锁单片机设计完整程序电路
(2)系统的总体思路设计
以 STC89C516 单片机为主控制单元,键盘为主要输入单元,结合开锁装置、 报警器和显示器完成整个系统设计。
系统的运行过程大致如下: 假设初始状态为闭锁,此时整个系统只等待按键输入,显示屏 显示“Input password Press key A”。按下 A 后,每按下一个数据键 (即每输入一个密码),lcd1602 显示一个“*”,当密码全部输入完成后, 需按下确认键“#”,此时系统判断密码是否正确,正确则开锁,错误则 报警。若按下密码重置键“*”,则需先输入原密码,正确后请输入新密 码,还要确认一遍新密码。按下删除键可以删除输错的密码。
单片机课程设计
1 系统的总体设计和主要元器件介绍 (1)设计要求
以 STC89C516 单片机为核心器件,结合按键电路、LCD1602 显 示电路、报警指示电路和开锁机构,利用单片机灵活的编程设计和丰富 的 I/O 端口,及其控制的准确性通过软件程序来控制整个系统实现电子 密码锁的以下基本功能:
(2)LCD1602 显示器
接口信号说明:
1602 型 LCD 的接口信号说明如表 2-2 所示。
表 2-2 LCD1602 接口信号说明
2
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资0配不料置仅试技可卷术以要是解求指决,机吊对组顶电在层气进配设行置备继不进电规行保范空护高载高中与中资带资料负料试荷试卷下卷问高总题中体2资2配,料置而试时且卷,可调需保控要障试在各验最类;大管对限路设度习备内题进来到行确位调保。整机在使组管其高路在中敷正资设常料过工试程况卷中下安,与全要过,加度并强工且看作尽护下可关都能于可地管以缩路正小高常故中工障资作高料;中试对资卷于料连继试接电卷管保破口护坏处进范理行围高整,中核或资对者料定对试值某卷,些弯审异扁核常度与高固校中定对资盒图料位纸试置,卷.编保工写护况复层进杂防行设腐自备跨动与接处装地理置线,高弯尤中曲其资半要料径避试标免卷高错调等误试,高方要中案求资,技料编术试写5交、卷重底电保要。气护设管设装备线备置4高敷、调动中设电试作资技气高,料术课中并3试中、件资且卷包管中料拒试含路调试绝验线敷试卷动方槽设技作案、技术,以管术来及架避系等免统多不启项必动方要方式高案,中;为资对解料整决试套高卷启中突动语然过文停程电机中气。高课因中件此资中,料管电试壁力卷薄高电、中气接资设口料备不试进严卷行等保调问护试题装工,置作合调并理试且利技进用术行管,过线要关敷求运设电行技力高术保中。护资线装料缆置试敷做卷设到技原准术则确指:灵导在活。分。对线对于盒于调处差试,动过当保程不护中同装高电置中压高资回中料路资试交料卷叉试技时卷术,调问应试题采技,用术作金是为属指调隔发试板电人进机员行一,隔变需开压要处器在理组事;在前同发掌一生握线内图槽部纸内故资,障料强时、电,设回需备路要制须进造同行厂时外家切部出断电具习源高题高中电中资源资料,料试线试卷缆卷试敷切验设除报完从告毕而与,采相要用关进高技行中术检资资查料料和试,检卷并测主且处要了理保解。护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

基于单片机的电子密码锁设计

基于单片机的电子密码锁设计

基于单片机的电子密码锁设计
电子密码锁是一种常用的智能锁具,它使用数字密码代替传统的钥匙,能够提供更高的安全性和方便性。

基于单片机的电子密码锁能够实现简单的密码输入、校验和控制逻辑,下面是一种基于单片机的电子密码锁设计方案。

硬件部分:
1、MCU:选择一款高性价比的8位单片机,如AT89C51,具备足够的存储空间、操作速度和通用IO口。

2、键盘:选用16键或12键矩阵键盘,提供数字、字母和功能键,可灵活设置密码。

3、数码管:用于显示输入密码和状态信息,一般采用4位共阳数码管。

4、电路保护:此处需添加过流保护、短路保护、反向保护以及过压保护等电路。

5、电源:选择电池供电模式,例如4节AA碱性电池并联,以保证足够的电量和使用寿命。

软件部分:
1、键盘输入检测:通过IO口扫描矩阵键盘输入状态,检测按下的键位并读取对应键值,避免误触。

2、密码存储:将设定好的开锁密码存储在MCU内部的Flash或EEPROM中,以保证密码安全并避免意外丢失。

3、密码校验:将输入的数字密码与存储的密码进行比较,如一致则允许开锁,否则拒绝开锁并显示“密码错误”。

4、状态显示:通过4位共阳数码管显示输入密码、开锁状态、警报状态等信息,方便用户操作。

5、警报功能:若输入错误密码超过规定次数,则触发警报,并向指定手机号或邮箱发送警报信息。

总之,基于单片机的电子密码锁设计需要合理安排硬件和软件功能,充分保证安全性和可靠性,并考虑升级和扩展的可能性。

单片机控制的电子密码锁(电路图 流程图 原理图)-课程设计

单片机控制的电子密码锁(电路图 流程图 原理图)-课程设计

单片机控制的电子密码锁(电路图+流程图+原理图)-课程设计单片机控制的电子密码锁(电路图+流程图+原理图) 摘要:本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。

系统能完成开锁、超时报警、超次锁定、管理员解密、修改用户密码基本的密码锁的功能。

除上述基本的密码锁功能外,还具有调电存储、声光提示等功能,依据实际的情况还可以添加遥控功能。

本系统成本低廉,功能实用关键词:AT89S51,AT24C02, 电子密码锁,矩阵键盘一、引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。

设计本课题时构思了两种方案:一种是用以AT89s51为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。

考虑到数字电路方案原理过于简单,而且不能满足现在的安全需求,所以本文采用前一种方案。

二、方案论证与比较方案一:采用数字电路控制。

其原理方框图如图1-1所示。

图2-1 数字密码锁电路方案采用数字密码锁电路的好处就是设计简单。

用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。

电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。

密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。

方案二:采用一种是用以AT89S51为核心的单片机控制方案。

基于STC89C52单片机的电子密码锁(完整版)-附-仿真图-原理图

基于STC89C52单片机的电子密码锁(完整版)-附-仿真图-原理图

目录1绪论 (1)1.1本设计的研究背景与研究目的 (1)1.2国内外研究现状 (2)2电子密码锁的总体设计方案 (3)2.1方案论证 (3)2.1.1方案一采用单片机控制方案 (3)2.1.2方案二采用数字电路控制方案 (4)2.1.3方案三采用EDA控制方案 (5)2.2方案比较以及可行性 (5)3电子密码锁硬件电路的设计 (6)3.1中央控制模块的设计 (6)3.1.1主控芯片STC89C52单片机的简介 (6)3.1.2时钟电路的设计 (7)3.1.3复位电路的设计 (8)3.2键盘输入模块的设计 (9)3.2.1矩阵键盘工作原理 (9)3.2.2单片机键盘扫描法 (10)3.3LCD显示密码模块的设计 (10)3.3.1LCD1602简介 (11)3.3.2LCD1602液晶显示模块与单片机连接电路 (12)3.4开锁模块的设计 (13)3.5报警模块的设计 (13)3.6硬件电路总体设计 (14)4电子密码锁的软件设计 (15)4.1主程序流程介绍 (15)4.2键盘模块流程图 (16)4.3显示模块流程图 (18)4.4修改密码流程图 (19)4.5开锁和报警模块流程图 (20)5电子密码锁的系统调试及分析 (22)5.1硬件电路调试及结果分析 (22)5.2软件调试及功能分析 (22)5.2.1调试过程 (22)5.2.2仿真结果分析 (24)5.3系统调试 (26)6结论及展望 (28)6.1结论 (28)6.2展望 (28)谢辞 (29)参考文献 (30)附录 (32)附1部分代码 (32)附2总电路图 (40)电子密码锁的设计与制作1绪论1.1本设计的研究背景与研究目的随着人们生活水平的提高和社会科技的进步,锁已发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。

在传统钥匙的基础上,加了一组或多组密码,不同声音,不同磁场,不同声波,不同光束光波,不同图像。

(如指纹、眼底视网膜等)来控制锁的开启。

基于单片机的智能密码锁设计

基于单片机的智能密码锁设计

XX大学XXXXXXXXX本科毕业论文(设计)题目基于单片机的智能密码锁设计指导教师王霞职称讲师学生姓名XXX学号XXX专业通信工程班级二班院(系)电子信息工程学院电子工程系完成时间2011年4月17日基于单片机的智能密码锁设计摘要随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发中首选的控制器。

随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,安全性能低,无法满足人们的需要。

本文从经济实用的角度出发,采用美国Atmel公司的单片机AT89C51作为主控芯片,结合外围的矩阵键盘输入、LED数码管显示、报警、开锁等,用C语言编写主控芯片的控制程序,对系统硬件设计和软件实现进行了详细的描述,设计了一款可以多次更改密码,具有报警功能的电子密码控制系统。

这种电路设计具有防试探按键输入、智能控制上锁、开锁、报警、修改密码等多种功能。

密码长度可变、保密性强、灵活性高。

经实验证明,该密码控制系统具有设计方法合理,简单易行,成本低,安全使用等特点,符合车辆、办公室用锁要求,具有推广价值。

关键词:密码锁/单片机The design of Electric Lock based on a single chipABSTRACTAs electronic products are developing towards intelligence and minimization, single—chip computers (SCM ) have become the first choice for controllers in the development of electronic products. With the improvement of people's living standards, it has become particularly prominent about how to achieve Anti-theft family. The traditional mechanical lock has such shortcoming as simple structure , Low security, it can't meet people's demands.This article from the economical and practical point of view,the use of the United States Atmel Corporation AT89C51 microcontroller as a master chip combined with the external matrix keyboard input, LED digital display, alarm, unlock and so on, dominated by the C programming language and the combination of reading and writing program designed to change a password many times, the police function with the electronic the password control. This circuit design with anti-test button input, intelligent control lock, unlock, alarm, multiple functions, such as Change Password. Password length can be changed, even more secret and flexible than others.Experiments show that the password control system is characterized by its reasonable designing methods, simple operation, low cost and property of safety and practicality.Besides,the password control can be used in the office and has great potential for commercial development.Key Words:Cipher lock,SCM目录摘要 (I)ABSTRACT.................................................... I I 目录..................................................... I II 1 概述. (1)1.1 引言 (1)1.2 电子密码锁的背景 (2)1.3 电子锁设计的意义和本设计的特点 (2)2 系统模块电路的设计 (4)2.1系统总设计结构图 (4)2.2 AT89C51单片机 (4)2.2.1 引脚介绍 (4)2.2.2最小系统 (8)2.3 键盘模块 (10)2.4 显示模块 (11)2.5 开锁模块 (12)2.6 报警模块 (13)3 系统的软件设计 (15)3.1 系统软件设计思路 (15)3.2系统软件设计流程图 (16)4 系统的仿真 (17)4.1 仿真软件介绍 (17)4.1.1 Proteus介绍 (17)4.1.2 Keil uvision4与Proteus联调 (18)4.2 仿真过程 (19)整个软件设计的思路: (19)总结 (23)参考文献 (24)致谢 (25)附录1 系统电路图 (26)附录2 程序清单 (27)main.c (27)io.c (34)func.c (40)timer.c (42)def.h (44)1 概述1.1 引言随着社会物质财富的日益增长,如何实现家庭防盗这一问题也变的尤其的突出,而锁自古以来就是把守门户的铁将军,人们对它要求甚高,即要安全可靠地防盗,又要使用方便。

毕业设计-基于AT89C51单片机的电子密码锁的设计

毕业设计-基于AT89C51单片机的电子密码锁的设计

毕业设计(论文)题目:电子密码锁的设计学院:电气与信息工程学院专业:电子信息工程姓名:学号: ********* 指导老师:**完成时间: 2013年5月28日摘要随着经济社会发展,人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出。

传统的机械锁,由于其构造简单,安全性能低,无法满足人们的需要。

随着电子产品向智能化和微型化的不断发展,数字密码锁作为防盗卫士的作用显得尤为重要。

而单片机以其实用,功能强大,价格低廉等功能,已成为电子产品研制和开发中首选的控制器。

本文从经济实用的角度出发,阐述一个基于单片机的液晶显示电子密码锁的设计与实现。

系统采用ATMEL公司的AT89C51单片机作为系统核心,液晶显示器LCD1602作为输出设备显示系统提示信息,4*4矩阵键盘作为输入设备,CMOS串行E2PROM存储器AT24C02作为数据存储器,配合蜂鸣器、继电器等电路构成整个系统硬件;系统软件采用C语言编写。

设计的系统液晶显示,密码修改方便,具有报警、锁定等功能,使用便捷简单,符合住宅、办公用锁需求,具有一定的实用价值。

关键词:单片机,密码锁,AT89C51,LCD1602,AT24C02AbstractWith the development of our society and the i mprovement of people’s living standard, how to ensure the family security is becoming more and more important in particular. Traditional mechanical lock is unable to meet the need of us because of its simple structure and low security. Nowadays, electronic products become smarter and smaller, electronic password anti-theft lock plays a more important role as the security guards. The MCU with its practical, strong function, low price and other functions , has become the preferred controller in electronic product research and development.This article is written from the economic perspective, elaborates the design and implementation of a LCD electronic password anti-theft lock which is based on MCU. This system is composed of AT89C51 which is designed as the core of this system, LCD1602 as the output device to display the message of this system, 4 * 4 matrix keyboard as the input device, a CMOS serial E2PROM AT24C02 as the data storage, and a buzzer, relay circuit.The software of the system is written in C language. The system displays in a LCD, it can change password easily, and has the function of alarming, locking, and so on. This system has some practical value, and it is simple and easy to use, meets the demand of residential and the need of office lock.Key Words: MCU, Password-Lock, AT89C51, LCD1602, AT24C02目录摘要 (I)Abstract ............................................................................................................................. I I 目录 ................................................................................................................................. I II 1引言 . (1)1.1课题的背景和意义 (1)1.2课题的研究现状 (1)1.3课题研究内容 (2)2 数字密码锁总体设计 (3)2.1 系统方案论证 (3)2.1.1 采用数字电路的设计方案 (3)2.1.2 采用以单片机为核心设计方案 (4)2.2 基于单片机的数字密码锁的设计原理 (5)3 系统硬件设计 (6)3.1 主要元器件介绍 (6)3.1.1 主控芯片AT89C51的的介绍 (6)3.1.2 继电器的介绍 (9)3.1.3 存储芯片AT24C02的介绍 (10)3.1.4 LCD1602显示器的介绍 (10)3.1.5 矩阵键盘模块的介绍 (11)3.2 系统硬件部分 (12)3.2.1 系统电源部分 (12)3.2.2 键盘输入部分 (13)3.2.3 密码存储部分 (14)3.2.4 显示部分 (14)3.2.5 报警部分 (15)3.2.6开锁部分 (16)4 系统软件设计 (17)4.1 系统程序流程图 (17)4.1.1主程序流程图 (17)4.1.2 键功能程序流程图 (18)4.1.3 修改密码程序流程图 (19)4.1.4 开锁程序流程图 (20)4.2 子程序举例 (21)4.2.1 按键扫描子程序 (21)4.2.2 显示子程序 (22)4.2.3 开锁子程序 (22)4.3 系统软件调试及结果 (24)4.3.1 Proteus软件介绍 (24)4.3.2 系统软件调试 (25)4.3.3 仿真结果 (25)5 硬件系统制作及调试 (29)5.1焊接注意事项 (29)5.2硬件调试问题及解决办法 (30)5.3硬件调试效果 (31)总结 (34)致谢 (35)参考文献 (36)附录 (37)附录A 电路原理图 (37)附录B 系统总体程序 (38)1引言1.1课题的背景和意义随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤为突出,传统的机械锁由于其构造简单,被撬的事件屡见不鲜。

基于单片机的红外电子密码锁的设计

基于单片机的红外电子密码锁的设计

基于单片机的红外电子密码锁的设计基于单片机的红外电子密码锁的设计随着科技的发展,红外电子密码锁逐渐取代传统的机械密码锁成为了门禁系统中的主流。

红外电子密码锁通过红外线传输数据,使得开锁变得更加智能化、快速化,而且提高了安全性,防止了密码泄露以及密码碰撞的问题。

本文将介绍一种基于单片机的红外电子密码锁的设计方案。

一、系统方案本设计采用C51单片机为控制器,红外线信号接收模块作为主控,驱动步进电机控制门锁的开关,使得门的开关更加方便快捷,并提高了安全性。

电路运用了ISP编程器,通过USB 接口与电脑连接,并通过Keil软件编写程序上传到控制器中,以控制系统的整体运行流程。

二、硬件设计1. 单片机选型本设计中,选用51系列单片机控制器Atmel AT89C51,其具有内部FLASH可编程存储器,可在编程过程中对程序进行修改,更加便于控制器程序的更新维护。

同时,该单片机具有多种外设接口,包括计数器、定时器、串口等,便于实现控制器与各种传感器、执行器的互联。

2. 电源设计本系统使用直流12V供电,其中12V正极接单片机VCC,负极接GND,同时将12V作为步进电机的电源。

在电路中使用L7805稳压电源,将电压稳定输出为5V供给单片机芯片和红外线传感器等其他模块。

3. 红外线接收模块在门锁上方适当放置一个2150nm红外线传感器模块,以接收红外线信号并将其转化为数字信号。

这里采用的是RS232接口连接,将红外二极管所收到的红外线信号交给MCU进行处理。

4. 步进电机为实现门的自动开启关闭,本设计采用了步进电机驱动门锁的开关。

步进电机与单片机控制器的连接采用的是四线步进电机驱动电路。

其中,两根草绿色和橙色的线为电机的控制线,将其接入单片机P3口中,蓝色和红色的两根线分别为电机的两个电极,将它们接到电机驱动器的两个对应通道上。

三、软件设计1. 开发环境本设计所需的IDE使用Keil 4.0集成开发工具,同时也需要用到AT89C51单片机的ISP编程器,将程序下载到MCU板上。

基于单片机的电子密码锁设计

基于单片机的电子密码锁设计

基于单片机的电子密码锁设计一、电子密码锁的工作原理电子密码锁主要由输入模块、控制模块、存储模块和执行模块组成。

用户通过输入模块(如键盘)输入密码,控制模块(单片机)对输入的密码进行处理和判断,并与存储模块中预先设定的密码进行比对。

如果输入密码正确,控制模块将向执行模块发送开锁指令,实现开锁;如果输入密码错误,则执行相应的错误处理操作,如报警、锁定等。

二、硬件设计(一)单片机的选择在本设计中,选用了_____型号的单片机。

该单片机具有性能稳定、功耗低、接口丰富等优点,能够满足电子密码锁的控制需求。

(二)输入模块输入模块采用了矩阵键盘,通过行列扫描的方式获取用户输入的密码。

矩阵键盘具有按键数量多、占用端口少的特点,能够有效节省单片机的资源。

(三)存储模块为了存储预设的密码,选用了_____型号的EEPROM芯片。

EEPROM具有掉电不丢失数据的特性,能够保证密码的安全性和可靠性。

(四)显示模块为了给用户提供反馈信息,使用了_____型号的液晶显示屏。

可以显示开锁状态、输入错误提示等信息。

(五)执行模块执行模块包括电磁锁和报警装置。

当输入密码正确时,单片机控制电磁锁打开;当输入密码错误次数超过设定值时,启动报警装置。

三、软件设计(一)主程序流程系统上电后,首先进行初始化操作,包括单片机端口初始化、EEPROM读取预设密码等。

然后进入密码输入等待状态,当检测到有按键输入时,进行密码处理和判断,并根据判断结果执行相应的操作。

(二)密码输入处理在密码输入过程中,对输入的按键进行去抖处理,防止误判。

同时,对输入的密码进行加密处理,提高密码的安全性。

(三)密码比对将输入的密码与存储在EEPROM中的预设密码进行比对。

比对过程中,采用逐位比较的方式,确保密码的准确性。

(四)错误处理当输入密码错误时,记录错误次数。

如果错误次数超过设定值,则启动报警装置,并锁定键盘一段时间,防止暴力破解。

四、系统调试与测试(一)硬件调试首先检查电路连接是否正确,有无短路、断路等情况。

51单片机电子密码锁设计(包含原理图-电路设计-c语言程序)

51单片机电子密码锁设计(包含原理图-电路设计-c语言程序)

电子密码锁设计1.实验任务根据设定好的密码,采用二个按键实现密码的输入功能,当密码输入正确之后,锁就打开,如果输入的三次的密码不正确,就锁定按键3秒钟,同时发现报警声,直到没有按键按下3种后,才打开按键锁定功能;否则在3秒钟内仍有按键按下,就重新锁定按键3秒时间并报警。

2.电路原理图图4.32.13.系统板上硬件连线(1).把“单片机系统”区域中的P0.0/AD0用导线连接到“音频放大模块”区域中的SPK IN端子上;(2).把“音频放大模块”区域中的SPK OUT端子接喇叭和;(3).把“单片机系统”区域中的P2.0/A8-P2.7/A15用8芯排线连接到“四路静态数码显示”区域中的任一个ABCDEFGH端子上;(4).把“单片机系统“区域中的P1.0用导线连接到“八路发光二极管模块”区域中的L1端子上;(5).把“单片机系统”区域中的P3.6/WR、P3.7/RD用导线连接到“独立式键盘”区域中的SP1和SP2端子上;4.程序设计内容(1).密码的设定,在此程序中密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。

(2).密码的输入问题:由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。

在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。

进入密码的判断比较处理状态并给出相应的处理过程。

(3).按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的情况下发生的。

5.C语言源程序#include <AT89X52.H>unsigned char code ps[]={1,2,3,4,5};unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};unsigned char pslen=9;unsigned char templen;unsigned char digit;unsigned char funcount;unsigned char digitcount;unsigned char psbuf[9];bit cmpflag;bit hibitflag;bit errorflag;bit rightflag;unsigned int second3;unsigned int aa;unsigned int bb;bit alarmflag;bit exchangeflag;unsigned int cc;unsigned int dd;bit okflag;unsigned char oka;unsigned char okb;void main(void){unsigned char i,j;P2=dispcode[digitcount];TMOD=0x01;TH0=(65536-500)/256;TL0=(65536-500)%256;TR0=1;ET0=1;EA=1;while(1){if(cmpflag==0){if(P3_6==0) //function key{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) //digit key{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;}else if(funcount>1){psbuf[funcount-2]=digitcount;}}else{second3=0;}while(P3_7==0);}}}else{cmpflag=0;for(i=0;i<pslen;i++){if(ps[i]!=psbuf[i]){hibitflag=1;i=pslen;errorflag=1;rightflag=0;cmpflag=0;second3=0;goto a;}}cc=0;errorflag=0;rightflag=1;hibitflag=0;a: cmpflag=0;}}}void t0(void) interrupt 1 using 0{TH0=(65536-500)/256;TL0=(65536-500)%256;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;}else if(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;}}}}。

基于单片机的电子密码锁

基于单片机的电子密码锁
S c i e n c e & Te c hn o l o g y Vi s i o n
科 技 视 界
底节围堰拼装完成后 , 收短 吊挂 系统 的预应力筋 . 将 底节 围堰提 升2 0 e a, r 拆 除拼装平 台上 长出多余的贝雷梁 组 , 分段 吊到驳 船上 , 拆 除围堰下放 线路上 的贝雷梁 逐步伸长预应力筋 , 使底 节围堰缓慢下放 . 接长预应力筋 . 使 围堰 下放 到水 面 . 自浮在水 面上
[ 责任编辑 : 杨玉洁 ]
( 上接第 7 2页) 次更改密码具有报警功能的 电子密码锁。设计完全可 行可以达到设 计 目的 使用单片机制作的电子密码 锁具有 软硬件设计 简单 , 易 于开发 , 成本较 低 , 安全 可靠 , 操作 方便等 特点 , 可应用于住 宅、 办公 室的保 险箱及档案柜等需要 防盗 的场所 . 有一定的实用性。 该 电路 设计还具有按键 有效 提示 . 输入错误提示 . 修改密码等多种功能 。
4 围堰 吸 泥 下沉
围堰在覆盖层中下沉的阻力来 自两个方面 . 一是刃尖下土 的正 面 阻力 , 二是围堰外壁与土层间的摩 阻力 。围堰在覆盖层 中下沉就是 消 除或减少刃尖下 的正 面阻力 ,靠 围堰 的 自重克服外壁 的摩 阻力而下
沉, 而消除或减少正 面阻力 的方法就是从 围堰 内吸泥 除土 . 降低 围堰 内泥面高程 。
科技・ 探索・ 争鸣
高差悬殊 , 使 围堰破坏 。因此在围堰下沉 过程 , 必须避免翻砂现象的
发生。
Байду номын сангаас
5 ) 及时掌握 围堰 内的吸泥浓度及 泥面高差 , 吸泥时每 2 小 时测一 次 围堰内泥面高度 ,并根据 围堰中的泥面情况绘 制等高线 图及 时分 析, 随时调整吸泥部位 3 . 4 第二 三节拼装顺序 6 ) 保证对 围堰 内的补水 . 保持围堰内外水头平衡或 围堰 内水 头高 第二 、 三节围堰接高顺序按从 围堰长边 中部 向两短 边进 行 . 对称 于 围堰外 , 值班人员 应随时观察 围堰 内外 水位高度 . 围堰 内水头不得 施工保持 围堰 的稳定性 低于 围堰外 3 . 5 接高 围堰 5 围 堰 封 底 接高前 . 在底节围堰顶用型钢设 置围堰接 高平 台 拼接施 工时以 底节 围堰为基准 , 初步定位 、 测量放样 、 精确定 位 、 焊接安装 。 在接高施 该围堰采用垂 直导管法灌注水下封底混凝土。封底工艺流程 : 施 工时按照编号对称进行施工保持围堰的稳定性 在完成所有节段的组 工准备一 清基一 检查验 收一封底平台布置一围堰封底 拼后 , 对焊缝质 量 、 侧板水密性及 吊箱 尺寸 、 安装精度进 行检查验 收 。 1 ) 当双壁钢围堰下沉 至设 计标高 。 进行 围堰 范围 内清基 : 采 用空 拆除底节围堰上的临时施工平 台移至 中节 围堰 的顶面 . 作为顶节 围堰 气 吸泥机吸泥法 的施工工艺 .把钢围堰范围内的覆 盖层全部 清除 . 满 接高时的操作平台。顶节围堰接 高步骤 同中节 围堰 足封底厚度要求后 , 潜水工下水 , 用高压枪对钢围堰刃脚 内侧 护筒周

基于单片机的电子密码锁设计(终稿)

基于单片机的电子密码锁设计(终稿)

基于单片机的电子密码锁设计摘要:锁,是指加在门、箱子、抽屉等物体上的封缄器,要用专用的钥匙才能打开。

自古以来锁都是人们财产安全乃至生命安全的一种重要保障。

伴随着人类历史的发展和人们对自身财产安全和人生安全的重视,各种各样的多功能的锁具也相继出现,人们使用的锁具也由传统的机械式锁逐渐发展为安全性能更好,功能更多的电子密码锁。

在现代社会,电子密码锁已是一个被大家所熟识的名词。

相信很多人的小区大门上的锁都用的是电子密码锁。

本文中将要介绍的电子密码锁是一种通过判断密码输入是否正确来控制电路或是芯片的工作状态,进而控制锁的打开和闭合,从而完成开锁、闭锁任务的电子锁装置。

本设计是基于AT89C51单片机为控制核心的密码锁设计方案。

在本次基于单片机的电子密码锁设计中,将采用AT89C51单片机作为控制核心,配合相应的电路和软件程序,实现密码的输入和修改、信息的显示、键盘的锁定、系统报警、开锁和闭锁等功能。

在设计中,利用识别密码是否正确来开锁或报警,通过串行存储器AT24C02来实现密码的修改和存储。

本文设计的密码锁具有安全性高、功耗低、操作简单等优点。

关键词:单片机;密码锁;电子锁;矩阵键盘;掉电存储The Design Of Electronic Code Lock Based OnSingle Chip MicrocomputerAbstract:As sealed device, the lock added to such objects like door, box, drawer etc, can be opened with specified key. Since the ancient time, lock is a kind of security, guarantee ing people’s property safety even life safety. With the development of human history and more attention paid to property safety and life safety, various multi-functional locks can be seen in the world. Traditional mechanical locks people use in life are gradually replaced by electronic combination lock characterized with better safety performance and more functions.In the modern society, electronic combination lock is a noun familiar to everyone. Usually, the door of community is equipped with electronic combination lock. This paper will introduce an electronic combination lock. This lock controls the electric circuits and the performance of chips by identifying password. Thus, the openness and closeness of the lock can be controlled, and the task of electronic lock device can be completed.This design is about combination lock, based on the AT89C51 single-chip microcomputer as the core of controlling goals. This design in which the AT89C51 single-chip microcomputer as the core of the controlling goals cooperated with relevant circuits and software programs can achieve such functions like password input and modification, information display, keyboard locking, warning system, and the openness and closeness of the lock etc. In this design, the openness of lock and alarming are according to identifying the password, and password revision and storage is achieved by the function of the AT24C02 serial storage.Electronic combination lock described in this paper is characterized with high security, low power consumption, and simplicity of operation etc.Keywords: Single-chip microcomputer, Combination lock, Electronic lock, Matrix keyboard, Power lost storage目录第1章绪论 (1)1.1电子密码锁简介 (1)1.2电子密码锁设计的背景及意义 (1)1.3电子密码锁的现状及发展趋势 (2)第2章总体设计 (3)2.1设计分析 (3)2.2系统结构 (4)第3章硬件电路设计 (5)3.1单片机接口分配 (5)3.2单片机最小系统设计 (5)3.2.1 时钟电路 (5)3.2.2 复位电路 (6)3.2.3 最小系统 (6)3.3矩阵键盘设计 (7)3.4LCD显示模块设计 (8)3.5掉电存储模块 (10)3.5.1 I2C总线 (10)3.5.2 AT24C02简介 (12)3.6开锁机构 (13)3.7报警机构 (13)3.8硬件综合设计 (14)第4章软件设计 (15)4.1软件总体设计 (15)4.2键盘扫描子程序 (16)4.3显示模块子程序 (18)4.4掉电存储子程序 (20)4.4.1 写操作方式 (21)4.4.2 读操作方式 (22)4.5定时器中断子程序 (23)4.6密码输入子程序 (25)4.7报警子程序 (26)第5章联合仿真和调试 (27)第6章实物设计和制作 (29)总结 (31)致谢 (32)参考文献 (33)附录1 设计实物图 (34)附录2 程序源代码 (36)第1章绪论1.1 电子密码锁简介什么是电子密码锁?“一种通过密码输入来控制电路或者是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于单片机电子密码锁设计程序#include <AT89X51.h>#define uchar unsigned charuchar starbuf[10];uchar wordbuf[8];uchar pw[8]={1,2,3,4,5,6,7,8};uchar pwbuf[8];uchar count=0;// 初始没有输入密码,计数器设为0uchar inputflag=0;// 先处于密码输入状态,非密码修改状态bit enterflag=0; // 没有按下确认键bit pwflag=0;// 密码标志先置为0sbit warn=P3^6;#define lcd_data P0sbit rs=P2^7;sbit rw=P2^6;sbit e=P2^5;///////////////////////LCD1602驱动程序///////////////////////void delay_1602(unsigned int i) {while(i--);}void enrw(){rs=0;rw=0;e=0;delay_1602(250);e=1;}write_data(uchar c){lcd_data=c;rs=1;rw=0;e=0;delay_1602(250);e=1;}init_lcd(void)//初始化{lcd_data=0x01;//清屏幕enrw();lcd_data=0x38;//数据长度为8位,双行显示,5*7字符。

enrw();lcd_data=0x0c;//打开显示开关enrw();lcd_data=0x06;//地址计数递增,显示屏不移动enrw();}write_cmd(uchar m)//写命令,注意与写数据的区别{lcd_data=m;enrw();}display(uchar row,uchar colum,uchar *s)//行列字符写字符串,简单的指针应用{uchar p;if(row==1)p=0x82+colum-1;elsep=0xC0+colum-1;write_cmd(p);for(;*s!='\0';s++)write_data(*s);}void lcd_display( unsigned char a, unsigned char b,unsigned char i)//行列数{switch (i){case 0:display( a,b, "0") ;break;/* 0 */case 1:display( a,b, "1") ;break;/* 1 */case 2:display( a,b, "2") ;break;/* 2 */case 3:display( a,b, "3") ;break;/* 3 */case 4:display( a,b, "4") ;break;/* 4 */case 5:display( a,b, "5") ;break;/* 5 */case 6:display( a,b, "6") ;break;/* 6 */case 7:display( a,b, "7") ;break;/* 7 */case 8:display( a,b, "8") ;break;/* 8 */case 9:display( a,b, "9") ;break;/* 9 */default: break;}}/* 键消抖延时函数*/void delay(unsigned int i){int j;for(;i>0;i--)for(j=0;j<100;j++);}/* 键扫描函数*/uchar keyscan(void){uchar scancode,tmpcode;P1 = 0xf0;// 发全0行扫描码if ((P1&0xf0)!=0xf0)// 若有键按下{delay(2);// 延时去抖动if ((P1&0xf0)!=0xf0)// 延时后再判断一次,去除抖动影响{scancode = 0xfe;//第一行变低while((scancode&0x10)!=0)// 逐行扫描{P1 = scancode;// 输出行扫描码if ((P1&0xf0)!=0xf0)// 本行有键按下{tmpcode = (P1&0xf0)|0x0f;/* 返回特征字节码,为1的位即对应于行和列*/return((~scancode)+(~tmpcode));}else scancode = (scancode<<1)|0x01;// 行扫描码左移一位}}}return(0);// 无键按下,返回值为0}/* 密码比较函数*/bit pwcmp(void){bit flag;uchar i;for (i=0;i<8;i++){if (pw[i]==pwbuf[i])flag = 1;else{flag = 0;i=8;}}return(flag);}/* 密码清除函数*/void pwclk(unsigned char k){unsigned char i;for (i=0;i<8;i++){wordbuf[i] = 0;// 数码管显示00000000starbuf[i] = 0;if(k==0)pwbuf[i] = 0;// 用FFFFFF清除已经输入的密码elsepw[i] = 0;// 用FFFFFF清除已经输入的密码}}/* 按键声响函数*/void alarm(){unsigned char i;for(i=0;i<200;i++){warn=!warn;delay(1);}}/* 密码报警函数*/ void alarm1(){unsigned int i;for(i=0;i<2000;i++){warn=!warn;delay(1);}}/* 呼叫报警函数*/ void alarm2(){unsigned char i=12; unsigned char a,b; while(i>0){for(a=0;a<150;a++){warn=!warn;delay(1);}for(b=0;b<150;b++){warn=!warn;delay(2);}i--;}}/* 按键处理函数*/void key_conduct(unsigned char a,unsigned char b){switch(a){case 0x11:// 1行1列,数字0if (count<8){if(b==0){starbuf[count] = '*';// 对应密码位上显示'*'pwbuf[count] = 0;}else{pw[count] = 0;wordbuf[count] = 0;lcd_display(2,count+1,wordbuf[count]);}count++;}alarm();break;case 0x21:// 1行2列,数字1 if (count<8){if(b==0){starbuf[count] = '*';// 对应密码位上显示'*'pwbuf[count] = 1;}else{pw[count] = 1;wordbuf[count] = 1;lcd_display(2,count+1,wordbuf[count]);}count++;}alarm();break;case 0x41:// 1行3列,数字2 if (count<8){if(b==0){starbuf[count] = '*';// 对应密码位上显示'*'pwbuf[count] = 2;}else{pw[count] = 2;wordbuf[count] = 2;lcd_display(2,count+1,wordbuf[count]);}count++;}alarm();break;case 0x81:// 1行4列,数字3 if (count<8){if(b==0){starbuf[count] = '*';// 对应密码位上显示'*'pwbuf[count] = 3;}else{pw[count] = 3;wordbuf[count] = 3;lcd_display(2,count+1,wordbuf[count]);}count++;}alarm();break;case 0x12:// 2行1列,数字4 if (count<8){if(b==0){starbuf[count] = '*';// 对应密码位上显示'*'pwbuf[count] = 4;}else{pw[count] = 4;wordbuf[count] = 4;lcd_display(2,count+1,wordbuf[count]);}count++;}alarm();break;case 0x22:// 2行2列,数字5 if (count<8){if(b==0){starbuf[count] = '*';// 对应密码位上显示'*'pwbuf[count] = 5;}else{pw[count] = 5;wordbuf[count] = 5;lcd_display(2,count+1,wordbuf[count]);}count++;}alarm();break;case 0x42:// 2行3列,数字6 if (count<8){if(b==0){starbuf[count] = '*';// 对应密码位上显示'*'pwbuf[count] = 6;}else{pw[count] = 6;wordbuf[count] = 6;lcd_display(2,count+1,wordbuf[count]);}count++;}alarm();break;case 0x82:// 2行4列,数字7 if (count<8){if(b==0){starbuf[count] = '*';// 对应密码位上显示'*'pwbuf[count] = 7;}else{pw[count] = 7;wordbuf[count] = 7;lcd_display(2,count+1,wordbuf[count]);}count++;}alarm();break;case 0x14:// 3行1列,数字8 if (count<8){if(b==0){starbuf[count] = '*';// 对应密码位上显示'*'pwbuf[count] = 8;}else{pw[count] = 8;wordbuf[count] = 8;lcd_display(2,count+1,wordbuf[count]);}count++;}alarm();break;case 0x24:// 3行2列,数字9 if (count<8){if(b==0){starbuf[count] = '*';// 对应密码位上显示'*'pwbuf[count] = 9;}else{pw[count] = 9;wordbuf[count] = 9;lcd_display(2,count+1,wordbuf[count]);}count++;}alarm();break;case 0x44:// 3行3列,确认键enterflag = 1;// 确认键按下if(b==0){if (count==8) // 只有输入8个密码后按确认键才作密码比较pwflag = pwcmp();elsepwflag = 0;// 否则直接pmflag赋0 pwclk(b);//输入密码并判断之后清除}else{if (count==8) // 只有输入8个密码后按确认键才作密码比较pwflag = 1;else{pwflag = 0;pwclk(b);}}break;case 0x84:// 3行4列,取消键count = 0;// 密码计数清零pwclk(b);init_lcd();break;case 0x18:// 4行1列,密码修改键inputflag=1;// 进入密码修改模式count = 0;init_lcd();break;case 0x28:// 4行2列,密码修改键inputflag=0;// 退出密码修改模式count = 0;init_lcd();break;case 0x48:init_lcd();// 关于作品display(1,0,"Author: 083521047HCY");display(2,2,"QQ:393388456 ");delay(3000);init_lcd();break;case 0x88:init_lcd();// 清屏break;default: break;}}/* 主程序*/void main(){uchar key,error=0;init_lcd();while(1){while(inputflag==0)// 输入密码模式{display(1,0,"Input password:");display(2,0,starbuf);key = keyscan();// 调用键盘扫描函数key_conduct(key,inputflag);if(enterflag==1)// 如果按下确认键{enterflag = 0; // 标志位置回0count = 0;// 密码位计数器清零pwclk(inputflag);if(pwflag==1)// 如果密码输入正确{init_lcd();display(1,0,"Correct!");pwclk(0);delay(2000);error=0;}else{init_lcd();init_lcd();init_lcd();display(1,0,"Password wrong!");alarm1();error++;}while(error>=3)// 如果密码输入错误三次{init_lcd();init_lcd();display(1,0,"No access!");alarm2();while(1);}}}while(inputflag==1)// 更改密码模式{display(1,0,"New password:");key = keyscan();// 调用键盘扫描函数key_conduct(key,inputflag);if(enterflag==1)// 如果按下确认键{enterflag = 0; // 标志位置回0count = 0;// 密码位计数器清零if(pwflag==1)// 如果密码修改正确{inputflag=0;init_lcd();display(1,0,"Change finish!");delay(2000);}else{init_lcd();display(1,0,"Change fail!");pwclk(1);alarm1();}}}}}电路图。

相关文档
最新文档