单片机密码锁(共45页)_第1页
单片机密码锁(共45页)_第2页
单片机密码锁(共45页)_第3页
单片机密码锁(共45页)_第4页
单片机密码锁(共45页)_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、专科毕业设计(shj)(论文) 设计(shj)题目: 电子(dinz)密码锁设计 系 部: 信息工程系 专 业: 移动通信 班 级: 111301 姓 名: 汤明慧 学 号: 112126130130 指导教师(校内): 王兵 职 称: 副教授 20 14 年6月 南京摘要(zhiyo)在当今社会,人们更加注重主权(zhqun)、知识产权、隐私和财产等等。为了不让自己的利益受到侵害,锁就应运而生了。在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。但传统的方法是使用机械式开锁,人们常需携带多把钥匙,不仅携带起来不方便,而且容易丢失

2、(dis),安全性也很差。随着科学技术的发展,机械锁已不能满足人们的需求,所以就有了密码锁。密码锁相较于机械锁安全性更高,成本低,功耗低,易操作。密码锁包括机械密码锁、电子密码锁、智能密码锁,其中电子密码锁是这类电子防盗产品的主流。本次设计使用ATMEL公司的AT89C51实现一基于单片机的电子密码锁的设计。关键词:34矩阵键盘;AT89C51;密码锁ABSTRACTIn todays society, people pay more attention to the sovereignty, intellectual property, privacy and property, and s

3、o on. In order not to let their own interests are violated, the lock was born. In daily life and work, the department of housing and security, unit documents, financial statements and some personal information to save more in order to lock the ways to solve. But the traditional way is to use mechani

4、cal lock, people often need to carry multiple keys, not only not convenient to carry, and easy to lose, security is also very poor. With the development of science and technology, mechanical lock has cant satisfy peoples needs, so there will be a combination lock. Combination lock compared with mech

5、anical lock security is higher, low cost, low power consumption, easy to operate.Combination lock includes mechanical combination lock, electronic combination lock, intelligent combination lock, including electronic combination lock is the mainstream of this kind of electronic anti-theft products. T

6、his design use ATMEL companys electronic combination lock based on MCU AT89C51 achieve the design.Key words: 3 * 4 matrix keyboard; AT89C51; A combination lock目录(ml)摘 要ABSTRACT目 录1 绪论(xln) 1.1 电子(dinz)密码锁简介 1.2 电子密码锁的发展趋势 1.3 本设计所要实现的目标2 系统结构 2.1 系统框图 2.2 各模块方案选择与论证3 系统的硬件设计与实现3.1系统硬件概述3.2主要单元电路的设计3

7、.2.1键盘扫描模块电路的设计3.2.2单片机控制模块电路的设计3.2.3声报警模块电路的设计3.2.4液晶显示模块电路的设计4软件系统设计4.1主程序流程图4.2按键软件设计4.3密码设置软件设计4.4开锁软件设计5调试与实现5.1Proteus仿真5.2软件调试5.3硬件调试总结致谢参考文献附录1系统电路图附录2 系统程序1 绪论(xln)电子(dinz)密码锁简介电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成(wn chng)开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,

8、通过编程来实现的,其性能和安全性已大大超过了机械锁。其特点如下:(1)电子密码锁操作简单易行,一学即会(2)使用灵活性好,不像机械锁必须佩带钥匙才能开锁。(3)误码输入保护,当输入密码多次错误时,报警系统自动启动。(4)密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替 而使锁的密级下降。(5)保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。(6)无活动零件,不会磨损,寿命长。1.2 电子密码锁的发展趋势由于人们生活水平的提高和 HYPERLINK /search?word=%E5%AE%89%E5%85%A8%E6%84%8F%E8%AF%86&fr=qb_

9、search_exp&ie=utf8 t _blank 安全意识的加强,对安全的要求也就越来越高。锁自古以来就被喻为守护门的 HYPERLINK /search?word=%E9%93%81%E5%B0%86%E5%86%9B&fr=qb_search_exp&ie=utf8 t _blank 铁将军,人们对它期望甚高,既要起到防盗的作用,又要使用方便,这也是制锁者长期以来研制的方向。随着 HYPERLINK /search?word=%E7%94%B5%E5%AD%90%E6%8A%80%E6%9C%AF&fr=qb_search_exp&ie=utf8 t _blank 电子技术的发展,各

