历史上的今天
返回首页

历史上的今天

今天是:2025年08月07日(星期四)

正在发生

2020年08月07日 | 电子密码锁设计24c01+12864

2020-08-07 来源:51hei

单片机源程序如下:

#include

#include

#include<12864.h>

#include<24C01.h>


#define uchar unsigned char

#define uint unsigned int

sbit LED1=P1^5;

sbit LED2=P1^6;

sbit INIT=P2^2;

sbit SOUND=P1^7;


uchar idata key[6]={0,0,0,0,0,0};

uchar idata iic[6]={0,1,2,3,4,5};


/************************ 密码校验函数 **************************/

void press(uchar *s) {

           uchar dat;

       P3=0xf0;                                                                //第一位密码

           while(P3==0xf0);

       dat=key_scan();

           if((dat!=0x0a)&&(dat!=0x0b))

         {   *s=dat;

                         Left();

                         star_12864(star,0x05,16);

             }

           s++;                  

           P3=0xf0;                                                          //第二位密码

           while(P3==0xf0);                                                 

       dat=key_scan();

           if((dat!=0x0a)&&(dat!=0x0b))

         {   *s=dat;

                         Left();

                         star_12864(star,0x05,24);

                  }

           s++;       

           P3=0xf0;                                                          //第三位密码

           while(P3==0xf0);                                                 

       dat=key_scan();

           if((dat!=0x0a)&&(dat!=0x0b))

         {   *s=dat;

                         Left();

                         star_12864(star,0x05,32);

                  }

           s++;       

           P3=0xf0;                                                          //第四位密码

           while(P3==0xf0);                                                 

           dat=key_scan();

           if((dat!=0x0a)&&(dat!=0x0b))

         {   *s=dat;

                         Left();

                         star_12864(star,0x05,40);

                  }

           s++;       

           P3=0xf0;                                                          //第五位密码

           while(P3==0xf0);                                                 

       dat=key_scan();

           if((dat!=0x0a)&&(dat!=0x0b))

         {   *s=dat;

                         Left();

                         star_12864(star,0x05,48);

                  }

           s++;       

           P3=0xf0;                                                          //第六位密码

           while(P3==0xf0);                                                 

       dat=key_scan();

           if((dat!=0x0a)&&(dat!=0x0b))

         {   *s=dat;

                         Left();

                         star_12864(star,0x05,56);

                  }

           do{P3=0xf0;                                                        //键入Enter键盘继续执行下面语句,否则等待

              while(P3==0xf0);                                                 

          dat=key_scan();

              }while(dat!=0x0b);

}


/****************************** 延时10ms函数 *******************************/

void Delay10ms(void) {

        uint i,j,k;

        for(i=5;i>0;i--)

        for(j=4;j>0;j--)

        for(k=248;k>0;k--);


}


/****************************** 主函数 *******************************/

