推荐-多功能密码锁单片机课程综合实训报告1 精品

合集下载

单片机实训报告范文精选5篇精选

单片机实训报告范文精选5篇精选

单片机实训报告范文精选5篇实训报告是展示本身实训收获成长的重要报告,那么实训报告该如何写呢?小编精选了一些关于实训报告的优秀范例,一起来看看吧。

单片机课程设计心得体会在学校学习期间我有幸的参加了学校的单片机学习小组,在小组里我理解了什么是单片机,单片机有哪些用途,利用单片机可以实现哪些功能来方便人们的生活如交通灯,时钟,还有中,电子玩具等等,它们里面都有单片机的存在来实现某种功能。

通过在单片机小组里的学习我简单总结了几点心得和体会:第一:万事开头难,要英勇的迈出第一步,不要总找借口说没有学习过就总推脱。

凡事都有第一步可以先可简单的来,然后可以逐步的向深层次学习。

可以从建工程开始,然后可以找一个简单的小程序先把它敲进单片机内然他运转起来,感受一下单片机的运转,让本人理解单片机整个运转。

第二:关于知识点,学过的要掌握结实,关于没有学的和临时用不到的先不用学习。

比方:小灯得点亮就没有用到中断可以先不用看。

如此可以防止知识过多记不住的苦恼。

关于程序这里的知识点不能只停留在理论层次上,一定要结合着程序进展学习如此才能掌握的特别牢靠,当用到哪里的知识点不记得了可以去看书,关于用不到的可以不去看。

第三:程序不要只是看别人得,一定要本人写过才是本人的。

开始不明白可以参考别人的,看看每一句代表着什么意思,可以实现什么现象。

明白之后本人再重新写一遍,你会觉观察别人的能明白到本人写的时候特别困难。

当你本人能写出来的时候说明你真明白了。

第四:一定要学会程序调试的方法。

有时候把程序写完了然后运转时不能实现理想的现象。

这时有人就晕了不知该如何办,然后就去征询别人。

当别人找出征询题出在哪里时就会恍然大悟。

事实受骗遇到征询题一定要本人尝试着处理,不能遇到征询题就去征询别人。

本人一定要掌握处理征询的方法和思路。

第五:在学习初期看别人的代码,学习别人的思路这个特别有用。

通过看别人的代码特别是有多年编程经历的人的程序,可以迅速提高本人的编程水平。

单片机实训报告优选范文5篇分享

单片机实训报告优选范文5篇分享

单片机实训报告优选范文5篇分享单片)是一种集成电路芯片,是具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。

下面就是小编给大家带来的单片机实训报告优选范文5篇分享,希望大家喜欢!单片机实训报告范文(一)前言一周的单片机实训很快就结束咯,在这一周的时间里,我学到了很多关于单片机各方面的知识。

老师在实训课中也教会咯我们很多关于单片机软件编程与硬件设施的知识。

一周的实训中我们一共实训咯好几个项目,通过这几个项目的实训,我们掌握咯一些单片机的汇编语言和硬件调试,达到了很好的效果。

一周时间实训过后,我把之前在课堂上不懂的知识点,通过实际操作的练习,我都搞明白咯。

当然在实训过程中也遇到咯很多问题,就是有时在调试方面不能调试成功,有时程序是没有错误,但是就是调试不好,一直找原因也找不出是什么原因。

希望以后能够拥有更多的实训时间和机会学习单片机。

实训任务一一、实验目的熟悉Keil C51集成开发环境的使用方法二、实验设备及器件IBM PC机三、实验内容按照本书的第2章的2.1节到2.4节内容进行Keil C51集成开发环境的安装和使用练习。

然后按照以下内容建立文件并编译产生HEX文件。

ORG 8000HLJMP MainORG 80F0HMain:MOV R7,#0LOOP:MOV R6,#0DJNZ R6,$DJNZ R6,$DJNZ R6,$DJNZ R6,$DJNZ R7,LOOP ;延时一台CPL P1.0CPL P1.1CPL P1.2CPL P1.3CPL P1.4CPL P1.5CPL P1.6CPL P1.7SJMP MainEND ;P1.0取反 ;P1.1取反 ;P1.2取反 ;P1.3取反 ;P1.4取反 ;P1.5取反 ;P1.6取反 ;P1.7取反通过该程序实现八盏灯的同时亮和同时灭的功能,更好的掌握汇编指令。

电子密码锁专业实习报告

电子密码锁专业实习报告

实习报告:基于单片机的电子密码锁设计与实现一、实习背景及意义随着科技的不断发展,电子密码锁作为一种新型的安全防盗设备,已经在日常生活中得到了广泛的应用。

与传统的机械锁相比,电子密码锁具有安全性高、成本低、功耗低、易操作等优点,因此,设计并实现一款基于单片机的电子密码锁具有重要的实际意义。

二、实习目标本次实习的目标是设计和实现一款基于单片机的电子密码锁,该密码锁具有以下功能:1. 可以通过4x4矩阵键盘输入密码;2. 能够判断输入的密码是否正确,正确则开锁,错误则显示错误信息;3. 支持密码的修改;4. 在操作错误达到一定次数后能够报警。

三、实习过程1. 材料与器件选择:根据设计需求,选择合适的单片机(如51系列单片机)作为控制器,4x4矩阵键盘作为输入设备,LCD显示屏作为输出设备,以及必要的报警机构和开锁机构。

2. 仿真图设计:在PROTEUS软件中,根据所选器件,设计电路仿真图,包括单片机、矩阵键盘、LCD显示屏、报警机构和开锁机构等。

3. 程序编写:根据设计需求,使用KEIL软件编写单片机程序,实现密码输入、密码判断、密码修改、报警等功能。

4. 联合仿真与调试:将编写好的程序与PROTEUS仿真图进行联合仿真,调试程序,确保各项功能正常运行。

5. 实际制作与测试:根据仿真结果,制作实体电子密码锁,并进行实际测试,验证设计的正确性和实用性。

四、实习成果与体会通过本次实习,成功设计和实现了一款基于单片机的电子密码锁,该密码锁具有密码输入、密码判断、密码修改、报警等功能,实际测试表明,设计的电子密码锁性能稳定,满足设计需求。

通过本次实习,不仅掌握了单片机原理、电子密码锁的设计方法,还提高了实际动手能力和团队协作能力。

同时,也认识到了电子密码锁在实际应用中可能存在的问题,如功耗、抗干扰等,为今后的进一步研究提供了方向。

