课程设计(论文)-基于单片机的电子密码锁设计.docx

上传人:韩长文 文档编号:3971774 上传时间:2019-10-11 格式:DOCX 页数:26 大小:410.55KB
返回 下载 相关 举报
课程设计(论文)-基于单片机的电子密码锁设计.docx_第1页
第1页 / 共26页
课程设计(论文)-基于单片机的电子密码锁设计.docx_第2页
第2页 / 共26页
课程设计(论文)-基于单片机的电子密码锁设计.docx_第3页
第3页 / 共26页
课程设计(论文)-基于单片机的电子密码锁设计.docx_第4页
第4页 / 共26页
课程设计(论文)-基于单片机的电子密码锁设计.docx_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《课程设计(论文)-基于单片机的电子密码锁设计.docx》由会员分享,可在线阅读,更多相关《课程设计(论文)-基于单片机的电子密码锁设计.docx(26页珍藏版)》请在三一文库上搜索。

1、 桂林电子科技大学课程设计(论文)报告用纸 第 3 页 共 3 页 课程设计(论文)说明书题 目:基于单片机的电子密码锁设计 院 (系): 专 业: 学生姓名: 学 号: 指导教师: 职 称: 2011年 12 月 10 日摘 要本文详细介绍了一种基于单片机电子密码锁的设计方案。描述了电子密码锁的总体结构、主要功能及工作原理等内容。传统的机械锁由于安全性能太差,被撬的事件屡见不鲜,相比之下,电子密码锁因其保密性强,灵活性好,安全系数高,受到了广大用户的欢迎。电子密码锁作为一种新型的锁,省去了传统机械锁的钥匙,使用者只要记得其密码,便可以开启,从而提高了防盗功能,本文主要设计了一种以单片机 89

2、S52 为核心的电子密码锁,详细的介绍了该电子密码锁完整的设计过程以及外围的开锁电路。电子密码锁主要由三部分组成:键盘接口电路、电子密码锁的控制电路、输出八段显示电路。键盘接口电路包括时序产生电路、键盘扫描电路、弹抖消除电路、键盘译码电路。电子密码锁控制电路设计包括数字按键的数字输入、清除、功能按键的功能设计、输出八段显示电路包括数据选择电路、八段显示器扫描电路。关键词:电子密码锁;89S52;键盘接口;输出八段显示。AbstractThis article particularly introduces the design 89S51 microcontroller core with a

3、n electronic lock, describe the overall structure of electronic lock, main function and working principles. Because traditional mechanical locks poor safety performance, its easy for someone to pick a lock. Electronic locks for its confidentiality use good flexibility, high safety factor, the majori

4、ty of users. Electronic code lock as a new type of lock, eliminates the traditional mechanical key to the lock, the user just remember their password, they can open, thus greatly improving anti-theft feature. Electronic code lock consists of three parts: the keyboard interface circuit, electronic lo

5、ck control circuit, the output of erection digital tube circuit. Keyboard interface circuit includes the timing generating circuit, keyboard scanning circuit, bounce elimination circuit, the keyboard decoder circuit. Electronic code lock control circuit design, including digital key digital input, f

6、unctional design of function keys, shift register design and control, password remove, change, to step down, storage, alarm signal generating circuit password check, the lifting power locks circuit. Key words:electronic code lock;89S52;keyboard interface;output of eight digital tube目 录引言31.关于课题31.1几

7、种常见的密码锁31.1.1普通密码锁31.1.2机械密码锁31.1.3电磁卡片式密码锁31.1.4指纹密码锁31.2研究背景及意义31.3本设计主要内容及功能描述32.系统总体方案设计33.硬件电路设计33.1AT89S52介绍33.1.1芯片介绍33.1.2引脚排列及其功能33.2按键电路设计33.3LED显示电路33.4开锁电路33.5复位电路34.软件设计34.1软件设计思路34.2软件主程序流程图34.3中断服务子程序流程图35.系统调试36.总结3谢 辞3参考文献3附 录3桂林电子科技大学课程设计(论文)报告用纸 第 22 页 共 21 页 引言在日常生活和工作中,住宅与部门的安全防

