更全的杂志信息网

基于单片机的指纹锁毕业论文

发布时间:2024-07-04 20:50:14

基于单片机的指纹锁毕业论文

程序设计内容

(1). 密码的设定,在此程序中密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。

(2). 密码的输入问题:  由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。

(3).按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的情况下发生的。

C语言源程序

#include 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)%6;  

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

              {  

               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)%6;  

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;

              }  

         }

    }

}

用STC的单片机,里面有EEPROM,把设定的密码写到里面。正常运行时 输入密码和EEPROM里面的密码比较 正确了就可以进入

数控技术发展趋势——智能化数控系统 1 国内外数控系统发展概况 随着计算机技术的高速发展,传统的制造业开始了根本性变革,各工业发达国家投入巨资,对现代制造技术进行研究开发,提出了全新的制造模式。在现代制造系统中,数控技术是关键技术,它集微电子、计算机、信息处理、自动检测、自动控制等高新技术于一体,具有高精度、高效率、柔性自动化等特点,对制造业实现柔性自动化、集成化、智能化起着举足轻重的作用。目前,数控技术正在发生根本性变革,由专用型封闭式开环控制模式向通用型开放式实时动态全闭环控制模式发展。在集成化基础上,数控系统实现了超薄型、超小型化;在智能化基础上,综合了计算机、多媒体、模糊控制、神经网络等多学科技术,数控系统实现了高速、高精、高效控制,加工过程中可以自动修正、调节与补偿各项参数,实现了在线诊断和智能化故障处理;在网络化基础上,CAD/CAM与数控系统集成为一体,机床联网,实现了中央集中控制的群控加工。 长期以来,我国的数控系统为传统的封闭式体系结构,CNC只能作为非智能的机床运动控制器。加工过程变量根据经验以固定参数形式事先设定,加工程序在实际加工前用手工方式或通过CAD/CAM及自动编程系统进行编制。CAD/CAM和CNC之间没有反馈控制环节,整个制造过程中CNC只是一个封闭式的开环执行机构。在复杂环境以及多变条件下,加工过程中的刀具组合、工件材料、主轴转速、进给速率、刀具轨迹、切削深度、步长、加工余量等加工参数,无法在现场环境下根据外部干扰和随机因素实时动态调整,更无法通过反馈控制环节随机修正CAD/CAM中的设定量,因而影响CNC的工作效率和产品加工质量。由此可见,传统CNC系统的这种固定程序控制模式和封闭式体系结构,限制了CNC向多变量智能化控制发展,已不适应日益复杂的制造过程,因此,对数控技术实行变革势在必行。 2 数控技术发展趋势 性能发展方向 (1)高速高精高效化 速度、精度和效率是机械制造技术的关键性能指标。由于采用了高速CPU芯片、RISC芯片、多CPU控制系统以及带高分辨率绝对式检测元件的交流数字伺服系统,同时采取了改善机床动态、静态特性等有效措施,机床的高速高精高效化已大大提高。 (2)柔性化 包含两方面:数控系统本身的柔性,数控系统采用模块化设计,功能覆盖面大,可裁剪性强,便于满足不同用户的需求;群控系统的柔性,同一群控系统能依据不同生产流程的要求,使物料流和信息流自动进行动态调整,从而最大限度地发挥群控系统的效能。 (3)工艺复合性和多轴化 以减少工序、辅助时间为主要目的的复合加工,正朝着多轴、多系列控制功能方向发展。数控机床的工艺复合化是指工件在一台机床上一次装夹后,通过自动换刀、旋转主轴头或转台等各种措施,完成多工序、多表面的复合加工。数控技术轴,西门子880系统控制轴数可达24轴。 (4)实时智能化 早期的实时系统通常针对相对简单的理想环境,其作用是如何调度任务,以确保任务在规定期限内完成。而人工智能则试图用计算模型实现人类的各种智能行为。科学技术发展到今天,实时系统和人工智能相互结合,人工智能正向着具有实时响应的、更现实的领域发展,而实时系统也朝着具有智能行为的、更加复杂的应用发展,由此产生了实时智能控制这一新的领域。在数控技术领域,实时智能控制的研究和应用正沿着几个主要分支发展:自适应控制、模糊控制、神经网络控制、专家控制、学习控制、前馈控制等。例如在数控系统中配备编程专家系统、故障诊断专家系统、参数自动设定和刀具自动管理及补偿等自适应调节系统,在高速加工时的综合运动控制中引入提前预测和预算功能、动态前馈功能,在压力、温度、位置、速度控制等方面采用模糊控制,使数控系统的控制性能大大提高,从而达到最佳控制的目的。

电子密码锁的设计研究开题报告

紧张而又充实的大学生活即将结束,大家都开始做毕业设计了,在做毕业设计之前要先写好开题报告,优秀的开题报告都具备一些什么特点呢?下面是我帮大家整理的电子密码锁的设计研究开题报告,欢迎大家分享。

一、 课题背景和意义

锁是一种保安措施,是人类为了保护自己私有财产而发明的一种用钥匙才能开启的装置。随着人们生活水平的提高和安全意识的加强,对锁的要求也越来越高,既要安全可靠的防盗,又要使用方便。这就使得传统的锁防盗效果已经满足不了现代社会的防盗需要,而且还存在着随身带钥匙的不便。因此近几年,随着科学技术的不断发展,一种新型的电子密码锁应运而生。电子密码锁运用电子电路控制机械部分,使两者紧密结合,从而避免了因为机械部分被破坏而导致开锁功能失常的问题,而且密码输入错误是还有报警声,大大增加了电子密码锁的防盗功能。同时因为电子密码锁不需要携带钥匙,弥补了钥匙极易丢失和伪造的缺陷,方便了锁具的使用。传统的锁由于构造简单,所以被撬的事件屡见不鲜,电子密码锁由于具有保密性高、使用灵活性好、安全系数高等优点,受到了广大用户的青睐。

二、国内外研究现状

电子密码锁的种类繁多,例如数码锁、指纹锁、磁卡锁、IC卡锁、生物锁等,但较实用的还是按键式电子密码锁。20世纪xx年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠性提高,成本较高,是适合使用在安全性要求较高的场合,而且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对它的研究一直没有明显的进展。

目前,在西方发达国家,密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于只能门禁系统中,通过多种更加安全,更加可靠的技术实现大门的管理。在我国密码锁整体水平尚处在国际xx年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。国内的不少企业也引进了世界上先进的技术,发展前景非常可观。希望通过不的努力,使电子密码锁在我国也能得到广发应用。

三、 设计论文主要内容

1、电子密码锁设计方案的分析与方案选择;

2、设计一典型结构的电子密码锁,分析其电路结构及控制程序;

3、选者合适的电器元件;

4、编写控制程序;

5、将程序输入PC机,并修改进行模拟运行;

四、 设计方案

查阅文献技术资料,分析电子密码锁结构、工作原理和技术要求。以单片机为主控芯片,结合外围电路,通过软件程序组成电子密码锁系统,能够实现:

1。 正确输入密码前提下,开锁提示;

2。 错误输入密码情况下,蜂鸣器报警;

3. 密码可以根据用户需要更改。

五、 工作进度安排

— 确定毕业设计课题,提交开题报告; 查阅相关论文,调研及收集相关资料; 方案设计、审查和确定,提交中期报告 编写控制程序 整理并撰写论文 完善论文,提交论文

六、 主要参考文献

[1] 石文轩,宋薇。基于单片机MCS—51的智能密码锁设计[M]。武汉工程职业技术学院学报,20xx,(01);

