基于51单片机的数码管显示4位密码锁

合集下载

基于单片机的4位密码锁的课程设计

基于单片机的4位密码锁的课程设计

科学技术学院SCIENCE & TECHNOLOGY COLLEGE OFNANCHANG UNIVERSITY《课程设计》报告REPORT ON CURRICULUM DESIGN题目基于单片机的电子密码锁控制器学科部、系:专业班级:信息学科部、电子系电子信息工程学号:学生姓名:指导教师:起讫日期:2016.11.14—— 2016.11.25基于单片机的电子密码锁控制器专业:电子信息工程学号:学生姓名:指导教师:摘要随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统机械锁构造简单,被撬事件屡见不鲜;电子锁其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。

本设计以单片机 AT89C51作为密码锁监控装置的检测和控制核心,分为主机控制和从机执行机构。

实现钥匙信息在主机上的初步认证注册、密码信息的加密、钥匙丢失报废等功能。

根据 51 单片机之间的串行通信原理,这便于对密码信息的随机加密和保护。

而且采用键盘输入的电子密码锁有较高的优势。

采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,提高信号传输的抗干扰性,减少错误动作,而且功率消耗低;反应速度快、传输效率高、工作稳定可靠等。

软件设计采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。

测试结果表明,本系统各项功能已达到本设计的所有要求。

关键词:单片机;密码锁;单片机设计,电子锁。

设计达到的目的 :1.系统通过 4× 4 的矩阵键盘输入或设定开锁密码。

