51单片机——电子密码锁
51单片机——电子密码锁
链接: link.
图片: !protues仿真
,下面展示同样高亮的 代码片
.
#include<reg51.h>
unsigned char zt=1;
unsigned char password[8];
unsigned char table[8];
unsigned char smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char i=0;
unsigned char wrong=0;
unsigned char right=0;
unsigned char input=0;
unsigned char temp;
unsigned char j;
unsigned char m=0;
unsigned char k;
unsigned char q;
sbit red=P2^3;
sbit yellow=P2^0;
sbit green=P2^1;
sbit blue=P2^2;
sbit fm=P2^6;
sbit full=P2^5;
sbit igreen=P2^4;
sbit P34=P3^4;
sbit P35=P3^5;
sbit P36=P3^6;
sbit P37=P3^7;
void delay();
void btn(unsigned char a);
void checkpassword();
void put();
void submit();
void lock();
void check_C1();
void check_C2();
void check_C3();
void check_C4();
void check_button();
void first();
void open();
void close();
void beep();
void ddelay();
void main(){
P2=0x00;
P0=0Xff;
while(1){
if(zt==1){first();
}
if(zt==2){open();
}
if(zt==3){close();
}
}
}
void beep(){
unsigned int c;
unsigned int d;
for(d=0;d<200;d++){
for(c=0;c<200;c++){
fm=1;
ddelay();
fm=0;
}
}
}
void ddelay(){
unsigned int b;
for(b=0;b<=30;b++);
}
void delay(){
unsigned int n;
TMOD=0X00;
for(n=0;n<=100;n++){
TH0=0X63;
TL0=0X18;
TR0=1;
while(!TF0);
TF0=0;
}
}
void btn(unsigned char a){
if(i<8&&input1){
table[i++]=a;
blue=1;
P0=smg[a];
delay();
blue=0;
P0=0xff;
}
if(i8&&input1){
igreen=0;
full=1;
}
}
void checkpassword(){
m=0;
for(k=0;k<8;k++){
m++;
if(password[k]!=table[k]){
break;
}
}
if(m8){
right=1;
}else{
full=0;
red=1;
delay();
red=0;
wrong++;
}
if(wrong>3){
red=1;
full=0;
beep();
}
}
void put(){
if(input0){
igreen=1;
input=1;
i=0;
}
}
void submit(){
if(zt1||zt2){
if(i8){
for(j=0;j<8;j++)
password[j]=table[j];
if(zt2)
i=0;
full=0;
input=0;
}
}
if(zt3&&i==8){
checkpassword();
full=0;
input=0;
i=0;
}
if(zt==1&&i==8){zt=2;yellow=0;full=0;input=0;i=0;
}
}
void lock(){
if(zt2&&input0){
zt=3;
green=0;
}
}
void check_C1(){
P3=0xff;
P34=0;
temp=P3;
temp=temp&0x0f;
if(temp!=0x0f){
temp=P3;
temp=temp&0x0f;
switch(temp){
case 0x0e:btn(0);break;
case 0x0d:btn(4);break;
case 0x0b:btn(8);break;
case 0x07:break;
}
temp=P3;
temp=temp&0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp&0x0f;
}
}
}
void check_C2(){
P3=0xff;
P35=0;
temp=P3;
temp=temp&0x0f;
if(temp!=0x0f){
temp=P3;
temp=temp&0x0f;
switch(temp){
case 0x0e:btn(1);break;
case 0x0d:btn(5);break;
case 0x0b:btn(9);break;
case 0x07:lock();break;
}
temp=P3;
temp=temp&0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp&0x0f;
}
}
}
void check_C3(){
P3=0xff;
P36=0;
temp=P3;
temp=temp&0x0f;
if(temp!=0x0f){
temp=P3;
temp=temp&0x0f;
switch(temp){
case 0x0e:btn(2);break;
case 0x0d:btn(6);break;
case 0x0b:break;
case 0x07:put();break;
}
temp=P3;
temp=temp&0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp&0x0f;
}
}
}
void check_C4(){
P3=0xff;
P37=0;
temp=P3;
temp=temp&0x0f;
if(temp!=0x0f){
temp=P3;
temp=temp&0x0f;
switch(temp){
case 0x0e:btn(3);break;
case 0x0d:btn(7);break;
case 0x0b:break;
case 0x07:submit();break;
}
temp=P3;
temp=temp&0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp&0x0f;
}
}
}
void check_button(){
check_C1();
check_C2();
check_C3();
check_C4();
}
void first(){
yellow=1;
check_button();
while(input1){
check_button();
}
}
void open(){
green=1;
check_button();
while(input1){
check_button();
}
}
void close(){
yellow=1;
check_button();
while(input1){
check_button();
}
if(right1){
yellow=0;
red=0;
wrong=0;
right=0;
zt=2;
fm=0;
}
}
51单片机——电子密码锁相关推荐
- 51单片机50个实例代码_【附代码】51单片机电子密码锁教程
简介 大家好,这篇文章的内容是关于如何用51单片机来制作一个电子密码锁的教程,通过这篇教程可以让刚入门的朋友了解矩阵键盘.LCD1602的使用方法,以及密码输入和修改的程序介绍,我会对每个部分进行详细 ...
- 基于51单片机的密码锁
本次的项目是基于51单片机的密码锁,适合用来作为课程设计 主要实现了:密码锁功能,通过矩阵按键输入密码,输入范围为0-F,共有四位:同时,也可以使用更改按键更改密码,在更改时需要输入原密码来进入更改模 ...
- 基于51单片机蓝牙密码锁
目录 一.项目需求 二.原理图 三.设计思路 四.实物 五.代码 资料下载地址:基于51单片机蓝牙密码锁-单片机文档类资源-CSDN下载 一.项目需求 1.采用DS1302时钟模块,通过该模块可检测当 ...
- 基于51单片机电子密码锁门禁开关设计全套资料
基于51单片机电子密码锁门禁(实物图+原理图+源程序+仿真+毕设论文)全套资料 资料编号:011 本系统采用 51单片机 +24C02芯片+矩阵键盘 +继电器 +开锁指示灯 + LCD1602液晶 + ...
- 单片机电子密码锁C语言程序,单片机电子密码锁的设计(汇编语言).doc
word格式整理版 文档可编辑 一.设计总说明 ? 随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别.IC卡辨认)已在国内外相继面世.但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保 ...
- 51单片机蓝牙密码锁
51单片机蓝牙密码锁 本设计以STC89C52单片机为核心控制器,加上其他的模块一起组成蓝牙密码锁的整个系统,其中包含中控部分.输入部分和输出部分.中控部分采用了STC89C52单片机,其主要作用是获 ...
- 模块称重51单片机电子秤称重压力检测阈值报警仪系统 源码+原理图仿
HX711模块称重51单片机电子秤称重压力检测阈值报警仪系统 源码+原理图仿真(文件,文件,文件) 本系统由STC89C52单片机.LCD1602液晶显示.HX711称重传感器. 蜂鸣器报警.按键及电 ...
- 51单片机汇编密码锁(可修改密码,课程设计,含论文)!(大三上)
单片机课程设计 设计课题:密码锁 一上来不bb太多,提供所有文件下载地址. 点击下载所有文件(汇编51单片机密码锁(含论文.程序.AD图)单片机课程设计) https://download.csdn. ...
- 基于C语言STC89C52单片机电子密码锁的设计与仿真
arm实现较为简单, 功能较为完善, 因此使用单片机控制较多. 显示器少数用数码管. 而本文所介绍的电子密码锁使用移植性及可读性强的高级语言C语言编写, 使用更加方便. 从经济适用的角度出发, 采用S ...
最新文章
- lightgbm 决策树 可视化 graphviz
- ffmpeg linux安装_ffmpeg命令中文手册
- 每隔k次反转一次 链表_PTA 5-2 Reversing Linked List (25) [法一] - 线性表 - 链表反转 (PAT 1074)...
- AODV---点点滴滴
- STM32串口的部分映射与完全映射
- MESSL(maven + extjs + spring portlet mvc + spring web flow + liferay )整合架构 1
- Linux一键部署duckchat,宝塔面板部署DuckChat(翻译:鸭信)- 一个简约好用的网络聊天平台...
- 戴尔电脑开机黑屏怎么办_笔记本电脑开机黑屏怎么办
- SQLSERVER语句的执行时间
- UIView中的坐标转换
- Maxwell个人初学经验及资料分享
- 阐述SDN的原理、SDN使用场景、SDN技术的优缺点、SDN发展现状及分析SDN对社会和环境的影响
- NXP S32K146 CAN通讯 TJA1043(二)
- Javescript REVIEW
- Linux(六)NFS(network file system)服务器实验
- STM8S003串口printf及帧判断
- 美团相关的scheme
- 当封号成为一种常态,网络营销人该何去何从?
- android关于 子控件超出父控件范围的注意点
- 莫名其妙的Status Code: 500,返回值500是什么问题呢?构造函数恐怖如斯