8、范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发中首选的控制器。为了更好的推广单片机在家电领域中的应用,本系统采用AT89S51单片机来实现密码锁的控制。1. 关于课题1.1 几种常见的密码锁 1.1.1 普通密码锁 目前最常用机械锁,这种锁结构简单、使用方便、价格便宜,但在使用中暴露了很多缺点: (1)机械锁是靠金属制成的,通过钥匙上的不同齿

9、形与锁芯的配合来工作的,安全性较低;(2) 钥匙一旦丢失,无论谁捡到钥匙都可将门打开。 1.1.2 机械密码锁该型锁将解锁密码以机械装定的形式存储在装置的鉴别机构上,在装置的外围设立密码操作键。密码的输入,产生相应的鉴别动作,即正确的密码输入,鉴别机构产生开锁动作:错误的密码输入,鉴别机构的部件将发生错位或不做出响应。机械密码锁采用机械加工(如精密机械加工微细加工)制作,皮实、耐用,电磁干扰、外界的异常信号很难启动鉴别机构。但机械密码锁通常包含多个较复杂的机、电功能组件,装置微小型化需借助先进的制造技术与装配工艺,制造周期长、成本高,机电接口及测试也有一定难度。 1.1.3 电磁卡片式密码锁

10、该型锁类似于机械锁,利用光电耦合或电磁感应的原理,将密钥信息预先置于卡片内,加工好的卡片充当钥匙,开锁时将卡片插入锁内或近距离感应就能将锁打开。该锁的优点是:成本较低;授权用户一人一卡,可联微机,有开门记录。缺点是:卡片设备有磨损,寿命较短;卡片容易复制,不易双向控制;磁卡内存储的信息容易因外界磁场干扰而错乱,以致卡片(钥匙)无效。1.1.4 指纹密码锁 该类锁通过检验人员生物特征(如指纹)等方式来识别开锁。管理员利用采样控制软件,通过指纹采集仪采集、保存指纹;识别软件依赖指纹库识别开锁者的身份,通过外围设备显示、打印和存储。指纹具有唯一性和终身不变性的特点,一直被当作身份鉴定的可靠手段,从是

11、否允许非法开启角度来说,安全性极好;但从使用是否方便的角度看,对安装环境和使用者的要求很高,安装位置与使用者身高之间必须满足一定的关系;同一个人,在指纹划伤,或任何被用于开锁的识别部位有损伤的情况下,可能产生错误识别而无法开锁。1.2 研究背景及意义随着老百姓生活水平的提高,住房条件的改善,决定了门锁必然成为锁具市场的领头羊。目前,我国门锁市场以机械锁为主。现今,很多行业的许多地方都要用到密码锁,随着人们生活水平的提高,如何实现家庭或公司的防盗这一问题也变的尤其突出,传统的机械锁由于其构造简单,被撬的事件屡见不鲜,再者,普通密码锁的密码容易被多次试探而破译,所以,考虑到单片机的优越性,一种基于

12、单片机的电子密码锁应运而生。在安全技术防范领域,具有防盗报警功能的电子密码锁代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的电子密码锁,它除具有机械密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。本文介绍以51系列单片机为核心的电子密码锁,详细阐述了其工作原理、基本功能框图、关键设计技术及软件工作流程。目前使用的密码锁种类繁多,各具特色。本设计从经济实用的角度出发,采用AT89S51单片机,研制了一

13、款具有报警功能的电子密码锁。该密码锁设计方法合理,简单易行,成本低,符合住宅、办公室用锁要求,具有推广价值。1.3 本设计主要内容及功能描述电子密码锁以AT89S52单片机为系统控制单元,通过4*4矩阵键盘输入密码,当用户输入密码正确时,绿灯闪亮;当用户输入密码错误时,红灯闪亮,以提示用户输入密码错误;除了简单的密码对错判断,本次设计额外添加几项人性化功能,如:加电后,显示“888888”,表示电路运行正常,可以输入密码;输入密码时,只逐位显示“F”,以防止泄漏密码;输入密码过程中,如果输入错误,可按“取消”键清除屏幕。2. 系统总体方案设计本次设计利用单片机中一个用于构成内部振荡器的高增益反