[2] 祖龙起,刘仁杰。一种新型可编程密码锁[J]。大连轻工业学院学报,20xx,(01);

[3] 叶启明,单片机制作的新型安全密码锁[J]。家庭电子,20xx,(10);

[4] 李明喜,新型电子密码锁的设计[J]。机电产品开发与创新,20xx,(03);

[5] 董继成,一种新型安全的单片机密码锁[J]。电子技术,20xx,(03);

[6] 杨茂涛,一种电子密码锁的实现[J]。福建电脑,20xx,(08);

[7] 瞿贵荣,实用电子密码锁[J]。家庭电子,20xx,(07);

[8] 王千,实用电子电路大全[M],电子工业出版社,20xx,p101;

[9] 何立民,单片机应用技术选编[M],北京:北京航空大学出版社,19xx;

[10] ATmega,ATmega8L—8AC,20xx,(01);

一、开题报告前的准备

毕业设计(论文)题目确定后,学生应尽快征求指导教师意见,讨论题意与整个毕业设计(论文)的工作计划,然后根据课题要求查阅、收集有关资料并编写研究提纲,主要由以下几个部分构成:

1.研究(或设计)的目的与意义。应说明此项研究(或设计)在生产实践上对某些技术进行改革带来的经济与社会效益。有的课题过去曾进行过,但缺乏研究,现在可以在理论上做些探讨,说明其对科学发展的意义。

2.国内外同类研究(或同类设计)的概况综述。在广泛查阅有关文献后,对该类课题研究(或设计)已取得的成就与尚存在的问题进行简要综述,只对本人所承担的课题或设计部分的已有成果与存在问题有条理地进行阐述,并提出自己对一些问题的看法。

3.课题研究(或设计)的内容。要具体写出将在哪些方面开展研究,要重点突出。研究的主要内容应是物所能及、力所能及、能按时完成的,并要考虑与其它同学的互助、合作。

4.研究(或设计)方法。科学的研究方法或切合实际的具有新意的设计方法,是获得高质量研究成果或高水平设计成就的关键。因此,在开始实践前,学生必须熟悉研究(或设计)方法,以避免蛮干造成返工,或得不到成果,甚至于写不出毕业设计(论文)。

5.实施计划。要在研究提纲中按研究(或设计)内容落实具体时间与地点,有计划地进行工作。

二、开题报告

1.开题报告可在指导教师所在教研室或学院内举行,须适当请有关专家参加,指导教师必须参加。报告最迟在毕业(生产)实习前完成。

2.本表(页面:A4)在开题报告通过论证后填写,一式三份,本人、指导教师、所在学院(要原件)各一份。

三、注意事项

1.开题报告的撰写完成,意味着毕业设计(论文)工作已经开始,学生已对整个毕业设计(论文)工作有了周密的'思考,是完成毕业设计(论文)关键的环节。在开题报告的编写中指导教师只可提示,不可包办代替。

2.无开题报告者不准申请答辩。

一、选题依据(拟开展研究项目的研究目的、意义)

随着人们生活水平和自身防范意识的提高,个人人身财产安全越来越受到重视,而锁就是主要的有效保障手段。但是机械锁发展到现在已有悠久的历史,人们对它的内部结构已经有了很透彻的研究,可以做到不使用钥匙而轻易打开锁,也由于金属材料在复杂多变的环境下会生锈,导致锁芯卡死、弹簧老化等问题。

在信息化高速发展的今天,锁也摆脱了以往的造型,向着科技化、信息化、智能化发展。自单片机面世以来,凭借着体积小、价格低、易于编程[2],逐步成为越来越多的电子产品的核心控制组件[4]。在这种趋势下,电子密码锁也就应运而生,并经过多年的快速发展,整体上有遥控式电子锁、键盘式电子锁[11]、卡式电子锁、生物特征扫描电子锁这几种类型,电子密码锁以其可以自由更换密码、操作简单、安全性高[16]、自动报警、自动锁死、功耗低、外观个性、附加功能多种多样[3]等优点深受人们的喜爱,但由于电子密码锁的价格远高于普通机械锁,因此市场上的主流还是机械锁,所以我们需要不断的研究、改进电子锁,学习借鉴前人的程序编码【18】,使其更加智能化、廉价化,让电子密码锁得到普及,使人们的自身财产安全得到更好的保障。

二、文献综述内容(在充分收集研究主题相关资料的基础上,分析国内外研究现状,提出问题,找到研究主题的切入点,附主要参考文献)

早在80年代,日本生产了最早的电子密码锁,随着经济复苏,电子行业得到快速发展,一些使用门电路设计的简单电路密码锁出现了。到了90年代,美国、意大利、德国、日本等地的微电子技术的进步和通信技术的发展为电子密码锁提供了技术上的支持。我国于90年代初开始对密码锁进行初步的探索。到目前为止,在此领域已经有了相当程度的发展,能够生产各种高智能、高安全性的密码锁。遥控式电子防盗锁分为光遥控和无线电遥控,光遥控利用窄角度的光传输密码,传输信息量大、速度极快、无法再光路径上以仪器捕获信号试图复制,保密性极高,无线电遥控传输信息量大、速度快但是信号发散广容易被仪器捕获。卡式防盗锁,利用磁卡存储个人信息而且在特定场合能够一卡多用。生物特征防盗锁利用生物自带的唯一特征能够起到极高的防盗作用。但是这种高端电子锁只适用于政府机关、大型企业等少数部门,不适用于广大的人们群众的日常生活。普通群众日常使用的还是机械锁,所以需要设计一款功能实用、价格低廉、操作简单的电子密码锁。利用单片机【1】作为控制元件的电子密码锁能够使用C语言[7]和汇编语言简单的对其进行各种人性化的编程[6],来控制单片机各引脚的高低电位[14]从而实现各元件的接通与关闭,通过整体的配合实现随意更改密码、防盗报警[9]、防暴力破解自锁、LED显示等功能,更加适应不同人群的需求。

参考文献:

[1]宁爱民应用AT89C2051单片机设计电子密码锁.淮海工学院学报.

[2]韩团军;基于单片机的电子密码锁设计[J];国外电子测量技术;2010年07期

[3]郭海英.基于单片机的电子安全密码锁的设计.现代电子技术.

[4]张洪润. 单片机应用技术教程[M].北京:清华大学出版社,1997

[5]李娜,刘雅举. Proteus在单片机仿真中的应用[J].现代电子技术,2007,(04)

[6]杨将新,李华军,刘到骏. 单片机程序设计及应用(从基础到实践)[M].北京:电子工业出版社,2006

[7]谭浩强. C++程序设计[M].北京:清华大学出版社,2004

[8]郑春来;韩团军;李鑫.编译软件Keil在单片机课程教学中的应用.高教论坛.

[9]周功明. 基于AT89C2051单片机的防盗自动报警电子密码锁系统的设计[J].绵阳师范学院学报,2007,(04)

[10]李全利. 单片机原理及接口技术[M].北京:高等教育出版社,2003

[11]瞿贵荣. 实用电子密码锁[J]. 家庭电子,2000,(07):34~73

[12]赵益丹,徐晓林,周振峰. 电子密码锁的系统原理、设计程序及流程图[J].嘉兴学院学报,2003,(15)

[13]李广弟,朱月秀,冷祖祁.单片机基础[M].(第三版) 北京:北京航空航天大学出版社,2007

[14]康华光,陈大钦,张林.电子技术基础(模拟部分)[M].(第五版) 北京:高等教育出版社,2006