2.可以通过 LCD查看已输入的字符个数 [ 显示为 ****]3.密码输入正确, LCD显示“开”状态,继电器闭合;密码连续 3 次输入错误,报警4. 可以通过特殊的按键方法清除用户密码[ 如同时按下特定的多个键。

目录第一章基于单片机的电子密码锁控制器的概述 . (1)1.1 、课题背景和意义 (1)1.2 、电子密码锁发展趋势. ........................... (1)第二章设计方案的选择和确定 . (2)2.1 电子密码锁设计的具体要求................................ (2)2.2 总体设计方案选定 (3)第三章系统硬件设计 . (4)3.1 系统设计框图 . (4)3.2 AT89C51 简介 (4)3.3 1602 简介 (6)3.3.1 引脚说明 . (6)3.3.2 指令说明: . (6)3.3.3 地址表 (7)3.3.4 文字组表 . (8)3.4 系统设计结构图 (9)3.5 系统的工作原理说明 (9)3.6 硬件电路的设计 . (9)3.6.1 最小系统的设计 (9)3.6.2 芯片擦除 . (11)3.6.3 开锁机构 . (11)3.6.4 键盘设计 . (12)第四章系统软件设计 . (13)4.1 复位以及振荡电路. (13)4.2 3X4 矩阵键盘 (14)4.3 报警器 (14)4.4 液晶显示电路 (15)4.5 串口输入电路图 (15)第五章性能测试与分析 . (15)第六章附件 (19)1 程序流程图 (19)2 原理图 (19)3 源程序 (20)课程设计成绩评定表 . (26)第一章基于单片机的电子密码锁控制器的概述1.1 、课题背景和意义随着电子技术和计算机技术的飞速发展,单片机性能不断完善,性能价格比显著提高,技术日趋完善。

基于51单片机密码锁设计与调试 电子信息工程毕业设计论文

基于51单片机密码锁设计与调试 电子信息工程毕业设计论文

目录第一部分设计任务与调研 (1)第二部分设计说明 (2)第三部分设计成果 (5)第四部分结束语 (11)第五部分致谢 (12)第六部分参考文献 (13)第一部分设计任务与调研1.1设计的主要任务给抽屉设计一个四位密码的单片机密码锁控制系统,实现开锁功能,自动报警功能,改密功能,并取得仿真模拟调试成功。

1.2设计的思路本设计采用单片机为主控芯片,结合外围电路,组成电子密码锁,为了防止密码被窃取要求在输入密码时在LCD屏幕上显示*号,开锁密码位为四位。

能够让LCD1602显示器在密码正确时显示open!,密码错误时显示ERROR,输入密码时显示PASSWORD。

实现输入密码错误超过限定的三次电子密码时报警。

1.3设计的方法使用学校编写程序所学的单片机和C语言知识,利用在电工实训中学到的焊接技术焊接控制模块和LED接线及CAD所学的知识绘制驱动电路和控制电路,制作详细的设计方案和资料搜集后进行实际操作,通过程序设计,模拟仿真调试,修订完善后制作出成品。

1.4调研的目的和总结由于对电子密码锁的一些情况并不了解,为了使自己的电子密码锁能够更加完善,所以需要查阅大量的资料,通过查阅的资料与自己的想法进行一些结合做出取舍,最后获得了一些总结。

本设计从经济实用的角度出发,采用宏晶公司的单片机STC89C51与低功耗CMOS型作为主控芯片与数据存储器单元,结合外围的键盘输入、显示、报警、开锁等电路,用C语言编写主控芯片的控制程序,设计了一款可以多次更改密码具有报警功能的电子密码锁。

经实验证明,该密码锁具有设计方法合理,简单易行,成本低,安全实用等特点,符合住宅、办公室用锁要求,具有推广价值。

第二部分设计说明2.1设计方案2.1.1系统框架图本次设计选用单片机STC89C51作为系统的核心元件,利用单片机灵活的编程设计和丰富的IO端口及其控制的准确性,实现基本的密码锁功能。

在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接LCD1602显示器用于显示作用。

基于51单片机的电子密码锁

基于51单片机的电子密码锁

电子密码锁一、工作原理本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O 线的数目,在按键比较多的时候,通常采用这样方法。

每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N ×M个按键的键盘。

在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。

4×4矩阵键盘的工作原理在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图5所示。

在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。

这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。

由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。

扫描原理把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。

由于这种按键是机械式的开关,当按键被按下时,键会震动一小段时间才稳定,为了避免让8051误判为多次输入同一按键,我们必须在侦测到有按键被按下,就Delay一小段时间,使键盘以达稳定状态,再去判读所按下的键,就可以让键盘的输入稳定。

利用51单片机设计一个用16个按键输入,6位数字输出显示的电子时钟。

如图1-1所示。

图1-1按键分布图具体要求和按键功能介绍如下:1. 上电后,6 位数码管显示“—”;2. 设置6 位密码,密码通过键盘输入,按“确定”键确认,如密码正确,将锁打开;3. 密码由用户自己设定,若密码正确即锁被打开,则指示灯被点亮;4. 若密码1 次输入错误,则报警;5. 按Set 键,修改密码;6. 按Cle 键可清除已输入的密码,重新进行输二、系统硬件组成本次设计的主要有键盘,数码管,STC89C52芯片,以及LED灯。

51单片机四位密码锁课程设计

51单片机四位密码锁课程设计

51单片机四位密码锁课程设计51单片机四位密码锁是一种常见的电子锁,它使用51单片机作为控制核心,通过输入四位密码来控制锁的开关。

本文将介绍关于51单片机四位密码锁的课程设计。

我们需要明确设计的目标和要求。

本设计的主要目标是实现一个四位密码锁系统,并且需要满足以下要求:1.能够输入四位数字密码。

2.密码输入正确时,能够解锁并输出解锁信号。

3.密码输入错误时,不能解锁。

4.能够重置密码。

接下来,我们将详细介绍设计的步骤和实现。

1.硬件设计:在硬件设计方面,我们需要准备以下器件:- 51单片机-数码管显示模块-按键模块-继电器模块-电源模块2.软件设计:在软件设计方面,我们需要编写51单片机的程序,通过编程实现密码锁的功能。

以下是设计的主要步骤:-初始化:设置输入输出引脚,并初始化时钟和数码管显示。

-输入密码:设计密码输入的函数,通过按键模块获取用户输入的密码。

-检验密码:设计密码检验的函数,将用户输入的密码与预设的密码进行比对。

-解锁信号:如果密码输入正确,输出解锁信号,通过继电器控制开关,实现解锁。

-密码错误:如果密码输入错误,通过数码管显示密码错误的提示信息。

-重置密码:设计密码重置的函数,将新设置的密码保存。

3.程序流程:根据以上设计的步骤,我们可以得到以下主要的程序流程:-初始化引脚和时钟。

-设置初始密码。

-进入主程序循环。

-接收用户输入的密码。

-检验密码是否正确。

-如果密码正确,显示解锁信号并控制继电器解锁。

-如果密码错误,显示密码错误信息。

-进入下一次循环。

4.调试和测试:完成程序编写后,我们需要进行调试和测试。

在测试过程中,我们需要输入正确和错误的密码进行验证,检查程序是否能够正常运行,并且能够正确判断和处理用户输入的情况。

5.优化改进:如果在测试中发现问题或不足之处,我们可以对程序进行优化和改进。

例如,可以增加密码输入的最大尝试次数,增加延时等待时间,增加密码保护等功能。

总结:通过对51单片机四位密码锁的课程设计,我们学习了如何使用51单片机编写程序,实现密码锁的功能。

基于单片机的四位电子密码锁的设计

基于单片机的四位电子密码锁的设计
//#define Busy 0x80//用于检测LCM状态字中的Busy标识
#define w 4//定义密码位数
sbit lcd1602_rs=P2^7;
sbit lcd1602_rw=P2^6;
sbห้องสมุดไป่ตู้t lcd1602_en=P2^5;
sbit wxbz=P3^6;
sbit Scl=P3^4;//24C02串行时钟
(1)密码输入、显示及开锁功能;
(2)密码重置(两次输入旧密码正确后,再两次输入新密码无误则修改成功);
(3)上锁功能;
(4)声光提示(蜂鸣器和发光二极管);
(5)错误报警、输入次数任意更改(0-9次);
(6)液晶屏省电/正常模式任意切换;
(7)产生随机密码并可一键保存;
(8)输入密码的显示/隐藏任意切换;
第2章 硬件电路设计
图2-1-1 AT89S52最小工作系统
1、时钟电路:
单片机工作的时间基准,决定单片机工作速度。时钟电路就是振荡电路,向单片机提供一个正弦波信号作为基准,决定单片机的执行速度。AT89S51单片机时钟频率范围:0—33MHz。本设计晶振选择频率为12MHZ,电容选择30pF如图(3-4)。经计算得单片机工作胡机器周期为:
电子密码锁的设计与总结报告
摘要:
随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。
本次设计使用ATMEL公司的AT89S51单片机为芯片主体,采用AT24C02为掉电存储器的芯片。这种芯片稳定性高,成本低,还能扩展很多功能。如红外探测技术,指纹识别技术,语音识别技术,图像识别技术等。这些扩展的技术国外发展的比较迅速,有些已经投入使用。本设计没有采用这些扩展。其主要具有如下功能:

51单片机四位密码锁课程设计

51单片机四位密码锁课程设计

51单片机四位密码锁课程设计
课程设计如下:
1. 首先,介绍51单片机的基本知识和密码锁的原理,包括输入和输出端口的使用方法。

2. 确定密码锁的功能需求,如输入密码、验证密码、更改密码等。

3. 设计密码锁的硬件电路,包括矩阵键盘、LCD显示屏和继电器等。

4. 编写51单片机的程序代码,实现密码锁的功能。

5. 进行硬件和软件的调试,确保密码锁功能正常。

6. 进一步扩展密码锁的功能,如增加报警器、记录错误密码次数等。

7. 进行综合实验,将密码锁与其他设备或系统结合起来使用,如与门禁系统、智能家居系统等。

8. 对课程设计进行总结和展示,包括电路图、程序代码和实验结果等。

9. 学生通过实验,掌握51单片机的基本原理、密码锁的设计方法和调试技巧。

10. 学生能够在实际应用中灵活运用所学知识,设计和实现各种密码锁系统。

以上为课程设计的大纲,可以根据具体的实际情况进行细化和调整。

基于51单片机的密码锁系统设计

基于51单片机的密码锁系统设计

题目:密码锁系统设计一、设计要求:1.该设计的密码锁首先需要有最基本的功能,就是可以显示在用户按下正确并与之相对应的密码时,密码锁级整个系统会做出相应的反应。

2.加入了蜂鸣器,如果四位密码说如正确,按确认后,蜂鸣器会响起。

3.加入红灯和绿灯,当按键密码说如错误时,红灯亮起,输入正确时,绿灯亮起。

二、主要功能模块:密码锁控制系统主要功能模块单片机主控电路、单片机辅助控制模块,按键控制电路和数码管显示电路组成。

根据具体情况选择辅助单片机的型号,和数码管,开关等硬件设备进行设计。

三、要求完成的主要任务:1. 根据密码锁的基本功能完成硬件电路的搭建能要求完成提供硬件电路图。

2. 使用C51语言完成软件部分设计,实现密码锁的响应功能。

四、时间安排:2018.11.11~2018.11.20 收集资料,确定设计方案2018.11.20~2018.11.25 系统设计2018.11.25 ~2018.12.7 撰写课程设计论文及提交指导教师签名:年月日目录摘要 (5)ABSTRACT (5)一、需求分析 (3)二、方案设计 (5)三、硬件设计分析 (5)3.1 单片机89C52 (5)3.1.1单片机最小系统 (7)3.2显示模块 (8)3.2.1 LCD显示屏内容及连接 (8)3.2.2数码管内容及连接 (9)3.3 蜂鸣器与LED灯连接 (10)3.4 按键输入 (11)四、软件设计分析 (12)4.1 主程序 (12)4.2 按键程序 (13)4.3 按键处理程序 (14)4.4 LCD显示程序 (15)4.5数码管显示程序 (16)五、调试 (17)5.1使用的平台 (17)5.2功能的调试 (17)六、总结 (21)七、参考文献 (21)附录 (22)密码锁设计摘要在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及-一些个人资料的保存多以加锁的办法来解决。

若使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。

51单片机(四位数码管的显示)程序

51单片机(四位数码管的显示)程序

51单片机(四位数码管的显示)程序基于单片机V1或V2实验系统,编写一个程序,实现以下功能:1)首先在数码管上显示“P_ _ _”4个字符;2)等待按键,如按了任何一个键,则将这4个字符清除,改为显示“0000”4个字符(为数字的0)。