10、类电子产品 HYPERLINK /search?word=%E5%BA%94%E8%BF%90%E8%80%8C%E7%94%9F&fr=qb_search_exp&ie=utf8 t _blank 蜂拥而至,电子 HYPERLINK /search?word=%E5%AF%86%E7%A0%81%E9%94%81&fr=qb_search_exp&ie=utf8 t _blank 密码锁就是其中之一。据有关资料介绍,电子 HYPERLINK /search?word=%E5%AF%86%E7%A0%81%E9%94%81&fr=qb_search_exp&ie=utf8 t _blank 密

11、码锁的研究从 HYPERLINK /search?word=20%E4%B8%96%E7%BA%AA&fr=qb_search_exp&ie=utf8 t _blank 20世纪30年代就开始了,在一些特殊场所有所应用。这种锁是通过键盘输入一组密码完成 HYPERLINK /search?word=%E5%BC%80%E9%94%81&fr=qb_search_exp&ie=utf8 t _blank 开锁过程。研究这种锁的目的,就是为提高锁的安全性。由于 HYPERLINK /search?word=%E7%94%B5%E5%AD%90%E9%94%81&fr=qb_search_exp&i

12、e=utf8 t _blank 电子锁的密钥量(密码量)极大,可以与 HYPERLINK /search?word=%E6%9C%BA%E6%A2%B0%E9%94%81&fr=qb_search_exp&ie=utf8 t _blank 机械锁配合使用,而且可以避免因钥匙被仿制而留下 HYPERLINK /search?word=%E5%AE%89%E5%85%A8%E9%9A%90%E6%82%A3&fr=qb_search_exp&ie=utf8 t _blank 安全隐患。 HYPERLINK /search?word=%E7%94%B5%E5%AD%90%E9%94%81&fr=qb

13、_search_exp&ie=utf8 t _blank 电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,因而被越来越多的人所推崇。 HYPERLINK /search?word=%E7%94%B5%E5%AD%90%E9%94%81&fr=qb_search_exp&ie=utf8 t _blank 电子锁的种类繁多,例如数码锁, HYPERLINK /search?word=%E6%8C%87%E7%BA%B9%E9%94%81&fr=qb_search_exp&ie=utf8 t _blank 指纹锁, HYPERLINK /search?word=%E7%A3%

14、81%E5%8D%A1&fr=qb_search_exp&ie=utf8 t _blank 磁卡锁, HYPERLINK /search?word=IC%E5%8D%A1&fr=qb_search_exp&ie=utf8 t _blank IC卡锁,生物锁等,但较常用的还是按键式电子密码锁。 HYPERLINK /search?word=20%E4%B8%96%E7%BA%AA&fr=qb_search_exp&ie=utf8 t _blank 20世纪(shj)80年代(nindi)后,随着电子锁 HYPERLINK /search?word=%E4%B8%93%E7%94%A8%E9%9B

15、%86%E6%88%90%E7%94%B5%E8%B7%AF&fr=qb_search_exp&ie=utf8 t _blank 专用(zhunyng)集成电路的出现,电子锁的体积缩小,可靠性提高,成本较高,适合使用在安全性要求较高的场所,且需要有电源,使用还存在一定的局限性,难以普及,所以对它的研究一直没有突破性的进展。 目前,在西方发达国家,电子密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于 HYPERLINK /search?word=%E6%99%BA%E8%83%BD%E9%97%A8%E7%A6%81%E7%B3%BB%E7%BB%9F&fr=qb_search_exp&i

16、e=utf8 t _blank 智能门禁系统中,通过更加安全、可靠的技术实现大门的管理。在我国,电子锁整体水平尚处在国际上70年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几家工厂在生产以供应市场。国内的不少企业也引进了世界上先进的技术,发展前景非常可观。希望通过不断的努力,使电子密码锁在我国也能得到广泛应用。 目前使用的电子密码锁大部分是基于 HYPERLINK /search?word=%E5%8D%95%E7%89%87%E6%9C%BA&fr=qb_search_exp&ie=utf8 t _blank 单片机技术,以