[15]李伯成.基于MCS-51单片机的嵌入式系统的设计[M].北京:电子工业出版社,.

[16]郭海英.基于单片机的电子安全密码锁的设计[J].现代电子技术,2005,(13)

[17]蒋辉平 周国雄.基于PROTEUS的单片机系统设计与仿真实例[M].北京:机械工业出版社,.

三、研究方案(主要研究内容、目标,研究方法)

研究内容:

基于整个控制系统的研究设计情况,本设计主要进行如下方面的研究:用智能,集成且功能强大的单片机芯片[15]为控制中心,设计出一套按键式电子密码锁。

本设计主要做了如下几方面的工作:

1.确定密码锁系统的整体设计,包括密码的存储与更改、密码数字的显示、密码是否正确的LED灯提示,暴力破解的密码的蜂鸣器警报。

2.进行各模块的电路设计与连接、大体分配各个器件及模块的基本功能[13]要求。在P0口处接上拉电阻来保证LED屏幕的正常工作以给用户显示正确有效的提示信息,接入两个发光二极管(红、绿各一个)来提示用户的密码是否正确,接入一个蜂鸣器来提示用户密码错误以及在被暴力破解时的报警功能,接入一个4x4矩阵键盘来让用户输入密码,与LED屏幕、发光二极管、蜂鸣器一起起到人机交互的作用。

3.进行软件系统的设计,使用KEI采用C语言对系统进行编程,研究系统的判断逻辑,采用延时函数来有效实现键盘的防抖动功能,采用循环语句来实现键盘的实时监听,采用外接存储器保存密码,采用判断语句判断输入的密码是否正确以及输入错误密码的次数判断是否调用蜂鸣器和键盘响应,将各功能模块整合到一起形成一套高效、简练的系统。

研究目标:

设计一个基于单片机的电子密码锁电路,完成密码的存储与更改、密码数字的显示、密码是否正确的LED灯提示,暴力破解的密码的蜂鸣器警报的功能,完成proteus仿真。

研究方法:

通过文献资料、理论学习,使用KEIL和PROTEUS进行密码锁系统的模拟仿真,验证是否能够实现预期功能。

四、进程计划(各研究环节的时间安排、实施进度、完成程度)

20xx年12月—20xx年3月

进行大量论文相关材料阅读,撰写开题报告,开题。三月中旬完成开题报告;

20xx年3月—20xx年4月

20xx年四月中旬完成论文初稿,交给导师修改,对不足的地方进行改进,学院进行论文中期检查;

20xx年4月—20xx年5月

对论文不足之处再修改,五月中旬并完成论文,形成定稿;

20xx年5月—20xx年6月

对论文进行评阅,合格的论文进行资格检查,组织毕业论文答辩。

基于51单片机密码锁毕业论文

电子密码锁的设计研究开题报告

紧张而又充实的大学生活即将结束,大家都开始做毕业设计了,在做毕业设计之前要先写好开题报告,优秀的开题报告都具备一些什么特点呢?下面是我帮大家整理的电子密码锁的设计研究开题报告,欢迎大家分享。

一、 课题背景和意义

锁是一种保安措施,是人类为了保护自己私有财产而发明的一种用钥匙才能开启的装置。随着人们生活水平的提高和安全意识的加强,对锁的要求也越来越高,既要安全可靠的防盗,又要使用方便。这就使得传统的锁防盗效果已经满足不了现代社会的防盗需要,而且还存在着随身带钥匙的不便。因此近几年,随着科学技术的不断发展,一种新型的电子密码锁应运而生。电子密码锁运用电子电路控制机械部分,使两者紧密结合,从而避免了因为机械部分被破坏而导致开锁功能失常的问题,而且密码输入错误是还有报警声,大大增加了电子密码锁的防盗功能。同时因为电子密码锁不需要携带钥匙,弥补了钥匙极易丢失和伪造的缺陷,方便了锁具的使用。传统的锁由于构造简单,所以被撬的事件屡见不鲜,电子密码锁由于具有保密性高、使用灵活性好、安全系数高等优点,受到了广大用户的青睐。

二、国内外研究现状

电子密码锁的种类繁多,例如数码锁、指纹锁、磁卡锁、IC卡锁、生物锁等,但较实用的还是按键式电子密码锁。20世纪xx年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠性提高,成本较高,是适合使用在安全性要求较高的场合,而且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对它的研究一直没有明显的进展。

目前,在西方发达国家,密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于只能门禁系统中,通过多种更加安全,更加可靠的技术实现大门的管理。在我国密码锁整体水平尚处在国际xx年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。国内的不少企业也引进了世界上先进的技术,发展前景非常可观。希望通过不的努力,使电子密码锁在我国也能得到广发应用。

三、 设计论文主要内容

1、电子密码锁设计方案的分析与方案选择;

2、设计一典型结构的电子密码锁,分析其电路结构及控制程序;

3、选者合适的电器元件;

4、编写控制程序;

5、将程序输入PC机,并修改进行模拟运行;

四、 设计方案

查阅文献技术资料,分析电子密码锁结构、工作原理和技术要求。以单片机为主控芯片,结合外围电路,通过软件程序组成电子密码锁系统,能够实现:

1。 正确输入密码前提下,开锁提示;

2。 错误输入密码情况下,蜂鸣器报警;

3. 密码可以根据用户需要更改。

五、 工作进度安排

— 确定毕业设计课题,提交开题报告; 查阅相关论文,调研及收集相关资料; 方案设计、审查和确定,提交中期报告 编写控制程序 整理并撰写论文 完善论文,提交论文

六、 主要参考文献

[1] 石文轩,宋薇。基于单片机MCS—51的智能密码锁设计[M]。武汉工程职业技术学院学报,20xx,(01);

[2] 祖龙起,刘仁杰。一种新型可编程密码锁[J]。大连轻工业学院学报,20xx,(01);

[3] 叶启明,单片机制作的新型安全密码锁[J]。家庭电子,20xx,(10);

[4] 李明喜,新型电子密码锁的设计[J]。机电产品开发与创新,20xx,(03);

[5] 董继成,一种新型安全的单片机密码锁[J]。电子技术,20xx,(03);

[6] 杨茂涛,一种电子密码锁的实现[J]。福建电脑,20xx,(08);

[7] 瞿贵荣,实用电子密码锁[J]。家庭电子,20xx,(07);

[8] 王千,实用电子电路大全[M],电子工业出版社,20xx,p101;

[9] 何立民,单片机应用技术选编[M],北京:北京航空大学出版社,19xx;

[10] ATmega,ATmega8L—8AC,20xx,(01);

一、开题报告前的准备

毕业设计(论文)题目确定后,学生应尽快征求指导教师意见,讨论题意与整个毕业设计(论文)的工作计划,然后根据课题要求查阅、收集有关资料并编写研究提纲,主要由以下几个部分构成:

1.研究(或设计)的目的与意义。应说明此项研究(或设计)在生产实践上对某些技术进行改革带来的经济与社会效益。有的课题过去曾进行过,但缺乏研究,现在可以在理论上做些探讨,说明其对科学发展的意义。

2.国内外同类研究(或同类设计)的概况综述。在广泛查阅有关文献后,对该类课题研究(或设计)已取得的成就与尚存在的问题进行简要综述,只对本人所承担的课题或设计部分的已有成果与存在问题有条理地进行阐述,并提出自己对一些问题的看法。

3.课题研究(或设计)的内容。要具体写出将在哪些方面开展研究,要重点突出。研究的主要内容应是物所能及、力所能及、能按时完成的,并要考虑与其它同学的互助、合作。