最佳答案下面这个程序是4x4距阵键盘,LED数码管显示,一共可以到0-F显示,你可以稍微改一下就可以实现你的功能了,如还有问题请发信息,希望能帮上你!#include<at89x52.h>unsigned char codeDig[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1 ,0x86,0x8e}; //gongyang数码管0-F 代码unsigned char k; //设置全局变量k 为键盘的键值/************************************键盘延时函数****************************/void key_delay(void) //延时函数{int t;for(t=0;t<500;t++);}/************************************键盘扫描函数******************************/void keyscan(void) //键盘扫描函数{unsigned char a;P2 = 0xf0; //键盘初始化if(P2!=0xf0) //有键按下?{key_delay(); //延时if(P2!=0xf0) //确认真的有键按下?{P2 = 0xfe; //使行线P2.4为低电平,其余行为高电平key_delay();a = P2; //a作为缓存switch (a) //开始执行行列扫描{case 0xee:k=15;break;case 0xde:k=11;break;case 0xbe:k=7;break;case 0x7e:k=3;break;default:P2 = 0xfd; //使行线P2.5为低电平,其余行为高电平a = P2;switch (a){case 0xed:k=14;break;case 0xdd:k=10;break;case 0xbd:k=6;break;case 0x7d:k=2;break;default:P2 = 0xfb; //使行线P2.6为低电平,其余行为高电平a = P2;switch (a){case 0xeb:k=13;break;case 0xdb:k=9;break;case 0xbb:k=5;break;case 0x7b:k=1;break;default:P2 = 0xf7; //使行线P2.7为低电平,其余行为高电平a = P2;switch (a){case 0xe7:k=12;break;case 0xd7:k=8;break;case 0xb7:k=4;break;case 0x77:k=0;break;default:break;}}}break;}}}}/****************************** ***主函数*************************************/ void main(void){while(1){keyscan(); //调用键盘扫描函数switch(k) //查找按键对应的数码管显示代码{case 0:P0=Dig[0];break;case 1:P0=Dig[1];break;case 2:P0=Dig[2];break;case 3:P0=Dig[3];break;case 4:P0=Dig[4];break;case 5:P0=Dig[5];break;case 6:P0=Dig[6];break;case 7:P0=Dig[7];break;case 8:P0=Dig[8];break;case 9:P0=Dig[9];break;case 10:P0=Dig[10];break;case 11:P0=Dig[11];break;case 12:P0=Dig[12];break;case 13:P0=Dig[13];break;case 14:P0=Dig[14];break;case 15:P0=Dig[15];break;default:break; //退出}}}/**********************************end***************************************/。

