单片机设计实验报告1201X年小学期单片机设计实验报告题目:基于16F877的电子密码锁班级:班内序号:实验组号:学生姓名:指导教师:单片机设计实验报告2期中检查教师评语指导教师签字:年月日单片机设计实验报告3基于16F877的电子密码锁实验摘要在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。具有防盗报警等功能的电子密码锁代替密码量少、安全性差的机械式密码锁已是必然趋势。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作、记住密码即可开锁等优点。目前使用的电子密码锁大部分是基于单片机技术,以单片机为主要器件,其编码器与解码器的生成为软件方式。本系统由16F877单片机系统(主要是16F877单片机最小系统)、4×4矩阵键盘、LCD1602显示和报警系统等组成,具有设置、修改四位用户密码、输入提示音、密码错误报警等功能(本设计由单片机控制LCD显示,密码正确显示passwordok!密码错误显示wrong,pleasereset!用户reset后进行重新输入。由单片机控制矩阵键盘含有0-9数字键和A-F功能键。按F键,则进行密码重置功能)。本系统成本低廉,功能实用。(宋体五号)AAbbssttrraaccttIndailylifeandwork,thedepartmentofhousingandsecurity,unitdocuments,financialstatementsandsomepersonalinformationtosavemoreinordertolockthewaystosolve.Ifusethetraditionalmechanicalkeytoopenthelock,peopleoftenneedtocarrymultiplekeys,useveryconvenient,andthekeymissingaftersecurityiscompromised.Withanti-theftalarmfunctionsuchaselectroniccombinationlockinsteadofpasswordquantity单片机设计实验报告4islittle,security,poormechanicalcombinationlockisinevitabletrend.Withthecontinuousdevelopmentofscienceandtechnology,peopleindailylifethedemandishigherandsafetyinsurancedevice.Tomeettherequirementsofpeopleontheuseofthelock,itssafety,usethepasswordinsteadofthekeycombinationlockarisesatthehistoricmoment.Combinationlockwithhighsafety,lowcost,lowpowerconsumption,easyoperation,rememberpasswordlock,etc.Currentlyuseelectroniccombinationlockismostlybasedonsinglechipmicrocomputertechnology,singlechipmicrocomputerasthemaindevice,theencoderanddecoderforsoftware.Thissystemconsistsof16f877microcontrollersystem(mainlyminimum16f877microcontrollersystem),4*4matrixkeyboard,LCD1602displayandalarmsystem,etc,andhassetupfour,modifyuserpassword,password,inputprompterroralarmfunctions(thisdesignbythesinglechipmicrocomputercontrolLCDdisplay,thepasswordcorrectlydisplaythepasswordok!Wrongpasswordshowswrong,bothpleasereset!Theusertoenteragainafterreset.Bysingle-chipmicrocomputercontrolmatrixkeyboardcontains0-9numberkeysandA-Ffunctionkeys.PresstheFkey,thencarriesonthepasswordresetfunction).Thissystemislowcost,functionandpractical.WMfunctiontocontrolitsturn.Andthisissocallednavigatingaptitudinally.关键字单片机——microcontroller芯片——CMOSchip16F877一、PIC16F877系列单片机简介PIC16F87X(含873P874P876P877)是美国微芯(Microchip)公司推出的高性能单片机,除具有单片机的通用资源外,该系列单片机还采用哈佛总线结构、二级指令流水线取指方式、精简指令集(RISC)和内部具有E2PROM数据存储器及FLASH结构的程序存储器、仅35条单字节单周期指令、在系统串行编程技术和在线调试技术。因此采用该系列单片机的产品具有低成本、低功耗、高速度、高可靠性、体积小、性价比高等特点。其芯片引脚图如图1所示。另外,它内部的E2PROM数据存储器不仅具有掉电保护数据的功能,更重要的是它的读写操作均是由单片机内部时序控制,即外部电路无法对其进行访问,因而具有极高的数据保密性,这使得PIC16F87X在加密性产品如智能IC卡、密码锁、电子防盗系统等方面有很广泛的应用。单片机设计实验报告5二二..实实验验论论证证与与比比较较1.总体系统组成电路主要分8个模块,即电源电路、复位电路、晶振电路、报警电路、键盘电路、LCD显示电路、开/关锁电路、声音电路。由单片机主要控制、实现密码锁功能。1.1电源电路模块单片机16F877复位电路LCD显示电路开/关锁电路键盘电路晶振电路显示电路电源电路报警电路单片机设计实验报告6D11BH62VregU1LM7805CTINOUTC5100nFC1100uFC2100uFC3100nF从电源插座进来的是9V直流电,经一片三端稳压器,将其转换为5V的稳定电压。电源滤波的重要性,一个电路板的滤波特性如果不好,严重时将会影响整个电路板不能正常工作。所以要注意一个大电容和一个小电容并联滤波,电源线要粗,走线要合理,模拟电路最好大面积接地。其主要作用是为电路提供工作电压,保证电路正常工作。1.2复位电路模块主要用于对电路进行手工复位。1.3晶振电路模块Osc15vGND空单片机设计实验报告7晶振主要就是为单片机工作提供一定的工作频率。1.4报警电路模块主要是用于密码输入错误时,鸣声提醒用户密码输入错误。1.5键盘电路模块键盘采用4*4矩阵键盘,行线连接到RD端口,列线连接到RB接口。16个键分别为0~9的数字键及A~F的功能键,F键则表示密码重置。键盘主要用于输入密码或进行功能、状态切换。1.6LCD显示电路模块单片机设计实验报告8当通电时LCD显示password,当密码输入正确显示ok,不正确则显示wrong,pleasereset。1.7开/关锁电路模块单片机设计实验报告9当密码输入正确时,单片机输出高电平,则继电器打开,表示锁开。1.8显示电路模块主要用于密码输入时,显示已输入。当密码输入正确则灯一直亮,输入错误则一直闪烁,提醒用户。三三系系统统总总体体设设计计1kohm单片机设计实验报告1033..11系系统统框框图图开始初始化模式选择识别按键密码输入手动清除密码比较开门旧密码输入新密码输入存入缓存区再次输入密码重新输入设置完返开始NFN0-E00---Y其他灯提示YNreset灯提示报警单片机设计实验报告113.2电路总图四四..硬硬件件连连接接单片机设计实验报告12单片机设计实验报告13五五..调调试试过过程程程序开始就进入main,执行初始设置后,进行LCD屏幕初始化。单片机就开始执行键盘扫描是否有输入阶段,根据采集到的键盘信息,做出分析,进行密码重置或者输入密码比较。调试过程中我遇到了很多问题,也就是在这些问题中,逐渐学会了MPLAB的使用和用汇编语言编程。在此,列举几个调试过程中比较典型的问题。5.1对屏幕初始化不能完成在小学期的出始阶段,我和搭档秦永宁决定在最开始阶段,我俩都进行程序编程,对汇编语言进行学习。我们分模块编写,我进行屏幕初始化程序编写,搭档秦永宁写键盘扫描程序。在后面阶段,永宁主软件,我主硬件。刚开始学单片机以及汇编语言的时候,翻看过的内容,也只是记得一点点皮毛,没有真正的理解。特别是看手册时看不懂,学校发的两本书上并没有初始化的程序。所以请教同学,同学告诉我,手册上有初始化的过程,需要认真看看。所以我就认真的看了一个早上,终于把手册上的内容看懂了。所以就开始编程,在编程的过程中调试buildall时,有出现了一些error,通过改正,buildall终于成功,初始化程序完成。(五号宋体)初始化程序如下:;***************初始化程序***********************CHUSHIHUAMOVLWD'16';MOVWFCOUNT;初始化count为16DELAY16MS;延时16msCALLDELAY1MS;DECFSZCOUNT,1;(1/2)count送count并判断结果是否为0?;是0,跳出循环,否循环回去GOTODELAY16MS;MOVLWB'00111000';将38h送到wMOVWFPORTD;将38h送到portdMOVLWB'00000010';将02h送到wMOVWFPORTE;将02h送到porte,写数据BCFPORTE,1;将porte的第一个位置清0单片机设计实验报告14MOVLWD'5';将5送到wMOVWFCOUNT;将count赋值为5DELAY5MS;延时1msCALLDELAY1MS;DECFSZCOUNT,1;GOTODELAY5MS;MOVLWB'00111000';将38h送到wMOVWFPORTD;将38h送到potdMOVLWB'00000010';将02h送到wMOVWFPORTE;将02h送到porte,写数据BCFPORTE,1;将porte的第一个位置清0MOVLWD'3';MOVWFCOUNT;DELAY120US;延时120umCALLDELAY40US;DECFSZCOUNT,1;GOTODELAY120US;MOVLWB'00111000';MOVWFPORTD;MOVLWB'00000010';MOVWFPORTE;BCFPORTE,1;;*****************************************************************CALLDELAY40US;MOVLWB'00111000';MOVWFPORTD;MOVLWB'00000010';MOVWFPORTE;BCFPORTE,1;CALLDELAY40US;MOVLWB'00001000';将08h送到w,关显示MOVWFPORTD;将o8h送到portdMOVLWB'00000010';将02h送到wMOVWFPORTE;将02h送到porteBCFP