总之,本次实习是一次富有挑战性和收获性的实践过程,通过对电子密码锁的设计与实现,深入了解了单片机原理和电子密码锁的工作原理,提高了实际动手能力和团队协作能力,为今后的学习和工作中积累了宝贵的经验。

单片机密码锁实习报告

单片机密码锁实习报告

单片机密码锁实习报告一、前言随着科技的不断发展,单片机技术在各个领域得到了广泛的应用。

本次实习,我选择了单片机密码锁的设计与实现作为课题,旨在掌握单片机的原理与应用,提高自己的动手实践能力。

二、实习目的1. 学习单片机的原理与编程方法,了解单片机在实际应用中的优势。

2. 掌握密码锁的设计原理,学会使用单片机实现密码锁功能。

3. 培养自己的团队协作能力和解决问题的能力。

三、实习内容1. 单片机密码锁的原理与功能介绍2. 单片机密码锁的硬件设计3. 单片机密码锁的软件编程4. 单片机密码锁的系统调试与优化四、实习过程1. 单片机密码锁的原理与功能介绍单片机密码锁是一种利用单片机作为控制核心,通过密码输入来控制电路或芯片工作的安全设备。

它具有安全性高、成本低、功耗低、易操作等优点,广泛应用于各种场合。

本次设计的单片机密码锁采用4x4矩阵键盘输入密码,当密码输入正确时,锁打开,否则锁定按键3秒钟并发出报警。

2. 单片机密码锁的硬件设计硬件设计是实现单片机密码锁功能的基础。

本次设计中,硬件部分主要包括4x4矩阵键盘、LED显示、蜂鸣器报警、电磁锁等。

其中,4x4矩阵键盘用于输入密码,LED显示用于显示输入的密码,蜂鸣器报警用于发出报警声音,电磁锁用于实现锁的开关。

3. 单片机密码锁的软件编程软件编程是实现单片机密码锁功能的关键。

本次设计中,软件部分主要实现以下功能:(1)键盘扫描:检测按键是否按下,并获取按键值。

(2)密码输入:将键盘输入的按键值转换为密码,并在LED显示上显示。

(3)密码判断:判断输入的密码是否正确,正确则开锁,错误则锁定按键3秒钟并发出报警。

(4)密码修改:提供一种方式修改密码,以提高安全性。

4. 单片机密码锁的系统调试与优化在完成硬件设计和软件编程后,进行系统调试与优化。

通过反复测试,发现并解决可能存在的问题,提高系统的稳定性和可靠性。

五、实习收获通过本次实习,我学到了很多关于单片机密码锁的知识,收获如下:1. 掌握了单片机的原理与编程方法,了解了单片机在实际应用中的优势。

单片机指纹锁实训报告

单片机指纹锁实训报告

一、实训目的1. 掌握单片机指纹锁的基本原理和设计方法。

2. 学会使用单片机进行指纹识别和数据处理。

3. 熟悉指纹锁的硬件电路设计。

4. 提高动手能力和团队合作能力。

二、实训内容1. 指纹锁基本原理指纹锁是一种生物识别技术,通过采集用户的指纹信息进行身份验证,实现门禁控制。

指纹锁主要由指纹采集模块、指纹识别模块、单片机控制模块和驱动模块组成。

2. 硬件电路设计(1)指纹采集模块:采用指纹采集芯片,将指纹图像转换为数字信号。

(2)指纹识别模块:采用指纹识别芯片,对采集到的指纹图像进行处理,识别指纹特征。

(3)单片机控制模块:采用STC89C52单片机,负责控制指纹采集、指纹识别和驱动模块。

(4)驱动模块:包括LED指示灯、蜂鸣器、继电器等,用于显示指纹识别结果和驱动门锁。

3. 软件设计(1)指纹采集:编写程序,实现指纹图像的采集和预处理。

(2)指纹识别:编写程序,实现指纹特征的提取和比对。

(3)单片机控制:编写程序,实现指纹采集、指纹识别和驱动模块的控制。

(4)用户界面:编写程序,实现用户输入密码、指纹识别和门锁控制。

三、实训过程1. 硬件搭建(1)根据设计图纸,搭建指纹锁的硬件电路。

(2)连接单片机、指纹采集模块、指纹识别模块、驱动模块等。

(3)调试硬件电路,确保各模块正常工作。

2. 软件编写(1)编写指纹采集程序,实现指纹图像的采集和预处理。

(2)编写指纹识别程序,实现指纹特征的提取和比对。

(3)编写单片机控制程序,实现指纹采集、指纹识别和驱动模块的控制。

(4)编写用户界面程序,实现用户输入密码、指纹识别和门锁控制。

3. 调试与优化(1)调试指纹采集、指纹识别和单片机控制程序,确保程序正常运行。

(2)优化程序,提高指纹识别速度和准确性。

(3)调整硬件电路,确保指纹锁的稳定性和可靠性。

四、实训成果1. 成功搭建指纹锁硬件电路,实现指纹采集、指纹识别和门锁控制。

2. 编写指纹锁程序,实现指纹识别、用户输入密码和门锁控制。

多功能密码锁单片机课程综合实训报告1 精品

多功能密码锁单片机课程综合实训报告1 精品

单片机课程综合实训报告项目名称:多功能密码锁一. 内容要求:1.预期功能(1)在没输入密码时显示万年历,并可调.(2)、通过按键来确定输入密码,实现密码锁功能,正确输入密码后有开锁提示;2.设计方案(1)采用1602液晶LM016L, AT98C51,行列式键盘。

(2)采用1602液晶LM016L。

(3)选用单片机作为系统的核心部件,实现控制与处理的功能。

单片机具有资源丰富、速度快、编程容易等优点。

利用单片机内部的随机存储器(RAM)和只读存储器(ROM)及其引脚资源,外接液晶显示(LCD),键盘输入等实现数据的处理传输和显示功能,基本上能实现设计指标1,3.硬件部分:3.1电路图:主要由单片机、矩阵键盘、独立按键、液晶显示器等部分组成。

其中矩阵键盘用于输入数字密码,独立按键用于实现可调万年历。

由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警。

各模块功能如下:(1)键盘输入模块:分为密码输入按键与几个功能按键,用于完成密码锁输入功能(2)显示模块:用于完成对系统状态显示及操作提示功能。

(3) 复位电路:完成系统的复位。

(4) 独立键盘:用于完成可调万年历功能.(5)开锁电路:应用继电器及发光二极管模拟开锁,完成开锁及开锁提示。