14、相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性。如果使用石英晶体,最好电容使用30pF10pF,而如使用陶瓷谐振器建议选择40pF10pF。另外也可以用外部时钟,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空,由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号

15、的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。本方案采用一种是以8052为核心的单片机控制方案。利用石英晶体谐振器和单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本密码锁功能。初步设计如下:(1)输入密码用矩形键盘,包括数字键和功能键。(2)LED数码管显示输入密码,但只逐位显示“F”,以防止泄漏密码。(3)输入密码过程中,如果输入错误,可按“取消”键清除屏幕。(4)输入密码完后按“确认”键,单片机与设置密码比较,若正确,则绿色发光二极管亮1秒钟,不正确则红色二极管亮1秒钟。系统总体方案图如下图:8052单片机

16、复位电路键盘控制电路存储器八位数码显示管数码管示灯 图2-1 系统总体方案图3. 硬件电路设计3.1 AT89S52介绍231.3.1.1 芯片介绍AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32

17、位I/O 口线,看门狗定时器,2 个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。3.1.2引脚排列及其功能AT89S52芯片引脚排列如图3-1所示: 图3-1 AT89S52引脚图AT89S52单片机为40引脚芯片如图3-1所示,具有PDIP,PLCC和TQFP3钟封装形式。各引脚的功能如下: P

18、0口8位、开漏极、双向I/O口。 当用做通用I/O口时,每个引脚可驱动8个TTL负载;当用做输入时,每个端口首先置1。P0口也可用做访问片外数据存储器和程序存储器时的低8位地址/数据总线的复用口。这种情况下,P0口内含上拉电阻。在Flash编程时,P0口输入代码数据;在Flash校验时,P0口输出代码数据。在进行编程校验时,需外接10K的上拉电阻。 P1口8位、双向I/O口,内含上拉电阻。P1口为用户使用的通用I/O口,每个引脚可驱动4个TTL负载。当用做输入时,每个端口首先置1。P1.0和P1.1引脚也用做定时器2的外部计数输入(P1.0/T2)和触发器输入(P1.1/T2DX)。在编程和校

19、验期间,P1口可输入低字节地址。 P2口8位、双向I/O口,内部具有上拉电阻。P2口可用做通用I/O,可以驱动4个TTL负载。对P2口各位写入1,可作为输入。每个引脚由外部负载拉为低电平时,经由内部上拉电阻向外输出电流。在访问16位地址的外部程序存储器和数据存储器时,P2口提供高8位地址。P3口可用做通用I/O口,可驱动4个TTL负载。当用做输入熟,要先将P3口各位置如外部负载将P3口拉低,则经过上拉电阻向外输出电流。在编程和校验时,P3口接收某些控制信号。另外,XTAL1和XTAL2XTAL1是片内振荡器反相放大器和时钟发生器的输入端,XTAL2是片内振荡器反相放大器的输出端。其他引脚还有R

20、ST、ALE/PROG、PSEN、EA/VPP。3.2 按键电路设计由于设计要求使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如图3-2所示。 图3-2 44行列式键盘原理图每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有NM个按键的键盘。在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一

21、种是常用的逐行扫描查询法;另一种是速度较快的线反转法。对照图3-2所示的44键盘,说明线反转个工作原理。首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。 3.3 LED显

22、示电路数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管;共阳极数码管在应用时将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。反之,则不亮。共阴极数码管是指将所有发光二极管的阴极接到一起形成公共阴极,应用时将这一极接到地线上,当某一字段发光二极管的阴极为高电平时,相应字段就点亮。反之,则不亮。数码管要正常显示,就要用驱动电路来驱动

23、数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式不同,可以分为静态式和动态式两类。(1) 静态显示驱动:每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要58=40根I/O端口来驱动,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路复杂性。(2) 动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划的同名端“a,b,c,d,e,f,g,dp”连在一起,另外为每个数码管的