17、HYPERLINK /search?word=%E5%8D%95%E7%89%87%E6%9C%BA&fr=qb_search_exp&ie=utf8 t _blank 单片机为主要器件,其 HYPERLINK /search?word=%E7%BC%96%E7%A0%81%E5%99%A8&fr=qb_search_exp&ie=utf8 t _blank 编码器与 HYPERLINK /search?word=%E8%A7%A3%E7%A0%81%E5%99%A8&fr=qb_search_exp&ie=utf8 t _blank 解码器的生成为软件方式。在实际应用中,由于程序容易跑飞,

18、HYPERLINK /search?word=%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%8F%AF%E9%9D%A0%E6%80%A7&fr=qb_search_exp&ie=utf8 t _blank 系统的可靠性能较差。基于现场可编程 HYPERLINK /search?word=%E9%80%BB%E8%BE%91%E9%97%A8&fr=qb_search_exp&ie=utf8 t _blank 逻辑门阵列FPGA器件的电子密码锁,用FPGA器件 HYPERLINK /search?word=%E6%9E%84%E9%80%A0%E7%B3%BB%E7%BB%9F

19、&fr=qb_search_exp&ie=utf8 t _blank 构造系统,所有算法完全由硬件电路来实现,使得系统的可靠性大为提高。由于FPGA具有现场可编程功能,当设计需要更改时,只需更改FPGA中的控制和接口电路,利用EDA工具将更新后的设计下载到FPGA中即可,无需更改外部电路的设计,大大提高了设计的效率。 本设计所要实现的目标本次设计使用ATMEL公司的AT89C51实现一基于单片机的电子密码锁的设计,其主要功能具体如下:密码通过键盘输入,若密码正确,则将锁打开。报警、锁定键盘功能。密码输入错误液晶显示器会出现错误提示并且蜂鸣器报警,若密码输入错误次数超过3次,将锁定键盘。 电子密

20、码锁的设计主要有三部分组成:34矩阵键盘接口电路、密码锁的控制电路、输出显示电路。另外系统还有LED电源指示灯,报警蜂鸣器等。密码锁设计(shj)的关键问题是实现密码的输入、更改(gnggi)、开锁等功能:(1)密码输入(shr)功能:本设计用LCD1602作为显示器,34矩阵按键,按下密码时从左依次向右显示。(2)开锁功能:当按下开锁键,系统将输入和密码进行检查核对,如果正确锁打开,否则不打开,蜂鸣器立即报警。 主要的设计实施过程:首先,选用ATMEL公司的单片机AT89C51,以及选购其他电子元器件。第二步,使用DXP 2004设计硬件电路原理图,并采用万能板焊接的方法做出实物。第三步,使

21、用Keil uVision3软件编写单片机的C语言程序、软件调试。第四步,使用PROTEUS软件进行模拟软、硬件调试。最后,联合软、硬件调试电路板,完成本次毕业设计。2 系统结构2.1 系统框图简易电子密码锁是由5个部分组成,如图2.1所示:单片机控制模块键盘模块电源模块显示模块报警模块 图2.1电子密码锁控制系统电源模块:由+5V的直流稳压电源供电给整个系统工作。键盘模块:由12个轻触式开关组成。单片机控制模块:采用单片机AT89C51。显示模块:采用LCD1602显示器显示当前输入数据。报警模块(m kui):采用蜂鸣器做声报警。2.2各模块(m kui)方案选择与论证(1)单片机的选择(

22、xunz)方案一:采用AT89C51单片机,它可以与其它51系列的单片机兼容、内部ROM全部采用FLASHROM、最高时钟频率可达24MHz且能以3V超低压工作。但不支持ISP在线编程技术、内部ROM仅为4KB不利于功能扩展。方案二:采用AT98S51单片机,它除了具备AT98C51的全部功能外,还支持ISP在线编程技术且内部ROM为8KB有利于功能扩展。(2)键盘的选择方案一:使用独立式按键来控制使用独立式按键来控制显示器的显示,这样需要很多的按键,每个按键实现一个功能,易于控制,程序编写简单,但是每个按键都要接上拉电阻,占用了单片机大量的I/O接口资源,要对单片机外扩I/O口,而且在电路焊