键盘电路:用P1口组成4*4的矩阵键盘,各键的定义一次为:0、1、2、3、4、5、6、7、8、9、*、#、enetr、del(当密码按错时可以按下该键删除)、unclock(解锁键即三次密码都错了只能按下它进行解锁)调整时间的电路:Tiao是位功能选择,通过选择位来决定万年历的调整,+1、-1是调节功能键。

3.2电路原理说明:开始仿真时,一开始现实年月份时间。

本设计主要由单片机、矩阵键盘、独立按键、液晶显示器等部分组成。

开锁电路控制着继电器发光二级管的开锁。

单片机课程项目实训

单片机课程项目实训

单片机课程工程4实训报告工程名称:密码锁系别:信息技术系班级:通信3112组别:第22组姓名:张龙斌 37号郑友冻45号指导教师:林志谋报告日期:2013年5月6日1.预期功能4A3 思考:依次按四次按键后,这四个按键的键号在四位LED数码管上按顺序同时显示出来。

密码正确时发出“滴”声并开锁,密码不正确则发出“嘀-嘀-嘀”2.设计方案依次按四次按键后,这四个按键的键号在四位LED数码管上按顺序同时显示出来。

密码正确时发出“滴”声并开锁,不正确密码则发出“嘀-嘀-嘀”3.硬件部分由C52芯片LED显示灯、行列式键盘、蜂鸣器构成4.软件部分利用编程软件跟与单片机控制机台连接的软件实现控制4.1.程序流程图4A34.2.程序设计说明4A3#include <reg52.h>#define uchar unsigned charuchar table[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, //0,1,2,3,4,5,60xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF}。

//7,8,9,A,B,C,D,E,F,-sbit bee = P1^0。

//蜂鸣器驱动线uchar temp。

uchar count=0。

//用于统计按键的次数uchar key,hang,lie。

uchar shu=0。

//key用于保存按键号hang用于保存按键行号;lie用于保存按键列号;uchar keynum[4]={0xBF,0xBF,0xBF,0xBF}。

//用于保存键号对应的段码uchar mima[]={0,1,2,3}。

uchar baocun[4]={0xBF,0xBF,0xBF,0xBF}。

void beep()。

//函数用于驱动音频电路发音void delay(unsigned int x)。

void keyscan()。

单片机实习报告-密码锁

单片机实习报告-密码锁
RST:复位输入。当振荡工作时,RST引脚出现两个机器周期上高电平将使单片机复位。WDT益出将使该引脚输出高电平,设置SFR AUXR的DISRTO位(地址8EH)可打开或关闭该功能。DISRTO位缺省为RESET输出高电平打开状态。
ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出的正脉冲信号,因此它可对外输出时钟或用于定时目地,要注意的是:第当访问外部数据存储器时将跳过一个ALE脉冲。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位禁位后,只有一条MOVX和MOVC指令ALE才会被激活。此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ALE无效。
存储器结构:MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64KB外部程序和数据的寻址空间。
程序存储器:如果EA引脚接地(GND),全部程序均执行外部存储器。在AT89C54,假如接至Vcc(电源+),程序首先执行从地址0000H-0FFFH(4KB)内部程序存储器,再执行地址为1000H-FFFFH(60KB)的外部程序存储器。
2.
AT89C54具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89C54设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

密码锁单片机实习报告

密码锁单片机实习报告

一、前言随着科技的不断发展,单片机技术在各个领域得到了广泛的应用。

密码锁作为一种安全可靠的开锁方式,也逐渐成为了人们生活中不可或缺的一部分。

本报告主要介绍了我在单片机实习期间,基于51单片机设计的电子密码锁的过程和实践。

二、实习目的和意义本次实习的目的是学习和掌握单片机原理及应用,提高自己的动手能力和创新能力。

通过设计电子密码锁,了解并掌握单片机在实际应用中的电路设计、编程和调试技巧。

此外,电子密码锁在生活中的应用广泛,具有较高的实用价值,可以为人们提供便捷、安全的生活环境。

三、实习内容1. 电路设计本次实习的电子密码锁主要由51单片机、4x4矩阵键盘、LCD1602液晶显示屏、AT24C02存储模块、报警系统和继电器等组成。

电路设计过程中,首先对各个模块进行选型,然后绘制原理图,最后搭建实物电路。

2. 编程设计根据电路设计,编写相应的程序代码,实现密码的输入、存储、比较和报警等功能。

程序设计过程中,采用C语言进行编程,通过Keil软件进行编译和调试。

3. 系统调试将编写好的程序烧录到单片机中,对整个系统进行调试。

调试过程中,检查各个模块是否正常工作,并对可能出现的问题进行排查和优化。

四、实习过程1. 电路设计首先,根据实习要求,选用AT89C52型51单片机作为核心控制器。

然后,设计4x4矩阵键盘,用于密码的输入。

接着,选用LCD1602液晶显示屏,显示密码输入界面和开锁状态。

为了实现密码的存储,选用了AT24C02存储模块。

最后,设计报警系统和继电器,实现密码错误报警和开锁功能。

2. 编程设计根据电路设计,编写相应的程序代码。

首先,实现矩阵键盘扫描函数,用于检测按键输入。

然后,编写密码存储和读取函数,将输入的密码存储到AT24C02模块中,并在下次开机时读取。

接下来,实现密码比较函数,判断输入的密码是否正确。

最后,编写报警和开锁函数,当密码错误时发出报警,正确时驱动继电器开锁。

3. 系统调试将编写好的程序烧录到单片机中,对整个系统进行调试。

单片机实训报告

单片机实训报告

单片机实训报告单片机实训报告「篇一」为了锻炼学生的动手能力及激发学生的创新能力,我们班于第十五周在单片机实验室行了单片机实训。

在实训过程中首先我们要明确实训目的:1、熟悉单片机应用系统的开发、研制过程。

2、能运用MCS-51单片机行简单的单片机应用系统的硬件设计。

3、能采用MCS-51单片机汇编语言行简单的单片机应用系统的软件设计。

4、掌握单片机应用系统的硬件、软件调试方法。

5、熟悉单片机仿真开发系统的作用,基本掌握运用单片机仿真开发系统行在线仿真、调试和目标程序固化的方法。

6、为今后从事单片机应用系统的开发、生产和维护工作奠定基础。

在实训的第一天我们经过指导老师,XX老师和xx老师详细的为我们讲解了实训指导书,让我们了解实训当中所学的内容与一些元器件和我们要实验的课题。

在实验中主要有三个课题。

第一是十字路口交通信号灯的设计与制作。

课题2、比赛用秒表的设计与制作。

