单片机电子密码锁毕业设计论文报告完整版【电路图+源代码
51单片机电子密码锁设计(包含原理图,电路设计,c语言程序)
电子密码锁设计1.实验任务根据设定好的密码,采用二个按键实现密码的输入功能,当密码输入正确之后,锁就打开,如果输入的三次的密码不正确,就锁定按键3秒钟,同时发现报警声,直到没有按键按下3种后,才打开按键锁定功能;否则在3秒钟内仍有按键按下,就重新锁定按键3秒时间并报警。
2.电路原理图图4.32.13.系统板上硬件连线(1).把“单片机系统”区域中的P0.0/AD0用导线连接到“音频放大模块”区域中的SPK IN端子上;(2).把“音频放大模块”区域中的SPK OUT端子接喇叭和;(3).把“单片机系统”区域中的P2.0/A8-P2.7/A15用8芯排线连接到“四路静态数码显示”区域中的任一个ABCDEFGH端子上;(4).把“单片机系统“区域中的P1.0用导线连接到“八路发光二极管模块”区域中的L1端子上;(5).把“单片机系统”区域中的P3.6/WR、P3.7/RD用导线连接到“独立式键盘”区域中的SP1和SP2端子上;4.程序设计内容(1).密码的设定,在此程序中密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。
(2).密码的输入问题:由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。
在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。
进入密码的判断比较处理状态并给出相应的处理过程。
(3).按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的情况下发生的。
5.C语言源程序#include <A T89X52.H>unsigned char code ps[]={1,2,3,4,5};unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};unsigned char pslen=9;unsigned char templen;unsigned char digit;unsigned char funcount;unsigned char digitcount;unsigned char psbuf[9];bit cmpflag;bit hibitflag;bit errorflag;bit rightflag;unsigned int second3;unsigned int aa;unsigned int bb;bit alarmflag;bit exchangeflag;unsigned int cc;unsigned int dd;bit okflag;unsigned char oka;unsigned char okb;void main(void){unsigned char i,j;P2=dispcode[digitcount];TMOD=0x01;TH0=(65536-500)/256;TL0=(65536-500)%256;TR0=1;ET0=1;EA=1;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) //digit 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;}}}void t0(void) interrupt 1 using 0{TH0=(65536-500)/256;TL0=(65536-500)%256;if((errorflag==1) && (rightflag==0)) {bb++;if(bb==800){bb=0;alarmflag=~alarmflag;}if(alarmflag==1){P0_0=~P0_0;}aa++;if(aa==800){aa=0;P0_1=~P0_1;}second3++;if(second3==6400){second3=0;hibitflag=0;errorflag=0;rightflag=0;cmpflag=0;P0_1=1;alarmflag=0;bb=0;aa=0;}}if((errorflag==0) && (rightflag==1)) {P0_1=0;cc++;if(cc<1000){okflag=1;}else if(cc<2000){okflag=0;}else{errorflag=0;rightflag=0;hibitflag=0;cmpflag=0;P0_1=1;cc=0;oka=0;okb=0;okflag=0;P0_0=1;}if(okflag==1){oka++;if(oka==2){oka=0;P0_0=~P0_0;}}else{okb++;if(okb==3){okb=0;P0_0=~P0_0;}}}}。
单片机课程设计报告电子密码锁完整版
单片机课程设计报告电子密码锁HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】山东交通学院单片机原理与应用课程设计院(部):轨道交通学院班级:自动化121学生姓名:学号:指导教师:时间:—课程设计任务书题目电子密码锁设计系 (部) 轨道交通学院专业班级自动化121学生姓名学号06 月 01 日至 06 月 12 日共 2 周指导教师(签字)系主任(签字)年月日目录3.总体设计 (2)4密码比较模块 (6) (6) (8) (9)附录 (10)摘要设计运用了ATMEL公司的AT89S52芯片系统,将微处理器、总线、蜂鸣器、矩阵键盘、存储器和I/O口等硬件集中一块电路板上,通过读取键盘输入的数据(密码)并储存到ATMEL912 24C08存储器中,然后判断之后键盘输入的数据与已存储的数据是否相同来决定打开密码箱或锁键盘或报警。
在keil4软件中编程,系统可实现6位密码的处理,并通过控制步进电机控制密码箱门的电子锁,同时还可以修改改密码。
利用单片机系统制作的密码箱安全性能更高,更易操作且体积小。
关键词:单片机、密码锁、修改密码1.设计要求本实验将实现六位数的电子密码锁。
要求使用4X4 行列式键盘作为输入,并用LCD 实时显示。
具体要求如下:1. 开机时LCD显示“welcome to use”,初始化密码为“123456”,密码可以更改。
2. 按下“10”,开始则显示“Enter Please:”。
3. 随时可以输入数值,并在LCD上实时显示‘*’。
当键入数值时,为了保密按从左到右依次显示‘*’,可键入值为0~9。
4. 按下“13”键,则表示确定键按下,进行密码对比。
如相符则在LCD第一行显示“Open the door!”,同时指示灯亮起并且步进电机旋转一定的角度;如不符,则LCD第一行显示“Wrong password!”,并且蜂鸣器同时提示一下。
毕业设计(论文)-基于单片机控制的电子密码锁设计
基于单片机控制的电子密码锁设计目录摘要 (I)关键词 (I)Abstract ................................................................................................................... I I Key words ............................................................................................................... I I 1 绪论. (1)1.1 课题背景 (1)1.2 课题的目的和意义 (1)1.3 电子密码锁发展趋势 (1)1.4 本设计完成的工作 (2)2 总体方案设计 (2)2.1 电源模块 (3)2.2主控制器模块 (3)3 硬件实现及单元电路设计 (4)3.1 主控制模块 (4)3.2 单片机的时钟电路与复位电路设计 (4)3.3 单片机管脚说明 (5)3.4 键盘电路设计 (6)3.5 数码管显示电路设计 (6)3.6 存储芯片电路设计 (7)3.7 报警电路 (7)3.8 密码锁电路 (7)4 红外遥控电路设计 (8)4.1 红外通信基本原理 (8)4.2红外通信标准 (9)4.3 红外线遥控原理 (10)4.4 主要模块设计 (10)5 系统软件设计方案 (11)5.1 主程序流图 (11)5.2 开锁软件设计 (12)6 系统的安装与调试 (15)6.1硬件的安装 (15)6.2单片级密码锁的仿真 (16)结论 (16)致谢 ...................................................................................... 错误!未定义书签。
参考文献 (17)附录1 整机电路原理图 (18)附录2 部分源程序 (18)附录3:实物图 (27)基于单片机控制的电子密码锁设计摘要:本设计研究的对象是单片机密码锁,单片机密码锁由硬件和软件组成,硬件部分有电源输出电路、晶振电路、复位电路、键盘接口电路、开锁电路、报警电路、继电器、以及51单片机组成。
基于单片机的智能密码锁的设计与制作(含pcb图)大学毕设论文
目录摘要 (1)英文摘要 (2)引言 (3)1 概述 (4)2 系统硬件设计 (4)2.1 硬件组成及工作原理 (4)2.2 单片机选型 (5)2.3 时钟电路 (5)2.4 复位电路 (6)2.5 密码存储电路 (7)2.6 矩阵式键盘电路设计 (7)2.7 报警电路 (8)2.8 显示电路 (8)3 系统软件方案 (9)3.1 设计与分析 (9)4 系统调试 (11)4.1 硬件调试 (11)4.2 软件调试 (11)结论与谢辞 (12)参考文献 (13)附件1:元器件清单 (14)附件2:系统软件 (15)附件3:电路图 (22)附件4:PCB图 (23)基于单片机和串行EEPROM的智能密码锁的设计与制作信息工程学院应用电子专业摘要:传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。
随着单片机的问世,出现了带微处理器的密码锁,它除具有电子密码锁的功能外,还引入了智能化、科技化等功能,从而使密码锁具有很高的安全性、可靠性,受到了广大用户的亲睐。
本文介绍一种基于单片机和串行EEPROM的智能密码锁,对系统硬件设计和软件实现进行了详细的描述。
该系统采用STC89C51单片机和AT24C02串行EEPROM,通过STC89C51模拟I2C总线和AT24C02通讯来读取存储的密码,用户通过键盘输入的密码,实现密码锁的功能。
关键词:智能密码锁STC89C51 AT24C02Single-chip EEPROM and serial-based Intelligent Design andlocks the production ofMajor of Applied Electronic Technology Information andEngineering College yingjunqingAbstract :Both traditional locks have a lot of keys, but also worried about the trouble after the loss of keys. With the advent of single-chip, a microprocessor with the password lock, which in addition to the functions of electronic locks, but also the introduction of intelligent, technology and other functions, so that locks with high security, reliability, the majority of users have been pro-gaze.This paper presents a single chip and serial EEPROM-based smart locks on the system hardware design and software implementation described in detail. The system usesSTC89C51 and AT24C02 single-chip serial EEPROM, through the I2C bus and STC89C51 simulation AT24C02 communication to read stored passwords, user password through the keyboard input to achieve the function of locks.Key words: smart locks STC89C51 AT24C02引言随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。
(完整版)基于51单片机的简易电子密码锁课程设计毕业设计论文
前言随着电子技术的发展,具有防盗报警等功能的电子密码锁代替密码量少、安全性差的机械式密码锁已是必然趋势。
电子密码锁与普通机械锁相比,具有许多独特的优点:保密性好,防盗性强,可以不用钥匙,记住密码即可开锁等。
目前使用的电子密码锁大部分是基于单片机技术,以单片机为主要器件,其编码器与解码器的生成为软件方式。
下面就是现在主流电子密码锁:目前常见的遥控式电子防盗锁主要有光遥控和无线电遥控两类。
键盘式电子密码锁从目前的技术水平和市场认可程度看,使用最为广泛的是键盘式电子密码锁,该产品主要应用于保险箱、保险柜和金库,还有一部分应用于保管箱和运钞车。
卡式电子防盗锁使用各种“卡”作为钥匙的电子防盗锁是当前最为活跃的产品,无论卡的种类如何多种多样,按照输入卡的操作方式,都可分为接触式卡和非接触式卡两大类。
生物特征防盗锁人的某些与生俱来的个性特征(如手、眼睛、声音的特征)几乎不可重复,作为“钥匙”就是唯一的(除非被逼迫或伤害)。
因此,利用生物特征做密码的电子防盗锁,也特别适合金融业注重“验明正身”的行业特点。
人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。
锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,又要使用方便,这也是制锁者长期以来研制的主题。
随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。
据有关资料介绍,电子密码锁的研究从20世纪30年代就开始了,在一些特殊场所早就有所应用。
这种锁是通过键盘输入一组密码完成开锁过程。
研究这种锁的初衷,就是为提高锁的安全性。
由于电子锁的密钥量(密码量)极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。
电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。
电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC 卡锁,生物锁等。
但较实用的还是按键式电子密码锁。
20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠性提高,成本较高,是适合使用在安全性要求较高的场合,且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对它的研究一直没有明显进展。
基于单片机的电子密码锁毕业论文设计
本科毕业设计(论文)题目基于单片机的电子密码锁设计院(系部)河北大学专业名称电子信息工程年级班级学生姓名指导教师2011年月日摘要本课题设计了一种基于单片机的数字电子密码锁,这种数字电子密码锁以单片机作为数据处理主控芯片。
电子密码锁的设计主要由四部分组成:4×4矩阵键盘接口电路、以AT89S52芯片为核心的密码锁的数据处理及控制电路、掉电情况下依然能保存密码的EEPROM存储器芯片,输出七段显示电路。
另外系统还有LED提示灯,报警蜂鸣器,单片机复位电路等。
电子密码锁设计的关键问题是实现密码的输入、清除、开锁、更改等功能。
同时该密码锁具有设计方法合理,简单易行,成本低,安全实用等特点,符合住宅,办公室等场所的用锁要求,具有推广价值。
关键词单片机密码锁 4*4矩阵键盘 EEPROM存储芯片实用经济AbstractThis project designed a digital electronic lock which used a MCU as data process and control chip. The main functions digital electronic lock are as follows:The design of the electronic password lock is mainly made up of four parts: 4×4 matrix keyboard interface circuit, data processing and control circuit, eeprom memory chip that is used to keep password when the lock loses power and display circuit. In addition the system also consists of LED lights, alarm buzzers, single-chip reset circuit and so on..The key question of the electronic lock designing is the realization of functions, such as the input password, clear password, unlock, change password and other functions.And the designed cipher lock is characterized by its reasonable designing methods, simple operation, low cost and property of safety and practicality.Besides,it works well as a residence lock and has great potential for commercial development.Key words: SCM Cipher lock 4*4matrix keyboard EEPROM Practical economy目录1 绪论 (1)1.1国内外研究综述 (1)1.2选题的目的和意义 (2)1.3本论文的任务 (3)2电子密码锁总体设计 (4)2.1系统总体设计 (4)2.2单片机 (5)2.3密码存储芯片选择 (10)2.4键盘输入方案比较 (12)2.5显示方案比较 (13)3电子密码锁的硬件设计 (1)3.1系统结构框图 (1)3.2主控部分 (2)3.3显示部分 (3)3.4键盘输入部分 (4)3.5密码存储部分 (5)3.6电源部分 (5)3.7其它功能部分 (8)3.8 电子密码锁的电路原理图 (10)4电子密码锁的软件组成 (12)4.1系统软件设计流程 (12)4.2 Keil uVision2软件介绍 (13)4.3各主要部分的功能实现程序设计 (14)4.3.1初始化程序设计 (14)4.3.2按键处理程序设计 (17)4.3.3密码更改程序设计 (21)5系统仿真 (24)5.1系统仿真过程 (24)5.2仿真调试中遇到的问题及解决办法 (25)总结 (1)致谢 (2)参考文献 (3)附录 (4)1 绪论1.1国内外研究综述在电子锁出现以前人们广泛的使用机械锁,但是随着时间的推移机械锁已不能满足人们的要求,于是电子锁应用而生。
毕业论文---基于单片机电子密码锁的设计
毕业设计(论文)课题名称基于单片机电子密码锁的设计学生姓名刘海龙学号0914400320系、年级专业机电一体化指导教师胡畔年月日摘要在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。
随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。
为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。
密码锁具有安全性高、成本低、功耗低、易操作等优点。
在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。
随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。
随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。
但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。
而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。
加上其成本较高,一定程度上限制了这类产品的普及和推广。
鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。
基于以上思路,本次设计使用ATMEL公司的AT89C51实现一基于单片机的电子密码锁的设计,其主要具有如下功能:(1) 设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。
(2) 密码可以由用户自己修改设定(只支持6位密码),锁打开后才能修改密码。
修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。
(3) 报警、锁定键盘功能。
单片机密码锁设计带原理图电路图
单片机密码锁设计(汇编语言-)带原理图电路图-2016(总14页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--单片机密码锁设计(汇编语言)带原理图电路图什么是密码锁电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
硬件设计基于AT89C51为核心的单片机控制的电子密码锁设计。
本设计能完成开锁,修改密码,密码错误报警,LCD显示密码等基本的密码锁功能。
设计的电路框如图1。
电路的功能单元设计1.单片机AT89C51组成基本框图单片机引脚介绍P0:P0口是一个漏极开路的8位双向I/O口。
在访问片外存储器时P0分时提供低8位地址线和8位双向数据线。
当不接片外存储器或不扩展I/O口时,P0可作为一个通用输入/输出口。
P0口作输入口使用时,应先向口锁存器写“1”,P0口作输出口时,需接上拉电阻。
P1:P1口是一个内部提供上拉电阻的8位双向I/O口,因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”。
P2:P2口也是一个内部提供上拉电阻的8位双向I/O口,在访问片外存储器时,输出高8位地址。
P3:P3口除了一般的准双向通用I/O口外,还有第二功能。
VCC:+5V电源VSS:接地 ALE:地址锁存器控制信号。
在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。
此外,由于ALE是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。
/PSEN:外部程序存储器读选通信号。
在读外部ROM时,/PSEN有效(低电平),以实现外部ROM单元的读操作。
/EA:访问程序存储控制信号。
当/EA信号为低电平时,对ROM的读操作限定在外部程序存储器;当/EA信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。
基于STC89C52单片机的电子密码锁毕业设计附原理图_pcb图_源程序_仿真图
基于STC89C52单片机的电子密码锁毕业论文(设计)原创性声明本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。
据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。
对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。
作者签名:日期:毕业论文(设计)授权使用说明本论文(设计)作者完全了解**学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。
有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。
学校可以公布论文(设计)的全部或部分内容。
保密的论文(设计)在解密后适用本规定。
作者签名:指导教师签名:日期:日期:注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订3)其它摘要随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事情屡见不鲜,电子密码锁具有安全性能高,成本低,功耗低,操作简单等优点使其作为防盗卫士的角色越来越重要。
毕业设计(论文)-基于单片机的电子密码锁设计
目录单片机电子密码锁的设计 (1)第1章绪论 (3)1.1引言 (3)1.2电子密码锁的背景 (3)1.3电子锁设计的意义的本设计特点 (4)第2章系统总体方案设计 (5)第3章硬件电路设计 (8)3.1键盘电路设计 (8)3.2LED显示电路 (9)3.3开锁电路 (11)3.4报警电路 (12)第4章软件设计 (12)4.1软件设计思路 (12)4.2各子程序设计 (13)第5章系统调试 (18)第6章单片机电子密码锁的应用趋势 (19)第7章设计总结与展望 (19)附录 (23)源程序清单 (23)单片机电子密码锁的设计摘要:随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统机械锁由于构造简单,被撬事件屡见不鲜;电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。
本设计以单片机AT89C51作为密码锁监控装置的检测和控制核心,分为主机控制和从机执行机构(本设重点介绍主机设计),实现钥匙信息在主机上的初步认证注册、密码信息的加密、钥匙丢失报废等功能。
根据51单片机之间的串行通信原理,这便于对密码信息的随机加密和保护。
而且采用键盘输入的电子密码锁具有较高的优势。
采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,提高信号传输的抗干扰性,减少错误动作,而且功率消耗低;反应速度快、传输效率高、工作稳定可靠等。
软件设计采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。
测试结果表明,本系统各项功能已达到本设计的所有要求。
关键词:单片机;密码锁;单片机设计,电子锁。
The design of electronic locks SCMABSTRACT:Along with the exaltation of social science and the living level of people, how carry out the family to guard against theft, this problem also change particularly outstanding.Because of the simple construct of traditional machine lock,the affairs of theft is hackneyed.the electronics lock is safer because of its confidentiality, using the vivid good, the safe coefficient is high, being subjected to the large customer close.It can carry out the key information to register in the main on board initial attestation, the password information encrypt etc. Go to correspond by letter the principle according to the string between 51 machines, this is easy to encrypt and protect to the passwords information random. Adopt the numerical signal codes,not only can carry out many controls of the road information, raise the anti- interference that signal deliver, reduce the mistake action,but also the power consume is low,Respond quickly,the efficiency deliver is high, work stable credibility etc. The software design adoption the design thought from top to bottom, to make the system toward wear distribute type,turn to the direction development of small, strengthen the system and can expand the stability and circulate.Test the result enunciation, various functions of this system are already all request of this design.KEYWORD:singlechip;cryptogram lock;singlechip design; electronics lock.第1章绪论1.1 引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的喜爱。
单片机密码锁毕业设计论文
目录第1章绪论 (3)1.1背景及意义 (3)1.2电子密码锁的设计要求 (3)1.3关键字 (4)第2章硬件电路 (4)2.1M I C-5简介 (4)2.2单片机控制方框图 (5)2.3开锁机构 (5)2 .4 按键电路设计 (7)2.5显示电路设计 (8)2. 6 AT24C01掉电存储单元的设计 (9)2.7密码锁的电源电路设计 (10)2.8设计的总体电路图 (11)第3章软件设计 (11)3.1软件设计流程图 (11)3.2程序代码 (13)心得体会 (26)参考文献 (27)单片机控制的电子密码锁设计第一章:绪论1.1背景及意义随着科技的发展,安全已成为人们关注的焦点之一,于是各种安全产品相继问世(如指纹防盗!红外防盗!GPS等)"虽然这类产品安全性高,但因其生产成本高,携带安装使用不方便,在一定程度上限制了这类产品的普及和推广" 本文介绍的是一种基于单片机智能锁的硬件和软件设计及实现方法"这种电路设计具有按键有效提示,输入错误提示,控制开锁电平,控制报警电路,修改密码等多种功能"可在意外泄密的情况下随时修改密码"4位数密码共一万组不重复组合,XX性强,灵活性高,特别适用于家庭,办公室,学生宿舍及宾馆等公开场所。
1.2电子密码锁的设计要求1.上锁过程然后依次向左移位。
若要更改密码可按“开锁”键清除原有密码,再重新输入新密码。
本设计为的密码为4位,输入的多余数字本电路不予理会,不会显示在显示器上。
当密码输入正确后按下“上锁”键,就可将门锁上,同时将密码存储在电路中并清除显示器的显示。
2.开锁过程按数字键输入密码,密码在显示器上从右到左依次显示,4位密码输入正确后按下“开锁”甲,密码锁被打开并清除电路中所存储的密码,显示器也被清零。
当输入密码有误时,可按“上锁”键清除所输入的数字,内部存的秘密不会丢失,再重新输入正确的密码按“开锁”键即可。
毕业设计-基于AT89C51单片机的电子密码锁的设计
毕业设计(论文)题目:电子密码锁的设计学院:电气与信息工程学院专业:电子信息工程姓名:学号: ********* 指导老师:**完成时间: 2013年5月28日摘要随着经济社会发展,人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出。
传统的机械锁,由于其构造简单,安全性能低,无法满足人们的需要。
随着电子产品向智能化和微型化的不断发展,数字密码锁作为防盗卫士的作用显得尤为重要。
而单片机以其实用,功能强大,价格低廉等功能,已成为电子产品研制和开发中首选的控制器。
本文从经济实用的角度出发,阐述一个基于单片机的液晶显示电子密码锁的设计与实现。
系统采用ATMEL公司的AT89C51单片机作为系统核心,液晶显示器LCD1602作为输出设备显示系统提示信息,4*4矩阵键盘作为输入设备,CMOS串行E2PROM存储器AT24C02作为数据存储器,配合蜂鸣器、继电器等电路构成整个系统硬件;系统软件采用C语言编写。
设计的系统液晶显示,密码修改方便,具有报警、锁定等功能,使用便捷简单,符合住宅、办公用锁需求,具有一定的实用价值。
关键词:单片机,密码锁,AT89C51,LCD1602,AT24C02AbstractWith the development of our society and the i mprovement of people’s living standard, how to ensure the family security is becoming more and more important in particular. Traditional mechanical lock is unable to meet the need of us because of its simple structure and low security. Nowadays, electronic products become smarter and smaller, electronic password anti-theft lock plays a more important role as the security guards. The MCU with its practical, strong function, low price and other functions , has become the preferred controller in electronic product research and development.This article is written from the economic perspective, elaborates the design and implementation of a LCD electronic password anti-theft lock which is based on MCU. This system is composed of AT89C51 which is designed as the core of this system, LCD1602 as the output device to display the message of this system, 4 * 4 matrix keyboard as the input device, a CMOS serial E2PROM AT24C02 as the data storage, and a buzzer, relay circuit.The software of the system is written in C language. The system displays in a LCD, it can change password easily, and has the function of alarming, locking, and so on. This system has some practical value, and it is simple and easy to use, meets the demand of residential and the need of office lock.Key Words: MCU, Password-Lock, AT89C51, LCD1602, AT24C02目录摘要 (I)Abstract ............................................................................................................................. I I 目录 ................................................................................................................................. I II 1引言 . (1)1.1课题的背景和意义 (1)1.2课题的研究现状 (1)1.3课题研究内容 (2)2 数字密码锁总体设计 (3)2.1 系统方案论证 (3)2.1.1 采用数字电路的设计方案 (3)2.1.2 采用以单片机为核心设计方案 (4)2.2 基于单片机的数字密码锁的设计原理 (5)3 系统硬件设计 (6)3.1 主要元器件介绍 (6)3.1.1 主控芯片AT89C51的的介绍 (6)3.1.2 继电器的介绍 (9)3.1.3 存储芯片AT24C02的介绍 (10)3.1.4 LCD1602显示器的介绍 (10)3.1.5 矩阵键盘模块的介绍 (11)3.2 系统硬件部分 (12)3.2.1 系统电源部分 (12)3.2.2 键盘输入部分 (13)3.2.3 密码存储部分 (14)3.2.4 显示部分 (14)3.2.5 报警部分 (15)3.2.6开锁部分 (16)4 系统软件设计 (17)4.1 系统程序流程图 (17)4.1.1主程序流程图 (17)4.1.2 键功能程序流程图 (18)4.1.3 修改密码程序流程图 (19)4.1.4 开锁程序流程图 (20)4.2 子程序举例 (21)4.2.1 按键扫描子程序 (21)4.2.2 显示子程序 (22)4.2.3 开锁子程序 (22)4.3 系统软件调试及结果 (24)4.3.1 Proteus软件介绍 (24)4.3.2 系统软件调试 (25)4.3.3 仿真结果 (25)5 硬件系统制作及调试 (29)5.1焊接注意事项 (29)5.2硬件调试问题及解决办法 (30)5.3硬件调试效果 (31)总结 (34)致谢 (35)参考文献 (36)附录 (37)附录A 电路原理图 (37)附录B 系统总体程序 (38)1引言1.1课题的背景和意义随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤为突出,传统的机械锁由于其构造简单,被撬的事件屡见不鲜。
(完整版)基于51单片机的电子密码锁毕业设计论文
(完整版)基于51单⽚机的电⼦密码锁毕业设计论⽂⽬录第1章绪论 (1)1.1电⼦锁的发展状况 (1)1.2设计电⼦密码锁的意义及相关技术指标 (1)第2章总体设计及⽅案论证 (2)2.1单⽚机模块 (2)2.2输⼊键盘模块 (2)2.2.1独⽴式按键 (2)2.2.2矩阵式键盘 (3)2.3数码管显⽰模块 (3)2.3.1 LED静态显⽰⽅式 (3)2.3.2 LED动态显⽰⽅式 (3)2.4电源模块 (3)2.4.1蓄电池供电 (3)2.4.2双路电源供电 (3)2.5开锁电路模块 (4)2.6报警电路模块 (4)2.7最优⽅案 (4)第3章硬件电路设计 (4)3.1输⼊键盘 (4)3.2显⽰数码管 (5)3.3开锁电路 (6)3.4报警电路 (6)3.5电源电路 (7)3.6复位电路 (7)3.7振荡电路 (8)第4章软件设计 (9)4.1主程序流程图及程序 (9)4.2延时⼦程序 (11)4.3修改密码⼦程序 (11)4.4扫描键盘输⼊⼦程序 (11)4.5中断及报警⼦程序 (12)4.6显⽰⼦程序 (13)第5章设计总结 (15)参考⽂献 (16)附录Ⅰ (17)附录Ⅱ (18)第1章绪论1.1电⼦锁的发展状况随着科技的发展,传统的机械锁被破解的概率越来越⾼了,新型的盗贼也学会了与时俱进,通过各种技术⽅法和⼿段即会在短时间内开启结构复杂的机械锁,会不留痕迹的登堂⼊室,给失主和警⽅留下各种不易解惑的疑团。
由此我们想到,要是在机械锁的基础上再装上⼀把电⼦锁,就彻底杜绝了单⼀机械锁易被开启的弊端,从⽽极⼤提⾼门锁的安全防范性能。
当今世界,电⼦锁发展已经到了⾮常⾼的境界,由于电⼦元件特别是单⽚机应⽤在最近⼏年得到空前发展,电⼦锁⽆论是在功能还是在稳定性⽅⾯都有了较⼤的提⾼,在保密性⽅⾯已经做到了密码识别、指纹识别、⼈声识别等。
就整体形势⽽⾔,电⼦锁在国外发展⽐较早,所以应⽤也⽐较⼴泛,主要⽤于家庭门锁,银⾏公司等的财务保险柜锁和政府机关及⾼级宾馆等重要场合的智能控制门锁等。
基于单片机的电子密码锁 (含源代码原理图等)
8
&'()012345
9 @ AB3
1.1 设计意义
第 1 章 概论
单片机的应用是具有高度现实意义的。单片机极高的可靠性,微型性和智能 性,单片机已成为工业控制领域中普遍采用的智能化控制工具,已经深深地渗入 到我们的日常生活当中。在这次基于单片机的电子密码锁毕业设计中,不仅使我 加深对大学所学知识的理解,而且使我对单片机有了进一步的了解。在设计的过 程中,不仅使我熟悉了 AT89C51 单片的基本结构和相关的参数,而且了解单片机 最小系统的构成。在这次设计中所学到的相关知识也许会在将来的工作和学习中 用到。
基于单片机的电子密码锁的设计毕业论文-图文
基于单片机的电子密码锁的设计毕业论文-图文毕业论文(设计)题目:基于单片机的电子密码锁的设计系部名称:专业班级:学生姓名:学号:指导教师:教师职称:20年0月日中原工学院信息商务学院毕业论文(设计)摘要随着科技的发展,安全已成为人们关注的焦点之一,于是各种安全产品相继问世(如指纹防盗!红外防盗!GPS等)\虽然这类产品安全性高,但因其生产成本高,携带安装使用不方便,在一定程度上限制了这类产品的普及和推广\本文介绍的是一种基于单片机智能锁的硬件和软件设计及实现方法\这种电路设计具有按键有效提示,输入错误提示,控制开锁电平,控制报警电路,修改密码等多种功能\可在意外泄密的情况下随时修改密码\位数密码共一万组不重复组合,保密性强,灵活性高,特别适用于家庭,办公室,学生宿舍及宾馆等公开场所。
本文采用以89c51为核心的主控芯片外接AT24C01掉电存储单元来完成控制功能,设计主要分为硬件和软件两部分,由矩阵键盘,显示电路,报警电路,单片机复位及晶振电路等构成外围硬件电路,软件部分则由控制程序来完成。
通过软硬件结合来实现设计功能。
本文通过单片机及外围芯片完成密码锁的上锁及开锁功能,采用的设计思想是由键盘输入的设置密码被存储在固定单元内,然后通过单片机对键盘进行扫描以确认密码是否正确,若密码正确则发出开锁信号,在此用二极管说明开锁信号,若密码不对则发出警报,这样设计的目的极大的提高了产品的安全性。
关键字:89c51,AT24C01掉电存储,矩阵键盘,显示电路,报警电路等。
I中原工学院信息商务学院毕业论文(设计)The design of electronic locks based on microcontrollerAbstractWith the development of technology, security has bee the focus of attention, so a variety of security products have e out (such as fingerprint security! infrared alarm! GPS, etc.) \not convenient to carry, to a certain extent, limited the popularity of such products and to promote\design and implementation method, \Suggest that the control lock level, control and alarm circuits, change passwords, and other functions \password\and high flexibility, in particular, For home, office, student hostels and hotels and other public placesIn this paper, the core of the main chip 89c51,AT24C01 external storage unit to plete the power-down control, hardware and software design can be divided into two parts, the matrix keyboard, display circuit, alarm circuit, microcontroller reset, and constitute the external crystal circuit Hardware, software part by the control program to plete. Design capabilities achieved through the bination of hardware and software.By MCU and peripheral chips to plete locking and unlocking code lock function, using the design set by the keyboard input password is stored in a fixed unit, and then scan through the SCM on the keyboard to confirm the password is correct, if the password is correct Issue the unlock signal diodes that use the lock on this signal, if the password is not alert, this is designed to greatly improve the safety of products.Keywords:Chip89C51 AT24C01power-down storage Matrix keyboard Display circuit Alarm circuit and so on.II中原工学院信息商务学院毕业论文(设计)目录1 概述 ...................................................... .. (1)1.1 课题背景和意义 (1)1.2 本设计需要解决的问题 .............................................. 1 1.3 本设计的研究方法 (2)1.4 设计方案论述 ......................................................2 2 外围硬件电路的设计 ......................................................42.1 硬件的基本组成 (4)2.2 硬件介绍 ...................................................... .... 4 2.2.1 单片机概述 ......................................................4 2.2.2 AT89c51的简介 (7)2.2.3 单片机控制方框图 (10)2.2.4 开锁机构示意图 (10)2.2.5 矩阵键盘 .......................................................12 2.2.6 24C01掉电存储单元设计 ......................................... 13 2.2.7 显示电路设计 (14)2.2.8 电源稳压模块设计 ............................................... 15 3软件设计 ...................................................... .. (16)3.1 主程序模块 .......................................................16 3.2 键盘扫描及识别子程序 ............................................. 17 3.3密码对比程序 ..................................................... 17 3.4 开锁程序 ...................................................... ... 18 4 结论 ...................................................... .......... 20 5 致谢 ...................................................... .......... 21 参考文献 ...................................................... ........... 22 附录一 ...................................................... ............. 23 附录二 ...................................................... . (24)III中原工学院信息商务学院毕业论文(设计)1 概述1.1 课题背景和意义随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机机械锁由于其构造的简单,被撬的事件屡见不鲜。
电子设计竞赛设计报告之电子密码锁,单片机(含详细原理,proteus图和c程序)
创新教育设计题目报告电子密码锁摘要:电子密码锁系统使用led灯、数码管、矩阵键盘和24C04芯片,模拟电子密码锁的功能,可以实现密码输入,密码设置,错误报警和密码掉电存储等功能。
关键字:键盘,数码管,24C04设计题目及要求:(1)用4×4矩阵键盘组成0-9数字键及确认键和删除键。
(2)可以自行设定或删除5位密码,能够掉电保存。
(3)用5位数码管组成显示电路提示信息,当输入密码时,只显示"8.",当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用绿色led发光二极管亮一秒钟做为提示,若密码不正确,禁止按键输入3秒,同时用红色led发光二极管亮三秒钟做为提示;若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止。
(4)自由发挥其他功能.(5)要求有单片机硬件系统框图,电路原理图,软件流程图。
一、系统方案:1、方案:1)显示部分:采用8位共阴数码管的动态扫描方式,可以输入和设置六位密码。
2)控制部分:键盘使用逐行扫描的方式输入密码,并在数码管上显示相应的数字,或者正确或错误的提示。
掉电存储由24C04芯片实现,遵循IIC协议。
2、总体方案:1)2)二、单元电路:1、单片机电路2、led电路:3、24C04电路:4、矩阵键盘电路:三、算法原理:1、键盘扫描:先检测P3口是否等于0xf0,检测是否有按键按下,并加入消抖功能,接着依次对P3口赋0xfe,0xfd,0xfb,0xf7,逐行扫描,并且检测是否有值变化,检测有变化的一行,返回相对应的值,实现对4×4键盘按键的检测。
2、24C04与I2C总线协议串行E2PROM 是基于I2C-BUS 的存储器件,遵循二线制协议,由于其具有接口方便,体积小,数据掉电不丢失等特点,在仪器仪表及工业自动化控制中得到大量的应用。
I2C 总线定义I2C(Inter-Integrated Circuit)总线是一种由PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。
毕业设计——密码锁电路程序
密码锁本设计以STC89C52RC单片机为核心,利用AT24C02存储密码,做到掉电存储密码的电子密码锁。
电路:程序:#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char#define N 7#define OP_READ 0xa1 // 器件地址以及读取操作#define OP_WRITE 0xa0 // 器件地址以及写入操作#define MAX_ADDR 0x7f // AT24C02最大地址sbit SCL=P2^0;sbit SDA=P2^1;sbit CSH=P3^0;sbit e=P3^4;sbit rs=P3^5;sbit sp=P3^6;sbit lock=P3^1;sfr duan=0x80;sfr key=0x90;uint ci;uchar kc,sc,sc2;int shu1,shu2,jh,jg;uchar code table[] =" LOCK "; uchar code table2[]="WELLCOME TO USE!"; uchar code table3[]="PASS WORD:";uchar code table4[]="ERRO!";uchar code table5[]="OPEN!";uchar code table6[]="NEW PASS WORD"; uchar code table7[]="SUCCESSFUL!";uchar code table8[]="FAIL!";uchar code cmm[6]={1,2,3,3,2,1};uchar mm[6];uchar tablesuan[N];void init();void writec(uint com);void writed(uint dat);void delay(uint shu);uchar keyscan();void xieshuzu(uchar a[],uchar add);void shuru();void kaiji();void bijiao();void xies(uchar a,uchar add);void delayms(unsigned char ms);void gmm();/***********************//***********************//***********************/void start()// 开始位{SDA = 1;SCL = 1;_nop_();_nop_();SDA = 0;_nop_();_nop_();_nop_();_nop_();SCL = 0;}void stop()// 停止位{SDA = 0;_nop_();_nop_();SCL = 1;_nop_();_nop_();_nop_();_nop_();SDA = 1;}unsigned char shin()// 从AT24Cxx移入数据到MCU{unsigned char i,read_data;for(i = 0; i < 8; i++){SCL = 1;read_data <<= 1;read_data |= (unsigned char)SDA;SCL = 0;}return(read_data);}bit shout(unsigned char write_data)// 从MCU移出数据到A T24Cxx{unsigned char i;bit ack_bit;for(i = 0; i < 8; i++) // 循环移入8个位{SDA = (bit)(write_data & 0x80);_nop_();SCL = 1;_nop_();_nop_();SCL = 0;write_data <<= 1;}SDA = 1; // 读取应答_nop_();_nop_();SCL = 1;_nop_();_nop_();_nop_();_nop_();ack_bit = SDA;SCL = 0;return ack_bit; // 返回A T24Cxx应答位}void write_byte(unsigned char addr, unsigned char write_data) // 在指定地址addr处写入数据write_data{start();shout(OP_WRITE);shout(addr);shout(write_data);stop();delayms(10); // 写入周期}unsigned char read_current()// 在当前地址读取{unsigned char read_data;start();shout(OP_READ);read_data = shin();stop();return read_data;}unsigned char read_random(unsigned char random_addr)// 在指定地址读取{start();shout(OP_WRITE);shout(random_addr);return(read_current());}void delayms(unsigned char ms)// 延时子程序{unsigned char i;while(ms--){for(i = 0; i < 120; i++);}}/***********************//***********************//***********************/ //主程序/void main(){ init();kaiji();delay(1000);writec(0x01);xieshuzu(table3,0x80);if(CSH==0){write_byte(2,cmm[0]); //在24c02的地址2中写入数据secdelayms(2);write_byte(3,cmm[1]); //在24c02的地址2中写入数据sec delayms(2);write_byte(4,cmm[2]); //在24c02的地址2中写入数据sec delayms(2);write_byte(5,cmm[3]); //在24c02的地址2中写入数据sec delayms(2);write_byte(6,cmm[4]); //在24c02的地址2中写入数据sec delayms(2);write_byte(7,cmm[5]); //在24c02的地址2中写入数据sec delayms(2);}mm[0]=read_random(2);delayms(2);mm[1]=read_random(3);delayms(2);mm[2]=read_random(4);delayms(2);mm[3]=read_random(5);delayms(2);mm[4]=read_random(6);delayms(2);mm[5]=read_random(7);while(1){lock=0;shuru();bijiao();}}/***********************/ //初始化/ void init(){lock=0;writec(0x01);writec(0x38);writec(0x0c);IT0=1;EX0=1;}/***********************/ //写开机画面/ void kaiji(){xieshuzu(table,0x80);xieshuzu(table2,0xc0);}/***********************/ //写数组/ void xieshuzu(uchar a[],uchar add){uchar cis;writec(add);for(cis=0;a[cis]!='\0';cis++){writed(a[cis]);delay(2);}}/***********************/ //写数字/ void xies(uchar a,uchar add){writec(add);writed(0x30+a);}/***********************/ //写指令/ void writec(uint com){e=0;rs=0;duan=com;delay(2);e=1;delay(2);e=0;}/***********************/ //写数据/void writed(uint dat){e=0;rs=1;duan=dat;delay(2);e=1;delay(2);e=0;}/***********************/ //延时/ void delay(uint shu){uint i,j;for(i=shu;i>0;i--)for(j=110;j>0;j--);}/***********************/ //现盘扫描/ uchar keyscan(){uchar k,skey;key=0xfe;skey=key;sp=1;if(skey!=0xfe){delay(10);skey=key;if(skey!=0xfe){switch(skey){case(0xee):k=7;kc++;break;case(0xde):k=8;kc++;break;case(0xbe):k=9;kc++;break;case(0x7e):k=0x0a;kc++;break;default:break;}while(skey!=0xfe)skey=key;sp=0;return k;}}key=0xfd;skey=key;if(skey!=0xfd){delay(10);skey=key;if(skey!=0xfd){switch(skey){case(0xed):k=4;kc++;break;case(0xdd):k=5;kc++;break;case(0xbd):k=6;kc++;break;case(0x7d):k=0x0b;kc++;break;default:break;}while(skey!=0xfd)skey=key;sp=0;return k;}}key=0xfb;skey=key;if(skey!=0xfb)delay(10);skey=key;if(skey!=0xfb){switch(skey){case(0xeb):k=1;kc++;break;case(0xdb):k=2;kc++;break;case(0xbb):k=3;kc++;break;case(0x7b):k=0x0c;kc++;break;default:break;}while(skey!=0xfb)skey=key;sp=0;return k;}key=0xf7;skey=key;if(skey!=0xf7){delay(10);skey=key;if(skey!=0xf7){switch(skey){case(0xe7):k=0x0d;kc++;break;case(0xd7):k=0; kc++;break;case(0xb7):k=0x0e;kc++;break;case(0x77):k=0x0f;kc++;break;default:break;}while(skey!=0xf7)skey=key;sp=0;return k;}}}/***********************/ //输入数据处理/ void shuru(){uchar k=0,xw=0x80;sc=0;kc=0;xieshuzu(table3,0x80);do{while(kc==sc)k=keyscan();if(kc==1)writec(0x01);tablesuan[sc]=k;//xies(tablesuan[sc],xw);xies(tablesuan[sc],0xc0);writec(xw);writed(0x2A);xw++;if(sc==5)goto out;}while((tablesuan[sc++]<=9)&&(sc<N));out:;if(sc>N){writec(0x01);xieshuzu(table4,0x80);}}void bijiao(){if((tablesuan[0]==mm[0])&&(tablesuan[1]==mm[1])&&(tablesuan[2]==mm[2])&&(tablesuan[3] ==mm[3])&&(tablesuan[4]==mm[4])&&(tablesuan[5]==mm[5])){EA=1;lock=1;writec(0x01);xieshuzu(table5,0x80);delay(6500);EA=0;}else{writec(0x01);xieshuzu(table3,0x80);}}void gmm(){uchar k=0,xw=0x80;sc2=0;kc=0;xieshuzu(table6,0x80);do{while(kc==sc2)k=keyscan();if(kc==1)writec(0x01);mm[sc2]=k;xies(mm[sc2],0xc0);writec(xw);writed(0x2A);xw++;if(sc2==5)goto out2;}while((mm[sc2++]<=9)&&(sc2<N));//out:;//if(sc>N)//{writec(0x01);xieshuzu(table8,0x80);goto out3;//}out2:;writec(0x01);xieshuzu(table7,0x80);write_byte(2,mm[0]); //在24c02的地址2中写入数据secdelayms(2);write_byte(3,mm[1]); //在24c02的地址2中写入数据secdelayms(2);write_byte(4,mm[2]); //在24c02的地址2中写入数据secdelayms(2);write_byte(5,mm[3]); //在24c02的地址2中写入数据secdelayms(2);write_byte(6,mm[4]); //在24c02的地址2中写入数据secdelayms(2);write_byte(7,mm[5]); //在24c02的地址2中写入数据secdelayms(2);out3:;}void INTT0() interrupt 0{EA=0;gmm();EA=1;}。
基于单片机电子密码锁毕业设计
本程序是基于单片机电子密码锁毕业设计的全部程序。
程序经过调试成功,并做出成品。
供各界好友分享,未经本人(王明珠QQ516682439)同意不能外传。
谢谢合作。
原理图如下:#include <reg52.h>#include <intrins.h>sbit RS = P2^4;//定义端口sbit RW = P2^5;sbit EN = P2^6;sbit SCK=P3^6;sbit SDA=P3^4;sbit RST = P3^5; // DS1302复位sbit speak = P2^0;bit ReadRTC_Flag=0;#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=1unsigned char g,tk,ti=1,r,hz,lz,x,z=0;unsigned char a,b=8,temp,temp1,temp2,temp3,temp4,temp5,temp6,temp7=3,temp8,temp9,temp10;unsigned char table[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x 46};unsigned char table1[6]={0x30,0x30,0x30,0x30,0x30,0x30};unsigned char table2[6]={0x31,0x31,0x31,0x31,0x31,0x31};unsigned char MM[6]={2,2,2,2,2,2};unsigned char l_tmpdate[7]={0,42,9,27,6,3,9};//秒分时日月周年08-05-15 12:00:00unsigned char l_tmpdisplay[8]; //秒分时unsigned char r_tmpdisplay[8]; // 日月周年code unsigned char write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //秒分时日月周年最低位读写位code unsigned char read_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};//显示位码表*//*延时函数*/void delay_us(unsigned int n) //延时如果需要高精度延时请嵌入汇编{if (n == 0){return ;}while (--n);}/*延时函数*/void delay_ms(unsigned int i){unsigned char a, b;for (a = 1; a < i; a++){for (b = 1;b; b++){ ; }}}/*显示屏命令写入函数*/void LCD_write_com(unsigned char com){RS_CLR;RW_CLR;EN_SET;P0 = com;delay_us(5);EN_CLR;}/*显示屏数据写入函数*/void LCD_write_Data(unsigned char Data){RS_SET;RW_CLR;EN_SET;P0 = Data;delay_us(5);EN_CLR;}/*显示屏清空显示*/void LCD_clear(void){LCD_write_com(0x01);delay_ms(5);}/*显示屏字符串写入函数*/void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s) {if (y == 1){LCD_write_com(0x80 + x);}if(y==2){LCD_write_com(0xC0 + x);}while (*s){LCD_write_Data( *s);s ++;}}/*显示屏单字符写入函数*/void LCD_write_char(unsigned char x,unsigned char y,unsigned char Data) {if (y == 1){LCD_write_com(0x80 + x);}if(y==2){LCD_write_com(0xC0 + x);}LCD_write_Data( Data);}/*显示屏初始化函数*/void LCD_init(void){LCD_write_com(0x38); /*6显示模式设置*/delay_ms(5);LCD_write_com(0x08); /*4显示关闭*/LCD_write_com(0x01); /*显示清屏*/LCD_write_com(0x06); /*显示光标移动设置*/delay_ms(5);LCD_write_com(0x0c); /*显示开及光标设置*/}/****************************************************************************/ /****************************************************************************/ void Write_Ds1302_Byte(unsigned char temp){unsigned char i;for (i=0;i<8;i++) //循环8次写入数据{SCK=0;SDA=temp&0x01; //每次传输低字节temp>>=1; //右移一位SCK=1;}}/****************************************************************************/ void Write_Ds1302( unsigned char address,unsigned char dat ){RST=0;_nop_();SCK=0;_nop_();RST=1;_nop_(); //启动Write_Ds1302_Byte(address); //发送地址Write_Ds1302_Byte(dat); //发送数据RST=0; //恢复}/****************************************************************************/ unsigned char Read_Ds1302 ( unsigned char address ){unsigned char i,temp=0x00;RST=0;_nop_();SCK=0;_nop_();RST=1;_nop_();Write_Ds1302_Byte(address);for (i=0;i<8;i++) //循环8次读取数据{if(SDA){temp|=0x80;} //每次传输低字节SCK=0;temp>>=1; //右移一位SCK=1;}RST=0;_nop_(); //以下为DS1302复位的稳定时间RST=0;SCK=0;_nop_();SCK=1;_nop_();SDA=0;_nop_();SDA=1;_nop_();return (temp); //返回}/****************************************************************************/ void Read_RTC(void) //读取日历{unsigned char *p;p=read_rtc_address; //地址传递for(r=0;r<7;r++) //分7次读取秒分时日月周年{l_tmpdate[r]=Read_Ds1302(*p);p++;delay_us(10);}}/***********************************************************************/void Set_RTC(void) //设定日历{unsigned char i,*p,tmp;for(i=0;i<7;i++) //BCD处理{tmp=l_tmpdate[i]/10; //十进制变十六进制l_tmpdate[i]=l_tmpdate[i]%10;l_tmpdate[i]=l_tmpdate[i]+tmp*16;}Write_Ds1302(0x8E,0X00);p=write_rtc_address; //传地址for(i=0;i<7;i++) //7次写入秒分时日月周年{Write_Ds1302(*p,l_tmpdate[i]);p++;delay_us(10);}Write_Ds1302(0x8E,0x80);}void time(){ //unsigned char i;Read_RTC();l_tmpdisplay[0]=l_tmpdate[2]/16; //数据的转换,因我们采用0~9的显示,将数据分开l_tmpdisplay[1]=l_tmpdate[2]&0x0f;// l_tmpdisplay[2]='a'; //加入"-"l_tmpdisplay[3]=l_tmpdate[1]/16; //l_tmpdisplay[4]=l_tmpdate[1]&0x0f;// l_tmpdisplay[5]=b;l_tmpdisplay[6]=l_tmpdate[0]/16; // 分l_tmpdisplay[7]=l_tmpdate[0]&0x0f; //秒r_tmpdisplay[0]=l_tmpdate[6]/16; // 年r_tmpdisplay[1]=l_tmpdate[6]&0x0f;// r_tmpdisplay[2]=10;r_tmpdisplay[3]=l_tmpdate[4]/16; // 月r_tmpdisplay[4]=l_tmpdate[4]&0x0f;// r_tmpdisplay[5]=10;r_tmpdisplay[6]=l_tmpdate[3]/16; // 日r_tmpdisplay[7]=l_tmpdate[3]&0x0f;temp1=r_tmpdisplay[ti];temp2=table[temp1];LCD_write_char(tk,1,temp2);LCD_write_char(1,1,0xb0);LCD_write_char(4,1,0xb0);LCD_write_char(7,1,0xb0);delay_ms(10);tk++;if(tk==7){ tk=0;}ti++;if(ti==8){ ti=1;}delay_ms(10);temp3=l_tmpdisplay[a];temp4=table[temp3];LCD_write_char(b,1,temp4);LCD_write_char(10,1,0xb0);LCD_write_char(13,1,0xb0);delay_ms(10);b++;if(b==16){ b=8;}a++;if(a==8){ a=0;}delay_ms(10);}/***********************************************************************/ /*void InitTIMER0(void){TMOD|=0x01;//定时器设置16位TH0=(65536-2500)/256;TL0=(65536-2500)%256;ET0=1;TR0=1;EA=1;} *//***********************************************************************//************************************************************/key(){P3=0X0f;if((P3&0x0f)!=0x0f){ delay_ms(10);if((P3&0x0f)!=0x0f){hz=0x7f;while(1){P3=hz;if(P3!=hz){return(~P3); }elsehz=(hz>>1)|0x80;// if(hz=0xf7)// {hz=0x7f;}}}}elsereturn 0;}/*********************************************************/ void ajcl(unsigned char jz){ if(jz==0x81) temp5=table[0];if(jz==0x82) temp5=table[1];if(jz==0x84) temp5=table[2];if(jz==0x88) temp5=table[3];if(jz==0x41) temp5=table[4];if(jz==0x42) temp5=table[5];if(jz==0x44) temp5=table[6];if(jz==0x48) temp5=table[7];if(jz==0x21) temp5=table[8];if(jz==0x22) temp5=table[9];if(jz==0x24) temp5=table[10]; // A 左if(jz==0x28) temp5=table[11]; // B 右if(jz==0x11) temp5=table[12]; // C 取消if(jz==0x12) temp5=table[13]; // D 修改时间if(jz==0x14) temp5=table[14]; // E 修改密码if(jz==0x18) temp5=table[15]; // F 确认}/*************************************************************/ /*************************************************************/ /*************************************************************/ /*************************************************************//*************************************************************/void main(void){ unsigned char d,k=0,e=0,f=0,h,l,MM1=0,MM2,an=0,tt=0,rr=0,u=0; unsigned char t=0,i=1,st=1,st1=1,m,n=0,st2=1,st3,jz=0XFF,st4=1,st5=1,st6=1;//InitTIMER0();LCD_init();Set_RTC();while(1){ time();t=0;i=1;st=1;st1=1;m=0,n=0;time();st2=1;st3=0;jz=0XFF;st4=1;st5=1;st6=1;d=0;k=0;e=0;f=0;h=0;l=0,MM1=0;time();MM2=0;an=0;tt=0;rr=0;u=0;time();g=0;tk=0;ti=1;r=0;hz=0;lz=0;x=0;z=0;time();a=0;b=8;temp=0;temp1=0;time();temp2=0;temp3=0;time();temp4=0;temp5=0;temp6=0;temp7=3;temp8=0;temp9=0;temp10=0;P1=0xff;time();jz=key();ajcl(jz);//LCD_write_com(0x0D);LCD_write_str(0,2,"Hi! Good Moring");// jz=key();if((P3&0x0f)!=0x0f){while((P3&0x0f)!=0x0f);while(st){time();LCD_write_str(0,2,"Input code ");if(an==1){LCD_write_str(0,2,"Input again");}if((P3&0x0f)!=0x0f){ while((P3&0x0f)!=0x0f);LCD_write_com(0x01);st1=1;st2=1;time();while(st1){ time();jz=key();ajcl(jz);if((P3&0x0f)!=0x0f){while((P3&0x0f)!=0x0f){ ; }LCD_write_char(d,2,0x2a) ;//改TEMP5就可以了table1[d]=temp5;delay_ms(10);// temp6=table1[d];// g=d+6;// LCD_write_char(g,2,temp6);d++;if(d==6){d=0;// P1=0xfe;st2=1;delay_ms(250);LCD_write_str(0,2,"Waiting");delay_ms(250);for(l=7;l<15;l++){ delay_ms(100);LCD_write_str(l,2,".");delay_ms(100);}while(st2){ time();delay_us(150);k=0;for(h=0;h<6;h++){ MM1=table1[h];temp6=MM[h];MM2=table[temp6];if(MM1==MM2){ k++;}}if(k>5){P1=0xfe;LCD_write_str(0,2,"Coming in Please");for(m=0;m<55;m++){speak=!speak;delay_us(220);}delay_ms(200);delay_ms(200);delay_ms(200);P1=0xff;st2=0;st1=0;st=0;st3=1;LCD_write_com(0x01);}if(k<=5){P1=0xfd;// LCD_write_str(0,2,"Input again");an=1;if(n>1){LCD_write_str(0,2,"KO!~@#$%^&*?!!");LCD_write_str(0,1,"KO!~@#$%^&*?!!");} temp7--;temp8=table[temp7];LCD_write_char(15,2,temp8);delay_ms(50);P1=0xff;for(m=0;m<245;m++){speak=!speak;delay_us(20);}delay_ms(50);P1=0xfd;for(m=0;m<245;m++){speak=!speak;delay_us(20);}P1=0xff;speak=1;st2=0;st1=0;if(temp7==0){ P1=0xff;delay_ms(15);temp7++;n++;st1=1;st2=1;if(n==20) //10秒钟{st1=0;st2=0;}}// LCD_write_com(0x01);}}}}}}}while(st3){ time();LCD_write_str(0,2,"change MM time");jz=key();ajcl(jz);if(temp5==0x46){while(temp5==0x46){temp5=0x23;}LCD_write_str(0,2," OK ");while(st6){jz=key();ajcl(jz);if(temp5==0x44) //mm{P1=0xfb;LCD_write_str(0,2,"Put your code");delay_ms(200);delay_ms(200);LCD_write_str(0,2," ");while(st5){ time();jz=key();ajcl(jz);if((P3&0x0f)!=0x0f){while((P3&0x0f)!=0x0f){; }table2[tt]=temp5;delay_ms(10);//temp6=table2[tt];LCD_write_char(tt,2,0x2a) ;//改TEMP5就可以了tt++;// delay_ms(10);if(tt==6){ LCD_write_str(0,2,"Put code again");delay_ms(250);delay_ms(250);delay_ms(250);delay_ms(250);LCD_write_str(0,2," ");//tt=0;while(st4){ delay_ms(10);// P1=0xf0;jz=key();ajcl(jz);if((P3&0x0f)!=0x0f){while((P3&0x0f)!=0x0f);// delay_ms(10);//temp6=temp5;LCD_write_char(z,2,0x2a) ;//改TEMP5就可以了temp6=table2[z];z++;if(temp6==temp5){rr++;if(rr>5){LCD_write_str(0,2,"Code ok");for(m=0;m<55;m++){speak=!speak;delay_us(220);}P1=0XFE;delay_ms(250);delay_ms(250);delay_ms(250);delay_ms(250);delay_ms(250);delay_ms(250);for(u=0;u<6;u++){ temp10=table2[u];if(temp10==0x30) temp9=0;if(temp10==0x31) temp9=1;if(temp10==0x32) temp9=2;if(temp10==0x33) temp9=3;if(temp10==0x34) temp9=4;if(temp10==0x35) temp9=5;if(temp10==0x36) temp9=6;if(temp10==0x37) temp9=7;if(temp10==0x38) temp9=8;if(temp10==0x39) temp9=9;// if(temp10=0x41) temp9=A;// if(temp10=0x42) temp9=B;//if(temp10=0x43) temp9=C;// if(temp10=0x44) temp9=D;// if(temp10=0x45) temp9=E;//if(temp10=0x46) temp9=F;MM[u]=temp9;// temp1=MM[3];// LCD_write_char(1,1,table[temp1]) ;// table[u]=table2[u];// delay_ms(20);}st4=0;st5=0;st3=0;st6=0;}}if(z==6){z=0;if(rr<=5){LCD_write_str(0,2,"Code fail");P1=0XFD;delay_ms(250);delay_ms(250);P1=0XFf;delay_ms(250);delay_ms(250);P1=0XFD;delay_ms(250);P1=0XFf;for(m=0;m<245;m++){speak=!speak;delay_us(220);}delay_ms(50);for(m=0;m<245;m++){speak=!speak;delay_us(220);}speak=1;st4=0;st5=0;st3=0;st6=0;}}}}}}// P1=0X7F;}}}/*if(temp5==0x45) //time{P1=0xf7; } */}} /////}}}。
电子密码锁设计-带源代码
电子密码锁设计-带源代码电子密码锁设计引言随着电子技术的发展,具有防盗报警、语音提示等功能的电子密码锁代替密码量少、安全性差的机械式密码锁已是必然趋势。
目前大部分密码锁采用单片机进行设计,电路较复杂,性能不够灵活。
本题目采用先进的EDA(电子设计自动化)技术,利用QuartusⅡ工作平台和VHDL(超高速集成电路硬件描述语言),设计了一种新型的电子密码锁。
该密码锁具有密码预置、修改、语音提示和输入错误则系统进入定时锁定并报警等功能。
一.设计要求1、设计一个密码锁的控制电路,当输入正确密码时,输入开锁信号以推动执行机构的作用,用红灯亮,绿灯熄灭,表示关锁;用红灯灭,绿灯亮,开锁。
2、在锁的控制电路中储存一个可以修改的6位密码,其中6位全为实际有效密码,当开锁按钮开关的输入代码等于存储器代码时,实现开锁。
否则一直关锁并持续产生报警信号。
3、从第一个按钮触动后的5秒内若未就锁打开,则电路自动处于自锁状态。
使之无法再打开。
并由扬声器发出持续20秒的报警信号。
二.设计说明与提示1.该题目的主要任务是产生一个开锁信号OPEN,而开锁信号的形成条件是,输入代码和已设密码相同。
实现这种功能的电路构思有多种,本题目运用两片8位锁存器,一片存入密码,另一片输入开锁代码,通过比较的方式,若两者相等,则形成开锁信号。
2.在开锁信号产生时,要求输出声,光信号,声音的产生由开锁信号触动扬声器工作,光信号由开锁信号点亮LED指示灯。
3.用按钮开关的第一个动作信号触发一个5秒定时器,若5秒内无开锁信号产生,让扬声器发出特殊音响,以示警告,并输出一个信号推动LED不断闪烁。
三.设计思想电子密码锁的系统结构框图由图2所示,它分成两大部分:控制器和处理器。
整个系统的输入信号有一个时钟脉冲CLK ,输出信号有表示开锁,关锁信号的红灯,绿灯以及报警信号SPEAKER。
控制器中的所有按键按下时均为高电平,即高电平有效。
RW 为“密码设定”信号, OK 为“确定”信号, RED=‘0’GREED=‘1’为开锁信号CNT 表示上一位密码正确时,控制器给出的可进行下一位二进制密码比较的信号,OPEN=‘1’为控制器给出的锁开信号, OPEN=‘0’为控制器给出的密码错误信号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本设计通过1个单片机AT89C2051芯片,三极管,开关,电池线圈等完成一个8位电子密码锁,其工作原理是通过开关控制单片机的P3.7,P3.2口输出电流信号,从而控制喇叭的响声与电池线圈的磁通量变化,通过磁力的效应,吸引开关的开通与报警。
本实验课题实现后可实现设定任意8位密码,更改密码,开锁,报警等功能,有很强的实用价值,另外由于设计简单,实验材料价钱低,可用于实际生活中。
本文以硬件内容为主,介绍了8051系列单片机,引脚用途的资料功率放大器的使用。
并通过这个课题展现出来。
将本课题中的硬件运行过程给予了详细介绍。
对密码锁的运行状态也绘制了流程图给与了很好的说明。
关键词:AT89C2051;wave软件;密码锁引言11 课题要求及目的 21.1课题要求:21.2研究目的,意义 22 51单片机简介22.1单片机发展史 22.2 51单片机 32.2.1 AT89C2051单片机芯片 52.3定时器/计数器概述93 硬件电路设计 103.1芯片的选择103.2时钟电路 113.3放大电路与中断,I/O口分配的解决12 3.4复位电路133.5开锁电路143.6电源电路153.7报警电路154软件设计164.1流程图164.2源程序及分析 17总结20参考文献21基于单片机的电子密码锁的设计引言目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
下面是单片机的主要发展趋势。
CMOS化近年,由于CHMOS技术的进小,大大地促进了单片机的CMOS化。
CMOS芯片除了低功耗特性之外,还具有功耗的可控性,使单片机可以工作在功耗精细管理状态。
这也是今后以80C51取代8051为标准MCU芯片的原因。
因为单片机芯片多数是采用CMOS(金属栅氧化物)半导体工艺生产。
CMOS电路的特点是低功耗、高密度、低速度、低价格。
采用双极型半导体工艺的TTL电路速度快,但功耗和芯片面积较大。
随着技术和工艺水平的提高,又出现了HMOS(高密度、高速度MOS)和CHMOS工艺。
CHMOS和HMOS工艺的结合。
目前生产的CHMOS电路已达到LSTTL的速度,传输延迟时间小于2ns,它的综合优势已在于TTL电路。
因而,在单片机领域CMOS正在逐渐取代TTL电路。
低功耗化单片机的功耗已从Ma级,甚至1uA以下;使用电压在3~6V之间,完全适应电池工作。
低功耗化的效应不仅是功耗低,而且带来了产品的高可靠性、高抗干扰能力以及产品的便携化。
低电压化几乎所有的单片机都有WAIT、STOP等省电运行方式。
允许使用的电压范围越来越宽,一般在3~6V范围内工作。
低电压供电的单片机电源下限已可达1~2V。
目前0.8V供电的单片机已经问世。
大容量化以往单片机内的ROM为1KB~4KB,RAM为64~128B。
但在需要复杂控制的场合,该存储容量是不够的,必须进行外接扩充。
为了适应这种领域的要求,须运用新的工艺,使片内存储器大容量化。
目前,单片机内ROM最大可达64KB,RAM最大为2KB。
1 课题要求及目的1.1课题要求:用单片机设计一个密码锁,要求设计一个8位密码的密码锁。
能完成密码设置,密码检验,错误时报警5秒提示,错误超过3次时报警1分钟作用1.2研究目的,意义通过研究设置一个8位密码锁的方法,使我们重温了基础知识并提高了对单片机的理解,加深了对单片机的用途的认识,加强自我学习能力与动手动脑能力。
2 51单片机简介2.1单片机发展史单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC 三大阶段。
1.SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。
“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。
在开创嵌入式系统独立发展道路上,Intel 公司功不可没。
2.MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。
它所涉及的领域都与对象系统相关,因此,发展MCU 的重任不可避免地落在电气、电子技术厂家。
从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。
在发展MCU方面,最著名的厂家当数Philips公司。
Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。
因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips 的历史功绩。
3.单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。
随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。
因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。
单片机的发展单片机作为微型计算机的一个重要分支,应用面很广,发展很快。
自单片机诞生至今,已发展为上百种系列的近千个机种。
单片机发展简史如果将8位单片机的推出作为起点,那么单片机的发展历史大致可分为以下几个阶段(1)第一阶段(1976-1978):单片机的控索阶段。
以Intel 公司的MCS –48为代表。
MCS –48的推出是在工控领域的控索,参与这一控索的公司还有Motorola 、Zilog等,都取得了满意的效果。
这就是SCM的诞生年代,“单机片”一词即由此而来。
(2)第二阶段(1978-1982)单片机的完善阶段。
Intel公司在MCS –48 基础上推出了完善的、典型的单片机系列MCS –51。
它在以下几个方面奠定了典型的通用总线型单片机体系结构。
①完善的外部总线。
MCS-51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有很多机通信功能的串行通信接口。
②CPU外围功能单元的集中管理模式。
③体现工控特性的位地址空间及位操作方式。
④指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。
(3)第三阶段(1982-1990):8位单片机的巩固发展及16位单片机的推出阶段,也是单片机向微控制器发展的阶段。
Intel公司推出的MCS –96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入片中,体现了单片机的微控制器特征。
随着MCS –51系列的广应用,许多电气厂商竞相使用80C51为内核,将许多测控系统中使用的电路技术、接口技术、多通道A/D转换部件、可靠性技术等应用到单片机中,增强了外围电路路功能,强化了智能控制的特征。
(4)第四阶段(1990—):微控制器的全面发展阶段。
随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。
硬件电路2.2 51单片机8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,实际使用方面已经被市场淘汰)和8751等通用产品,一直到现在,MCS-51内核系列兼容的单片机仍是应用的主流产品(比如目前流行的89S51、已经停产的89C51等),各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。
有些文献甚至也将8051泛指MCS-51系列单片机,8051是早期的最典型的代表作,由于MCS-51单片机影响极深远,许多公司都推出了兼容系列单片机,就是说MCS-51内核实际上已经成为一个8位单片机的标准。
其他的公司的51单片机产品都是和MCS-51内核兼容的产品而以。
同样的一段程序,在各个单片机厂家的硬件上运行的结果都是一样的,如ATMEL的89C51(已经停产)、89S51,PHILIPS(菲利浦),和WINBOND(华邦)等,我们常说的已经停产的89C51指的是ATMEL公司的AT89C51单片机,同时是在原基础上增强了许多特性,如时钟,更优秀的是由Flash(程序存储器的内容至少可以改写1000次)存储器取带了原来的ROM(一次性写入),AT89C51的性能相对于8051已经算是非常优越的了。
不过在市场化方面,89C51受到了PIC单片机阵营的挑战,89C51最致命的缺陷在于不支持ISP(在线更新程序)功能,必须加上ISP功能等新功能才能更好延续MCS-51的传奇。
89S51就是在这样的背景下取代89C51的,现在,89S51目前已经成为了实际应用市场上新的宠儿,作为市场占有率第一的Atmel目前公司已经停产AT89C51,将用AT89S51代替。
89S51在工艺上进行了改进,89S51采用0.35新工艺,成本降低,而且将功能提升,增加了竞争力。
89SXX可以像下兼容89CXX等51系列芯片。
同时,Atmel不再接受89CXX 的定单,大家在市场上见到的89C51实际都是Atmel前期生产的巨量库存而以。
如果市场需要,Atmel当然也可以再恢复生产AT89C51。
89S51相对于89C51增加的新功能包括:-- 新增加很多功能,性能有了较大提升,价格基本不变,甚至比89C51更低!-- ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。
是一个强大易用的功能。
-- 最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。
-- 具有双工UART串行通道。
-- 内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。
-- 双数据指示器。
-- 电源关闭标识。
-- 全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。
-- 兼容性方面:向下完全兼容51全部字系列产品。
比如8051、89C51等等早期MCS-51兼容产品。
也就是说所有教科书、网络教程上的程序(不论教科书上采用的单片机是8051还是89C51还是MCS-51等等),在89S51上一样可以照常运行,这就是所谓的向下兼容。
比较结果:就如同INTEL的P3向P4升级一样,虽然都可以跑Windows98,不过速度是不同的。
从AT89C51升级到AT89S51 ,也是同理。
和S51比起来,C51就要逊色一些,实际应用市场方面技术的进步是永远向前的。
2.2.1 AT89C2051单片机芯片AT89C2051外部引脚图:(可以直接拷入ASM程序文件中,作注释使用,十分方便【引脚电器性能】AT89C2051单片机的P口特点:P1口:P1口是一个8位双向I/O端口,其中P1.2~P1.7引脚带有内部上拉电阻,P1.0和P1.1要求外部上拉电阻。