23、接时也比较麻烦,还造成资源浪费并增加成本。方案二:采用矩阵式按键来控制把按键按行列组成矩阵,在行列交点上都对应有一个键,这样需要的按键要少,为判定有无键被按下以及被按键的位置,这种称为键扫描法。这样虽然提高了编程难度,但是节约了单片机大量的I/O口,免去了上拉电阻为焊接带来了不便,也提高了整块电路板的美观度。(3)显示模块的选择方案一:数码管静态显示采用LED数码管静态显示方法,电路简单,驱动程序简洁,但每个数码管都要一块74LS47来驱动显示,增加成本,浪费系统硬件资源,还需要占用单片机多个I/O口。方案二:数码管动态显示采用LED数码管动态扫描显示方法,只需一块数码管驱动器芯片和一块译码器

24、芯片就可以驱动多个数码管,价格便宜,只需要7个I/O口就可以同时驱动8个数码管显示。硬件利用效率高,驱动程序容易理解和编程。方案三:液晶显示采用(ciyng)LCD液晶显示(xinsh),显示的位数多,由单片机驱动。此方案有美观、显示清晰多样的优点。但同时液晶显示器的驱动程序较为(jio wi)复杂,编程困难,成本较高,有点浪费资源。(4)报警模块的选择方案一:采用语音报警,虽然看上去整个系统比较高端,但程序复杂性大大提高而且整个系统的造价也大幅度地增加。方案二:采用蜂鸣器来报警,可以发出声报警关键是成本低。 结合整个系统要实现的功能、成本和美观度等综合因素考虑,用AT89C51单片机为主控模

25、块、用34键盘输入、用LCD1602液晶显示器作为显示模块、用蜂鸣器做为报警模块。系统框图如图2.2AT89C5134键盘输入电源、编程下载LCD1602液晶显示器声报警图2.2系统框图3 系统(xtng)的硬件设计与实现3.1系统硬件(yn jin)概述本系统是通过键盘(jinpn)扫描模块,既能够显示数据并且还能修改密码,具有强大的功能,通过键盘扫描模块输入到单片机控制系统AT89C51中。然后通过LCD1602液晶显示模块来显示我们所要的数据,还有一个就是报警模块,当输入的密码相同时,则显示模块输出“open”,当输入的密码是错误时,显示模块输出“error inputagain”并且报

26、警模块立刻发出声音报警。为了达到设定的功能,本装置键盘扫描模块、单片机控制模块、液晶显示模块,声报警模块等4模块组成。总电路图如下:3.2主要单元电路(dinl)的设计3.2.1键盘扫描模块(m kui)电路的设计如图3.1所示,本模块(m kui)的作用是输入数据,首先要判定有没有键被按下、被按键的位置,如果矩阵按键有键被按下,被按键处的行线和列线就会接通,使得开关之间接通。所以扫描显示有按键被按下之时,应进行去抖动处理。一般我们是用软件来去抖动,软件方法是采用时间延迟以躲过抖动,待行线上状态稳定之后,再进行行状态输入。图3.1键盘扫描(somio)模块3.2.2单片机控制(kngzh)模块

27、电路的设计单片机作为本装置的核心器件(qjin),在系统中起到控制声报警、以及液晶显示的作用,其中采用的是AT89C51,AT89C51是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分别记作P0、P1、P2、P3。第20引脚为接地端;第40引脚为电源端;第31引脚需要接高电位使单片机选用内部程序存储器;第18、19脚之间接上一个12MHz的晶振为单片机提供时钟信号;第9脚为复位脚,当其接高电位时,单片机停止工作。P0口接LCD1602液晶显示器,P1口与蜂鸣器连接以实现声报警功能,P2口与12个阵列式按键相连实现对键盘的扫描。通过编程既能让LCD1602来显示数据,同

28、时也通过运行指令来完成声报警等功能。如图3.2所示图3.2单片机控制(kngzh)模块3.2.3声报警模块电路(dinl)的设计图3.3声报警(bo jng)模块如图3.3所示,本模块(m kui)的作用是当开锁按钮被按下时,如果(rgu)液晶(yjng)显示器当前显示值相同,则输出“open”,当输入的数与密码不同时,则输出“error inputagain”并且蜂鸣器立刻发出声音报警。3.2.4液晶显示模块电路的设计如图3.4所示,液晶显示器的作用是将矩阵按键输入的数据以及得到的结果显示出来。图3.4液晶显示模块4 软件系统设计(shj)本系统软件设计由主程序、初始化程序、LCD显示程序、