课题3、模拟霓虹灯控制系统的设计与制作。

为了能让我们更好的掌握知识我们把全班31人分成10组,我们在小组里也分工合作,也可以培养我们同学之间的合作能力。

在此有做硬件的,有做软件的,这样能够更好的加强自己的动手操作能力。

第一个课题是我们必须做的,在做完的第一个的基础下才能选择第二个或底三个,第一个课题在同学们的认真操作下很快就完成了,几乎在第二天大部分小组都可以完成。

这也证明同学们是很认真的投入到实训当中和知识的牢固性。

在第三天,正是实训的高潮,每个同学都投入到这种氛围当中,在实训操作中把不懂的记下,然后问指导老师,在老师的细心指导及时的解决问题。

看到我们的不足之处。

理论与实践相结合是最好的效果。

时光飞逝,一转眼,一个周又尾声了,实训就这样过去了,但真正的实训还未开始,我将要继续努力,继续奋斗。

俗话说“好的开始是成功的一半”。

说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己有兴趣的题目。

其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。

单片机实习报告(精选12篇)

单片机实习报告(精选12篇)

单片机实习报告(精选12篇)大文斗范文网会员为你整理了“单片机实习报告”12篇范文,希望对你有参考作用。

篇1:单片机实习报告课程设计任务书学生姓名:专业班级:指导教师:工作单位:武汉理工大学题目: 单片机原理与应用初始条件:STC89C52 温度采集芯片DS18B20 数码管MAX232 开关74LS04 仿真软件要求完成的主要任务:1)利用PROTEL等软件进行硬件设计;2)利用Keil uV2软件完成应用系统软件设计;3)利用PROTEUS软件进行仿真设计;4)完成单片机最小系统和应用系统电路板的焊接;5)对电路进行调试;6)利用stc-isp软件完成在系统编程、下载,并完成系统软件调试;7)题目由指导教师提供;8)要求每个学生单独完成硬件软件设计、仿真、焊接、调试任务;9)写出实习报告,实习报告主要包括以下内容:目录、摘要、关键词、基本原理、方案论证、硬件设计、软件设计(带流程图、程序清单)、仿真结果、实物运行结果照片、结论、参考文献等;10)实习完成后通过答辩;11)答辩时交实习报告电子文档,通过答辩后根据修改意见修改并打印、装订成册。

时间安排:实习时间20xx年12月17日---20xx年12月30日。

指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (3)Abstract (4)1 基本原理 (5)1.1基本原理及原理框图 (5)1.2 STC89C52结构功能介绍 (5)2 方案论证 (7)2.1 数字温度计方案 (7)3 硬件设计 (8)3.1复位电路 (8)3.1.1上电复位 (8)3.1.2按键复位 (8)3.2振荡电路 (9)3.3 单片机最小系统单片机 (10)3.4 显示电路 (10)3.5矩阵键盘电路 (11)3.6 温度采集电路 (11)3.7串口通信电路 (12)3.8总设计电路 (13)4 软件设计 (14)4.1 软件介绍 (14)4.1.1设计软件Protel (14)4.1.2 程序编写软件Keil (14)4.1.3仿真软件Proteus (15)4.2 数码管显示 (15)4.3数字温度计的设计 (16)4.4串口通信的设计 (17)5仿真结果 (18)5.1数字温度计仿真 (18)5.2键盘扫描仿真 (18)6 实物调试结果 (19)7元件列表 (20)8参考文献 (22)9实习日记 (23)10附录 (40)摘要单片微型计算机简称单片机,又称为微型控制器,是微型计算机的一个重要分支。

密码锁实验报告doc

密码锁实验报告doc

密码锁实验报告篇一:电子密码锁实验报告密码锁实验报告一,实验目的1. 学习8051定时器时间计时处理、跑马灯、按键扫描及LED数码管显示的设计方法。

2. 设计任务及要求利用实验平台上8个LED数码管,按键,跑马灯实现设置密码,密码锁的功能二,实验要求基本要求:1:用4×4矩阵键盘组成0-9数字键及确认键和删除键。

2:可以自行设定或删除8位密码。

3:用5位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用绿色led发光二极管亮一秒钟做为提示,若密码不正确,禁止按键输入3秒,同时用红色led发光二极管亮三秒钟做为提示;若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止。

三,实验基本原理利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.05s中断一次并当作一个计数,设定定时1秒的中断计数初值为20。

为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。

由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。

四,实验设计分析针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash 只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构。

这样,既能做到经济合理又能实现预期的功能。

1在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。

程序可分为闹钟的声音程序、时间显示程序、日期显示程序,秒表显示程序,时间调整程序、闹钟调整程序、定时调整程序,延时程序等。

智能电子密码锁实训报告

智能电子密码锁实训报告

一、引言随着科技的发展,人们对生活品质和安全性的要求越来越高。

电子密码锁作为一种新型锁具,以其安全性高、操作方便、易于管理等特点,在家庭、企事业单位等领域得到了广泛应用。

本实训报告旨在通过设计和实现一款智能电子密码锁,提高学生的实际动手能力,培养学生的创新思维和团队合作精神。

二、实训目标1. 掌握电子密码锁的基本原理和设计方法。

2. 学会使用单片机、密码学、传感器等相关技术。

3. 提高学生的动手能力和团队协作能力。

4. 培养学生的创新思维和实际应用能力。

三、实训内容1. 硬件设计(1)主控芯片:选用AT89S51单片机作为主控芯片,负责控制整个系统的工作。

(2)密码存储:使用E2PROM AT24C02作为数据存储器,存储密码信息。

(3)输入设备:设计一个4×4键盘,用户通过键盘输入密码。

(4)输出设备:使用蜂鸣器作为报警提示,同时使用LED灯显示开锁状态。

(5)传感器:选用红外传感器作为防夹手功能,检测用户是否夹手。

2. 软件设计(1)密码输入与验证:设计密码输入和验证模块,当用户输入正确密码时,LED 灯亮起,蜂鸣器不响;当用户输入错误密码时,蜂鸣器响,提示用户密码错误。

(2)密码修改:设计密码修改模块,允许用户修改密码。

(3)报警提示:当用户连续3次输入错误密码时,系统自动进入报警状态,蜂鸣器持续响,提示用户。

(4)防夹手功能:当用户夹手时,红外传感器检测到障碍物,蜂鸣器响,提示用户松手。

3. 仿真与测试(1)使用Altium Designer19绘制原理图,完成电路设计。

(2)使用KEIL5软件编写控制程序,实现密码输入、验证、修改、报警提示等功能。