24、公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示字形,没有选通的不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。本系统设计的显示电路是为了给使用者以提示而设置的。考虑到节约成本,使用最少的电子元器件,这次显示采用并行显示的方式,即使用单片机的P00-P07作为段选码口,P22-P27为位选码口,由于银行账户密码均为六位,因此本次设计也采用六位密码,将前末位数码

25、空置。电路原理图如图3-3所示。 图3-3 四位七段数码管显示电路的电路原理图从单片机P00-P07输出的信号是六位七段数码管的段选信号,直接送到七段数码管的段选地址中,控制七段数码管显示的码型:从单片机P22-P27输出的信号是六位七段数码管的位选信号,送到六位七段数码管的片选地址中,控制六位七段数码管的显示个数和哪一个管子显示。3.4 开锁电路本设计中,基于节省材料的原则,用发光二极管代替电磁锁,红色管亮,表示密码错误,绿色管亮,表示密码正确。再配有限流电阻。具体电路图如下图3-4所示。 图3-4 发光二极管(开锁)电路原理图3.5 复位电路单片机的第9脚RST为硬件电路复位端,当振荡器工

26、作时,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机各状态都恢复到初始状态,此时六位数码管显示000000。复位电路如下图3-5所示。图3-5 复位电路原理图图中以电解电容,电阻及按键构成上电复位电路,由于单片机是高电平复位,所以当按键按下的时候,单片机的9脚RESET管脚处于高电平,此时单片机在复位状态。当上电后,由于电容的缓慢充电,单片机的9脚电压逐步由高向低转化,经过一段时间后,9脚处于稳定的低电平状态,此时单片机上电复位结束,系统程序从0000H开始执行。4. 软件设计44.1 软件设计思路对于电子密码锁的设计,需要解决3个问题:键盘输入、数码管显示、单片机电路以及密码比

27、较与处理的有关程序设计。通过行列键盘扫描程序获取所按键的行、列号,得到键值。键值编码规则如下:将字节的高四位(D7、D6、D5、D4)表示列号(4、3、2、1),低四位(D3、D2、D1、D0)表示行号(4、3、2、1),比如11H(00010001)表示第1行第1列,21H(00100001)表示第1行第2列,以此类推,可得其他键值的编码。根据获取的键值编码,选择相应的功能,驱动数码管的指示灯显示。主程序流程图中,计数器0、1初始化后,六位数码管显示888888,然后通过扫描键盘,判断是否有键按下。这个时候若没有键按下,则要继续扫描,不断重复循环过程,知道发现有键按下,程序才能根据按键的功能

28、进行相应的处理,当6位密码输入完毕,按下“确认键”,则数码管关闭显示,进入密码比较环节,根据比较的结果,指示灯输出不同的状态,指示灯点亮的时间由定时器1控制。数码管的动态扫描显示由定时器0控制。当程序中断时,程序保存现场,并重装TH0、TL0的初值,然后判断showflag是否为1,如是则调用数码管显示函数,最后中断返回。定时器1用于指示灯点亮时间的控制。当程序中断时,程序保存现场,并重装TH1、TL1的初值,然后判断t1count是否大于20,即有没有到1s,若到1s,则关闭指示灯,6位数码管显示为“888888”,同时关闭定时器1;若没到1s,则t1count继续累加,最后中断返回4.2

29、软件主程序流程图NoYes开始初始化打开2ms计数器0关闭50ms计数器1显示888888While(1)动态键盘扫描根据不同按键进行相应处理是“确认”键关闭数码显示,控制指示灯显示,打开50ms计数器图4-1 软件主程序流程图4.3 中断服务子程序流程图No2ms定时器0中断服务子程序重置定时器初值Showflag为1?结束Yes调用display()图4-2 中断服务子程序1Yes50ms定时器1中断服务子程序重置定时器初值到1秒?结束Not1count+关闭指示灯;数码管显示888888;关闭50ms计数器图4-3 中断服务子程序15. 系统调试软件编译好后下载到芯片,进行系统调试。这次

