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单片机——电子密码锁相关推荐

  1. 51单片机50个实例代码_【附代码】51单片机电子密码锁教程

    简介 大家好,这篇文章的内容是关于如何用51单片机来制作一个电子密码锁的教程,通过这篇教程可以让刚入门的朋友了解矩阵键盘.LCD1602的使用方法,以及密码输入和修改的程序介绍,我会对每个部分进行详细 ...

  2. 基于51单片机的密码锁

    本次的项目是基于51单片机的密码锁,适合用来作为课程设计 主要实现了:密码锁功能,通过矩阵按键输入密码,输入范围为0-F,共有四位:同时,也可以使用更改按键更改密码,在更改时需要输入原密码来进入更改模 ...

  3. 基于51单片机蓝牙密码锁

    目录 一.项目需求 二.原理图 三.设计思路 四.实物 五.代码 资料下载地址:基于51单片机蓝牙密码锁-单片机文档类资源-CSDN下载 一.项目需求 1.采用DS1302时钟模块,通过该模块可检测当 ...

  4. 基于51单片机电子密码锁门禁开关设计全套资料

    基于51单片机电子密码锁门禁(实物图+原理图+源程序+仿真+毕设论文)全套资料 资料编号:011 本系统采用 51单片机 +24C02芯片+矩阵键盘 +继电器 +开锁指示灯 + LCD1602液晶 + ...

  5. 单片机电子密码锁C语言程序,单片机电子密码锁的设计(汇编语言).doc

    word格式整理版 文档可编辑 一.设计总说明 ? 随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别.IC卡辨认)已在国内外相继面世.但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保 ...

  6. 51单片机蓝牙密码锁

    51单片机蓝牙密码锁 本设计以STC89C52单片机为核心控制器,加上其他的模块一起组成蓝牙密码锁的整个系统,其中包含中控部分.输入部分和输出部分.中控部分采用了STC89C52单片机,其主要作用是获 ...

  7. 模块称重51单片机电子秤称重压力检测阈值报警仪系统 源码+原理图仿

    HX711模块称重51单片机电子秤称重压力检测阈值报警仪系统 源码+原理图仿真(文件,文件,文件) 本系统由STC89C52单片机.LCD1602液晶显示.HX711称重传感器. 蜂鸣器报警.按键及电 ...

  8. 51单片机汇编密码锁(可修改密码,课程设计,含论文)!(大三上)

    单片机课程设计 设计课题:密码锁 一上来不bb太多,提供所有文件下载地址. 点击下载所有文件(汇编51单片机密码锁(含论文.程序.AD图)单片机课程设计) https://download.csdn. ...

  9. 基于C语言STC89C52单片机电子密码锁的设计与仿真

    arm实现较为简单, 功能较为完善, 因此使用单片机控制较多. 显示器少数用数码管. 而本文所介绍的电子密码锁使用移植性及可读性强的高级语言C语言编写, 使用更加方便. 从经济适用的角度出发, 采用S ...

最新文章

  1. lightgbm 决策树 可视化 graphviz
  2. ffmpeg linux安装_ffmpeg命令中文手册
  3. 每隔k次反转一次 链表_PTA 5-2 Reversing Linked List (25) [法一] - 线性表 - 链表反转 (PAT 1074)...
  4. AODV---点点滴滴
  5. STM32串口的部分映射与完全映射
  6. MESSL(maven + extjs + spring portlet mvc + spring web flow + liferay )整合架构 1
  7. Linux一键部署duckchat,宝塔面板部署DuckChat(翻译:鸭信)- 一个简约好用的网络聊天平台...
  8. 戴尔电脑开机黑屏怎么办_笔记本电脑开机黑屏怎么办
  9. SQLSERVER语句的执行时间
  10. UIView中的坐标转换
  11. Maxwell个人初学经验及资料分享
  12. 阐述SDN的原理、SDN使用场景、SDN技术的优缺点、SDN发展现状及分析SDN对社会和环境的影响
  13. NXP S32K146 CAN通讯 TJA1043(二)
  14. Javescript REVIEW
  15. Linux(六)NFS(network file system)服务器实验
  16. STM8S003串口printf及帧判断
  17. 美团相关的scheme
  18. 当封号成为一种常态,网络营销人该何去何从?
  19. android关于 子控件超出父控件范围的注意点
  20. 莫名其妙的Status Code: 500,返回值500是什么问题呢?构造函数恐怖如斯

热门文章

  1. 第一章创业、创业精神与人生发展
  2. CV-全连接神经网络
  3. flash 接口_Flash接口设计变得简单
  4. 【动手撸深度学习】细粒辨花 一文实践清华博士Densenet
  5. java判断唯一性_java 后台验证数据唯一性
  6. 20款优秀的移动产品原型和线框图设计工具
  7. 轻流,做未知领域的探索者
  8. 微服务 - Hystrix 熔断器
  9. 【今日CV 计算机视觉论文速览】 26 Mar 2019
  10. Android 调用系统中的相机应用及静默拍照