(3)使用protues8.7软件进行仿真,验证电路和程序的正确性。

(4)搭建实物电路,进行实际测试,确保系统稳定可靠。

四、实训成果1. 设计并实现了一款基于单片机的智能电子密码锁。

2. 系统具有密码输入、验证、修改、报警提示、防夹手等功能。

单片机密码锁实验报告

单片机密码锁实验报告

单片机系统设计实训报告专业:生产过程自动化姓名:李某班级学号:。

指导教师:。

实训期间:。

目录一.实验目的: (3)二.实验要求: (3)三.实验基本原理: (3)四.实验设计分析: (4)1.设计思想: (4)五.实验要求实现: (5)1. 电路设计: (5)2.主流程图: (7)3.4x4键盘行列式键盘原理电路图: (8)4. 显示模块 (9)五.总电路设计如下 (9)六.程序 (11)七.实验心得 (16)一.实验目的:1.熟悉单片机定时器的编程方法。

2.灵活运用单片机C语言程序中的字符串、数组、指针。

3.熟悉数码显示、LCM1602液晶显示器、YJD12864液晶显示器的编程方法。

4.熟悉掌握4x4矩阵键盘的C语言编程。

二.实验要求:1:用4×4矩阵键盘组成0-f数字键及。

2:可以自行设定或删除8位密码,3:用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则显示PASS,若密码显示错误时,显示ERR.4:自由发挥其他功能.5:要求有单片机硬件系统框图,电路原理图,软件流程图。

三.实验基本原理:这个密码锁的功能是使用矩阵键盘中的十六个键输入密码0到F还有,输入的同时在八位数码管上显示用户所输入的密码,未输入的位置用横杆填补表述未输入。

当输入的密码超出设置的位数时,数据溢出,清零。

用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则显示pass,若密码不正确,则显示err;模拟密码锁,密码固化到ROM 不能通过按键输入更改。

四.实验设计分析:1.设计思想:1. 本系统采用单片机AT89S51作为核心元件的一款具有本机开锁,加锁,修改密码和错误2.报警的电子密码锁。

3. 电子密码锁的原理是:从键盘输入一组密码,CPU把该密码和设置密码比较,对则将锁打开,错则要求重新输入,并记录错误次数,如果三次错误,则被强制锁定并报警。

单片机课程设计-电子密码锁-实验报告-

单片机课程设计-电子密码锁-实验报告-

单片机课程设计电子密码锁实验报告学院:电子信息工程学院班级:自***姓名:***学号:******指导教师:***单片机课程设计电子密码锁实验报告(一)实验目的1、了解电子密码锁工作原理和八段LED数码管显示原理。

2、掌握LED数码管显示器与单片机接口电路设计方法。

3、掌握实现密码锁功能的编程方法。

(二)设计实现功能(1)由程序设定初始密码,密码输入正确时锁打开,指示灯亮,发出“叮咚”的声音;密码输入不正确时,指示灯闪亮四次,发出“嘀嘀嘀滴”报警声。

(2)具有保护密码的功能,输入密码在数码管上显示可改为“88888”的方式,防止别人偷窥密码。

(3)具有修改密码的功能,密码输入错误可按DEL键进行删除。

(4)具有防止多次试探密码的电子密码锁并加报警功能,密码输入错误超过三次,将一直发出“滴滴滴滴。

”报警声。

(5)具有设定新密码的功能,输入密码后按CHG键,密码将被重新设定。

(三)整体电路设计思路核心用单片机AT89S52来实现此实验的要求。

用4*4键盘来输入密码。

每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。

矩阵的行线和列线分别通过两并行接口和CPU通信。

每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接V CC,而接地是通过程序输出数字“0”实现的。

键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。

两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。

用8个7段数码管来显示密码。

数码管的显示用扫描的方式,利用动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。

数字密码锁的实训报告

数字密码锁的实训报告

一、项目背景随着科技的不断发展,人们对安全性的要求越来越高。

传统的机械锁由于其构造简单,容易被撬,安全性较差。

为了提高锁的安全性,电子密码锁应运而生。

电子密码锁通过数字密码技术,实现了高安全性的锁具,广泛应用于家庭、企事业单位、银行等场所。

本实训项目旨在通过设计、制作和调试数字密码锁,了解电子密码锁的工作原理,提高学生的实践能力和创新能力。

二、实训目的1. 熟悉电子密码锁的工作原理和设计方法;2. 掌握数字电路、单片机等电子技术的基本知识和应用;3. 培养学生的实践能力和创新能力;4. 提高学生对电子产品的安全性和可靠性的认识。

三、实训内容1. 硬件设计(1)密码键盘设计:设计一个4x4的键盘矩阵,实现10个有效密码按键和一个确定键;(2)单片机设计:选择STC51单片机作为主控芯片,实现密码的存储、比较和输出控制;(3)显示模块设计:选用LCD液晶显示屏,显示密码输入状态、解锁成功或失败等信息;(4)驱动电路设计:设计驱动电路,实现对LCD显示屏、蜂鸣器等外围设备的控制。

2. 软件设计(1)密码输入程序:实现用户输入密码,并对输入的密码进行校验;(2)密码存储程序:将用户设置的密码存储在单片机的EEPROM中;(3)解锁控制程序:当输入密码正确时,控制继电器动作,打开锁具;当输入密码错误时,蜂鸣器发出报警声;(4)LCD显示程序:显示密码输入状态、解锁成功或失败等信息。

3. 调试与测试(1)硬件调试:连接电路,检查电路连接是否正确,排除硬件故障;(2)软件调试:编写程序,进行编译、下载,观察程序运行状态,调试程序错误;(3)整体调试:将硬件和软件结合起来,进行整体调试,确保数字密码锁功能正常。

四、实训结果与分析1. 硬件设计结果(1)密码键盘设计:完成4x4键盘矩阵,实现10个有效密码按键和一个确定键;(2)单片机设计:完成STC51单片机的编程,实现密码的存储、比较和输出控制;(3)显示模块设计:完成LCD液晶显示屏的编程,显示密码输入状态、解锁成功或失败等信息;(4)驱动电路设计:完成驱动电路的连接,实现对LCD显示屏、蜂鸣器等外围设备的控制。

密码锁单片机实习报告

密码锁单片机实习报告

一、实习背景随着科技的不断发展,单片机在各个领域的应用越来越广泛。

为了提高对单片机应用的理解和实践能力,我们选择了一项具有实际应用价值的课题——密码锁单片机设计。