30、系统调试经过许多问题,下面对于这些问题逐一进行总结。首先是PCB的问题。因为这次实验板比较小,所以在PCB原理图上进行了繁琐的压缩,布线,一些连接线布置的非常细,最后腐蚀又出现失误,导致几根线出现断裂,而且这些线非常细不好弥补。解决方法:用焊锡仔细弥补。其次是程序设计问题。本次程序设计参考了许多实验流程图和代码,对于一些函数的程序设计不是完全了解,导致调试时数码管显示不理想,经过同学的指导,我了解到主要的障碍是对S52单片机引脚分配理解不透彻,为此我又重温一遍单片机技术,最后显示问题得以解决。 6. 总结耗时近一个多月的课程设计已经结束了,在这紧张而又充实的的时间里,通过对电子密码锁的制作,清

31、楚地看到了自己在单片机方面知识的薄弱,各个知识点没有融汇贯穿,程序设计也显得粗糙,因此要在仅剩的一个学期中,继续努力学习软硬件知识。在做此课题的过程中,充分体会到了实际操作的重要性。如果没有老师、同学的指点,可能自己会在一些地方停滞不前,因此浪费掉很多时间。通过这次课程设计,可以很好的把理论知识与实际情况有机的联系在一起,对以后的学习、工作很有帮助。经过这次的课程设计,让我感觉自己在动手操作方面比以前有很大提高。再加上前几次实践所积淀下来的经验,以及老师悉心的指导,让这次课程设计的进行较为顺利,提高了这次课程设计任务的质量和速度,进一步地增强了独自完成任务的能力,巩固了所学的理论知识。我们一组

32、同学当中有不少人选择单片机方向,所以在实际操作中可以相互讨论,相互提高。虽然这是我第二次做课程设计,但也必然在设计与实施方面弊端,具体体现在独自编程以及程序的调试上面,让我们看到了与工程人员的差距。这次一人一个题目,使我们独立完成任务能力增强,又增强了我们的团结协作能力。所有的专业课实验,以及这次的课程设计,无不有力地证明了基础知识的重要性,无不在提醒自己,要重视对基础知识的学习。通过这次的实验,理解了电子技术设计的设计方法和流程,夯实了制作单片机的操作流程以及下载程序。很显然,任何的实践活动,都不可能闭门造车,是必须去吸取前人的实践经验,这就要求在课程设计的过程中,从网络上,从图书馆,借寻相

33、关资料书籍等,有力地指导课程设计。进一步认清了毕业走向。增强了搜索资料的能力。通过这次的课程设计,我认识了C语言的强大以及重要性。这就要求在以后的大学时间里,要继续巩固相关的理论知识,继续多动手操作,提高具体的实践操作能力,为即将毕业谋求出路,做好充分的准备。谢 辞课程设计是培养学生综合运用所学知识,发现提出和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体考察,随着科学技术发展的日新月异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说是无处不在,因此作为当代大学生来说掌握单片机开发技术是十分重要的。经过近一个月的查资料,整理资料,设计电路,编写程序,本次课程设计

34、顺利结束了,作为一个大四学生的作品,由于经验、想象力的匮乏,难免有许多考虑不周全的地方,如果没有王国富老师的督促指导,以及一起工作的同学们的支持,想要完成这个设计是难以想象的。在此感谢我的指导老师王国富,老师平日繁忙这是众所周知的,但仍会挤出时间关心我们的进展,之中有许多好的提议让我们醍醐灌顶,但因为我们实践动手能力太差,也让多多老师费心,耽误了老师很多时间及精力,对此我们深感愧疚。对于老师孜孜不倦的教会及指导,让我受益终生。另外还要感谢和我一起并肩合作的三位同学:陈俊全、冯一帆、党生。有他们的帮助及支持,让我充满信心面对一切挑战。在课程设计期间,我们共同攻克了许多困难,让我懂得了一个人的力量