4.研究(或设计)方法。科学的研究方法或切合实际的具有新意的设计方法,是获得高质量研究成果或高水平设计成就的关键。因此,在开始实践前,学生必须熟悉研究(或设计)方法,以避免蛮干造成返工,或得不到成果,甚至于写不出毕业设计(论文)。

5.实施计划。要在研究提纲中按研究(或设计)内容落实具体时间与地点,有计划地进行工作。

二、开题报告

1.开题报告可在指导教师所在教研室或学院内举行,须适当请有关专家参加,指导教师必须参加。报告最迟在毕业(生产)实习前完成。

2.本表(页面:A4)在开题报告通过论证后填写,一式三份,本人、指导教师、所在学院(要原件)各一份。

三、注意事项

1.开题报告的撰写完成,意味着毕业设计(论文)工作已经开始,学生已对整个毕业设计(论文)工作有了周密的'思考,是完成毕业设计(论文)关键的环节。在开题报告的编写中指导教师只可提示,不可包办代替。

2.无开题报告者不准申请答辩。

一、选题依据(拟开展研究项目的研究目的、意义)

随着人们生活水平和自身防范意识的提高,个人人身财产安全越来越受到重视,而锁就是主要的有效保障手段。但是机械锁发展到现在已有悠久的历史,人们对它的内部结构已经有了很透彻的研究,可以做到不使用钥匙而轻易打开锁,也由于金属材料在复杂多变的环境下会生锈,导致锁芯卡死、弹簧老化等问题。

在信息化高速发展的今天,锁也摆脱了以往的造型,向着科技化、信息化、智能化发展。自单片机面世以来,凭借着体积小、价格低、易于编程[2],逐步成为越来越多的电子产品的核心控制组件[4]。在这种趋势下,电子密码锁也就应运而生,并经过多年的快速发展,整体上有遥控式电子锁、键盘式电子锁[11]、卡式电子锁、生物特征扫描电子锁这几种类型,电子密码锁以其可以自由更换密码、操作简单、安全性高[16]、自动报警、自动锁死、功耗低、外观个性、附加功能多种多样[3]等优点深受人们的喜爱,但由于电子密码锁的价格远高于普通机械锁,因此市场上的主流还是机械锁,所以我们需要不断的研究、改进电子锁,学习借鉴前人的程序编码【18】,使其更加智能化、廉价化,让电子密码锁得到普及,使人们的自身财产安全得到更好的保障。

二、文献综述内容(在充分收集研究主题相关资料的基础上,分析国内外研究现状,提出问题,找到研究主题的切入点,附主要参考文献)

早在80年代,日本生产了最早的电子密码锁,随着经济复苏,电子行业得到快速发展,一些使用门电路设计的简单电路密码锁出现了。到了90年代,美国、意大利、德国、日本等地的微电子技术的进步和通信技术的发展为电子密码锁提供了技术上的支持。我国于90年代初开始对密码锁进行初步的探索。到目前为止,在此领域已经有了相当程度的发展,能够生产各种高智能、高安全性的密码锁。遥控式电子防盗锁分为光遥控和无线电遥控,光遥控利用窄角度的光传输密码,传输信息量大、速度极快、无法再光路径上以仪器捕获信号试图复制,保密性极高,无线电遥控传输信息量大、速度快但是信号发散广容易被仪器捕获。卡式防盗锁,利用磁卡存储个人信息而且在特定场合能够一卡多用。生物特征防盗锁利用生物自带的唯一特征能够起到极高的防盗作用。但是这种高端电子锁只适用于政府机关、大型企业等少数部门,不适用于广大的人们群众的日常生活。普通群众日常使用的还是机械锁,所以需要设计一款功能实用、价格低廉、操作简单的电子密码锁。利用单片机【1】作为控制元件的电子密码锁能够使用C语言[7]和汇编语言简单的对其进行各种人性化的编程[6],来控制单片机各引脚的高低电位[14]从而实现各元件的接通与关闭,通过整体的配合实现随意更改密码、防盗报警[9]、防暴力破解自锁、LED显示等功能,更加适应不同人群的需求。

参考文献:

[1]宁爱民应用AT89C2051单片机设计电子密码锁.淮海工学院学报.

[2]韩团军;基于单片机的电子密码锁设计[J];国外电子测量技术;2010年07期

[3]郭海英.基于单片机的电子安全密码锁的设计.现代电子技术.

[4]张洪润. 单片机应用技术教程[M].北京:清华大学出版社,1997

[5]李娜,刘雅举. Proteus在单片机仿真中的应用[J].现代电子技术,2007,(04)

[6]杨将新,李华军,刘到骏. 单片机程序设计及应用(从基础到实践)[M].北京:电子工业出版社,2006

[7]谭浩强. C++程序设计[M].北京:清华大学出版社,2004

[8]郑春来;韩团军;李鑫.编译软件Keil在单片机课程教学中的应用.高教论坛.

[9]周功明. 基于AT89C2051单片机的防盗自动报警电子密码锁系统的设计[J].绵阳师范学院学报,2007,(04)

[10]李全利. 单片机原理及接口技术[M].北京:高等教育出版社,2003

[11]瞿贵荣. 实用电子密码锁[J]. 家庭电子,2000,(07):34~73

[12]赵益丹,徐晓林,周振峰. 电子密码锁的系统原理、设计程序及流程图[J].嘉兴学院学报,2003,(15)

[13]李广弟,朱月秀,冷祖祁.单片机基础[M].(第三版) 北京:北京航空航天大学出版社,2007

[14]康华光,陈大钦,张林.电子技术基础(模拟部分)[M].(第五版) 北京:高等教育出版社,2006

[15]李伯成.基于MCS-51单片机的嵌入式系统的设计[M].北京:电子工业出版社,.

[16]郭海英.基于单片机的电子安全密码锁的设计[J].现代电子技术,2005,(13)

[17]蒋辉平 周国雄.基于PROTEUS的单片机系统设计与仿真实例[M].北京:机械工业出版社,.

三、研究方案(主要研究内容、目标,研究方法)

研究内容:

基于整个控制系统的研究设计情况,本设计主要进行如下方面的研究:用智能,集成且功能强大的单片机芯片[15]为控制中心,设计出一套按键式电子密码锁。

本设计主要做了如下几方面的工作:

1.确定密码锁系统的整体设计,包括密码的存储与更改、密码数字的显示、密码是否正确的LED灯提示,暴力破解的密码的蜂鸣器警报。

2.进行各模块的电路设计与连接、大体分配各个器件及模块的基本功能[13]要求。在P0口处接上拉电阻来保证LED屏幕的正常工作以给用户显示正确有效的提示信息,接入两个发光二极管(红、绿各一个)来提示用户的密码是否正确,接入一个蜂鸣器来提示用户密码错误以及在被暴力破解时的报警功能,接入一个4x4矩阵键盘来让用户输入密码,与LED屏幕、发光二极管、蜂鸣器一起起到人机交互的作用。

3.进行软件系统的设计,使用KEI采用C语言对系统进行编程,研究系统的判断逻辑,采用延时函数来有效实现键盘的防抖动功能,采用循环语句来实现键盘的实时监听,采用外接存储器保存密码,采用判断语句判断输入的密码是否正确以及输入错误密码的次数判断是否调用蜂鸣器和键盘响应,将各功能模块整合到一起形成一套高效、简练的系统。

研究目标:

设计一个基于单片机的电子密码锁电路,完成密码的存储与更改、密码数字的显示、密码是否正确的LED灯提示,暴力破解的密码的蜂鸣器警报的功能,完成proteus仿真。

研究方法:

通过文献资料、理论学习,使用KEIL和PROTEUS进行密码锁系统的模拟仿真,验证是否能够实现预期功能。

四、进程计划(各研究环节的时间安排、实施进度、完成程度)

20xx年12月—20xx年3月

进行大量论文相关材料阅读,撰写开题报告,开题。三月中旬完成开题报告;

20xx年3月—20xx年4月

20xx年四月中旬完成论文初稿,交给导师修改,对不足的地方进行改进,学院进行论文中期检查;

20xx年4月—20xx年5月

对论文不足之处再修改,五月中旬并完成论文,形成定稿;

20xx年5月—20xx年6月

对论文进行评阅,合格的论文进行资格检查,组织毕业论文答辩。

用STC52编的,下面是C程序,调试已经成功,自己看程序吧……#include<>#include <>#define uchar unsigned char#define uint unsigned int#define LCD_data P0sbit SDA=P3^5;sbit SCL=P3^4;//24C08控制口设置sbit LCD_RS = P3^3; //寄存器选择输入sbit LCD_RW = P3^6; //液晶读/写控制sbit LCD_EN = P3^7; //液晶使能控制sbit LCD_PSB = P3^2; //串/并方式控制sbit FM=P2^4;//蜂鸣器控制口sbit RS=P2^5;sbit T_CLK = P2^0; //实时时钟时钟线引脚 //sbit T_IO = P2^1; //实时时钟数据线引脚 //sbit T_RST = P2^2; //实时时钟复位线引脚 //sbit ds=P2^3;sbit EN=P2^6;sbit ZZ=P2^7;sbit FZ=P3^1;sbit ACC0=ACC^0;sbit ACC7=ACC^7;uint temp1,s_temp; //定义整形变量float f_temp; //定义浮点型变量uchar time[]=" : : ";uchar day[]=" 20 / / ( ) ";uchar temp0[]=" 温度: . 度 ";uchar num,num1,flag,count,a,b;uchar unlock_i;//解密标志位uchar t[4];uchar t1[4];void delay_ms(uint z)//长延时{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void delay() //短延时,大约5us{; ;}void reshi(){if(RS==1){ unlock_i=1;}else{unlock_i=0;}}uchar code mima[]={'0','1','2','3','4','5','6','7','8','9','0','*'};void lcd_xieping0(uchar x,uchar y,uchar date);void lcd_xieping(uchar x,uchar y,uchar *str);//********************************************************// 开机显示//********************************************************void kjxs(){uint i,j;lcd_xieping(0,0,"****************");lcd_xieping(1,0," 欢迎进入 ");lcd_xieping(2,0," 密码锁系统! ");lcd_xieping(3,0,"****************");delay_ms(4000);lcd_xieping(0,0," 系统初始化中 ");lcd_xieping(1,0," 请稍后… ");lcd_xieping(2,0,"————————");lcd_xieping(3,0," ");for(j=3;j>0;j--){for(i=0;i<8;i++){lcd_xieping(3,i,"*");delay_ms(250);}lcd_xieping(3,0," ");}}//********************************************************// 12864显示//********************************************************void write_cmd(uchar cmd){LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;P0 = cmd;delay_ms(5);LCD_EN = 1;delay_ms(5);LCD_EN = 0;}void write_dat(uchar dat){LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;P0 = dat;delay_ms(5);LCD_EN = 1;delay_ms(5);LCD_EN = 0;}void lcd_xieping0(uchar x,uchar y,uchar date){switch(x){case 0: write_cmd(0x80+y); break;case 1: write_cmd(0x90+y); break;case 2: write_cmd(0x88+y); break;case 3: write_cmd(0x98+y); break;}write_dat(date);}void lcd_xieping(uchar x,uchar y,uchar *str){switch(x){case 0: write_cmd(0x80+y); break;case 1: write_cmd(0x90+y); break;case 2: write_cmd(0x88+y); break;case 3: write_cmd(0x98+y); break;}while (*str){write_dat(*str);str++;}}void lcd_init(){LCD_PSB = 1; //并口方式write_cmd(0x30); //基本指令操作delay_ms(5);write_cmd(0x0C); //显示开,关光标delay_ms(5);write_cmd(0x01); //清除LCD的显示内容delay_ms(5);}//**************************************************************// 键盘扫描函数//**************************************************************uchar keyscan1() //矩阵键盘扫描函数{uchar temp;while(!num){P1=0xfe; //赋值temp=P1; //读回数据temp=temp&0xf0; //与运算if(temp!=0xf0) //判断{delay_ms(2); //延时消抖temp=P1; //读回数据temp=temp&0xf0;if(temp!=0xf0){switch(temp) //多分支选择{case 0x70:num=1;break; //跳出case 0xb0:num=2;break;case 0xd0:num=3;break;case 0xe0:num=4;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}//等待按键释放}}P1=0xfd; //赋值temp=P1; //读回数据temp=temp&0xf0; //与运算if(temp!=0xf0) //判断{delay_ms(2); //延时消抖temp=P1; //读回数据temp=temp&0xf0;if(temp!=0xf0){switch(temp) //多分支选择{case 0x70:num=5;break; //跳出case 0xb0:num=6;break;case 0xd0:num=7;break;case 0xe0:num=8;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}//等待按键释放}}P1=0xfb; //赋值temp=P1; //读回数据temp=temp&0xf0; //与运算if(temp!=0xf0) //判断{delay_ms(2); //延时消抖temp=P1; //读回数据temp=temp&0xf0;if(temp!=0xf0){switch(temp) //多分支选择{case 0x70:num=9;break; //跳出case 0xb0:num=10;break;case 0xd0:num=11;break;case 0xe0:num=12;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}//等待按键释放}}}return(num); //返回值}uchar keyscan2(){uchar temp;while(!num1){P1=0xf7; //赋值temp=P1; //读回数据temp=temp&0xf0; //与运算if(temp!=0xf0) //判断{delay_ms(2); //延时消抖temp=P1; //读回数据temp=temp&0xf0;if(temp!=0xf0){switch(temp) //多分支选择{case 0x70:num1=1;break; //跳出case 0xb0:num1=2;break;case 0xd0:num1=3;break;case 0xe0:num1=4;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}//等待按键释放}}}return(num1);}//**************************************************************// 直流电机//**************************************************************void dianjiZZ(){EN=1;ZZ=1;FZ=0;}void dianjiFZ(){EN=1;ZZ=0;FZ=1;}void dianji_stop(){EN=0;}//**************************************************************// EPPROM//**************************************************************void start() //启动信号{SDA=1;delay();SCL=1;delay();SDA=0;delay();}void stop() //停止信号{SDA=0;delay();SCL=1;delay();SDA=1;delay();}void respons() //响应信号{uchar i;SCL=1;delay();while((SDA==1)&&(i<250))i++;SCL=0;delay();}void writebyte(uchar date) //写一个字节{uchar i,temp;temp=date;for(i=0;i<8;i++){temp=temp<<1;SCL=0;delay();SDA=CY;delay();SCL=1;delay();}SCL=0;delay();SDA=1; //释放总线delay();}uchar readbyte() //读一个字节{uchar i,k;SCL=0;delay();SDA=1;for(i=0;i<8;i++){SCL=1;delay();k=(k<<1)|SDA;SCL=0;delay();}delay();return(k);}void write(uchar add,uchar date) //在一个地址写一个字节{start();writebyte(0xa0);respons();writebyte(add);respons();writebyte(date);respons();stop();}uchar read(uchar add) //在一个地址读一个字节{start();writebyte(0xa0);respons();writebyte(add);respons();start();writebyte(0xa1);respons();b=readbyte();respons();stop();return(b);}//**************************************************************// 时间日期函数//**************************************************************void v_WTInputByte(uchar ucDa){uchar i;ACC= ucDa;for(i=8; i>0; i--){T_IO = ACC0; //*相当于汇编中的 RRCT_CLK = 1;T_CLK = 0;ACC =ACC>> 1;}}uchar uc_RTOutputByte(void){uchar i;for(i=8; i>0; i--){ACC = ACC>>1; //*相当于汇编中的 RRCACC7 = T_IO;T_CLK = 1;T_CLK = 0;}return(ACC);}void v_W1302(uchar ucAddr, uchar ucDa){T_RST = 0;T_CLK = 0;T_RST = 1;v_WTInputByte(ucAddr); /* 地址,命令 */v_WTInputByte(ucDa); /* 写1Byte数据*/T_CLK = 1;T_RST =0;}uchar uc_R1302(uchar ucAddr){uchar ucDa;T_RST = 0;T_CLK = 0;T_RST = 1;v_WTInputByte(ucAddr); // 地址,命令 //ucDa = uc_RTOutputByte(); // 读1Byte数据 //T_CLK = 1;T_RST =0;return(ucDa);}void Init1302(void){v_W1302(0x8e,0x00); //控制写入WP=0v_W1302(0x80,0x80);v_W1302(0x90,0xa9);v_W1302(0x80,0x00); //秒v_W1302(0x82,0x24); //分v_W1302(0x84,0x12); //时v_W1302(0x86,0x29); //日v_W1302(0x88,0x10); //月v_W1302(0x8a,0x05); //星期v_W1302(0x8c,0x10); //年 //v_W1302(0x8e,0x80);}void donetime(void){uchar d;d=uc_R1302(0x87);day[10]=(d&0x0f)+48;day[9]=((d>>4)&0x03)+48;d=uc_R1302(0x89);day[7]=(d&0x0f)+48;day[6]=((d>>4)&0x01)+48;d=uc_R1302(0x8b);day[13]=(d&0x07)+48;d=uc_R1302(0x8d);day[4]=(d&0x0f)+48;day[3]=(d>>4)+48;d=uc_R1302(0x81);time[15]=(d&0x0f)+48;time[14]=(d>>4)+48;d=uc_R1302(0x83);time[12]=(d&0x0f)+48;time[11]=(d>>4)+48;d=uc_R1302(0x85);time[9]=(d&0x0f)+48;time[8]=(d>>4)+48;}//**************************************************************// 温度检测函数//**************************************************************void dsreset(void) //18B20复位,初始化函数{uint i;ds=0;i=103;while(i>0)i--;ds=1;i=4;while(i>0)i--;}bit tempreadbit(void) //读1位函数{uint i;bit dat;ds=0;i++; //i++ 起延时作用ds=1;i++;i++;dat=ds; //读数据i=8;while(i>0)i--;return (dat);}uchar tempread(void) //读1个字节{uchar i,j,dat;dat=0;for(i=1;i<=8;i++){j=tempreadbit();dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好一个字节在DAT里}return(dat);}void tempwritebyte(uchar dat) //向18B20写一个字节数据{uint i;uchar j;bit testb;for(j=1;j<=8;j++){testb=dat&0x01; //判断最后一位是1还是0dat=dat>>1;if(testb) //写 1{ds=0;i++;i++;ds=1;i=8;while(i>0)i--;}else{ds=0; //写 0i=8;while(i>0)i--;ds=1;i++;i++;}}}void tempchange(void) //DS18B20 开始获取温度并转换{dsreset(); //初始化,每次对18B20的操作都首先要初始化delay_ms(1);tempwritebyte(0xcc); // 写跳过读ROM指令tempwritebyte(0x44); // 写温度转换指令}void get_temp() //读取寄存器中存储的温度数据{uchar a,b;dsreset(); //初始化delay_ms(1);tempwritebyte(0xcc); // 写跳过读ROM指令tempwritebyte(0xbe); //写读指令a=tempread(); //读低8位b=tempread(); //读高8位temp1=b;temp1<<=8; //两个字节组合为1个字temp1=temp1|a;f_temp=temp1*; //温度在寄存器中为12位 分辨率位°}//**************************************************************// 解密函数//**************************************************************void unlock(){uchar in,i;if(num==0){lcd_xieping(0,0,"**密码锁系统** ");lcd_xieping(1,0,"—————————");lcd_xieping(2,0," 请输入密码: ");lcd_xieping(3,0," ");for(i=0;i<4;i++){t1[i]=keyscan1();lcd_xieping(3,i,"*");num=0;}//输密码}in=keyscan1();if(in==12)//in-确定键标志位{in=0;num=0;if((t1[0]==t[0])&&(t1[1]==t[1])&&(t1[2]==t[2])&&(t1[3]==t[3])){flag=1;//解密成功与否标志位//unlock_i=1;a=0;//功能键标志lcd_xieping(0,0,"**密码锁系统** ");lcd_xieping(1,0,"——————————");lcd_xieping(2,0," 密码正确! ");lcd_xieping(3,0," 您的身份已确认");delay_ms(1500);lcd_xieping(1,0,"————————");lcd_xieping(2,0,"功能 I 开锁 ");lcd_xieping(3,0," II修改密码");}else{flag=0;count++;if(count==3){count=0;num=1;lcd_xieping(1,0,"——————————");lcd_xieping(2,0,"您的机会已用完 ");lcd_xieping(3,0,"对不起**无法进入");FM=0;delay_ms(1000);FM=1;}}}}//**************************************************************// 修改密码函数//**************************************************************void xiugaimima(){ uchar i,j,l,im,ib;uchar t2[4];uchar t3[4];num=0;lcd_xieping(1,0,"————————");lcd_xieping(2,0,"请输入新密码: ");lcd_xieping(3,0," ");for(i=0;i<4;i++){t2[i]=keyscan1();lcd_xieping0(3,i,mima[num]);num=0;}im=keyscan1();if(im==12)//im,in,ib,同为确定键标志位{im=0;num=0;lcd_xieping(1,0,"————————");lcd_xieping(2,0,"请再次输入新密码");lcd_xieping(3,0," ");for(i=0;i<4;i++){t3[i]=keyscan1();lcd_xieping0(3,i,mima[num]);num=0;}}ib=keyscan1();if(ib==12){ib=0;num=0;if(t2[0]==t3[0]&&t2[1]==t3[1]&&t2[2]==t3[2]&&t2[3]==t3[3]){t[0]=t3[0];t[1]=t3[1];t[2]=t3[2];t[3]=t3[3];lcd_xieping(1,0,"————————");lcd_xieping(2,0," 祝贺您! ");lcd_xieping(3,0," 密码修改成功 ");flag=0;for(j=0;j<4;j++){l=j+1;write(l,t[j]);delay_ms(10);}//24C08写数据delay_ms(1000);}else{lcd_xieping(2,0,"两次输入密码不同");lcd_xieping(3,0," 密码修改失败 ");flag=1;delay_ms(500);}}}//**************************************************************// 显示函数//**************************************************************void xianshi(){donetime();tempchange();get_temp();s_temp=f_temp*100;temp0[7]=(s_temp/1000)+48;temp0[8]=(s_temp%1000/100)+48;temp0[10]=(s_temp%100/10)+48;temp0[11]=(s_temp%10)+48;lcd_xieping(0,0,"**密码锁系统** ");lcd_xieping(1,0,temp0);lcd_xieping(2,0,day);lcd_xieping(3,0,time);num=0;}//**************************************************************// 开锁函数//**************************************************************void kaisuo(){uchar i;lcd_xieping(2,0," 开锁中…… ");lcd_xieping(3,0,"——耐心等待——");for(i=3;i>0;i--){FM=0;delay_ms(100);FM=1;delay_ms(100);flag=0;}dianjiZZ();delay_ms(10000);dianji_stop();lcd_xieping(2,0,"—开锁过程结束—");lcd_xieping(3,0," 请开门 ");delay_ms(5000);dianjiFZ();delay_ms(10000);dianji_stop();flag=0;}//**************************************************************// 主函数//**************************************************************void main(){uchar m;unlock_i=1;lcd_init(); //液晶初始化//Init1302();kjxs(); //开机显示for(m=0;m<4;m++){t[m]=read(m+1);delay_ms(10);}//24C08读数据while(1){reshi();if(!unlock_i){unlock();//解密函数}else{xianshi();//时间、日期、温度显示函数}if(flag==1){num1=0;a=keyscan2();if(a==1){kaisuo();//开锁函数}if(a==2){xiugaimima();//修改密码函数}}}}