本次实习以ATmega16单片机为核心,通过设计一个简易的密码锁系统,实现对密码的输入、验证、显示以及控制蜂鸣器和LED指示灯等功能。

二、实习目的1. 熟悉ATmega16单片机的硬件结构和编程方法;2. 掌握矩阵键盘、LCD1602显示屏、蜂鸣器和LED指示灯等外围设备的使用;3. 理解密码锁系统的工作原理,提高单片机应用能力;4. 培养团队协作和项目实施能力。

三、实习内容1. 硬件设计(1)ATmega16单片机:作为系统的核心控制器,负责管理密码输入、验证、显示及控制蜂鸣器和LED指示灯。

(2)矩阵键盘:提供用户输入接口,共16个按键,用于输入密码和控制系统功能。

(3)LCD1602显示屏:用于显示当前系统状态、密码输入提示及修改提示等信息。

(4)蜂鸣器:在密码输入错误或系统锁定时发出警报声。

(5)LED指示灯:在密码正确时点亮,指示系统已解锁。

2. 软件设计(1)初始化模块:初始化LCD显示屏、键盘及相关硬件接口,显示锁定状态。

(2)按键扫描模块:扫描矩阵键盘,获取用户输入的密码。

(3)密码处理模块:对输入密码进行验证,判断是否正确。

(4)显示模块:在LCD显示屏上显示系统状态、密码输入提示及修改提示等信息。

(5)定时器中断处理模块:实现密码修改功能,以及在连续输入错误密码达到设定次数后,进入锁定状态。

3. 系统工作流程(1)系统初始化:上电后,系统初始化LCD显示屏、键盘及相关硬件接口,显示锁定状态。

(2)密码输入:用户通过矩阵键盘输入密码,LCD显示屏实时显示用户输入的密码长度。

(3)密码验证:当用户输入的密码长度达到设定值(如6位),系统对输入密码进行验证:- 如果密码正确,LED指示灯点亮,显示屏显示“密码正确”提示,并清空输入缓冲区;- 如果密码错误,蜂鸣器响起,LCD显示屏显示错误信息,并等待用户重新输入。

单片机实习报告(精选5篇)

单片机实习报告(精选5篇)

单片机实习报告单片机实习报告(精选5篇)单片机实习报告篇1一、生产实习的目的和意义:生产实习是培养本科学生理论联系实际,提高实际动手操作潜力的重要教学环节。

本专业的生产实习旨在使学生广泛了解实际电子产品生产的全过程,熟悉电子产品的主要技术管理模式,并在实习的操作过程中学习掌握电子产品的焊接安装调试的实际操作技能。

巩固和加深理解所学的理论,开阔眼界,提高潜力,为培养高素质大学本科人才打下必要的基础。

透过学习,是理论与实际相结合,能够使学生加深对所学知识的理解,并为后续专业课的学习带给必要的感性知识,同时使学生直接了解本业的生产过程和生产资料,为将来走上工作岗位带给必要的实际生产知识。

二、实习的基本资料:集中授课,进行相关知识的学习。

学习掌握电子产品的独立性设计与安装调试的潜力;进一步掌握电子测量仪器的正确使用方法,电元器件的测量与筛选技术。

初步了解电子整机产品的工艺过程。

为能使学生得到充分的锻炼,较大的提高学生的实际动手潜力,本次生产实习安排每一位学生独立完成全部系统的设计与安装工作。

本实习环节,学生要独立使用电焊铁及各种电子测试设备电路安装与调试,要学生严格遵守电器设备的使用安全,遵守实验室的各项规章制度。

三、基本要求:在教师的指导下练习在测试电路德核心板上焊接元件,掌握焊接要领。

熟悉元器件的性能及管脚分配。

在给定的PCB板上焊接跳线,IC插座,电阻,电容,LED器件等。

检查焊接是否正确。

插上元器件,运行系统,并观测系统工作是否正常。

四、总体设计电路思想和原理:本次生产实习用到的开发板和模块共7块,分别为:单片机核心板,电子钟模块,MP3模块,RFID模块,无线传输模块,脉搏传感模块,GPS模块。

各模块相互组合,其所能实现的基本功能如下:单片机核心板+电子钟模块:实现时光的显示,温度的测量,且可透过遥控器调时定闹等。

单片机核心板+无线传输模块:实现数据的近距离无线传输。

单片机核心板+MP3模块(含SD卡):实现MP3播放功能。

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

单片机课程综合实训报告项目名称:多功能密码锁一. 内容要求:1.预期功能(1)在没输入密码时显示万年历,并可调.(2)、通过按键来确定输入密码,实现密码锁功能,正确输入密码后有开锁提示;2.设计方案(1)采用1602液晶LM016L, AT98C51,行列式键盘。

(2)采用1602液晶LM016L。

(3)选用单片机作为系统的核心部件,实现控制与处理的功能。

单片机具有资源丰富、速度快、编程容易等优点。

利用单片机内部的随机存储器(RAM)和只读存储器(ROM)及其引脚资源,外接液晶显示(LCD),键盘输入等实现数据的处理传输和显示功能,基本上能实现设计指标1,3.硬件部分:3.1电路图:主要由单片机、矩阵键盘、独立按键、液晶显示器等部分组成。

其中矩阵键盘用于输入数字密码,独立按键用于实现可调万年历。

由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警。

各模块功能如下:(1)键盘输入模块:分为密码输入按键与几个功能按键,用于完成密码锁输入功能(2)显示模块:用于完成对系统状态显示及操作提示功能。

(3) 复位电路:完成系统的复位。

(4) 独立键盘:用于完成可调万年历功能.(5)开锁电路:应用继电器及发光二极管模拟开锁,完成开锁及开锁提示。

键盘电路:用P1口组成4*4的矩阵键盘,各键的定义一次为:0、1、2、3、4、5、6、7、8、9、*、#、enetr、del(当密码按错时可以按下该键删除)、unclock(解锁键即三次密码都错了只能按下它进行解锁)调整时间的电路:Tiao是位功能选择,通过选择位来决定万年历的调整,+1、-1是调节功能键。

3.2电路原理说明:开始仿真时,一开始现实年月份时间。

本设计主要由单片机、矩阵键盘、独立按键、液晶显示器等部分组成。

开锁电路控制着继电器发光二级管的开锁。

程序中设计只有eneter键按下才能进行密码输入等操作。

当输出密码正确时,解锁并且红灯亮。

当连续按三次错误会被锁定,并且发出警报。