35、远不足以成功。通过这次训练,大大增进了我们合作能力。参考文献1 周航慈.单片机程序设计基础M.北京:北京航空航天大学出版社,2004:3-21.2 冯建华,赵亮.单片机应用系统与产品开发M.北京:人民邮电出版社,2004:78-112.3 郭天祥.新概念51单片C语言教程入门、提高、开发、拓展全攻略M.北京:电子工业出版社,2008:202-213.4 徐惠民,安德宁.单片微型计算机原理接口与应用M.北京:北京邮电大学出版社,2007:94-122.5 周冰,李田,胡仁喜. Altium Designer Summer 09从入门到精通M.北京:机械工业出版社,2007:94-122.6 邱燕

36、,邓鹏戈.数字电子密码锁D.西安:陕西国防工业职业技术学院,2010.7 许超,吴新杰,张丹.基于Proteus和Keil的单片机课程教学改革J.辽宁:辽宁大学学报(自然科学版),2011,(1).附 录附录一:硬件原理图 附录二:源代码#include at89x51.h /引用头部文件#define uchar unsigned char void delay(void);/按键消抖延时函数uchar keyscan();/按键扫描函数uchar getcode(uchar i); /根据共阴极字型编码表获取自行代码void display(); /显示函数bit pwcmp(void);

37、 /密码比较函数uchar digbit; /字位uchar wordbuf6; /字型码缓冲区uchar t1count; /定时器1由50ms积累到1s所用的计数器uchar count; /密码位计数uchar pw6; /初始密码存储区uchar pwbuf6; /输入密码存储区bit enterflag; /确认键按下与否标志bit pwflag; /密码正确与否标志bit showflag; /数码管显示与否标志sbit green=P31;sbit red=P30;/应用程序主函数main() uchar j,key; P2=0x0; /关闭数码管显示 TMOD=0x11; /T

38、0,T1工作方式1 /2ms定时设置 TH0=-2000/256; TL0=-2000%256; /50ms定时设置 TH1=-50000/256; TL1=-20000%256; /启动计数器0,关闭计数器1 TR0=1; ET0=1; TR1=0; ET1=1; EA=1; count=0; /初始没有确认密码,计数器设为0 enterflag=0; /没有按下确认键 pwflag=0; /密码标志先置为0 green=0; /绿灯不亮 red=0; /红灯不亮 /假设内定密码为123456 pw0=1; pw1=2; pw2=3; pw3=4; pw4=5; pw5=6; showfla

39、g=1; /打开数码管显示 for(j=0;j6;j+) /刚加电时,显示888888 wordbufj=8; digbit=0x80; /从第一位数码开始动态扫描 while(1) key=keyscan(); /调用键盘扫描函数 switch(key) case 0x11: /1行1列,数字0 if(count6) wordbufcount=0x0f; /对应密码位显示Fpwbufcount=0;count+; break; case 0x21: /1行2列,数字1 if(count6) wordbufcount=0x0f; /对应密码位显示Fpwbufcount=1;count+; br

40、eak; case 0x41: /1行3列,数字2 if(count6) wordbufcount=0x0f;/ /对应密码位显示Fpwbufcount=2;count+; break; case 0x81: /1行4列,数字3 if(count6) wordbufcount=0x0f; /对应密码位显示Fpwbufcount=3;count+; break; case 0x12: /2行1列,数字4 if(count6) wordbufcount=0x0f; /对应密码位显示Fpwbufcount=4;count+; break; case 0x22: /2行2列,数字5 if(count6

41、) wordbufcount=0x0f; /对应密码位显示Fpwbufcount=5;count+; break; case 0x42: /2行3列,数字6 if(count6) wordbufcount=0x0f; /对应密码位显示Fpwbufcount=6;count+; break; case 0x82: /2行4列,数字7 if(count6) wordbufcount=0x0f; /对应密码位显示Fpwbufcount=7;count+; break; case 0x14: /3行1列,数字8 if(count6) wordbufcount=0x0f; /对应密码位显示Fpwbufcount=8;count+; break; case 0x24: /3行2列,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1