基于51单片机的密码锁的话其实我是不知道是什么意思的 所以说不好意思咯(๑ó﹏ò๑)

用STC的单片机,里面有EEPROM,把设定的密码写到里面。正常运行时 输入密码和EEPROM里面的密码比较 正确了就可以进入

毕业论文基于单片机

很简单的问题,最好使用18B20来做;使用一个字节保存温度上限,一个字节保存下限。每次测量之后,将测温结果与这两数字做比较就行了。具体的控制量自己根据要求决定。

1、高压软开关充电电源硬件设计2、自动售货机控制系统的设计3、PLC控制电磁阀耐久试验系统设计4、永磁同步电动机矢量控制系统的仿真研究5、PLC在热交换控制系统设计中的应用6、颗粒包装机的PLC控制设计7、输油泵站机泵控制系统设计8、基于单片机的万年历硬件设计9、550KVGIS中隔离开关操作产生的过电压计算10、时滞网络化控制系统鲁棒控制器设计11、多路压力变送器采集系统设计12、直流电机双闭环系统硬件设计13、漏磁无损检测磁路优化设计14、光伏逆变电源设计15、胶布烘干温度控制系统的设计16、基于MATLAB的数字滤波器设计与仿真17、电镀生产线中PLC的应用18、万年历的程序设计19、变压器设计20、步进电机运动控制系统的硬件设计21、比例电磁阀驱动性能比较22、220kv变电站设计23、600A测量级电流互感器设计24、自动售货机控制中PLC的应用25、足球机器人比赛决策子系统与运动轨迹的研究26、厂区35kV变电所设计27、基于给定指标的电机设计28、电梯控制中PLC的应用29、常用变压器的结构及性能设计30、六自由度机械臂控制系统软件开发31输油泵站热媒炉PLC控制系统设计32步进电机驱动控制系统软件设计33足球机器人的视觉系统与色标分析的研究34自来水厂PLC工控系统控制站设计35永磁直流电动机磁场分析36永磁同步电动机磁场分析37应用EWB的电子表电路设计与仿真38电路与电子技术基础》之模拟电子篇CAI课件的设计39逻辑无环流直流可逆调速系统的仿真研究40机器人足球比赛图像采集与目标识别的研究41自来水厂plc工控系统操作站设计42PLC结合变频器在风机节能上的应用43交流电动机调速系统接口电路的设计44直流电动机可逆调速系统设计45西门子S7-300PLC在二氧化碳变压吸附中的应用46DMC控制器设计47电力电子电路的仿真48图像处理技术在足球机器人系统中的应用49管道缺陷长度对漏磁场分布影响的研究50生化过程优化控制方案设计51交流电动机磁场定向控制系统设计52开关电磁阀流量控制系统的硬件设计53比例电磁阀的驱动电源设计54交流电动机SVPWM控制系统设计55PLC在恒压供水控制中的应用56西门子S7-200系列PLC在搅拌器控制中的应用57基于侧抑制增强图像处理方法的研究58西门子s7-300系列plc在工业加热炉控制中的应用59西门子s7-200系列plc在电梯控制中的应用60PLC在恒压供水控制中的应用61磁悬浮系统的常规控制方法研究62建筑公司施工进度管理系统设计63网络销售数据库系统设计64生产过程设备信息管理系统的设计与实现