29、键盘(jinpn)扫描程序、键功能程序、密码设置程序、EEPROM读写程序和延时程序等组成。4.1主程序流程图如图4.1为主程序(chngx)流程图,开始连上电源,程序进行初始化设置,然后用按键输入密码,则系统进行键盘扫描,密码正确,开锁成功,密码错误3次出错报警。选择是否修改密码,若要修改密码,先输入原密码,密码正确后再设置新密码,错误则报警,确认后,密码修改成功,否则结束最终返回。然后启动程序,进行保护,再次在键盘上输入密码,系统进行扫描,如果和之前一样,则执行相同程序,如不是,则执行另一种程序。图4.1 主程序流程图主程序如下:void main() uchar KeyValue,err

30、or_flag=0,error_flag1=0,i; LCD1602_Init();/1602初始化 while(1) welcome();/显示(xinsh)welcomewhile(1)KeyValue=KeyDown();/读取键入(jin r)的值if(KeyValue=12) /检测(jin c)到OK键 input();if(check()=6)open();for(i=0;i2) /键盘锁定20秒 welcome(); Delays(40); error_flag=0; break; if(KeyValue=10) /检测(jin c)到SET键 input();if(check

31、()=6) change_input(); change_successful(); Delays(4); error_flag1=0; break; else error(); beer=0; Delays(5); beer=1; error_flag1+; if(error_flag12) /键盘(jinpn)锁定20秒 welcome(); Delays(40); error_flag1=0; break; 4.2按键(n jin)软件设计如图4.2按键功能流程图,在按键当中,有与输入、开锁、清除、设置、确认的程序相对应的按键,并按顺序与输入的数相比较,当输入正确时,进入密码程序,错误时

32、进行清除,输入两次新密码正确时,可进行重新设置密码,最后确认程序。图4.2 按键(n jin)功能流程图按键(n jin)程序如下:int KeyDown()uchar a=0,KeyValue=0;GPIO_KEY=0 x0f;if(GPIO_KEY!=0 x0f)/读取按键(n jin)是否按下Delay10ms();/延时1ms进行消抖if(GPIO_KEY!=0 x0f)/再次检测键盘是否按下GPIO_KEY=0X0F; /测试列switch(GPIO_KEY)case(0X0b):KeyValue=3;break;case(0X0d): KeyValue=2;break;case(0

33、X0e):KeyValue=1;break;GPIO_KEY=0XF0; /测试行switch(GPIO_KEY)case(0X70):KeyValue=KeyValue;break;case(0Xb0):KeyValue=KeyValue+3;break;case(0Xd0): KeyValue=KeyValue+6;break;case(0Xe0):KeyValue=KeyValue+9;break;while(a10)/当键入密码超过(chogu)10位时退出 out_of_range(); break; 图4-3 密码(m m)设置流程图4.4开锁软件设计如图4-4开锁流程图,开始时按

34、开锁键,输入密码,如果输入正确,则开锁成功。如果输入错误累计达到三次,则执行(zhxng)报警程序。图4-4 开锁流程图开锁程序(chngx)如下:int check() int i,k=0;for(i=0;i6;i+)/密码(m m)循环对比if(write_mimai=read_mimai)k+;Elsek=0; return k;5 调试(dio sh)与实现5.1 Pruteus仿真(fn zhn)为了减少资源浪费(lngfi),造成不必要的元器件损坏,所以先仿真电路看是否可行。根据我们事先预想的电路图用Proteus画出来,再调试。然后将编好的程序拷进去,仿真后我们可以看到:当密码输

35、入正确时显示“open”,蜂鸣器响两声。输入错误时显示“error input again”,蜂鸣器长鸣5秒,在修改密码时,输入正确的密码显示“new password”,按提示输入新的密码,当输入错误时显示“error”,当密码输入错误次数超过三次时,键盘会锁定20秒。也就是说,这个电路是完全可行的。5.2软件调试根据(gnj)本设计的要求将程序在KELL C51上编好,然后进行调试。其中在仿真时发现按键不是很灵敏,经检验是程序编写的问题,消抖后按键即可正常(zhngchng)使用。还有就是在密码输入正确解锁后,再按开锁键不输密码也会解锁,反复检查程序发现是密码(m m)数组没有清空。当全部

