基于51单片机智能锁原理图PCB+源程序

2019-11-15来源: 51hei关键字:51单片机  智能锁

Altium Designer画的原理图和PCB图如下:

单片机源程序如下:

#include

#include

#include "STC12C5A60S2.h"

#include "main.h"

#include "delay.h"

#include "lcd1602.h"

#include "key.h"

#include "IAPEEPROM.h"



sbit motor=P2^1;

sbit led=P2^2;

sbit buzz=P2^3;


/**********************************************/

uchar code Start[]           ={"==CODED CLOCK== "};

uchar code Pwd[]      ={"Password:       "};

uchar code Ture[]           ={" Password ture! "};

uchar code Err[]            ={"Error try again!"};

uchar code Wait1[]          ={"     Please     "};

uchar code Wait2[]          ={"wait for 5 min! "};

uchar code InputOld[] ={"Input Old:      "};

uchar code InputNew1[]={"Input New 6 Bit:"};

uchar code InputNew2[]={"Input New Again:"};

uchar code Success[]  ={"    SUCCESS!    "};

uchar code Del[]            ={"                "};

uchar code Open[]           ={"======*==*======"};

uchar code Open1[]           ={"*=====OPEN=====*"};



/**********************************************/

uchar idata Password[6];

uchar idata InputData[20];

uchar idata TempPassword[20];        

uchar idata NewPasswordTemp[6];


uchar N=0;                   //更改密码时的状态 0:输入旧密码 1:输入新密码 2:再次输入新密码

uchar ErrorCont=0;                         //输入密码错误次数计数                

uchar State=0;               //0:输入开锁密码状态 1:更改密码状态

uchar Door=0;                                 //0:门锁着 1:门开着



uchar time_1s=0;        //背光                        

uchar keydown_flag=0;                        

uchar time_20ms=0;        




uchar KeyCodeing(uchar keydown)

{

        uchar keyval=0;

                if(keydown==11)        //0~9

                {

                        keyval=0;

                }

                if(keydown==14)

                {

                        keyval=1; 

                }

                if(keydown==10)

                {

                        keyval=2;

                }

                if(keydown==6)

                {

                        keyval=3;

                }

                if(keydown==13)

                {

                        keyval=4;

                }

                if(keydown==9)

                {

                        keyval=5;

                }

                if(keydown==5)

                {

                        keyval=6;

                }

                if(keydown==12)

                {

                        keyval=7;

                }

                if(keydown==8)

                {

                        keyval=8;

                }

                if(keydown==4)

                {

                        keyval=9;

                }

                

                if(keydown==15) //确认

                {

                        keyval=10;

                }

                if(keydown==7) //删除

                {

                        keyval=11;

                }

                if(keydown==3) //清零

                {

                        keyval=12;

                }

                if(keydown==0)  //关门

                {

                        keyval=13;

                }

                if(keydown==2)  //返回

                {

                        keyval=14;

                }


                if(keydown==1) // 更改密码

                {

                        keyval=15;

                }

        return keyval;

}


void Timer0_Init()

{

        TMOD|=0x01;

        TL0 = (65536-20000)%256;                // 20ms

        TH0 = (65536-20000)/256;                //

        TF0 = 0;

        ET0=1;                

        TR0 = 1; //开始计时

}


uchar PwdCompare(uchar *password,uchar *temppassword)