基于51单片机的4位数码管显示仪表的设计

基于51单片机的4位数码管显示仪表的设计

-7-
·寿命:1000 写/擦循环 ·数据保留时间:10 年 ·全静态工作:0Hz-24MHz ·三级程序存储器锁定 ·128×8 位内部 RAM ·32 可编程 I/O 线 ·两个 16 位定时器/计数器 ·5 个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路 3.1.3 STC89C51 单片机管脚说明 STC89C51单片机具有40个管脚,38个 I/O 口和2个电源端口,其管脚分 配如下图:
-3-
6.2 写入功能码 06 的测试…………………………………………………37 6.3 读取功能码 03 的测试…………………………………………………39 6.4 其他功能的测试 ………………………………………………………41 七、结论与心得…………………………………………………..........................43 八、参考文献…………………………………………………………………......43 九、附录…………………………………………………………………………..44 十、致谢………………………………………………………………………......46
-5-
二、设计目的和要求
2.1 设计目的 � � � 进一步熟悉和掌握单片机的结构和工作原理。 掌握单片机的接口技术及相关外围芯片的外特性,控制方法。 通过课程设计,掌握以单片机为核心的电路设计的基本方法和技术,了
解有关电路参数的计算方法,以及串口通讯的工作原理。 � � 通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。 通过完成一个包括电路设计和程序开发的完整过程,为我们今后从事相

-4-
一、前言
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控 制检测技术日益更新。 在实时检测和自动控制的单片机应用系统中,单片机往往 作为一个核心部件来使用,辅以外围的各种具体硬件结构和相应的软件编程, 可 以设计出各种既定功能的检测系统。 工业生产中,对于运输管道中的压力、流量,以及对于各种设备的实时监控 尤为重要,尤其是对于受到地理、设备布局等影响而无法直接布线以及无法直接 进行监控的场所,远程监控就显的尤其重要了。本设计就是以 STC89C51 单片机 为核心,能够对串口发来的数据进行远程 4 位数码管的显示。 (邮箱:1069405343@)

基于51单片机电子密码锁的设计

基于51单片机电子密码锁的设计
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
图 3.4 开锁电路
3.3 整体电路图的绘制
用Prteus软件绘制完整的电路图。
(1)密码正确并且确认之后的整体电路及显示情况,如图3.5。
图3.5 密码正确系统电路及显示图
(2)密码错误后的整体电路及显示情况,如图3.6。
图 3.6 密码错误系统电路及显示图
第四章 软件设计
4.1 系统软件设计思路
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
图 2.3 AT89C51芯片图
第三章 系统硬件设计
3.1 键盘设计
本实验采用4×4行列式矩阵键盘,用数字键输入密码,ENTER键确认;如果密码输入错误,用DEL键清除;密码输入完毕并且确认后,如果需要重新输入,先按Esc退出,然后重新输入;若用户想要自行更改密码,需要先正确输入密码并确认后,按ALT进行修改,再按ENTER进行确认,密码更改完毕。

基于51单片机的数码管显示4位密码锁

基于51单片机的数码管显示4位密码锁

单片机原理课程设计论文班级: 电气1136班学号: 201311631631姓名: 朱焯华指导老师: 张瑛目录一、前言。

3二、选题要求。

3三、硬件电路设计。

43.1 主控芯片。

43.2 矩阵键盘电路。

53.3 数码管电路。

63.4 138译码器位选电路。

63.5 晶振和复位电路。

73.6 蜂鸣器电路。

8四、软件设计。

8五、调试结果。

10六、总结。

12前言随着人们生活水平的提高,如何实现家庭防盗这一问题也变得尤为突出。

在科学技术不断发展的今天,电子密码防盗锁作为防盗卫士的作用显得日趋重要。

本文从经济实用的角度出发,系统由STC89C51作为主控芯片与数据存储器单元,结合外围的键盘输入、数码管显示、报警、开锁等电路模块。

它能完成以下功能:正确输入密码前提下,开锁,数码管显示“open”;错误输入密码情况下,报警,数码管显示“err”;密码可以根据用户需要在程序中更改。

用C语言编写的主控芯片控制程序,并用Keil4软件进行编译,设计了一款可以更改密码的系统,本密码锁具有设计方法合理,简单易行,成本低,安全实用,保密性强,灵活性高等特点,具有一定的推广价值。

关键词:电子密码锁、报警、数码管显示二、选题要求本文从经济实用的角度出发,设计采用51单片机为主控芯片,结合外围电路,组成电子密码控制系统,密码锁共4位密码(可增加),每位的取值范围为0~9,外加“确认”键和“取消”键。

用户可以通过修改程序来修改密码,想要打开锁,必先通过提供的键盘输入正确的密码才可以,密码输入错误有提示并报警。

4位密码同时输入正确,锁才能打开。

保密性强、灵活性高。

其特点:1) 保密性好,编码量多,远远大于弹子锁。

随机开锁成功率几乎为零。

2) 密码可变,用户可以更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。

3) 当输入密码错误时,报警系统自动启动。

4) 无活动零件,不会磨损,寿命长。