36、调试和修改完成后,将程序固化到AT89C51中进行整机调试。各功能实现则调试完成。5.3 硬件调试在单片机应用系统中,硬件调试和软件调试是相辅相成的。而且很多硬件故障是通过软、硬件联调才能发现的,但一般要先排除系统中比较明显的硬件故障后才和软件一起联调。在焊接之前为了方便布线和整体美观,要先确定元器件的放置位置。焊接好之后先不要通电,用万用表测试各个部分能否导通,不能导通的要仔细检查,是否虚焊了,还是器件在焊接过程中温度过高损坏了。各个部分测试完成后通电,看电路整体工作是否正常,不正常可能是各个器件之间连接有误。总结(zngji)通过(tnggu)本次毕业设计(b y sh j),让我对以前学

37、过的知识加深了印象,并且还学到很多新的知识,同时也锻炼了自己的动手能力,尤其重要的是在实际中解决排查问题的能力。通过这次的设计,我熟练使用了Protel,学会了制作电路板的一些技巧,并且熟悉了如何选购使用电子元器件。在设计中,我进一步的学习了使用C语言对单片机进行编写程序,更熟脸的使用KEIL C软件,并且对单片机的功能有了更深的认识。在做这个设计的过程中,我遇到了不少的问题和困难。通过查阅、筛选资料,请教老师和同学,并将理论结合到自己的设计中,一步一步的排除故障找到故障的原因并最终解决故障。这次的设计使我对模拟电子、数字电子知识加深了了解,尤其是在对电路进行调试的时候,出现了很多这些方面的问

38、题,通过对以往知识的复习巩固,将问题解决。这次的设计和市场上的产品有一定的差距,其中有很多的不足。但考虑到实际拥有的条件和美观程度所以实现的功能有限,还请老师们提出宝贵意见!致谢(zh xi)时间(shjin)总如白驹过隙(bi j gu x),转眼间,我就要从这个我学习、生活了三年的母校毕业了。这三年里,我认识了许多友好热情的同学和值得尊敬的老师,在我的学习和生活上都给了我很多帮助。感谢他们成了我的良师益友,感谢母校给我这个机会让我得以深造,学到的不仅仅是文化知识,更多的是生活的经验,才使我的大学之路走得这么精彩。首先感谢学校及信息工程学院为我提供的这次机会,毕业设计让我获益颇丰,也使我个人

39、有了很大的提高。其次,我特别要感谢我的指导老师王兵老师。王老师知识渊博,待人亲和,对待学生也是非常关心。在整个毕业设计过程中,始终关注着我的进展,从论文选题、构思、修改、定稿到实物设计完成,都少不了老师对我的教诲和指导。老师每次指出我的不足之处都会给我一些建议,并想办法帮我克服,不厌其烦地多次指导我的论文的修改和完善,在此,再一次向王老师表示真诚的谢意。这三年来我一直住在学生宿舍始终和室友们在一起,她们对我来说既是陪伴也是鞭策。我们一起学习,一起生活,她们的优点会让我反省自己的不足并加以改正;她们的关心让我感受到家般的温暖。没有你们的相濡以沫、惺惺相惜,我的大学生活不会如此的充实。 最后,感谢

40、曾经教导过我的所有代课老师们,你们辛苦了。也由衷地感谢为评阅本论文而付出宝贵时间和辛勤汗水的专家和教授们。参考文献1 王东锋,王会良,董冠强.单片机C语言应用(yngyng)100例.电子(dinz)工业出版社,2009年。 2 宋戈等.51单片机应用开发(kif)范例大全.人民邮电出版社,2010年。 3 郑锋等.51单片机典型应用开发范例大全.中国铁道出版社,2011年。4 周润景等.单片机电路设计、分析与制作.机械工业出版社,2011年。5 徐士良C语言程序设计教程人民邮电出版社,2001年。6 彭为.单片机典型系统设计实例精讲.电子工业出版社,2006年。7 余发山,王福忠.单片机原理

