精华内容
下载资源
问答
  • 摘要:提出了一种能防止多次试探密码的基于单片机的密码锁设计方案,根据用户的10条总体要求,给出了该单片机密码锁的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的...
  • 提出了一种能防止多次试探密码的基于单片机的密码锁设计方案,根据用户的10条总体要求,给出了该单片机密码锁的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的分配、...
  • 单片机密码锁设计 按键 6位密码 LCD
  • 单片机密码锁毕业设计 单片机密码锁毕业设计 掉电后也能用!!!
  • 项目7 基于AT89S51单片机密码锁的设计。本资源是基于AT89S51单片机密码锁的设计,下载附件包含项目相关资源和汇编代码。
  • 功能说明:实现五位密码的设置和解锁 程序入口:s-密码数组指针;len-已输密码长度;mode-为要 显密码的类型,0x01为解密输入,0x02为密码设置输入
  • 汇编51单片机密码锁(含论文、程序、AD图)单片机课程设计
  • 51单片机密码锁设计

    2020-04-29 14:08:51
    51单片机密码锁设计 实现要求: 仿真图: 代码块: while(1) { if(cmpflag==0) { if(P3^6==0) //function key { for(i=10;i>0;i--) for(j=248;j>0...

    51单片机密码锁设计

    实现要求:
    在这里插入图片描述
    仿真图:
    在这里插入图片描述
    代码块:
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

     while(1)
        {
          if(cmpflag==0)
            { 
              if(P3^6==0) //function key
                {
                  for(i=10;i>0;i--)
                  for(j=248;j>0;j--);
                  if(P3^6==0)
                    {
                      if(hibitflag==0)
                        {
                          funcount++;
                          if(funcount==pslen+2)
                            {
                              funcount=0;
                              cmpflag=1;
                             }
                           P1=dispcode[funcount];
                        }
                        else
                          {
                             second3=0;
                          }
                      while(P3^6==0);
                    }
                }
      
              if(P3^7==0) /it key
                {
                  for(i=10;i>0;i--)
                  for(j=248;j>0;j--);
                  if(P3^7==0)
                    {
                      if(hibitflag==0)
                        {
                          digitcount++;                      
                          if(digitcount==10)
                            {
                              digitcount=0;
                            }
                          P2=dispcode[digitcount];
                          if(funcount==1)
                            {
                              pslen=digitcount;
                              templen=pslen;
                            }
                            else if(funcount>1)
                              {
                                psbuf[funcount-2]=digitcount;
                              }
                        }
                        else
                          {
                            second3=0;
                          }
                      while(P3^7==0);
                    }
                }
            }
            else
              {
                cmpflag=0;
                for(i=0;i<pslen;i++)
                  {
                    if(ps[i]!=psbuf[i])
                      {
                        hibitflag=1;
                        i=pslen;
                        errorflag=1;
                        rightflag=0;
                        cmpflag=0;
                        second3=0;
                        goto a;
                      }
                  }
                cc=0;
                errorflag=0;
                rightflag=1;
                hibitflag=0;
    a:         cmpflag=0;
              }
    
        }
    

    欢迎使用Markdown编辑器

    你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

    新的改变

    我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

    1. 全新的界面设计 ,将会带来全新的写作体验;
    2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
    3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;

    51单片机密码锁设计

    1. 全新的 KaTeX数学公式 语法;
    2. 增加了支持甘特图的mermaid语法1 功能;
    3. 增加了 多屏幕编辑 Markdown文章功能;
    4. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
    5. 增加了 检查列表 功能。

    功能快捷键

    撤销:Ctrl/Command + Z
    重做:Ctrl/Command + Y
    加粗:Ctrl/Command + B
    斜体:Ctrl/Command + I
    标题:Ctrl/Command + Shift + H
    无序列表:Ctrl/Command + Shift + U
    有序列表:Ctrl/Command + Shift + O
    检查列表:Ctrl/Command + Shift + C
    插入代码:Ctrl/Command + Shift + K
    插入链接:Ctrl/Command + Shift + L
    插入图片:Ctrl/Command + Shift + G
    查找:Ctrl/Command + F
    替换:Ctrl/Command + G

    合理的创建标题,有助于目录的生成

    直接输入1次#,并按下space后,将生成1级标题。
    输入2次#,并按下space后,将生成2级标题。
    以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

    如何改变文本的样式

    强调文本 强调文本

    加粗文本 加粗文本

    标记文本

    删除文本

    引用文本

    H2O is是液体。

    210 运算结果是 1024.

    插入链接与图片

    链接: link.

    图片: Alt

    带尺寸的图片: Alt

    居中的图片: Alt

    居中并且带尺寸的图片: Alt

    当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

    如何插入一段漂亮的代码片

    博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

    // An highlighted block
    var foo = 'bar';
    

    生成一个适合你的列表

    • 项目
      • 项目
        • 项目
    1. 项目1
    2. 项目2
    3. 项目3
    • 计划任务
    • 完成任务

    创建一个表格

    一个简单的表格是这么创建的:

    项目 Value
    电脑 $1600
    手机 $12
    导管 $1

    设定内容居中、居左、居右

    使用:---------:居中
    使用:----------居左
    使用----------:居右

    第一列 第二列 第三列
    第一列文本居中 第二列文本居右 第三列文本居左

    SmartyPants

    SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

    TYPE ASCII HTML
    Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
    Quotes "Isn't this fun?" “Isn’t this fun?”
    Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

    创建一个自定义列表

    Markdown
    Text-to-HTML conversion tool
    Authors
    John
    Luke

    如何创建一个注脚

    一个具有注脚的文本。2

    注释也是必不可少的

    Markdown将文本转换为 HTML

    KaTeX数学公式

    您可以使用渲染LaTeX数学表达式 KaTeX:

    Gamma公式展示 Γ(n)=(n1)!nN\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N 是通过欧拉积分

    Γ(z)=0tz1etdt. \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.

    你可以找到更多关于的信息 LaTeX 数学表达式here.

    新的甘特图功能,丰富你的文章

    Mon 06Mon 13Mon 20已完成 进行中 计划一 计划二 现有任务Adding GANTT diagram functionality to mermaid
    • 关于 甘特图 语法,参考 这儿,

    UML 图表

    可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

    张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间,文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

    这将产生一个流程图。:

    链接
    长方形
    圆角长方形
    菱形
    • 关于 Mermaid 语法,参考 这儿,

    FLowchart流程图

    我们依旧会支持flowchart的流程图:

    Created with Raphaël 2.2.0开始我的操作确认?结束yesno
    • 关于 Flowchart流程图 语法,参考 这儿.

    导出与导入

    导出

    如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

    导入

    如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
    继续你的创作。

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200429115118809.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MjAyNDMz,size_16,color_FFFFFF,t_70


    1. mermaid语法说明 ↩︎

    2. 注脚的解释 ↩︎

    展开全文
  • 简易51单片机密码锁

    2020-07-07 15:51:16
    简易51单片机密码锁 直接上码; Code ①; main.c #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义; #include<stdio.h> #include"1602.h" #include"delay.h" #...

    简易51单片机密码锁

    直接上码;
    Code ①

    main.c

    #include<reg52.h> //一般不需改动,头文件包含特殊功能寄存器的定义;
    #include<stdio.h>
    #include"1602.h"
    #include"delay.h"
    #include"keyboard.h"
    unsigned char code password[]={1,2,3,4,5,6,7,8};//可更改此密码做多组测试;
    //定义密码,实际上密码需要存在E²prom中,可以通过程序更改。请自行添加;
    main(){
    unsigned char num,i,j;                  
    unsigned char passwordtemp[16];           //最大输入16个;
    unsigned char inputtimes;                 //密码输入错误次数;
    unsigned char passwordlength,PLen;        //输入密码长度,实际密码长度;
    bit Flag;
    PLen=sizeof(password)/sizeof(password[0]);//用于计算出实际密码长度;
    LCD_Init();                               //初始化液晶屏;
    DelayMs(10);                              //延时用于稳定,可以去掉;
    LCD_Clear();                              //清屏;
    LCD_Write_String(0,0,"  Welcome! ");      //写入第一行信息,主循环中不再更改此信息,所以在while之前写入;
    LCD_Write_String(0,1,"Input password!");   //写入第二行信息,提示输入密码
    while (1) {                                //主循环;
    num=KeyPro();                              //扫描键盘;
    if(num!=0xff) {                            //如果扫描是按键有效值则进行处理;
        if(i==0)         //输入是第一个字符的时候需要把改行清空,方便观看密码;
        LCD_Write_String(0,1,"                "); //清除该行;
        if(i<16){
        passwordtemp=num;
        LCD_Write_Char(i,1,'*');                //输入的密码用"*"代替;
         }
        i++;                                    //输入数值累加;
        if((15==num)|| (i==16))                 //输入按键值15或者密码输入到;最大值16,表示输入结束,需要进行比对;
          {
          passwordlength=i-1;                   //计算输入密码长度;
          i=0;                                  //计数器复位
          if(passwordlength==PLen){             //长度相等则比较,否则直接输出错误;
          Flag=1;                            //先把比较位置1;
          for(j=0;j<PLen;j++)                //循环比较8个数值,如果有一个不等 则最终Flag值为0;
          Flag=Flag&&(passwordtemp[j]==password[j]);//比较输入值和已有密码;
             }
          if(Flag)                          //如果比较全部相同,标志位置1;
           {
            LCD_Write_String(0,1,"                ");//清除该行;
            LCD_Write_String(0,1,"Right Open!>>>>");//密码正确显示的信息;
            inputtimes=0;                     //输入正确则次数清零,重新计数;
            Flag=0;                           //清除正确标志;
            }
          else
            {
            LCD_Write_String(0,1,"                "); //清除该行;
            LCD_Write_String(0,1,"Wrong! Retry!"); //密码错误,提示重新输入;
            inputtimes++;                    //连续输入错误,则次数累加;
            if(inputtimes==3){ 
            LCD_Write_String(0,1,"                ");//清除该行
            LCD_Write_String(0,1,"Wrong 3 times!");  //密码错误,提示重新输入;
            while(1);       //停止该位置,重启电源后才能输入,实际实用中则需要等到一定时间后才能再次输入。
           }}}}}}
    

    Code ②

    keyboard.c

    #include<reg52.h>   //一般不需改动,头文件包含特殊功能寄存器的定义
    #include"keyboard.h"
    #include"delay.h"
    
    #define KeyPort P3
    
    /*------------------按键扫描函数,返回扫描键值------------------*/
    unsigned char KeyScan(void){  //键盘扫描函数,使用行列反转扫描法
     unsigned char cord_h,cord_l;//行列值中间变量
     KeyPort=0x0f;            //行线输出全为0
     cord_h=KeyPort&0x0f;     //读入列线值
     if(cord_h!=0x0f)    //先检测有无按键按下
     {
      DelayMs(10);        //去抖
      if((KeyPort&0x0f)!=0x0f){
        cord_h=KeyPort&0x0f;  //读入列线值
        KeyPort=cord_h|0xf0;  //输出当前列线值
        cord_l=KeyPort&0xf0;  //读入行线值
        while((KeyPort&0xf0)!=0xf0);//等待松开并输出
        return(cord_h+cord_l);//键盘最后组合码值
       }
      }return(0xff);     //返回该值
    }
    
    /*--------------按键值处理函数,返回扫键值---------------*/
    unsigned char KeyPro(void)
    {
     switch(KeyScan())
     {
      case 0x7e:return 0;break;//0 按下相应的键显示相对应的码值;
      case 0x7d:return 1;break;//1
      case 0x7b:return 2;break;//2
      case 0x77:return 3;break;//3
      case 0xbe:return 4;break;//4
      case 0xbd:return 5;break;//5
      case 0xbb:return 6;break;//6
      case 0xb7:return 7;break;//7
      case 0xde:return 8;break;//8
      case 0xdd:return 9;break;//9
      case 0xdb:return 10;break;//a
      case 0xd7:return 11;break;//b
      case 0xee:return 12;break;//c
      case 0xed:return 13;break;//d
      case 0xeb:return 14;break;//e
      case 0xe7:return 15;break;//f
      default:return 0xff;break;//break
     }}
    

    Code ③

    delay.c

    #include "delay.h"
    void DelayUs2x(unsigned char t){   
     while(--t);
    }
    void DelayMs(unsigned char t){   
     while(t--){
         //大致延时1mS
         DelayUs2x(245);
    	 DelayUs2x(245);
     }}
    

    Code ④

    1602.c

    #include "1602.h"
    #include "delay.h"
    
    #define CHECK_BUSY
    
    sbit RS = P2^4;   //定义端口 
    sbit RW = P2^5;
    sbit EN = P2^6;
    
    #define RS_CLR RS=0 
    #define RS_SET RS=1
    
    #define RW_CLR RW=0 
    #define RW_SET RW=1 
    
    #define EN_CLR EN=0
    #define EN_SET EN=1
    
    #define DataPort P0
    
    /*------------判忙函数------------------*/
     bit LCD_Check_Busy(void){ 
    #ifdef CHECK_BUSY
     DataPort= 0xFF; 
     RS_CLR; 
     RW_SET; 
     EN_CLR; 
     _nop_(); 
     EN_SET;
     return (bit)(DataPort & 0x80);
    #else
     return 0;
    #endif
     }
     
    /*------------写入命令函数------------------*/
     void LCD_Write_Com(unsigned char com) 
     {  
     while(LCD_Check_Busy()); //忙则等待
     RS_CLR; 
     RW_CLR; 
     EN_SET; 
     DataPort= com; 
     _nop_(); 
     EN_CLR;
     }
     
    /*------------写入数据函数-----------------*/
     void LCD_Write_Data(unsigned char Data) 
     { 
     while(LCD_Check_Busy()); //忙则等待
     RS_SET; 
     RW_CLR; 
     EN_SET; 
     DataPort= Data; 
     _nop_();
     EN_CLR;
     }
     
    /*-----------------清屏函数---------------------*/
     void LCD_Clear(void){ 
     LCD_Write_Com(0x01); 
     DelayMs(5);
     }
     
    /*---------------------写入字符串函数-------------------------*/
     void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s){          
     while (*s){     
     LCD_Write_Char(x,y,*s);     
     s ++;  x++;   
     	}
     }
     
    /*-------------------写入字符函数----------------------*/
    void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data){     
     if (y == 0){     
     	LCD_Write_Com(0x80 + x);     
     	}    
     else 
     	{     
     	LCD_Write_Com(0xC0 + x);     
     	}        
     LCD_Write_Data( Data);  
     }
     
    /*-------------------初始化函数------------------------*/
     void LCD_Init(void){
       LCD_Write_Com(0x38);    //显示模式设
       DelayMs(5); 
       LCD_Write_Com(0x38); 
       DelayMs(5); 
       LCD_Write_Com(0x38); 
       DelayMs(5); 
       LCD_Write_Com(0x38);  
       LCD_Write_Com(0x08);    //显示关闭
       LCD_Write_Com(0x01);    //显示清屏
       LCD_Write_Com(0x06);    //显示光标移动设置
       DelayMs(5); 
       LCD_Write_Com(0x0C);    //显示开及光标设置
       }
    

    Code ⑤

    1602.h

    #include<reg52.h> //一般不需改动,头文件包含特殊功能寄存器的定义
    #include<intrins.h>
    
    #ifndef __1602_H__
    #define __1602_H__
    
     bit LCD_Check_Busy(void) ;
     void LCD_Write_Com(unsigned char com) ;
     void LCD_Write_Data(unsigned char Data) ;
     void LCD_Clear(void) ;
     void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) ;
     void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) ;
     void LCD_Init(void) ;  
    #endif
    

    Code ⑥

    delay.h

    #ifndef __DELAY_H__
    #define __DELAY_H__
    
    void DelayUs2x(unsigned char t);
    void DelayMs(unsigned char t);
    #endif
    

    Code ⑦

    keyboard.h

    #ifndef __KEYBOARD_H__
    #define __KEYBOARD_H__
    
    unsigned char KeyScan(void);  //键盘扫描函数,使用行列反转扫描法
    unsigned char KeyPro(void);
    #endif
    

    相应的代码打包会另行上传,点击下面链接
    密码锁代码打包

    展开全文
  • 单片机密码锁.zip

    2019-07-25 16:50:23
    基于51单片机的电子密码锁的相关资源,包括原理图,PCB,代码。
  • 51单片机密码锁

    2019-02-26 14:44:35
    课程设计,毕业设计。密码锁详细代码加注释。可以直接下载到开发板运行
  • (1)设计4位密码的电子。 (2)在数码管上显示密码,并且密码可删除。 (3)当密码正确时,LED灯亮,密码错误,蜂鸣器报警三声。 (4)矩阵键盘包括0-9输入密码键以及删除密码键、关闭键。 (5)4个独立按键...
  • 51单片机密码锁.zip

    2020-05-08 21:38:43
    包括密码锁的源程序,原理图,仿真,制作过程,原件清单,任务书,开题报告,参考论文,视频讲解等材料。
  • 51单片机密码锁程序

    2015-10-25 21:49:08
    功能键 S6---S115 数字键0-9 S16---更改密码 S17---更改密码完毕后确认 S18---重试密码、重新设定 S19---关闭密码锁 ... 确认密码更改---按S19关闭密码锁---输入新的密码打开密码锁
  • 随着电子技术和计算机技术的飞速发展,单片机性能不断完善,性能价格比显著提高,技术日趋完善。由于单片机具有体积小、重量轻、价格便宜、功耗低、控制功能强及运算速度快等特点,因而在国民经济建设、军事及家用...
  • 单片机密码锁PDF文件

    2017-05-02 12:17:17
  • 根据设定好的密码,采用二个按键实现密码的输入功能,当密码输入正确之后,就打开,如果输入的三次的密码不正确,就锁定按键3秒钟,同时发现报警声,直到没有按键按下3种后,才打开按键锁定功能;否则在3秒钟内仍...
  • 使用单片机实现简易密码锁,通过输入密码,实现门锁的开启(控制继电器)。 具体要求如下: (1)当输入正确密码后,继电器开启。 (2)当三次输入错误密码后,密码锁禁止输入 10 秒钟,并进行相应的提示。 (3)在...

    题目 5 :密码锁
    使用单片机实现简易密码锁,通过输入密码,实现门锁的开启(控制继电器)。
    具体要求如下:
    (1)当输入正确密码后,继电器开启。
    (2)当三次输入错误密码后,密码锁禁止输入 10 秒钟,并进行相应的提示。
    (3)在输入正确的密码后,可修改密码和查询、清除门开启的次数。
    (4)自制继电器电路模块。
    (5)实现密码掉电不丢失。
    可添加符合题目背景的其它合理功能

    在这里插入图片描述

    展开全文
  • 51单片机,用C语言写的密码锁程序 包含键盘扫描,LCD输出显示,密码比队,报警输出,定时器等等很多功能 主要是文档的书写格式很规范,是初学嵌入式程序编写人员的很好的参考资料
  • 密码锁完成的主要功能是当输入密码时,数码管只显示“-”,当密码位输入正确完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则开锁,此处用LED发光二极管亮一秒钟做为提示。若密码不正确,禁止...
  • 使用Proteus 仿真软件设计一个开机登陆程序,单片机选用ATmega48。 基础要求: 1.程序启动后在LCD1602液晶屏上提示用户通过独立按键输入密码(6位)。 2.密码输入错误则在屏幕上提示密码错误,密码输入正确则在屏幕...

    有需要可以找。

    使用Proteus 仿真软件设计一个开机登陆程序,单片机选用ATmega48。
    基础要求:
    1.程序启动后在LCD1602液晶屏上提示用户通过独立按键输入密码(6位)。
    2.密码输入错误则在屏幕上提示密码错误,密码输入正确则在屏幕上提示密码正确后等待约3秒后进入主界面,在屏幕中央显示Hello World。
    附加任务:在原题基础上
    1.LCD1602改用LCD12864液晶屏显示,独立按键改用4x4矩阵键盘。
    2.首次开机可直接设置新密码,非首次开机提示用户输入密码,尽量使用内部EEPROM。
    3.进入主界面后用几个按键来修改之前保存的密码,修改时屏幕上有光标和相关提示。

    操作EEPROM:
    http://blog.sina.com.cn/s/blog_5221e8130100yz0s.html
    T6963C中文数据手册.pdf,学习操作LCD12864:
    https://download.csdn.net/download/u010649025/12698944

    在这里插入图片描述

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 560
精华内容 224
关键字:

单片机密码锁