5) 使用灵活性好,不像机械锁必须佩带钥匙才能开锁。

51单片机驱动4位数码管的实现方法

51单片机驱动4位数码管的实现方法

51单片机驱动4位数码管的实现方法EA /VP 31X119X218RE SET 9RD 17W R 16INT 012INT 113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSE N29AL E/P 30TX D 11RX D 10U18051AB C D abcd efg d pL1A 7B 1C 2D 6LT 3BI 4LE5A 13B 12C 11D 10E 9F 15G14U24511VCCY1CRYSTA LC133pC233pR110kC310uFS1VCCR21k R31k R41k R51k R61k R71k R81k12345678161514131211109RP 1VCCS2电路如图所示。

相应的C 语言程序为: #includeunsigned int a0,a1,a2,a3,a; int t;sbit key=P0^2;void showit();//用于在数码管上显示的子程序 void delay_n40us(unsigned int n);void delay_n40us(unsigned int n) {unsigned int i; unsigned char j; for(i=n;i>0;i--) for(j=0;j<2;j++) ; }void showit() { t=10;while(t--) { a3=a/1000; a2=(a00)/100; a1=(a0)/10; a0=a;P1=0xe0+a0;delay_n40us(200);P1=0xd0+a1;delay_n40us(200);P1=0xb0+a2;delay_n40us(200);P1=0x70+a3;delay_n40us(200);}}void main(){a=6999;while(1){if(key==1){a=a-1;showit();}else showit();}}最后说说这个电路都实现了什么功能:即整机供电后,数码管从“6999”开始倒计数,此过程中如果开关S2被按下,则会停止倒计时,松开开关后倒计时继续。

51单片机密码锁程序

51单片机密码锁程序
sbit open=P2^5; //锁开指示灯,绿灯。低电平亮
sbit beep=P2^0; //蜂鸣器,低电平叫
sbit red=P2^1; //红灯,低电平亮
sbit close=P2^7; //锁合指示灯,黄色。低电平亮
1 2 3 确定
0
---------------------------------------------------------------------------------------------------------------------------------------------------------*/
初始密码为四位,1,2,3,4 如果想修改密码的长度,可将程序中的密码长度4改为你想设置的长度值
初始密码1,2,3,4也可在函数init_main()函数中修改
密码锁上电后,锁合灯亮,初始密码为1,2,3,4 。
当输入的四位密码按确定键后,密码正确时锁开灯亮,锁合灯灭。当不正确时,锁合灯继续亮,蜂鸣器短报警
pwflag = 0; // 密码标志先置为0
last_pwflag=0;
close=0; //锁合灯亮,其它灯灭
delay();
red=1;
delay();
delay();
delay();
delay();
red=0;
delay();
delay();
delay();
delay();
red=1;
}
//快闪红灯,重新输入自定义密码
void flashred_S(void)
case 0xdb: return 8;break;

51单片机(四位数码管的显示)程序[1]

51单片机(四位数码管的显示)程序[1]

51单片机(四位数码管的显示)程序基于单片机V1或V2实验系统,编写一个程序,实现以下功能:1)首先在数码管 上显示P ”个字符;2)等待按键,如按了任何一个键,则将这 4个字符清除, 改为显示0000”个字符(为数字的0)。

E3最佳答案下面这个程序是4x4距阵键盘丄ED 数码管显示,一共可以到0-F 显示,你可以稍微 改一下就可以实现你的功能了,如还有问题请发信息,希望能帮上你!#i nclude<at89x52.h> un sig ned char codeDig[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1 ,0x86,0x8e}; //gongyang 数码管 0-F 代码void key_delay(void) {int t;for(t=0;t<500;t++);}un sig nedchar k;//设置全局变量k 为键盘的键值键盘延时函数键盘扫描函数 ***************************** *///延时函数voidkeyscan(void)//键盘初始化 //有键按下? //延时 //确认真的有键按下? //使行线 P2.4 为低电平,其余行为高电平 //a 作为缓存 //开始执行行列扫描 {case 0xee:k=15;break;case 0xde:k=11;break;case 0xbe:k=7;break;case 0x7e:k=3;break;default:P2 = 0xfd;//使行线 P2.5 为低电平,其余行为高电平a = P2;switch (a)//键盘扫描函数 {unsigned char a;P2 = 0xf0;if(P2!=0xf0){key_delay();if(P2!=0xf0){P2 = 0xfe;key_delay();a = P2;switch (a)case 0xed:k=14;break;case 0xdd:k=10;break;case 0xbd:k=6;break;case 0x7d:k=2;break;default:P2 = 0xfb; //使行线 P2.6 为低电平,其余行为高电平a = P2;switch (a){case 0xeb:k=13;break;case 0xdb:k=9;break;case 0xbb:k=5;break;case 0x7b:k=1;break;default:P2 = 0xf7; //使行线P2.7为低电平,其余行为高电平a = P2;switch (a){case 0xe7:k=12;break;case 0xd7:k=8;break;case 0xb7:k=4;break;case 0x77:k=0;break;default:break;}} break;}}}}void main(void){while(1){keyscan(); switch(k){case 0:P0=Dig[0];break;case 1:P0=Dig[1];break;case 2:P0=Dig[2];break;case 3:P0=Dig[3];break;case 4:P0=Dig[4];break;case 5:P0=Dig[5];break;**************************** ***主函数 * ********************************** //调用键盘扫描函数 //查找按键对应的数码管显示代码case 6:P0=Dig[6];break;case 7:P0=Dig[7];break;case 8:P0=Dig[8];break;case 9:P0=Dig[9];break;case10:P0=Dig[10];break;case11:P0=Dig[11];break;case12:P0=Dig[12];break;case13:P0=Dig[13];break;case14:P0=Dig[14];break;case15:P0=Dig[15];break;default:break; // 退出}}}endWelcome ToDownload !! !欢迎您的下载,资料仅供参考!。