此时按下unclock(解锁键,即三次密码都错了只能按下它进行解锁) 4. 软件部分4.1程序流程图:4.2程序设计说明#include<reg52.h>#define lcd P2#define uchar unsigned char#define uint unsigned int#define no_key 20 //无按键时的返回值sbit rs=P3^0;sbit rw=P3^1;//lcd数据命令选择端sbit e=P3^2;//lcd使能信号端sbit key1=P3^3;sbit key2=P3^4;sbit key3=P3^5;sbit A=P3^6;sbit key=P3^7;//开锁信号控制端sbit enter=P1^3;//该键按下后才能进行输入密码等操作uchar conflag,keyflag=3;uchar jz=20;//键值变量uchar temp1;//用此变量来存储键盘扫描的返回值,以便判断是否有键按下uchar code table0[6]={3,0,3,0,3,0};//初始密码uchar code table9[6]={3,1,3,1,3,1};//初始密码uchar code table1[]="20XX-05-23 w-4";uchar code table2[]=" Time-00:00:00";uchar code table3[]="Enter please:";uchar code table4[]="OK!";uchar code table6[]="ERRO!";uchar code table7[]="Enter again:";uchar code table8[]="LOCKED!";uchar code table10[]="UNLOCKED!";uchar code table11[]="Can't open!";unsigned char m;uchar num,t0,keynum,hour,min,sec,year,month,day,week;uchar table5[6];//定义输入密码值存储数组/****************************************函数名称:delay**函数功能:软件延时,时间为z毫秒**入口参数:z延时控制值,值越大,延时越长**出口参数:无***************************************/void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}/****************************************函数名称:write_**函数功能:1602写命令函数,可以用此函数写不同的指令**入口参数:**出口参数:无***************************************/void write_(uchar ){rs=0;rw=0;e=0;P2=;delay(5);e=1;delay(5);e=0;}/****************************************函数名称:write_date**函数功能:1602写数据函数,可以用此函数写不同的数据,程序对应的硬件1602的数据口为P2口**入口参数:date**出口参数:无***************************************/void write_date(uchar date){rs=1;rw=0;e=0;P2=date;delay(5);e=1;delay(5);e=0;}/*显示位*/void write_week(uchar dte){uchar shi,ge;shi=dte/10;ge=dte%10;write_(0x80+13);write_date(0x30+ge);}void write_clock(uchar add,uchar dat){uchar first,second;second=dat/10;first=dat%10;write_(0x80+0x40+add);write_date(0x30+second);write_(0x80+0x40+add+1);write_date(0x30+first);}void write_nyr(uchar add,uchar dte){uchar shi,ge;shi=dte/10;ge=dte%10;write_(0x80+add);delay(5);write_date(0x30+shi);write_(0x80+add+1);delay(5);write_date(0x30+ge);}/****************************************函数名称:init**函数功能:初始化函数**入口参数:无**出口参数:无***************************************/void init(){ uchar hour=3,min=3,year=11,month=5,day=7,week=6;uchar num;e=0;write_(0x38);//设置16*2显示,5*7点阵,8位数据接口write_(0x0c);//开显示,不显示光标write_(0x06);//当读或写一个字符后地址指针加1,且光标加1 write_(0x01);//显示清屏:数据指针、所有显示清0write_(0x80);//设置数据地址指针for(num=0;num<15;num++){write_date(table1[num]);//LCD显示"初始设置时间";delay(5);}write_(0x80+0x40);for(num=0;num<14;num++){write_date(table2[num]);//LCD显示"初始设置时间";delay(5);}/*定时器初始化*/TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;while(1){if(key1==0) //时钟设置//key1按下{delay(5);if(key1==0) //key1真的按下了{keynum++;while(!key1) //去键抖TR0=0; //时钟暂停if(keynum==1) //key1按下第一次{write_(0x80+0x40+13);write_(0x0f);}if(keynum==2) //key1按下第二次{write_(0x80+0x40+10);}if(keynum==3) //key1按下第三次{write_(0x80+0x40+7);}if(keynum==4) //key1按下第三次{write_(0x80+13);}if(keynum==5) //key1按下第三次{write_(0x80+9);}if(keynum==6) //key1按下第三次{write_(0x80+6);}if(keynum==7) //key1按下第三次{write_(0x80+3);}if(keynum==8) //key1按下第四次{keynum=0; //按键次数清零write_(0x0c);TR0=1; //继续运行时钟}}}/*按键加*/if(keynum!=0){if(key2==0){delay(80);if(key2==0){while(!key2);if(keynum==1){sec++;if(sec==60)sec=0;write_clock(12,sec);write_(0x80+0x40+13);}if(keynum==2){min++;if(min==60)min=0;write_clock(9,min);write_(0x80+0x40+10);}if(keynum==3){hour++;if(hour==24)hour=0;write_clock(6,hour);write_(0x80+0x40+7);}if(keynum==4){week++;if(week==8)week=1;write_week(week);write_(0x80+13);}if(keynum==5){day++;if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) {if(day==32)day=1;}else if(month==2) //注意这里没有考虑闰年{if(day==29)day=1;}else{if(day==31)day=1;}write_nyr(8,day);write_(0x80+9);}if(keynum==6){month++;if(month==13)month=1;write_nyr(5,month);write_(0x80+6);}if(keynum==7){year++;if(year==99)year=0;write_nyr(2,year);write_(0x80+3);}}}/*按键减*/if(key3==0){delay(80);if(key3==0){while(!key3);if(keynum==1){sec--;if(sec==-1)sec=59;write_clock(12,sec);write_(0x80+0x40+13);}if(keynum==2){min--;if(min==-1)min=59;write_clock(9,min);write_(0x80+0x40+10);}if(keynum==3){hour--;if(hour==-1)hour=23;write_clock(6,hour);write_(0x80+0x40+7);}if(keynum==4){week--;if(week==0)week=7;write_week(week);write_(0x80+13);}if(keynum==5){day--;if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) {if(day==0)month=31;}else if(month==2) //注意这里没有考虑闰年{if(day==0)day=28;}else{if(day==0)day=30;}write_nyr(8,day);write_(0x80+9);}if(keynum==6){month--;if(month==0)month=12;write_nyr(5,month);write_(0x80+6);}if(keynum==7){year--;if(year==-1)year=99;write_nyr(2,year);write_(0x80+3);}}}}P1=1<<4|1<<0|1<<1|1<<2|1<<3|1<<5|1<<6|0<<7;if(enter==0)break;}/*检测Enter(P1.3)键是否按下,只有该键按下才能进行输入密码等操作*/ P1=0<<4|1<<0|1<<1|1<<2|1<<3|1<<5|1<<6|1<<7;while(enter);if(enter==0){delay(5);if(enter==0){TR0=0;write_(0x01);//显示清屏:数据指针、所有显示清0write_(0x80+0x02);//设置数据地址指针for(num=0;num<13;num++){write_date(table3[num]);//LCD显示“Enter please:”delay(5);}}while(!enter);//判断按键是否释放delay(5);while(!enter);}P1=0xff;}/************************************** **函数名称:keyscan**函数功能:3*4键盘扫描**入口参数:无**出口参数:jz***************************************/ uchar keyscan(){ uchar temp;P1=0xfe;//第一行扫描temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case 0xee:jz=0;break;case 0xde:jz=1;break;case 0xbe:jz=2;break;case 0x7e:jz=3;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xfd;//第二行扫描temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case 0xed:jz=4;break;case 0xdd:jz=5;break;case 0xbd:jz=6;break;case 0x7d:jz=7;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xfb;//第三行扫描temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case 0xeb:jz=8;break;case 0xdb:jz=9;break;case 0xbb:jz='*';break;case 0x7b:jz='#';break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}return jz;}/****************************************函数名称:codein**函数功能:完成密码输入,并判断密码是否正确**入口参数:无**出口参数:无***************************************/void codein(){uchar t=0;write_(0x80+0x40+0x02);//重新设置LCD数据地址指针for(t=0;t<6;t++){temp1=keyscan();while(temp1==no_key)//若相等则此时没有键按下{P1=0xdf;//判断是否要删除输入的密码if(enter==0){delay(5);if(enter==0){write_(0x80+0x41+t); //确定删除对象write_date(' '); //显示空格即为删除t--;}while(!enter);//判断按键是否释放delay(5);while(!enter);}// P1=0xfftemp1=keyscan();//继续扫描按键直至有键按下}table5[t]=temp1;//实时保存输入密码值write_(0x80+0x41+t); //重新设置数据地址指针write_date('*');//LCD显示“******”delay(5);jz=20;}t=0;for(t=0;t<6;t++){if(table5[t]!=table0[t])//对数组中的内容进行逐一比较,一旦有数据不对马上退出循环{break;}}if(t==6)//要是条件退出的话说明六个数全对密码{conflag=1; // 进行标志密码正确}}/****************************************函数名称:codeout**函数功能:根据密码输入正确与否作出相应的反应**入口参数:无**出口参数:无***************************************/void codeout(){uchar t;if(conflag){t=0;write_(0x01);//显示清屏:数据指针、所有显示清0write_(0x80+0x07);//设置数据地址指针for(t=0;t<3;t++){write_date(table4[t]);//LCD显示“OK!”///////////////////////////////////////////////////////delay(5);}key=0;while(1);}if(!conflag){keyflag--;t=0;write_(0x01);//显示清屏:数据指针、所有显示清0write_(0x80+0x05);//设置数据地址指针for(t=0;t<5;t++){write_date(table6[t]);//LCD显示“ERRO!”delay(5);}write_(0x01);//显示清屏:数据指针、所有显示清0write_(0x80+0x02);//设置数据地址指针for(t=0;t<12;t++){write_date(table7[t]);//LCD显示“Enter again:”delay(5);}}}/****************************************函数名称:codeen**函数功能:当密码输入错误次数达到3次时,要按下解锁键,输入万能密码,此函数能判断万能密码正确与否并做出相应反应**入口参数:无**出口参数:无***************************************/void codeen(){uchar t=0;write_(0x80+0x40+0x02);//重新设置LCD数据地址指针for(t=0;t<6;t++){temp1=keyscan();while(temp1==no_key)//若相等则此时没有键按下{//P1=0xdf;P1=0<<5|1<<0|1<<1|1<<2|1<<3|1<<4|1<<6|1<<7;if(enter==0){delay(5);if(enter==0){write_(0x80+0x41+t); //确定删除对象write_date(' '); //显示空格即为删除t--;}while(!enter);//判断按键是否释放delay(5);while(!enter);}P1=0xff;temp1=keyscan();//继续扫描按键直至有键按下}table5[t]=temp1;//实时保存输入密码值write_(0x80+0x41+t); //重新设置数据地址指针write_date('*');//LCD显示“******”delay(5);jz=20;}t=0;for(t=0;t<6;t++){if(table5[t]!=table9[t])//对数组中的内容进行逐一比较,一旦有数据不对马上退出循环{break;}}if(t==6)//要是条件退出的话说明六个数全对密码{t=0;write_(0x01);//显示清屏:数据指针、所有显示清0write_(0x80+0x03);//设置数据地址指针for(t=0;t<9;t++){write_date(table10[t]);//LCD显示“UNLOCKED!”delay(5);}while(1)key=0;}else{t=0;write_(0x01);//显示清屏:数据指针、所有显示清0write_(0x80+0x03);//设置数据地址指针for(t=0;t<11;t++){write_date(table11[t]);//LCD显示“Can't open!”delay(5);}while(1)key=1;}}void main(){uchar i=0;uchar j=0;init();while(keyflag){codein();codeout();}write_(0x01);//显示清屏:数据指针、所有显示清0write_(0x80+0x04);//设置数据地址指针for(i=0;i<7;i++){write_date(table8[i]);//LCD显示“LOCKED!”A=0;delay(5);}while(1){P1=0xbf; //判断解锁键是否按下if(enter==0){delay(5);if(enter==0){write_(0x01);//显示清屏:数据指针、所有显示清0write_(0x80+0x02);//设置数据地址指针for(i=0;i<13;i++){write_date(table3[i]);//LCD显示“Seeting code:”delay(5);}}while(!enter);//判断按键是否释放delay(5);while(!enter);P1=0xff;break;}key=1;}codeen();}/*定时器中断*/void timer0() interrupt 1{TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;t0++;if(t0==20) //1秒到清零{t0=0;sec++;if(sec==60) //1分钟到清零{sec=0;min++;if(min==60){min=0;hour++;if(hour==24){week++;if(week==8){week=1;}write_week(week);}if(hour==24){hour=0;day++;if(day==31){day=1;month++;if(month==13){month=1;year++;if(year==100){year=0;}write_nyr(2,year);}write_nyr(5,month);}write_nyr(8,day);}write_clock(6,hour);}write_clock(9,min);}write_clock(12,sec);}}5.系统调试5.1 调试方法初始状态:修改时间:输入密码:密码正确时。

相关文档
最新文档