“温度控制系统”应该是一个可以恒温的系统,或者根据一定的情况(时间等)实时的进行调整,那么这肯定就需要一个温度检测器件(一般温度要求不高的话可以考虑用18B20芯片或者精度高点的AD590),然后是温度增减的执行部分(比如空调的制冷和制热控制,最简单的是电风扇的风速控制),这是一个闭环控制,如果需要控制的量比较少,而且想省钱的话就用普通的51系列单片机就OK了,祝你成功!

学参数测量技术涉及范围广,特别是微电压、微电流、高电压以及待测信号强弱相差极大的情况下,既要保证弱信号的测量精度又要兼顾强信号的测量范围,在技术上有一定的难度。传统的低成本仪表在测量电压、电阻时都采用手动选择档位的方法来转换量程。在使用中,当忘记转换档位时,会造成仪表测量精度下降或损坏。 现代电子测量对系统的精度要求越来越高且智能化程度也越来越高。全量程无档自动量程转换电压表和电阻表是在保证测量精度不下降的前提条件下省去手动转换量程的工作,得到了广泛应用。 本文介绍了一种基于AT89S52单片机的智能多用表。该表能在单片机的控制下完成直流电压、电阻和直流电流的测量。测量电流部分采用了简单的I/V转换电路完成测试;测量电压部分结合模拟开关CD4051和运算放大器OP07构成程控放大器,实现了自动量程转换;测量电阻部分也由模拟开关CD4051和运算放大器OP07相结合,在单片机控制下完成了自动量程转换。电流、电压和电阻的最终测量信号都在单片机的控制下由12位A/D转换器TLC2543进行采集,采集的信号经单片机数据处理后通过LCD(12864)显示出来,测量结果还可以由带有串行EEPROM的CPU存储器和监控器的X25045进行多个数据保存。 关键词:TLC2543 自动量程转换 程控增益放大器 电压 电阻 电流 目录 摘要1 Abstract 2 第一章 绪论 5 1. 1 概述 5 1. 2 智能仪器/仪表国内外发展概况 5 1. 3 课题研究目的及意义 6 第二章 系统结构及功能介绍 8 2. 1 系统功能和性能指标 8 2. 1. 1 仪表功能 8 2. 1. 2 性能指标 8 2. 1. 3 本机特色 8 2. 1. 4 系统使用说明 9 2. 2 系统工作原理概述 9 第三章 方案设计与论证 11 3. 1 量程选择的设计与论证 11

毕业论文基于51单片机

温度控制系统的设计(555定时器) [单片机] 04-20摘要 在日常的生产与生活中,温度是一个非常重要的过程变量,因为它直接影响燃烧、化学反应、发酵、烘烤、煅烧、蒸馏、浓度、挤压成形、结晶以及空气流动等物理和化学过程。所以人们需要用到良好的温度检测及控制装置系统来解决这些问题。本文介绍了采用A/D ...http:// 化工液的温度控制与检测(程序+电路图+Protel原理图+PCB图)精品☆ [电子] 01-01摘 要 为了提高对传感器的认识和了解,尤其是对温度传感器的深入研究以及其用法与用途,基于实用、广泛和典型的原则而设计了本系统。本文利用单片机结合传感器技术而开发设计了这一温度监控系统。文中传感器理论单片机实际应用有机结合,详细地讲述了利用AD5 ...http:// 温度控制器的设计(AT89S51单片机)(程序+电路图+原理图+PCB图)☆ [单片机] 11-17摘 要 随着科技的不断进步,在工业生产中温度是常用的被控参数,而采用单片机对这些被控参数进行控制已成为当今的主流。本文介绍了以AT89C51单片机为核心的数字温度测量及自动控制系统的设计,该温度控制器可以实时显示和设定温度,实现对温度的自动控制。其 ...http:// MCS-51单片机智能温度控制系统设计 [单片机] 07-16温度控制在热处理工艺过程中,是一个非常重要的环节。控制精度直接影响着产品质量的好坏。本文研究的电炉是一种具有纯滞后的大惯性系统,传统的加热炉控制系统大多建立在一定的模型基础上,难以保证加热工艺要求。 ...http:// 基于AT89C2051单片机的温度控制系统的设计(程序+电路图)☆ [单片机] 07-16摘 要 :温度控制在工业生产中运用的非常广泛,其控制过程中存在着很大的时滞性和很强的干扰。采用一般的控制方法如PID控制,都不能很好地满足要求。而基于AT89C2051单片机的温度控制策略可以很容易的解决这些问题。 以AT89C2051单片机为基础,结合温度传感 ...http:// 基于单片机饮水机温度控制的设计(实物图+原理图+PCB图+程序)☆ [单片机] 07-16摘 要 温度是表征物体冷却程度的物理量,也是一种最基本的环境参数。在农工业生产及日常生活中,对温度的测量及控制始终占据着极其重要的地位。目前,典型的温度测控系统由模拟式温度传感器、A/D 转换电路和单片机组成。由于模拟式温度传感器输出的模拟信号必 ...http:// 基于AT89S51单片机核心的温度控制系统的设计 [单片机] 07-16摘要 本文介绍了以AT89S51单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。文中介绍了该控制系统的硬件部分,包括:温度检测电路、温度控制电路、PC机与单片机串口通讯电路和一些接口电路 ...http:// 基于单片机的温度控制系统的设计 [单片机] 07-16摘 要 本文列举了单片机在锅炉中的一个实际应用,并对设计的温度控制系统的组成及主要电路的作用进行了详细的介绍。 文章介绍了用单片机控制的、基于数字温度传感器DS1820的温度测量和控制系统:重点阐述了DS1820的工作原理、指令系统、单片机与DS1820之间的 ...http:// 基于单片机的模糊PID温度控制系统设计 [单片机] 07-16摘 要 温度控制在热处理工艺过程中,是一个非常重要的环节。控制精度直接影响着产品质量的好坏。本文研究的电炉是一种具有纯滞后的大惯性系统,传统的加热炉控制系统大多建立在一定的模型基础上,难以保证加热工艺要求。因此本文将模糊控制算法引入传统的加热 ...http:// 嵌入式系统在多点温度控制中的应用 [嵌入式] 07-16第一章 概述 引言 嵌入式系统被定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。实际上嵌入式系统是计算机的一种应用形式,是将先进的计算机技术、半导体技术和电子技 ...http://

程序设计内容

(1). 密码的设定,在此程序中密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。

(2). 密码的输入问题:  由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。

(3).按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的情况下发生的。

C语言源程序

#include 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)%6;  

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

              {  

               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)%6;  

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;

              }  

         }

    }

}

可以去我百度空间看看

这个 我可以写 按照老师的要求来写 包通过 包修改↓↓↓↓↓下面找我

基于单片机的毕业论文英文

Single-chip microcontroller that micro-computer (Single-Chip Microcomputer) gathering CPU, RAM, ROM, the timing, number and variety of interface integrated microcontrollers. Widely used in various fields. In this paper, the music alarm clock designed by AT89S53 SCM control. The music alarm clock from SCM system is the smallest system and the expansion of LED display circuit and voice circuit. Using single-chip C programming language, can be set to achieve a number of alarm clocks, alarm clocks on time to play music, and showing the date and other functions. This paper introduces the music alarm clock software and hardware design, and design, debugging process of the problems encountered and solutions. The topics designed music alarm system is simple, cost, low-cost, multifunctional, with a very strong sense of practicality. Keywords : music, simple arrangements, clock timing 题目:SCM Application Development-music electronic clock design 希望对您有所帮助,祝您成功!

我的毕业论文就是用google翻的,理科导师根本看不懂,看得懂也不会去看的,只要关键词翻译对就可以了。

In recent years, with the rapid development of science and technology, the application of SCM is unceasingly thorough. In real-time detection and automatic control of microcomputer application system, its often as a core component to use. But only the microcontroller knowledge is not enough, should be based on the hardware structure, perfect soft combination. Most current universities have established the microcontroller laboratory, basically equipped with experiment box and other hardware simulation equipment. But experiment box hardware circuit fixed, experiment content more difficult change, is hard to adapt to the rapid development of single chip microcomputer and cultivate students' SCM development ability, innovation ability. Using the Proteus software simulation technology, can to a certain extent make up for the shortage, build a virtual experimental platform, can achieve more practice, provide students to learn to disciplinary construction of conditions, has a positive meaning. In view of this, this article based on the single-chip microcomputer simulation environment, Proteus MICOCHIP company by the PIC microcontroller as the main control chip series with data storage units, combined with peripheral infrared sensor, LCD display, temperature sensing, dc motors, heating DianLuSi, alarm equipment, written in C control program main control chip design combines a automatic temperature monitoring and artificially infrared temperature adjustment is an organic whole, have alarm function of temperature control system. This design fully exert Proteus characteristics, reduce the cost and enhance practicability, benefit in university promotion.

Since the introduction of computer-chip technology in society, in every field in a wide range of light control systems, the microcontroller is replaced by the gear regulating the delay time of old growth rate in future in the heart of this to the MCU has several benefits: small size, light weight, a single power supply; features, low power consumption and low; and the data transfer, one finds in SCM internal, run fast, uding, high reliability, so single-chip is widely used in measurement and control system, data acquisition, instrumental, Mechatronics product, smart interface, computer communications, as well as single-chip multilevel system, article is primarily deals with a subject name is single-chip-chip, flowing water and light control, which enables we learned how to use the SCM control our lives in the application of the design of this subject at a later time, introduced me to many aspects of the topic describes in detail by the MCS-89C51 manifold programming the control circuit, it completed the single-chip flowing water and light control features, and gives specific hardware circuits and the appropriate kind of control circuit reliability, flexibility, use the wide-ranging especially suitable for medium-sized cities of traffic lights, neon lights, , it on other similar system has certain significance.

相关百科

服务严谨可靠 7×14小时在线支持 支持宝特邀商家 不满意退款

本站非杂志社官网,上千家国家级期刊、省级期刊、北大核心、南大核心、专业的职称论文发表网站。
职称论文发表、杂志论文发表、期刊征稿、期刊投稿,论文发表指导正规机构。是您首选最可靠,最快速的期刊论文发表网站。
免责声明:本网站部分资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有
如有不愿意被转载的情况,请通知我们删除已转载的信息 粤ICP备2023046998号-2