基于51单片机的密码锁(C语言)

基于51单片机的密码锁(C语言)

电路:功能描述,开机无显示。

按下除号,开始输入密码,显示短线,初始密码为0000。

输入完后,按下on/c键,确定。

正确显示open,错误显示err。

=键为取消键,输入密码过程中,按下取消键,数码管全亮1s,然后灭掉。

恢复初始状态。

按下乘号,设置密码,此时数码管显示短线。

输入正确密码后,进入更改密码状态,显示全F。

输入更改后密码,按下on/C键,确认。

PS:1输入任意时刻,都可按等号返回初始状态。

2输入时,数字会相应的显示。

通过Protues仿真,电路图为protues输出的。

送给初学者,学习参考。

#include <reg52.h>#define uint8 unsigned char#define uint16 unsigned int//数码管编码。

uint8 code SEG7LED[26] = {0x3f,0x06,0x5b,0X4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00,0x40,0xff,0x3f,0x73,0x79,0x37, //open0x79,0x77,0x77}; //err//变量声明uint8 Ge,Shi,Bai,Qian;//数码管各个位uint8 WeiNum=1;uint8 code P1Pin[9] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};uint8 state=0;//记录密码锁状态,0为待机状态,1为输入密码,2,3为设置密码uint8 InputNum=1;//记录输入密码时,目前密码的位数。

uint8 InPassWord[4];uint8 PassWord[4]={0,0,0,0};//函数声明void initTimer0();void display(uint8 WeiNum);uint8 keyscan();void delayms(uint16 Xms);void password(uint8 key);uint8 Compare(uint8 InPassWord[4]);void main(){uint8 key;initTimer0();while(1){key = keyscan();password(key);}}void initTimer0(){EA = 1;ET0 = 1;TMOD = 0X01;TH0 = (65535-5000)/256;TL0 = (65535-5000)%256;TR0 = 1;}void Timer0() interrupt 1{TH0 = (65535-5000)/256;TL0 = (65535-5000)%256;display(WeiNum);WeiNum ++;if(WeiNum==5)WeiNum = 1;}void display(uint8 WeiNum){switch(WeiNum){case 1:{P2 = 0xff;P0 = SEG7LED[Qian];P2 = 0xfe;break;}case 2:{P2 = 0xff;P0 = SEG7LED[Bai];P2 = 0xfd;break;}case 3:{P2 = 0xff;P0 = SEG7LED[Shi];P2 = 0xfb;break;}case 4:{P2 = 0xff;P0 = SEG7LED[Ge];P2 = 0xf7;break;}default:{P2 = 0xff;P0 = 0xff;P2 = 0xff;break;}}}void delayms(uint16 Xms){uint16 i,j;for(i=Xms;i>0;i--)for(j=110;j>0;j--);}uint8 keyscan(){uint8 i=0;uint8 key8=0xff;uint8 key=0xff;uint8 Button;for(i=0;i<4;i++){P1 = P1Pin[i];Button = P1;if(Button != P1Pin[i]){delayms(5);Button = P1;if(Button != P1Pin[i]){key8 = Button;}while(Button != P1Pin[i]){ Button = P1; }}}switch(key8){//0~9数字键,12确定,14取消,10输入密码,11设置密码。

基于51单片机电子密码锁的设计与实现

基于51单片机电子密码锁的设计与实现

基于51单片机电子密码锁的设计与实现摘要:截至目前为止,人民群众在进行安全密保工作的过程之中,已经开始逐步使用电子密码锁。

与此同时,在电子密码锁的应用过程之中,可以有效的提升安全防护的安全性和可靠性。

具体的来说,就是以51单片机作为主控芯片,结合4x4的矩阵键盘,以及相应的LCD 显示和报警模块,来实现电子密码锁的设计与实现过程,与此同时,通过该设计方式,用户还可以自主的进行密码的设定和修改,远程的对电子密码锁进行控制,有着一定的推广可行性。

关键词:51单片机;电子密码锁;设计;实现Design and implementation based on 51 single chip microcomputer electroniccombination lockAbstract:At present, in the process of encrypted for security, the main use of combination lock is with automatic alarm function of electronic combination lock, through the use of treated woman combination lock, can effectively overcome the traditional mechanical combination lock security is high enough. Against such a situation, this design is mainly introduced the design and implementation based on 51 single chip microcomputer electronic combination lock.Concrete, was based on 51 single chip microcomputer as main control chip, the combination of 4 x4 matrix keyboard, and the corresponding LCD display and alarm module, to achieve electronic combination lock design and implementation process, at the same time, through this design approach, the user can also free to set and modify the password, remote to control electronic combination lock, has certain feasibility.Keywords:51 single chip microcomputer; Electronic combination lock; Design; implementation目录第1章绪论 (1)1.1 研究背景 (1)1.2 研究意义 (1)1.3 国内外的研究现状及发展趋势 (1)第2章设计整体框架 (2)2.1 电子密码锁系统框图 (2)2.2 采用51单片机的优缺点 (2)第3章电子密码锁硬件电路的设计 (4)3.1 控制模块的设计 (4)3.1.1 51单片机简介 (4)3.1.2 51单片机引脚描述 (4)3.1.3 51单片机内部的复位电路 (5)3.2 显示模块的设计 (5)3.3.1 液晶显示屏类型介绍 (5)3.3.2 液晶显示屏引脚介绍 (5)3.2.3 指令操作 (5)3.3 按键模块的设计 (6)第4章电子密码锁的软件设计 (7)4.1 软件介绍 (7)4.2 主程序设计 (7)4.3 模块程序设计 (7)4.3.1 显示程序设计 (7)4.3.2 电机程序设计 (8)4.3.3 按键程序设计 (8)4.4 软件调试 (8)5 总结 (9)致谢 (10)参考文献 (11)第1章绪论1.1 研究背景随着电子科学技术的不断发展,各种新型的电子信息控制技术已经可以应用到人类社会生活的各个领域之中。

51单片机(四位数码管的显示)程序

51单片机(四位数码管的显示)程序

51单片机(四位数码管的显示)程序基于单片机V1或V2实验系统,编写一个程序,实现以下功能:1)首先在数码管上显示“P_ _ _”4个字符;2)等待按键,如按了任何一个键,则将这4个字符清除,改为显示“0000”4个字符(为数字的0)。

最佳答案下面这个程序是4x4距阵键盘,LED数码管显示,一共可以到0-F显示,你可以稍微改一下就可以实现你的功能了,如还有问题请发信息,希望能帮上你!#include<at89x52.h>unsigned char codeDig[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1 ,0x86,0x8e}; //gongyang数码管0-F 代码unsigned char k; //设置全局变量k 为键盘的键值/************************************键盘延时函数****************************/void key_delay(void) //延时函数{int t;for(t=0;t<500;t++);}/************************************键盘扫描函数******************************/void keyscan(void) //键盘扫描函数{unsigned char a;P2 = 0xf0; //键盘初始化if(P2!=0xf0) //有键按下?{key_delay(); //延时if(P2!=0xf0) //确认真的有键按下?{P2 = 0xfe; //使行线P2.4为低电平,其余行为高电平key_delay();a = P2; //a作为缓存switch (a) //开始执行行列扫描{case 0xee:k=15;break;case 0xde:k=11;break;case 0xbe:k=7;break;case 0x7e:k=3;break;default:P2 = 0xfd; //使行线P2.5为低电平,其余行为高电平a = P2;switch (a){case 0xed:k=14;break;case 0xdd:k=10;break;case 0xbd:k=6;break;case 0x7d:k=2;break;default:P2 = 0xfb; //使行线P2.6为低电平,其余行为高电平a = P2;switch (a){case 0xeb:k=13;break;case 0xdb:k=9;break;case 0xbb:k=5;break;case 0x7b:k=1;break;default:P2 = 0xf7; //使行线P2.7为低电平,其余行为高电平a = P2;switch (a){case 0xe7:k=12;break;case 0xd7:k=8;break;case 0xb7:k=4;break;case 0x77:k=0;break;default:break;}}}break;}}}}/****************************** ***主函数*************************************/ void main(void){while(1){keyscan(); //调用键盘扫描函数switch(k) //查找按键对应的数码管显示代码{case 0:P0=Dig[0];break;case 1:P0=Dig[1];break;case 2:P0=Dig[2];break;case 3:P0=Dig[3];break;case 4:P0=Dig[4];break;case 5:P0=Dig[5];break;case 6:P0=Dig[6];break;case 7:P0=Dig[7];break;case 8:P0=Dig[8];break;case 9:P0=Dig[9];break;case 10:P0=Dig[10];break;case 11:P0=Dig[11];break;case 12:P0=Dig[12];break;case 13:P0=Dig[13];break;case 14:P0=Dig[14];break;case 15:P0=Dig[15];break;default:break; //退出}}}/**********************************end***************************************/。

基于51单片机的四位密码锁的设计

基于51单片机的四位密码锁的设计

本文主要基于51单片机,利用KeilC51软件开发工具,Proteus 虚拟仿真工具进行四位密码锁的设计,整个设计由单片机最小系统、输入、显示、开锁、报警共五个模块组成,实现密码输入、状态显示、错误报警等功能。

随着现代科技的发展和进步,人们的生活质量得到了巨大的提升,在享受科技带来的红利的同时,人们也逐渐感受到信息安全的重要性。

单片机以其成熟的技术、低廉的造价和广泛的应用而受到用户的青睐。

本文基于51单片机而设计的四位密码锁,集密码输入,状态显示,错误报警等功能。

按提示输入密码且密码正确,可以将锁打开,若输入错误且超过三次,蜂鸣器报警同时键盘锁定,从而实现为人们的信息安全保驾护航。

1 系统设计1.1 系统设计方案四位密码锁系统由五个电路模块组成。

其中有包括时钟电路和复位电路组成的单片机最小系统模块进行状态控制,4*4键盘输入模块进行密码的设置和输入,LCD显示模块实现输入状态的显示,开锁模块在密码输入判定正确后执行开锁的命令,蜂鸣器报警模块拥有识别输入错误并自动报警功能。

系统框图如图1所示(张济.基于单片机应用系统设计技术-基于C语言编程[M].北京:电子工业出版社,2006):图1 密码锁系统框图1.2 硬件设计单片机模块:单片机的最小系统模块由AT89C51单片机、时钟电路、复位电路组成。

使单片机作为控制器来控制其他模块的正常运行。

键盘输入模块:单片机的P1.0-P1.7接口连接4*4键盘。