{

        uchar n=0,m=0,pass=0;

                if(strlen(temppassword)==6)//等长密码判断        

                {

                        for(n=0;n<6;n++)

                        {

                                if(temppassword[n]!=password[n])

                                {

                                        return 0;

                                }        

                        }

                        return 1;

                }

                else if(strlen(temppassword)>6) //虚位密码判断

                {        

                        for(m=0;m

                        {

                                if(temppassword[m]!=password[n])

                                {

                                        n=0;

                                        pass=0;

[1] [2] [3] [4] [5] [6] [7]
关键字:51单片机  智能锁 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic480092.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:ESP8266+51单片机WIFI控制多路遥控开关程序设计
下一篇:lcd1602显示的单片机子程序 模块化可多次调用

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

基于51单片机的定时器程序设计
这个基于51单片机的定时器设计,使用共阴数码管显示,如果要换成共阳数码管只需要将程序内数组改为共阳数码管的数组,38译码器LSA,LSB,LSC分别接单片机的P2^2,P2^3,P2^4,蜂鸣器使用的是无源蜂鸣器,接单片机P1^5,三个低电平触发按键分别接的P3^1,P3^2,P3^3. sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;sbit key0=P3^1;  //定义P31口是k0sbit key1=P3^0;  //定义P33口是k1sbit key2=P3^2;  //定义P33口是k2sbit beep=P1
发表于 2020-01-20
基于51单片机的定时器程序设计
基于热敏电阻的单片机温度测量系统设计
本课题用一种基于单片机的数据采集系统方案,该方案根据热敏电阻随温度变化而变化的特性,采用串联分压电路。单片机采集热敏电阻的电压,通过A/D转换将模拟量电压信号转换成数字量电压信号,经过查表转换得到温度值,控制液晶屏实时显示温度值。本系统中所用到的器件是STC89C52单片机、NTC热敏电阻和LCD1602液晶显示屏。原理图如下单片机源程序如下:#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit rs=P0^5;sbit rw=P0^6;sbit e=   
发表于 2020-01-20
基于热敏电阻的单片机温度测量系统设计
STC89C52RC单片机+串口+红外控制16路舵机程序
只有控制16路舵机的程序,现在发上来提供参考舵机可以通过串口控制,也可以用红外控制单片机源程序如下:#include "PCA9685_TJ.h"#include <stdio.h>#include <math.h>/*使用说明:        在main主程序                PCA9685_init();        在main主程序的while加入       
发表于 2020-01-20
STC89C52RC单片机+串口+红外控制16路舵机程序
51单片机交通灯系统设计(流程框图+硬件+源码)
:STC公司生产的8051内核,CMOS工艺;1.2.2数码管显示模块的选择方案和论证:选择的是共阳的数码管,单片机的驱动能力不是很强,故此选择共阳数码管;。1.2.3Led灯的选择方案与论证:通过一个Led灯的电流大约是10ms。1.3 电路设计最终方案2.1  表数的产生由定时器T0产生TH0=0xFC;TL0=0x67; 每1ms中断一下,对整个项目的标志量改变一下它的值。2.2  略;3.1 电路设计框图3.2系统硬件描述主要的硬件是89C51这个芯片进行输入输出控制。3.3主要单元电路的设计3.3.1单片机主控模块的设计3.3.2数码管模块的设计3.3.3Led灯模块的设计3.3.4
发表于 2020-01-20
51单片机交通灯系统设计(流程框图+硬件+源码)
基于单片机的天然气泄漏报警系统设计论文
2.1所示,该系统以STC89C52单片机为核心,天然气检测报警系统要完成天然气信号采集处理、显示和控制报警3大功能。可分为电源模块、天然气信号采集模块、A/D转换模块、声光报警模块、数码管显示模块和单片机控制模块。STC89C52单片机是51系列单片机的一个成员,是8051单片机的升级版,和51系列单片机的指令和输出管脚相兼容。气体检测模块依靠MQ-4传感器和ADC0832转换芯片、显示模块依靠数码管完成显示功能。       图2.1天然气泄露检测报警系统结构框图图2.3.3报警器各模块的功能(1)电源模块:提供电源、保护电路、电压变换、稳压;(2)天然气信号采集模块:实时采集
发表于 2020-01-20
基于单片机的天然气泄漏报警系统设计论文
第一次偿试51单片机做个100分钟倒计时定时器
偿试着做了个100分钟倒计时定时器,原理图和代码都是东拼西凑来的(自己不会写啊),侵删制作出来的实物图如下: 电路原理图如下: 单片机源程序如下:#include <reg52.h>#include <intrins.H>#define uchar unsigned char#define uint  unsigned  int        uchar duan[16]={0xc0
发表于 2020-01-20
第一次偿试51单片机做个100分钟倒计时定时器
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved