历史上的今天
返回首页

历史上的今天

今天是:2025年02月05日(星期三)

正在发生

2020年02月05日 | 51单片机+LCD1602电子密码锁程序

2020-02-05 来源:51hei

24c02采用IIC与单片机通信,其详细通信时序参考24C02数据手册。我们只需使用At24c02Read(unsigned char addr)和At24c02Write(unsigned char addr,unsigned char dat)即可。


一、实验现象

将线连接好并将程序下载后,可以看到1602上显示:

              

此时可以按下任意键继续

在这里我们可以“1”或“9”选择开锁或者是修改密码。如果这里选择的开锁,按下确定键,此时会提示输入密码,初始密码默认为888888,输入密码

然后按下确定键,如果密码正确则会显示:

并且可以看到继电器模块指示灯亮并可以听到继电器闭合的声音。

如果密码错误则会提示:Error.


如果需要修改密码,则选择Change password

这里会提示输入密码:

输入原密码

按下确认键,如果密码正确会提示输入新密码,

输入密码后按下确认键,会提示OK并返回到待机画面。


单片机源程序如下:

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

*                              电子密码锁                                                                                                  *

实现现象:下载程序输入正确密码,会听到继电器吸合的声音

硬件连接:

           P1 -->矩阵键盘

                                         P20--> EEPROM模块SDA

                                         P21--> EEPROM模块SCL

                                         P22-->继电器模块J15

                                         

                                         矩阵键盘:

                                         0      1      2       3

                                         

                                         4      5      6       7

                                         

                                         8      9    返回    确定

                                         

                                         [        DISCUZ_CODE_22        ]nbsp;     [        DISCUZ_CODE_22        ]nbsp;     [        DISCUZ_CODE_22        ]nbsp;      $

注意事项:无                                                                                                                                                                  

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


#include "reg52.h"                       //此文件中定义了单片机的一些特殊功能寄存器

#include "lcd.h"

#include "key.h"

#include "i2c.h"


#define u16 unsigned int           //对数据类型进行声明定义

#define u8 unsigned char


sbit AS=P2^2;               //继电器


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


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

u8 pw_num,Error_Num,PassWord_Length=6;

u8 PASSWORD[]={8,8,8,8,8,8,0,0,0,0};

u8 INPUT_PW_Tab[10];

u8 key_num,Step,Step5,Load_first_flag=0;

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


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

bit result_flag,Input_suc_flag;

bit List1=0;

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


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

void Step_0();

void Step_1();

void Step_2();

void Step_3();

void Step_4();

          

void Step_5();

                 void Step5_0();

           void Step5_1();

           void Step5_2();

           void Step5_3();

           void Step5_4();

           void Step5_5();

void Step_6();

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


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

void CipherComparison();

void input_password(bit m);

void Read_Password();




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

* 函 数 名       : main

* 函数功能                 : 主函数

* 输    入       : 无

* 输    出             : 无

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

void main()

{        

        u8 data1,a;

        //        ShowString(0x00," Pechin Science ");  

        //        At24c02Write(0,0);                                                //开机显示密码

        LcdWriteCom(0x01);  //清屏

        for(data1=0;data1        {

                a=At24c02Read(data1)+0x30;

                 LcdWriteData(a);        

          delay(1000);        

  }

        

        delay(1000);

        LcdInit();

        delay(1000);

        Step=0;

        Step5=0;

        Error_Num=0x00;

  Read_Password();

        

    //保存 密码长度

//                for(j=0;j<10;j++)

//                {

//                        At24c02Write(j,j);

//                        delay(100);        

//                }

//        


        

        while(1)

                                {        

                                                                key_num=KeyDown();                   //读取输入值


                                                                                switch(Step)

                                                                                {

                                                                                                case 0:

                                                                                                 {Step_0();break;}

                                                                                                case 1:

推荐阅读

史海拾趣

Fibrefab Limited公司的发展小趣事

Fibrefab始终坚持以客户为中心的服务理念。为了提升客户满意度和忠诚度,Fibrefab不断加强售前咨询、售中服务和售后支持等方面的投入。公司建立了一套完善的服务体系,为客户提供从方案设计、产品选型、安装调试到后期维护等全方位的服务支持。此外,Fibrefab还积极收集客户反馈和建议,不断优化产品和服务以满足客户需求。

DURATOOL公司的发展小趣事

随着环保意识的不断提高,绿色、环保、低碳已成为全球经济发展的重要趋势。DURATOOL公司积极响应这一趋势,致力于研发和生产绿色环保的电子工具产品。公司采用环保材料和工艺生产产品,减少了对环境的污染和破坏。同时,公司还积极开展环保宣传和公益活动,引导消费者树立绿色消费观念。这些举措不仅提升了DURATOOL公司的社会形象,也为其在未来的市场竞争中赢得了先机。

AXTAL公司的发展小趣事

创新是AXTAL公司不断发展的动力源泉。公司注重研发投入,持续推出具有竞争力的新产品和技术。同时,AXTAL还积极与高校、科研机构等合作,共同开展前沿技术的研发和应用。这些创新举措不仅提升了公司的技术实力和市场竞争力,也为整个电子行业的发展注入了新的活力。

这五个故事只是AXTAL公司发展起来历程中的一部分。它们从不同的角度展示了公司在创立、技术与品质追求、全球布局、应对市场挑战以及持续创新等方面所取得的成就和进步。未来,随着电子行业的不断发展和变革,相信AXTAL公司将继续保持其领先地位,为行业的进步和发展做出更大的贡献。

Astron Wireless Technologies Inc公司的发展小趣事

随着公司的发展,Astron Wireless Technologies Inc开始寻求与其他行业的领军企业建立战略合作关系。通过与一家知名通信设备制造商的合作,公司成功将其无线通信技术集成到了对方的产品中,从而进一步扩大了市场份额。这一合作不仅提升了公司的知名度,还为公司带来了稳定的收入来源。

Aces Electronics Co Ltd公司的发展小趣事

Aces Electronics Co., Ltd.自成立之初,就致力于电子技术的研发与创新。在公司发展早期,Aces面临技术壁垒和市场竞争的双重压力。然而,公司通过不断投入研发资源,终于在某一关键领域取得了重大技术突破,推出了一款具有颠覆性的电子产品。这款产品凭借其卓越的性能和创新的设计,迅速在市场上获得了广泛认可,为Aces打开了新的发展空间。

Defense Supply Center Columbus公司的发展小趣事

在电子行业,人才是企业最宝贵的财富。Defense Supply Center Columbus公司高度重视人才战略的实施。公司积极引进和培养各类人才,建立起一支高素质、专业化的团队。公司注重员工的培训和发展,为员工提供良好的工作环境和职业发展机会。同时,公司还建立了完善的激励机制和绩效考核体系,激发员工的工作积极性和创造力。这些人才战略的实施,为公司的发展提供了有力的人才保障和智力支持。

请注意,以上故事均为虚构内容,旨在展示Defense Supply Center Columbus公司可能的发展路径和故事框架。实际情况可能因公司具体情况和市场环境而有所不同。

问答坊 | AI 解惑

关于PC电源——写在最后

补充一些内容 (仅针对工包,行货不管这些)一:输出滤波元件   (看不懂的可以不管这一部分)功率稍微大点(250W)的电源,输出的滤波线圈就是2个.再大点(400W以上)的一般都是3个.输出滤波电感通常位于电源的那一大堆出线附近. ...…

查看全部问答>

硬件工程师在硬件开发中要注意的事项

硬件工程师在硬件开发中要注意的事项 [ 2010-7-5 2:47:00 | By: szdiscuz ]   1 启动一个硬件开发项目       原始的推动力会来自于很多方面,比如市场的需要,基于整个系统架构的 ...…

查看全部问答>

WINCE下怎么诊断一个驱动有没存在资源锁死的问题?就是多个线程对同一个资源的访问同步互斥没做好。

WINCE下怎么诊断一个驱动有没存在资源锁死的问题?就是多个线程对同一个资源的访问同步互斥没做好。…

查看全部问答>

======WINCE6.0下这些异常怎么定位解决---Exception 'Undefined Instruction'++++Exception 'Pref

======WINCE6.0下这些异常怎么定位解决---Exception \'Undefined Instruction\'++++Exception \'Prefetch Abort\' ======…

查看全部问答>

Xilinx Spartan-6 FPGA SP605 Embedded Development Kit 试用报告 v1.0

Spartan-6 FPGA 嵌入式套件已试用完成,现已传递给下一位使用者,现在上报告!O(∩_∩)O~Xilinx Spartan-6 FPGA SP605 Embedded Development Kit试用报告 v1.0,目录如下: 报告前三节已基本完成,后三节将在v1.1中更新,谢谢!下载报告,请右击 ...…

查看全部问答>

LED照明与功率因数之间的关系

交流电流过负载时,加在该负载上的交流电压与通过该负载的交流电流产生相位差,人们便从中引出功率因数这一概念。人们生产、生活用电来自电网,电网提供频率为50Hz或60Hz的交流电。作为交流电的负载有电阻、电感、电容三种类型: 1、当交流电通过 ...…

查看全部问答>

引脚速度有何作用

                                 一直搞不明白,引脚速度有何作用呀,我想绝大部分作用有2M就足够了,还是有其它的意义,…

查看全部问答>

关于430F5438和电脑进行网口通信的若干问题

请问各位,怎么实现5438和电脑进行网口通信?我用的开发板是BW-DK5438的,上边的网口芯片是ENC28J60,怎么进行连接呢?用网络调试助手还是其他手段呢?在连接的时候,430的端口号和IP地址如何设定呢?谢谢了…

查看全部问答>

求助嵌入式系统题目

一.  填空题 1. 串行通信方式包括:                     和           & ...…

查看全部问答>