除了0-9数字键之外,还有确定、清除、设置密码,按键,通过键盘来进行密码输入、设置、错误清除功能。

显示模块:单片机的P0.0-P0.7、P2.5-P2.7接口接LCD1602。

通过液晶显示屏来显示密码的输入状态,并通过24C02C存储芯片进行密码的存储。

开锁模块:当输入的密码与设定的密码一致时,通过单片机控制开锁进行开锁。

报警模块:单片机的P2.1控制蜂鸣器报警,P2.0接红色LED灯,在密码输入错误时通过亮灯提示用户,当输入密码错误次数大于三次时,单片机通过程序控制红色LED灯亮起和蜂鸣器报警,并控制键盘使之锁定(张毅刚.单片机原理及接口技术(2版)[M].北京:人民邮电出版社,2016,6)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机原理课程设计论文
班级:电气1136班
学号:1631
姓名:朱焯华
指导老师: 张瑛
目录
一、前言 .。

..。

.。

.. 3
二、选题要求。

.。

.。

.。

...。

3
三、硬件电路设计。

.。

.。

.。

.。

..。

.。

4
3、1 主控芯片。

.。

.。

.。

.。

.。

4ﻩ
3、2 矩阵键盘电路 .。

.。

...。

. (5)
3、3 数码管电路。

.。

.。

.。

6
3、4138译码器位选电路 ....。

.6
3、5晶振与复位电路。

..。

.。

.。


3、6 蜂鸣器电路 .。

.。

.。


四、软件设计..。

..。

.。

..。

.。


五、调试结果。

.。

.。

.。

10
六、总结。

.。

..。

..。

.。

.。

12
前言
随着人们生活水平得提高,如何实现家庭防盗这一问题也变得尤为突出。


科学技术不断发展得今天,电子密码防盗锁作为防盗卫士得作用显得日趋重要。

本文从经济实用得角度出发,系统由STC89C51作为主控芯片与数据存储器单
元,结合外围得键盘输入、数码管显示、报警、开锁等电路模块.它能完成以下功
能:正确输入密码前提下,开锁,数码管显示“open”;错误输入密码情况
下,报警,数码管显示“err”;密码可以根据用户需要在程序中更改.用C语言
编写得主控芯片控制程序,并用Keil4软件进行编译,设计了一款可以更改密码得
系统,本密码锁具有设计方法合理,简单易行,成本低,安全实用,保密性强,灵活
性高等特点,具有一定得推广价值。

关键词:电子密码锁、报警、数码管显示
二、选题要求
本文从经济实用得角度出发,设计采用51单片机为主控芯片,结合外围电路,组成电子密码控制系统,密码锁共4位密码(可增加),每位得取值范围为
0~9,外加“确认”键与“取消"键。

用户可以通过修改程序来修改密码,想要打开锁,必先通过提供得键盘输入正确得密码才可以,密码输入错误有提示并报警.4位密码同时输入正确,锁才能打开。

保密性强、灵活性高。

其特点:
1)保密性好,编码量多,远远大于弹子锁。

随机开锁成功率几乎为零.
2)密码可变,用户可以更改密码,防止密码被盗,同时也可以避免因人员得更替而使锁得密级下降。

3)当输入密码错误时,报警系统自动启动.
4)无活动零件,不会磨损,寿命长。

5)使用灵活性好,不像机械锁必须佩带钥匙才能开锁.
三、硬件电路设计
下面就是整个设计得流程图:
3、1 主控芯片
这次课程设计采用得主控芯片就是51系列单片机AT89C51。

其外部封装如
下:
AT89C52单片机有4组8位得可编程I/O口,分别位P0、P1、P
2、P3口,每个口有8位(8根引脚),共32位.
P0口(Pin39~Pin32):8位双向I/O口线,名称为P0、0~P0、7;
P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1、0~P1、7 ;
P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2、0~P2、7 ;
P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3、0~P3、7。

3、2 矩阵键盘电路
本次课程设计采用得就是行列键盘,C语言程序中有相对应得驱动程序,其硬
件电路图与对应数字功能键图如下所示:
注:这里得“取消"键就就是电路中得“复位”键.
3、3 数码管电路
采用得就是7SEG-MPX4-CA数码管(采用两个数码管得目得为了拓展密码位数).
3、4 138译码器位选电路
通过138译码器得输出来选择需要显示得数码管,其电路图与功能表如下:
3、5晶振与复位电路电路图如下:
3、6 蜂鸣器电路
电路图如下:
四、软件设计C语言代码如下:
五、调试结果
输入正确密码“0123”
按下“确认"键后,显示“open”
输入错误密码“0000"
按下“确认”键后,显示“err"
六、总结
经过一周得紧张设计,终于顺利完成了设计任务.本次课程设计主要针对密码锁系统做了详细介绍,一STC89C51为核心,并通过调试运行可以实现数码管显示密码输入得相关信息,通过10数字键(0~9)设置成4位数字密码,实现2位功能按键(“确认”、“取消")与蜂鸣器报警等。

通过课程设计让我对单片机系统有了较详细得了解,而且触及到与其相关得很多新知识,而且随着电子技术得发展简易数字密码表也会越来越完善,作为大学生得我们应该跟上时代得步伐,时刻关注形势变化,不断充实更新自己得知识.
在设计中既应用到了基础知识,也用到了专业知识,她就是对三年来所学知识得综合考察。

最重要得就是我通过亲自设计,亲自绘制原理图以及系统调试,培养了我得耐心与细心,这对我以后得工作与学习有很大得帮助、。

相关文档
最新文档