41、及应用技术.中国矿业大学出版社,2008年。8 何立民.单片机高级教程.第1版北京航空航天大学出版社,2001年。9 徐金增.单片机编程仿真实验系统设计与实现.山东师范大学出版社,2009年。10 江志红.51单片机技术与应用系统开发.清华大学出版社,2008年。附录(fl)1 系统电路图电路图附录(fl)2 系统程序#ifndef _LCD_H_#define _LCD_H_/*当使用的是4位数据传输的时候(sh hou)定义*/#define LCD1602_4PINS/*包含(bohn)头文件*/#include#define uint unsigned int #define ucha

42、r unsigned char/*PIN口定义*/#define LCD1602_DATAPINS P0sbit LCD1602_E=P13;sbit LCD1602_RW=P12;sbit LCD1602_RS=P11;/*函数声明*/void Delay1us(uint a); /*在51单片机12MHZ时钟下的延时函数*/void LCD1602_WriteCom(uchar com); /*LCD1602写入8位命令子函数*/void LCD1602_WriteData(uchar dat); /*LCD1602写入8位数据子函数*/void LCD1602_Init();/*LCD1

43、602初始化子程序*/ #endif#includelcd.h/* 函数(hnsh)名 : Delay1us* 函数(hnsh)功能 : 延时函数,延时1us* 输入(shr) : a* 输出 : 无*/void Delay1us(uint a)uint b,c;for(c=a;c0;c-) for(b=10;b0;b-);/* 函数名 : LCD1602_WriteCom* 函数功能 : 向LCD写入一个字节的命令* 输入 : com* 输出 : 无*/#ifndef LCD1602_4PINS /当没有定义这个LCD1602_4PINS时void LCD1602_WriteCom(ucha

44、r com) /写入命令LCD1602_E=0;LCD1602_RS=0;LCD1602_RW=0;LCD1602_DATAPINS=com;Delay1us(10);LCD1602_E=1;Delay1us(10);LCD1602_E=0;#else void LCD1602_WriteCom(uchar com) /写入命令(mng lng)LCD1602_E=0;LCD1602_RS=0;LCD1602_RW=0;LCD1602_DATAPINS=com;/由于(yuy)4位的接线是接到P0口的高四位,所以传送高四位不用改Delay1us(10);LCD1602_E=1;Delay1us

45、(10);LCD1602_E=0;Delay1us(10);LCD1602_DATAPINS=com4;Delay1us(10);LCD1602_E=1;Delay1us(10);LCD1602_E=0;#endif/* 函数(hnsh)名 : LCD1602_WriteData* 函数功能 : 向LCD写入一个字节的数据* 输入 : dat* 输出 : 无*/ #ifndef LCD1602_4PINS void LCD1602_WriteData(uchar dat)/写入数据LCD1602_E=0;LCD1602_RS=1;LCD1602_RW=0;LCD1602_DATAPINS=da

46、t;Delay1us(10);LCD1602_E=1;Delay1us(10);LCD1602_E=0;#elsevoid LCD1602_WriteData(uchar dat)/写入数据(shj)LCD1602_E=0;LCD1602_RS=1;LCD1602_RW=0;LCD1602_DATAPINS=dat;/由于4位的接线(ji xin)是接到P0口的高四位,所以传送高四位不用改Delay1us(10);LCD1602_E=1;Delay1us(10);LCD1602_E=0;LCD1602_DATAPINS=dat4;Delay1us(10);LCD1602_E=1;Delay1u

47、s(10);LCD1602_E=0;#endif/* 函数(hnsh)名 : LCD1602_Init()* 函数功能 : 初始化LCD屏* 输入 : 无* 输出 : 无*/ #ifndefLCD1602_4PINSvoid LCD1602_Init() /LCD初始化子程序 LCD1602_WriteCom(0 x38); /开显示(xinsh)LCD1602_WriteCom(0 x0c); /开显示(xinsh)不显示光标LCD1602_WriteCom(0 x06); /写一个(y )指针加1LCD1602_WriteCom(0 x01); /清屏LCD1602_WriteCom(0

48、x80); /设置数据指针起点#elsevoid LCD1602_Init() /LCD初始化子程序LCD1602_WriteCom(0 x32); /将8位总线转为4位总线LCD1602_WriteCom(0 x28); /在四位线下的初始化LCD1602_WriteCom(0 x0c); /开显示不显示光标LCD1602_WriteCom(0 x06); /写一个指针加1LCD1602_WriteCom(0 x01); /清屏LCD1602_WriteCom(0 x80); /设置数据指针起点#endif#include#includelcd.h#define uint unsigned