void main() {

      uchar dat;

      uchar i=0,j=0,k;

      uchar x;

          LED1=1;

          LED2=1;

          SOUND=0;

          INIT=1;

      if(INIT==0){                   //密码初始化,先从IIC器件中读出密码以供下面输入密码进行比较

             x=SendB(iic,0x50,6);

                 Delay10ms();

      }              

      x=ReadB(iic,0x50,6);

      Init_12864();

          for(i=0;i<50;i++){Delay10ms();}

          do{                                  //若密码不正确,循环执行do{}while()

             LED1=1;

             System();                  //显示:请输入密码

             press(key);

                 if((key[0]==iic[0])&&(key[1]==iic[1])&&(key[2]==iic[2])&&(key[3]==iic[3])&&(key[4]==iic[4])&&(key[5]==iic[5])) //密码比较,若密码正确责进入系统,若密码不正确则显示密码错误,重新输入密码

         {

                    true();

                    do {

                       P3=0xf0;                                                        //键入1或2继续执行下面语句,否则等待

                   while(P3==0xf0);                                                 

               dat=key_scan();

                }while(dat!=0x01&&dat!=0x02);         

                    if(dat==1) {                                       //开锁

                        LED1=0; j=0;

                                unlock();

推荐阅读

史海拾趣

德立电子(DDY)公司的发展小趣事

随着电子行业的快速发展,德立电子意识到技术创新的重要性。公司加大研发投入,不断推出高频贴片绕线电感、立式电感、磁环电感等新产品,满足市场多样化需求。同时,德立电子还注重知识产权保护,申请多项专利,确保技术领先。

Greenwich Instruments Ltd公司的发展小趣事

随着全球对环境保护和可持续发展的重视,Greenconn Corp积极响应号召,将绿色理念融入产品设计和生产全过程。公司致力于开发环保型连接器产品,采用可回收材料、减少能源消耗和废弃物排放等措施,努力实现生产过程的绿色化。同时,Greenconn Corp还积极参与行业内的绿色标准制定和认证工作,为推动整个电子行业的绿色发展贡献了自己的力量。

Futaba Electric Co Ltd公司的发展小趣事

Greenconn Corp自创立之初便致力于连接器技术的研发与创新。在20世纪末,随着电子产品的普及和通讯技术的飞速发展,连接器作为电子设备间的桥梁,其重要性日益凸显。Greenconn Corp凭借其敏锐的市场洞察力和强大的研发实力,成功研发出了一系列高性能、高可靠性的连接器产品,迅速在汽车电子、通信设备等领域占据了一席之地。这些创新产品不仅满足了市场对连接器高质量、高效率的需求,还推动了整个电子行业的发展。

Eutech公司的发展小趣事

面对制造业转型升级的机遇和挑战,EUtech公司积极探索智能制造领域。他们引进先进的生产设备和自动化生产线,提高生产效率和质量。同时,公司还注重人才培养和技术创新,打造了一支高素质的研发团队和技术工人队伍。在智能制造的助力下,EUtech公司实现了从传统制造向智能制造的转型升级。

以上五个故事均基于EUtech Scientific Engineering公司的实际情况和电子行业的发展趋势进行虚构。希望这些故事能够为您提供一些启示和参考。

博众电气(BZCN)公司的发展小趣事

博众电气自创立之初,就明确了技术立企的战略方向。公司投入大量资源进行技术研发,不断推出具有竞争力的电子产品。其中,一项关键技术的突破为博众电气的发展奠定了坚实基础。这项技术使得公司产品在性能上大幅超越同类产品,赢得了市场的广泛认可。凭借这一技术突破,博众电气逐渐在电子行业中崭露头角。

Gang Song Electronics Co Ltd公司的发展小趣事

随着物联网市场的快速发展,Telit作为全球领先的物联网模组和平台提供商,开始寻求通过并购来增强自身在低功耗WiFi技术领域的实力。2017年,Telit宣布收购GainSpan,这一举措不仅丰富了Telit的无线模组产品线,还进一步巩固了其在物联网市场的领先地位。GainSpan的技术与Telit的平台和服务相结合,为客户提供了更加全面的物联网解决方案。

问答坊 | AI 解惑

特发我这几个月来自学单片机的作品

目前还正在打样中!那边说明天可能拿板,正在解决程序的问题! 先发个PCB的效果图! …

查看全部问答>

仪器外壳带电问题

一次在维修机器的时候,我同时碰到了机顶盒的外壳和维修台的接地端,给电了一下.测量测外壳时居然发现外壳带电,电压有50V,后来查了下资料,说外壳带电属正常现象,具体跟电路板与外壳之间的电抗Z1和外壳与地之间的电抗Z2有关,可简单理解为Z1与Z2串联,外 ...…

查看全部问答>

请教fpga program后的问题

很早之前,买了一块DIY的 fpga cylone ep1c6q240c8的板子还完后 下了一个程序可以,放那儿一直没整。 直到今天,上电之后电源正常。写了个程序。program100%完程序电源就降为零了 稳压芯片的前级压敏就发烫。断电再上电,电源恢复正常~~   ...…

查看全部问答>

有谁在WINCE5.0下使用PPPOE时,遇到访问集中器无响应 这个问题的?

我初步判定是PPPOE.LIB实现的不够灵活,SERVICE-NAME的顺序以及AC-NAME的长度等等,都会导致WINCE 的PPPOE协议栈无响应。 我看了一下PPPOE.LIB是2004-7-1,不知道有没有补丁更新?我的都打到2009年2月份了。…

查看全部问答>

内核层创建了一个Event,应用层CreateEvent时提示拒绝访问,不知道是什么原因

内核层创建了一个Event,应用层CreateEvent时提示拒绝访问,不知道是什么原因…

查看全部问答>

求一个wince下的mp3编码库,愿奉送所有积分!!

如题,wince下的编码库,处理器是ARM9. 如果编码效率高,性能好,付费也行.…

查看全部问答>

请大家帮忙看看这个程序

    我在线调试C51的外部中断时,外部中断1怎么就是跳不出去呢?当INT1发生时,就一直循环着INT1,不再回到主程序了。下面是整个儿程序的代码(谢谢啦) #include #define LED P0 void delay(int); main() { unsigned char i; ...…

查看全部问答>

C8051F湿度计PCB板错误解决方法,并跟新最新原理图

首先,诚挚的向大家道歉,由于设计上的疏漏,影响了大家开发的兴趣,抱歉   目前情况是这样的:   USB的引脚连接是正确的,感谢古道热肠 存在错误:   2,U2稳压芯片最上方的大焊脚不改接地。。。大焊脚输出VOUT电压,接地就 ...…

查看全部问答>

c语言和线性汇编混合编程

c语言和线性汇编混合编程时, 主函数(c语言)和线性汇编语言编写的子函数是连个文件吧 为什么连接时发生了很多错误呢? 是不是需要设置什么东西? 请高手指教 …

查看全部问答>