电子密码锁程序C语言,基于51单片机的电子密码锁程序
结果图:
4.png (839.58 KB, 下载次数: 5)
2020-10-17 20:57 上传
一、目的概述(收集相关资料、选设计方案、电路设计):
本设计是以STC89C52单片机为控制核心的电子密码锁,属于单片机的应用。做本设计有助于对单片机矩阵键盘,数码管以及串行通信原理的深入了解。电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。
系统设计方案为:
(1)系统设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。
(2)密码可由用户自己设定,在开锁状态下,用户可自行修改密码。
(3)具有自动报警功能,密码输入错误时,报警由扬声器发出“滴滴”报警声。而密码输入正确则是“叮咚”声。
系统设计结构图:
屏幕截图 2020-10-17 205131.png (26.31 KB, 下载次数: 4)
2020-10-17 20:52 上传
本设计由主控芯片51单片机,单片机时钟电路,键盘,数码管组成。单片负责控制整个系统的控制执行过程。开锁成功由数码管显示OPEN,以及蜂鸣器“叮咚”表示,开锁失败由数码管显示Err,以及蜂鸣器“滴滴”表示。
二、实验原理图
电路设计:
2.png (180.44 KB, 下载次数: 1)
2020-10-17 20:54 上传
1.png (96.78 KB, 下载次数: 3)
2020-10-17 20:54 上传
程序设计:(只展示核心部分)
主程序
1. //4×4 键盘及8 位数码管显示构成的电子密码锁
2. void main() //主程序
3. {
4. uchar key;
5. Timer0_Init();
6. while(1)
7. {
8. key = KeyScan();
9. password(key);
10. }
11. }
核心程序:数码管的动态扫描显示
12. void Display()
13. {
14. uchar i;
15. Segment_sel=0x00;//消隐
16. switch(i) //位选,选择点亮的数码管,
17. {
18. case(0):
19. LSA=0;LSB=0;LSC=0; break;
20. case(1):
21. LSA=1;LSB=0;LSC=0; break;
22. case(2):
23. LSA=0;LSB=1;LSC=0; break;
24. case(3):
25. LSA=1;LSB=1;LSC=0; break;
26. case(4):
27. LSA=0;LSB=0;LSC=1; break;
28. case(5):
29. LSA=1;LSB=0;LSC=1; break;
30. }
31. }
核心程序:矩阵键盘的扫描输入
32. uchar KeyScan()
33. {
34. for(i=0;i<8;i++)
35. {
36. P1 = P1Pin[ i];
37. Button = P1;
38. if(Button != P1Pin[ i])
39. {
40. Delayms(5);
41. Button = P1;
42. if(Button != P1Pin[ i])
43. {
44. KeyState=1;
45. key8 = Button;
46. }
47. while(Button != P1Pin[ i])
48. { Button = P1; }
49. }
50. }
51. switch(key8)
52. {
53. case 0x77:{key = 1;break;}
54. case 0x7b:{key = 2;break;}
55. case 0x7d:{key = 3;break;}
56. case 0xb7:{key = 4;break;}
57. case 0xbb:{key = 5;break;}
58. case 0xbd:{key = 6;break;}
59. case 0xd7:{key = 7;break;}
60. case 0xdb:{key = 8;break;}
61. case 0xdd:{key = 9;break;}
62. case 0xeb:{key = 0;break;} //0
63. case 0x7e:{key = 10;break;} //÷
64. case 0xbe:{key = 11;break;} //×
65. case 0xde:{key = 12;break;} //+
66. case 0xee:{key = 13;break;} //-
67. case 0xed:{key = 14;break;} //=
68. case 0xe7:{key = 15;break;} //ENTER
69. default:{key = 0xff;break;}
70. }
71. return key;
72. }
核心程序:输入密码以及校对和处理
73. void password(uchar key)//0~9 数字键,10 输入密码,11 设置密码,12 删除上一个数,13 重新输入 15 确定
74. {
75. uchar i=0;
76. if(KeyState==1)
77. {
78. switch(state)
79. {
80. case 0:
81. {
82. if(key == 10)
83. {
84. state = 1;
85. LSA=1;LSB=1;LSC=1;
86. Segment_sel=0xff; //显示8
87. }
88. else if(key == 11)
89. {
90. state = 2;
91. LSA=1;LSB=1;LSC=1;
92. Segment_sel=0xfd; //显示P
93. }
94. break;
95. }
96. case 1:
97. {
98. if(key>=0 && key <= 9) //输入
99. {
100. InPassword[5]=InPassword[4];
101. InPassword[4]=InPassword[3];
102. InPassword[3]=InPassword[2];
103. InPassword[2]=InPassword[1];
104. InPassword[1]=InPassword[0];
105. InPassword[0]=smgduan[key];
106. KeyState=0;
107. }
108. else if(key == 15) //确定
109. {
110. if(Compare(InPassword))
111. {
112. for(i=17;i<23;i++)
113. InPassword[ i]=smgduan;
114. Delayms(1000);
115. }//open
116. else
117. {
118. for(i=23;i<27;i++)
119. InPassword[ i]=smgduan;
120. Delayms(1000);
121. }//err
122. state = 0;
123. }
124. else if(key == 13) //重新输入
125. {
126. for(i=0;i<6;i++)
127. InPassword[ i] = 0xff; // 全亮
128. Delayms(1000);
129. state = 0;
130. }
131. break;
132. }
133. else//如果没有按键按下
134. {
135. if(state == 0)
136. {
137. Segment_sel= 0x00;// 不显示
138. }
139. }
140. }
C语言代码51hei下载地址:
电子密码锁程序.zip
(1.79 KB, 下载次数: 52)
2020-10-17 20:59 上传
点击文件名下载附件
下载积分: 黑币 -5
电子密码锁程序C语言,基于51单片机的电子密码锁程序相关推荐
- 万年历设计单片机c语言,基于51单片机的电子万年历的设计
基于51单片机的电子万年历的设计(论文9400字) 功能要求 1. 万年历能用数码管显示阳历年.月.日.星期.[小]时.分.秒并设置指定时间的闹铃. 2. 数字式温度计要求测温范围-50~100°C, ...
- 51单片机电机测速程序c语言,基于51单片机光电编码器测速.doc
基于51单片机光电编码器测速 PAGE PAGE 2 课程设计报告 课程名称: 微机原理课程设计 题 目: 基于51单片机的光电编码器测速 摘要 光电编码器是高精度位置控制系统常用的一种位移检测传感器 ...
- 声控灯程序C语言,基于51单片机的声控灯设计设计-包含完整设计与指导文件.doc...
基于51单片机的声控灯设计设计-包含完整设计与指导文件 工 学 院 毕 业 设 计(论文) 题 目:基于单片机的智能光控路灯的设计 专 业: 机电技术教育 班 级: *** 姓 名: *** 学 号: ...
- 声控灯程序C语言,基于51单片机的声控灯的设计.doc
PAGE 3 基于51单片机的声控小灯 电子信息工程技术信息工程系 电子信息工程技术 信息工程系 年 10 月 20 日 诚 信 声 明 本人郑重声明:所呈交的毕业设计文本和成果,是本人在指导老师的指 ...
- 电子密码锁课设单片机c语言,基于51单片机的电子密码锁综合课程设计
5.大容量片内EEPROM,擦写次数10万次以上 EEPROM,擦写次数10万次以上,擦写次数10万次以上 6.ISP/IAP,在系统可编程/在应用可编程,无需编程器/仿真器 7.共8通道10位高速A ...
- 避障机器人程序c语言,基于51单片机小车寻迹、避障源程序(注释很详细)
/* * 作者:赵新 * 功能:实现小车躲避障碍,通过检测三个方向的距离,选择最大距离转弯 * 日期:2015/3/14 * 说明:STC89c52RC,12MHz * 注意:1000ms和100ms ...
- 智能窗帘定时程序c语言,基于51单片机的智能窗帘程序设计
#include #include #define uchar unsigned char // 以后unsigned char就可以用uchar代替 #define u ...
- 基于51单片机的电子血压温度计(单片机健康检测系统设计)proteus仿真设计(仿真+程序+演示视频)
基于51单片机的电子血压温度计proteus仿真设计 (仿真+程序+演示视频) 仿真图proteus 8.9 程序编译器:keil 5 编程语言:C语言 设计编号:S0026 演示视频: 51单片机的 ...
- c51单片机时钟c语言程序设计,基于51单片机的电子时钟设计..doc
-- I -- - - I -- 设计题目: 基于 51 单片机的电子时钟设计 摘要 单片机,是集 CPU ,RAM ,ROM ,定时器,计数器和多种接口于一体的微控制器.自 20 世纪 70 年代问 ...
- 51单片机八人抢答器c语言,抢答器 - 基于51单片机 - 8人有程序较完整.doc
抢答器 - 基于51单片机 - 8人有程序较完整 课程题目: 基于单片机---8路抢答器 学 院: 职业技术学院 专 业: 电子信息科学与技术 年 级: 091 学 号: 0920020088 学生姓 ...
最新文章
- pytorch Bert 情感分类
- 白话Elasticsearch70-ES生产集群部署之production mode下启动时的bootstrap check
- python django model定义
- JVM调优:GC标记清除回收算法
- 三十年TCP与七年QUIC 谁才是未来?
- java求数组的最小值_JAVA编程求数组最大值和最小值
- 【高并发】JUC底层工具类Unsafe
- PHP模板引擎smarty详细介绍
- Django常用命令
- mysql dateofweek_日历表-月的周数
- 086-Python生成Wifi二维码 一扫联网
- 658. 一元二次方程公式
- JNDI全攻略(一)
- JavaScript弹性透明的图片放大代码
- python训练Word2Vec词向量
- wxpython制作excel表格_怎么做一个精美的excel表格
- 播放器实战07 av_read_frame与av_seek_frame
- android studio 中配置groovy源码_麻省理工教程:使用Unity AR Foundation在AR中查看模型...
- python爬虫小说教程_python制作小说爬虫实录
- my fav html
热门文章
- 1959年第一台电子计算机,1、 一般认为,世界上第一台电子数字计算机诞生于______。 A.1946年 B.1952年 C.1959年 D.1962年...
- Excel 日期时间格式讲解
- 计算机硬件知识调查表,计算机硬件的调研报告(精).docx
- 人再囧途之泰囧.BD高清1280国语中英双字 附下载地址
- 戴珊接替蒋凡,掌管淘宝天猫,阿里太子已被废?
- 【TypeScript】使用CRA创建支持TS的React项目(从踩坑到放弃)
- Android扩展知识 - 减轻C盘压力,扩大C盘空闲容量
- 怎么压缩PNG图片的大小?如何对PNG图片进行压缩
- android崩溃日志 2016,常用获取Android崩溃日志的几种方法
- 无法获得 VMCI 驱动程序的版本: 句柄无效解决