49、int #define uchar unsigned char#define GPIO_KEY P2sbit beer=P10;uchar wel16= welcome ;uchar designer16=Designer:Tang MH;uchar pass9=Password:;uchar lcd_open4=OPen;uchar lcd_error=Error InPutAgain;uchar newpass=new password:;uchar xing=*;uchar num=*123456789:0;uchar range=Out of range;uchar successfu

50、l=ChangeSuccessful;uchar write_mima;uchar read_mima=1,1,1,1,1,1;uchar weizhi=0 x40,0 x41,0 x42,0 x43,0 x44,0 x45,0 x46,0 x47,0 x48,0 x49;void Delay10ms(); /延时10msvoid Delays(); /延时s/* 函数(hnsh)名 : Delay10ms* 函数(hnsh)功能 : 延时函数,延时10ms* 输入(shr) : 无* 输出 : 无*/void Delay10ms(void) /误差 0us unsigned char a,b

51、,c; for(c=1;c0;c-) for(b=38;b0;b-) for(a=130;a0;a-);/* 函数名 : Delay1ms* 函数功能 : 延时函数,延时1ms* 输入 : 无* 输出 : 无*/void Delay1ms(void) /误差 0us unsigned char a; for(a=50;a0;a-);/* 函数(hnsh)名 : Delays* 函数(hnsh)功能 : 延时函数,延时0.5s* 输入(shr) : 无* 输出 : 无*/void Delays(int i) /误差 0uslong int j,k;for(j=0;ji;j+)for(k=0;k5

52、0;k+)Delay10ms(); /* 函数名 : KeyDown* 函数功能 : 检测有按键按下并读取键值* 输入 : 无* 输出 : 无*/int KeyDown()uchar a=0,KeyValue=0;GPIO_KEY=0 x0f;if(GPIO_KEY!=0 x0f)/读取按键是否按下Delay10ms();/延时1ms进行(jnxng)消抖if(GPIO_KEY!=0 x0f)/再次检测键盘(jinpn)是否按下 GPIO_KEY=0X0F; /测试(csh)列 switch(GPIO_KEY)case(0X0b):KeyValue=3;break;case(0X0d): Ke

53、yValue=2;break;case(0X0e):KeyValue=1;break;GPIO_KEY=0XF0; /测试行switch(GPIO_KEY)case(0X70):KeyValue=KeyValue;break;case(0Xb0):KeyValue=KeyValue+3;break;case(0Xd0): KeyValue=KeyValue+6;break;case(0Xe0):KeyValue=KeyValue+9;break; while(a50)&(GPIO_KEY!=0 xf0) /检测按键松手检测Delay10ms();a+; if(KeyValue!=0) beer

54、=0; Delay10ms();Delay10ms();Delay10ms(); beer=1;return KeyValue;/* 函数(hnsh)名 : welcome* 函数功能(gngnng) : lcd1602显示welcome* 输入(shr) : 无* 输出 : 无*/void welcome() uchar i;LCD1602_WriteCom(0 x01);LCD1602_WriteCom(0 x80);for(i=0;i16;i+)LCD1602_WriteData(weli);LCD1602_WriteCom(0 x80+0 x40);for(i=0;i16;i+)LCD

55、1602_WriteData(designeri);/* 函数名 : password* 函数功能 : lcd1602显示password* 输入 : 无* 输出 : 无*/void password()uchar i;LCD1602_WriteCom(0 x01);LCD1602_WriteCom(0 x80);for(i=0;i9;i+)LCD1602_WriteData(passi);/* 函数(hnsh)名 : out_of_range* 函数(hnsh)功能 : lcd1602显示out of range* 输入(shr) : 无* 输出 : 无*/void out_of_range()uchar i;LCD1602_WriteCom(0 x01);LCD1602_WriteCom(0 x80);for(i=0;i12;i+)LCD1602_WriteData(rangei);/* 函数名 : newpassword* 函数功能 : lcd1602显示new password* 输入 : 无* 输出 : 无*/void newpassword()uchar i;LCD1602_WriteCom(0 x01);LCD1602_WriteCom(0 x80);for(i=0;i13;i+)LCD1602_WriteData(newpassi);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论