版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、金金 华华 职职 业业 技技 术术 学学 院院 J J I I N N H H U U A A P P O O L L Y Y T T E E C C H H N N I I C C 毕业教学环节成果毕业教学环节成果 (2015 届) 题 目 学 院 专 业 班 级 学 号 姓 名 指导教师 2015 年 1 月 1 日 金华职业技术学院毕业教学成果金华职业技术学院毕业教学成果 目目 录录 摘要1 英文摘要1 引言2 1 设计方案选择3 1.1 设计概述3 1.2 设计要求及功能3 1.3 设计方案论证和比较3 2 系统硬件框图及单元电路的模块设计4 2.1 主控制模块设计4 2.1.1 ST
2、C89C52 单片机的介绍4 2.1.2 晶振电路介绍5 2.1.3 复位电路介绍5 2.2 显示模块设计6 2.3 键盘输入模块设计6 2.4 继电器驱动模块设计7 2.5 声光报警提示模块设计8 2.6 电源模块设计8 3 系统软件设计9 3.1 程序结构分析9 3.2 系统程序流程图9 3.3 键盘功能程序流程图9 3.4 确认密码程序流程图10 4 系统联机调试与分析11 结论与谢辞12 参考文献13 附件 1元器件清单14 附件 2电路仿真图15 附件 3原理图及 PCB 图16 附件 4实物图17 附件 5程序18 电子密码锁的设计电子密码锁的设计 信息工程学院应用电子技术专业信息
3、工程学院应用电子技术专业 曾天昊曾天昊 摘要摘要: : 本文介绍一种基于 STC89C52 单片机的电子密码锁,采用矩阵式键盘作为输入设 备,通过 LCD 显示数据。用户使用键盘输入密码,如果输入密码正确,则由单片机控 制继电器驱动电子锁弹开,从而实现电子密码锁的功能。可以自行修改密码,并有恢 复用户初始密码的功能。开锁后 LCD 将显示时间,可作电子钟使用。 关键词关键词: : 单片机 密码锁 时间显示 矩阵键盘 The Design of the Electronic Combination Lock (Major of Applied Electronic Technology,Info
4、rmation and Engineering college, JinHua College of Vocation And Technology, Zeng tian hao) Abstract: This paper introduces a kind of Combination lock based on STC89C51 chip microcomputer,the matrix type keyboard as an input device,display data by LCD.Users to use the keyboard to enter a password,if
5、the input password is correct,is controlled by a single chip microcomputer relay drive electronic lock open,so as to realize the electronic password lock function.You can modify the password,and restore the initial password. When the lock to open the LCD will display the time, can be used as electro
6、nic clock. Keyword: MCU Combination lock Display time Matrix keyboard 引言引言 随着社会物质财富的日益增长,安全防盗已成为社会问题。在日常的生活和工作 中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多 以加锁的办法来解决。人们常需携带多把钥匙, 使用极不方便, 如果钥匙丢失,安全 性即大打折扣。且传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,无法满足 人们的需要。如何实现防盗和安全这一问题也变的尤其的突出,而锁自古以来就是把 门户的将军,人们对其要求比较高,不仅要能够安全的防盗,而且还要使用方
7、便,这 是制锁者长期以来研制的主题。而电子锁由于用密码代替钥匙其保密性高,使用灵活 性好,安全系数高,受到了广大用户的亲呢。 当今社会随着计算机的迅猛发展,数字电子技术已经进入人们生活的各个领域, 在国内外,电子产品的更新可谓如雨后的春笋层出不群,更多的电子产品也越来越多 的应用于安全防范领域。具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码 锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁有了巨大的变革, 无论在技术上还是在性能上都大大提高一步。现代的电子技术与机械技术相结合,产 生了一大批的智能锁。随着大规模集成电路技术的发展,特别是单片机的问世,出现 了带微处理器的智能密码
8、锁,使密码锁具有很高的安全性、可靠性,应用日益广泛。 目前这类密码锁种类繁多,且各具特色,像指纹锁、IC 卡辨识、遥控锁、声控锁等。 我相信这类产品会在今后的各个领域逐渐普及起来,为人们的生活带来更多的安全和 便利。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安 全性已大大超过了机械锁。本文介绍的电子密码锁由单片机系统、矩阵键盘、LCD 显示 等系统组成,能完成密码输入开锁的功能。设计成本低廉,功能实用,可广泛用于车辆、 大门、保险柜等各种需上锁的场所。 1 系统方案设计系统方案设计 1.11.1 设计概述设计概述 选用 STC89C52 单片机作为主控制器件,通过 4*
9、4 矩阵式键盘作为输入设备输入密 码,如果正确则由单片机控制继电器驱动电子锁自动弹开。开锁后 LCD 将显示年月日、 时分秒、星期,作电子钟使用。用户还可自行修改密码。 1.21.2 设计要求及功能设计要求及功能 1)使用 LCD 显示器显示。显示格式为 16x2 点阵式,第一行显示“Input password:” 即输入密码,第二行则会显示输入的密码,为增加安全性,密码将成*型显示。 2)4x4 矩阵键盘包括 09 数字键和 A、B、C、D、E、F 六个功能键。A 为输入密码键, B 为修改密码键,C 为位选键,D 为加一键,E 为减一键,F 为回复初始密码键。初始密 码为“” 。 3)输
10、入密码正确继电器开锁,LED 亮起,LCD 将显示“Password ok!”的字样,5 秒后 进入时钟显示界面,显示年月日、时分秒、星期,可使用 C、D、E 三个键改变时间。 4)输入密码错误 LCD 将显示“Password error!”的字样,连续错误三次会显示 “Lock screen!”的字样,并自锁 30 秒。 5)进入时钟显示界面,按 B 键 LCD 将显示“Set Password:”的字样,输入新密码后 再按 B 键确认,完成密码的修改。 1.31.3 设计方案论证和比较设计方案论证和比较 实现电子密码锁的方法主要有以下几种。 方案一:采用纯硬件电路。该系统的优点在于速度较
11、快,不需要编程,但是设计 复杂、灵活性较小、线路复杂、调试和安装不方便,实现难度大。 方案二:FPGA/CPLD 或采用带有 IP 内核的 FPGA/CPLD 方式。即用 FPGA/CPLD 完成采集、存储、显示等功能,由 IP 核实现人机交互等功能。这种方案的优点在于系 统结构紧凑,可以实现复杂的控制,操作方便;缺点是调试过程复杂,成本较高。 方案三:以单片机为核心。即用单片机完成人机界面、系统控制、数据处理,密 码存储,由矩阵键盘模块完成用户输入采集等。这种方案克服了方案一、二的缺点, 所以本此设计使用基于单片机的方案实现本次电子密码锁的设计。 综上所述,本次设计从各方面考虑,采用方案三最
12、为合理,相对设计较简单,容 易实现,而且性能等完全满足题设要求,在现有资源的条件下,本次设计选定使用方 案三。 2 系统硬件框图及单元电路的模块设计系统硬件框图及单元电路的模块设计 电子密码锁系统核心用 STC89C52 单片机控制,因为该型单片机价格便宜,功能比 较强大,性价比高,而且在市场上很容易买到。密码输入按键为 4*4 矩阵键盘 16 个按 键实现密码输入,有 09 数字键和 A、B、C、D、E、F 六个功能键。09 做为密码输 入,A 为输入密码键,B 为修改密码键,C 为位选键,D 为加一键,E 为减一键,F 为回 复初始密码键。初始密码为“” ,使用闪存防止掉电丢失数据。液晶显
13、示采用 1602LCD 实时显示工作状态。 综上所述,本系统的电路设计方框图如图 2-1 所示。 STC8 9C52 矩阵按键 输入模块 显示模块 继电器驱 动模块 电源模块 声光报警 提示模块 图 2-1 电子密码锁电路总体设计方案 2.12.1 主控制模块设计主控制模块设计 2.1.1 STC89C52 单片机的介绍 STC89C52 是 STC 公司生产的一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系 统可编程 Flash 存储器。STC89C52 使用经典的 MCS-51 内核,但做了很多的改进使得芯 片具有传统 51 单片机不具备的功能。拥有 8K 字节程序存储空间,5
14、12 字节数据存储空 间,内带 2K 字节 EEPROM 存储空间,可直接使用串口下载。另外 STC89C52 可降至 0Hz 静 态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、 定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被 冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率 35MHz,6T/12T 可选。STC89C52 单片机的最小系统和引脚如图 2-2 所示。 图 2-2 主控制最小系统电路 2.1.2 晶振电路介绍 晶振为单片机提供时钟信号。单片机 XIAL1 和 XIAL2 分别接 22
15、pF 的电容,中间再 并个 11.0592MHZ 的晶振,形成单片机的晶振电路如图 2-3 所示。 图 2-3 晶振电路 2.1.3 复位电路介绍 单片机在启动时都需要复位,以使 CPU 及系统各部件处于确定的初始状态,并从 初态开始工作。89 系列单片机的复位信号是从 RST 引脚输入到芯片内的施密特触发器 中的。当系统处于正常工作状态时,且振荡器稳定后,如果 RST 引脚上有一个高电平 并维持 2 个机器周期(24 个振荡周期)以上,则 CPU 就可以响应并将系统复位。单片机 系统的复位方式有:手动按钮复位和上电复位。根据实际情况选择如图 2-4 所示的复 位电路。 图 2-4 复位电路
16、2.22.2 显示模块设计显示模块设计 LCD1602 显示器具有体积小、功耗低、显示内容丰富、超薄轻巧等优点。显示器 由 32 个字符点阵块组成,每个字符点阵块由 5*7 或 5*10 个点阵组成,可以显示 ASCII 码表中的所有可视的字符,采用 5V 电源供电。8 位双向数据总线与单片机 P0 口连接,RS(寄存器选择) 、R/W(读/写信号) 、EN/E(显示器模块使能信号输入端)和单 片机 P2 口连接,电路如图 2-5 所示。 图 2-5 显示电路 2.32.3键盘输入模块设计键盘输入模块设计 键盘输入电路采用的是 4*4 的矩阵键盘,因为本设计所用到的按键数量较多而不 适合用独立
17、按键式键盘因此采用的是矩阵式按键键盘,它由行和列组成,也称行列式 键盘,按键位于行线和列线的交叉点上,密码锁的密码输入由键盘输入完成,与独立 式按键键盘相比,要节省很多 I/O 口。本设计中使用的这个 4*4 键盘不但能完成密码 的输入还能作特别功能键使用,设置功能等。键盘的每个按键功能在程序设计中设置。 平时无按键按下时,行线电平状态将由与此电平相连的列线电平决定。列线电平如果 为低,则行线电平为低;列线电平为高,则行线电平也为高。这是识别矩阵键盘是否 被按下的关键所在。由于矩阵键盘中的行、列为多键公用,各按键均影响该按键所在 行和列的电平,因此,各按键彼此将相互发生影响,所以必须将行列线信
18、号配合起来, 并作适当的处理,这样才能决定闭合键的位置。其按键结构以及与单片机 P3 口接法如 图 2-7 所示。 图 2-6 键盘电路接法 2.42.4 继电器驱动模块设计继电器驱动模块设计 使用 SONGLE/松乐牌继电器,5V 直流供电,同时其磁场会对单片机的工作造成影 响,应放置在离单片机较远的位置。密码输入正确时,单片机发送信号给继电器,继 电器吸合(接常开触点),使解锁机构通电,打开门锁。 图 2-7 继电器驱动电路 2.52.5 声光报警提示模块设计声光报警提示模块设计 每按下键盘上的按钮,蜂鸣器就会响起。密码输入正确时,配合继电器 LED 会点 亮。确保了密码锁的实用性和准确性
19、。 图 2-8 声光报警电路 2.62.6 电源模块设计电源模块设计 使用 USB 接口数据线连接插头给系统供电,实物图如图 2-8 所示。 图 2-9 电源连接图 3 3 系统软件设计系统软件设计 3.13.1 程序结构分析程序结构分析 本系统软件设计由主程序、初始化程序、LCD显示程序、键盘扫描程序、键盘功能 程序、确认密码程序、重置密码程序、设置密码程序、EEPROM读写程序、校时程序和 延时程序等组成。 3.23.2系统程序流程图系统程序流程图 主程序:先执行初始化程序,然后启动程序,执行键盘扫描程序,根据各个功能 键执行相应的功能。 初始化 开始 显示程序 键盘程序 图 3-1 主程
20、序流程图 3.33.3 键盘功能程序键盘功能程序流程图流程图 键盘功能程序:先扫描各个 IO 口,确定哪个键按下,然后调用相应的子程序。 键盘扫描 开始 键值=“09”输入密码程序 键值=“确认”确认密码程序 键值=“重置”重置密码程序 显示标志位置1 键值=“设置”设置密码程序 键值=“校时” 键值=“加减” 校时子程序 加减子程序 返回 NY NN NN NN Y Y Y Y Y Y 图 3-2 键盘功能程序流程图 3.43.4 确认确认密码密码程序程序流程图流程图 确认密码程序:密码正确,则 LED 点亮、开锁。不正确三次,则自锁 30 秒。 开始 键盘扫描 密码正确 LED点亮、开锁密
21、码不正确3次 自锁30s 返回 Y Y N N 键盘扫描 图 3-3 确认密码流程图 4 4 系统联机调试与分析系统联机调试与分析 调试输入密码时,显示器显示乱码现象。进行密码比较时,不论输入任何密码 (包括正确密码) ,都没有开锁。经过程序检查,发现有两处错误:错误之一是密码的 初始地址没给;错误之二是液晶初始化和清零程序有问题。还有是在调试的过程中遇 到不少问题,后来改正后,显示和按键统一。在整个程序设计是使用 C 语言,通过改 正以上错误及对硬件电路做出调整后,再进行通电调试,最终在实物上调试完成。 在本设计中,程序设计与编程时通过看书上的资料,通过老师和同学的帮助,完 成的比较顺利。
22、结论与谢辞结论与谢辞 在论文完成之际,我要忠心的感谢身边给予过我莫大帮助的老师、同学和朋友, 致以他们最诚挚的谢意。 我在导师林洁老师她的亲切关怀和悉心指导下最终完成了我的毕业设计。在我做 论文的过程中林老师总是不厌其烦的给我进行论文指导,为我指点迷津进,修改论文, 帮我开拓了研究的思路。这一过程占用了她很多的私人时间,但她仍不忘记在指导论 文的过程中给我提一些可行性的意见和建议,这让我在整个论文的撰写过程中学习到 了很多关于课题研究方面的知识,再次感谢我的指导老师林老师。 真诚的感谢参加论文评审和答辩的各位老师,感谢你们的辛勤劳动和即将从你们 那里获得的有益教诲,感谢同学们在设计中给予我的指
23、导和帮助,在我遇到难题的时 候能够乐意、耐心地同我一起讨论、分析问题和查阅资料,为我提供我没能买到的电 子元件、焊接的电路板子和测试用的一些实验仪器,并且帮助我解决了不少在实物制 作过程中出现的技术问题。 最后,感谢所有的学校领导、老师和我的同学,在这三年让我得到了人生最大的 一笔财富。在此,也对他们表示衷心感谢。感谢母校对我的培养,我要用我的所学, 来回报母校,回报社会。 参考文献参考文献 1 马忠梅等.单片机的 C 语言应用程序设计.北京航空航天大学出版社.2004. 2 先锋工作室.单片机程序设计实例.清华大学出版社.2003.3. 3 马汝星.单片机应用系统设计与制作.人民邮电出版社,
24、2010 4 李广弟.单片机基础.北航出版社.2010 5 郭惠等.单片机 C 语言程序设计完全自学手册.电子工业出版社,2008.10. 6 郑惠群等.电子产品生产工艺与管理实训.浙江科学技术出版社.2012.8. 7 余红娟等.电子电路分析与调试实践指导.北京人民邮电出版社.2010.5. 8 余红娟等.电子技术基本技能.北京人民邮电出版社.2009.10. 附件附件 1元器件清单元器件清单 物质名称规格型号数量(单位) 单片机 STC89C52 1 块 USB 接口 2.0 1 个 液晶屏 LCD1602 1 块 电解电容 10uF 1 个 瓷片电容 22pF 2 个 按键 SW-PB
25、16 只 三极管 8550 2 个 蜂鸣器 1.6V 1 个 LED 灯红1 个 晶振 11M 1 个 电位器 50K 1 个 电阻 10K 2 个 电阻 1K 1 个 排阻 RESPACK-8 1 个 继电器 5V 1 个 附件附件 2电路仿真图电路仿真图 附件附件 3原理图原理图及及 PCBPCB 图图 附件附件 4实物图实物图 附件附件 5程序程序 #include /调用头文件(单片机内部的寄存器定义) #include /调用头文件(单片机内部的寄存器定义) #include stc89c5x_eeprom.h #include stc89c5x.h #define uchar un
26、signed char #define uint unsigned int sbit LED=P21; char SS,MM,HH,N,Y,R; char H,L; char flag=0; uchar countt=0; uchar counter1,x; uchar table15;/存储 A C 参数值 基础运算数据 单个最大 6 位 long A;/A 结果 long GG=0; sbit JDQ=P10; /*模块变量定义区*/ char SS,MM,HH,XQ,DA,MO,YE; uint countt1=0;/定义秒钟产生的计数变量。 char counter11=0;/用于记录
27、 K1 键选择的是哪个被设置变量 uchar key_value=0;/用于记录键盘扫描获得的键值 /* - 函数名称:timer0_init() - 隶属模块:time.h - 函数属性:内部 - 参数说明:无返回值,无带入参数 - 返回说明:无 - 功能描述:对定时器 T0 进行初始化. */ void timer0_init()/定时器 T0 的初始化程序 TMOD=TMOD|0X01;/0000 0001 T0 工作于方式 1,定时模式 TH0=(65536-50000)/256; TL0=(65536-50000)%256;/定时 50MS EA=1;ET0=1;/开启总中断,和分中
28、断 TR0=1;/启动定时器 T0 /* - 函数名称:timer0() interrupt 1 - 隶属模块:time.h - 函数属性:内部 - 参数说明:无返回值,无带入参数 - 返回说明:无 - 功能描述:中断自动响应函数,无需调用.中断产生成秒、分、时信息 */ void timer0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256;/一定要重新赋初值 countt1+; if(countt1=20)/如果 count=1000 表示产生了 1 秒钟 countt1=0;/清零计数变量,以便下一次计数使用 SS+;
29、 if(SS59) SS=0; MM+; if(MM59) MM=0; HH+; if(HH23) HH=0; DA+; if(DA30) DA=1; MO+; if(MO12) MO=1; YE+; if(YE99) YE=0; /* - 函数名称:dis_timer() - 隶属模块:time.h - 函数属性:内部 - 参数说明:无返回值,无带入参数 - 返回说明:无 - 功能描述:系统时钟显示界面、设置时钟显示界面 */ void dis_timer()/时钟日期显示函数 uchar m;/定义一个变量用于闪烁临时计数 m=SS/通过 m 变量的取值来实现变量闪烁 lcd_xy_put
30、s(0,0,20);/显示固定字符 20 /*-“年份”显示代码部分-*/ if(counter11=7)/年变量处于设置状态,1 秒钟闪烁一次 if(m=0)/如果 m=0,就将年显示出来 lcd_goto_xy(2,0);lcd_number(YE/10);lcd_number(YE%10); else /则显示空格字符。 lcd_goto_xy(2,0);lcd_putc( );lcd_putc( ); else /否则年变量不处于修改状态,直接显示年 lcd_goto_xy(2,0);lcd_number(YE/10);lcd_number(YE%10); /*-“间隔符”显示代码部分
31、-*/ lcd_putc(/);/间隔符显示 /*-“月份”显示代码部分-*/ if(counter11=6)/月变量处于设置状态,1 秒钟闪烁一次 if(m=0)/如果 m=0,就将月显示出来 lcd_goto_xy(5,0);lcd_number(MO/10);lcd_number(MO%10); else /则显示空格字符。 lcd_goto_xy(5,0);lcd_putc( );lcd_putc( ); else /否则年变量不处于修改状态,直接显示月 lcd_goto_xy(5,0);lcd_number(MO/10);lcd_number(MO%10); /*-“间隔符”显示代码
32、部分-*/ lcd_putc(/);/间隔符显示 /*-“日”显示代码部分-*/ if(counter11=5)/日变量处于设置状态,1 秒钟闪烁一次 if(m=0)/如果 m=0,就将日显示出来 lcd_goto_xy(8,0);lcd_number(DA/10);lcd_number(DA%10); else /则显示空格字符。 lcd_goto_xy(8,0);lcd_putc( );lcd_putc( ); else /否则年变量不处于修改状态,直接显示月 lcd_goto_xy(8,0);lcd_number(DA/10);lcd_number(DA%10); /*-“间隔字符”显示
33、代码部分-*/ lcd_puts( WEEK);/字符显示 /*-“星期”显示代码部分-*/ if(counter11=4)/星期变量处于设置状态,1 秒钟闪烁一次 if(m=0)/如果 m=0,就将日显示出来 lcd_goto_xy(15,0);lcd_number(XQ%10); else /则显示空格字符。 lcd_goto_xy(15,0);lcd_putc( ); else /否则年变量不处于修改状态,直接显示月 lcd_goto_xy(15,0);lcd_number(XQ%10); /*-“小时”显示代码部分-*/ if(counter11=3)/小时变量处于设置状态,1 秒钟闪
34、烁一次 if(m=0)/如果 m=0,就将小时显示出来 lcd_goto_xy(4,1);lcd_number(HH/10);lcd_number(HH%10); else /则显示空格字符。 lcd_goto_xy(4,1);lcd_putc( );lcd_putc( ); else /否则年变量不处于修改状态,直接显示月 lcd_goto_xy(4,1);lcd_number(HH/10);lcd_number(HH%10); /*-“冒号”显示代码部分-*/ if(counter11=0)/如果不处于设置状态冒号才交替闪烁 if(m=0)lcd_putc(:); else lcd_put
35、c( ); else lcd_putc(:);/否则处于设置状态下,直接显示不闪烁提示 /*-“分钟”显示代码部分-*/ if(counter11=2)/分钟变量处于设置状态,1 秒钟闪烁一次 if(m=0)/如果 m=0,就将分钟显示出来 lcd_goto_xy(7,1);lcd_number(MM/10);lcd_number(MM%10); else /则显示空格字符。 lcd_goto_xy(7,1);lcd_putc( );lcd_putc( ); else /否则年变量不处于修改状态,直接显示分钟 lcd_goto_xy(7,1);lcd_number(MM/10);lcd_num
36、ber(MM%10); /*-“冒号”显示代码部分-*/ if(counter11=0)/如果不处于设置状态冒号才交替闪烁 if(m=0)lcd_putc(:); else lcd_putc( ); else lcd_putc(:);/否则处于设置状态下,直接显示不闪烁提示 /*-“秒钟”显示代码部分-*/ if(counter11=1)/秒钟变量处于设置状态,1 秒钟闪烁一次 if(m=0)/如果 m=0,就将秒钟显示出来 lcd_goto_xy(10,1);lcd_number(SS/10);lcd_number(SS%10); else /则显示空格字符。 lcd_goto_xy(10,
37、1);lcd_putc( );lcd_putc( ); else /否则年变量不处于修改状态,直接显示分钟 lcd_goto_xy(10,1);lcd_number(SS/10);lcd_number(SS%10); /* - 函数名称:set_time - 隶属模块:sys_app.h - 函数属性:内部 - 参数说明:无返回值,无带入参数无 - 返回说明:无 - 功能描述:系统时间设置函数,通过此函数设置时钟、日期功能。 */ void set_time(void)/系统菜单设置时间函数 /*时钟设置界面显示*/ dis_timer(); /*键盘扫描获取键值*/ num=keyscan(
38、);/反复扫描 4*4 键盘获得按键参数 /*判断是否是一次有效的按键按下*/ /*-被设置变量选择代码部分-*/ if(num=12)/如果 key_value=0 代表“选择设置参数键按下” num=255; counter11+;/让记录设置的参数的变量值+ if(counter117) counter11=0; /因为只有 7 个参数需要修改 /*-秒钟设置程序部分代码部分-*/ if(counter11=1) if(num=13) /+ SS+;if(SS59) SS=59;num=255; if(num=14) /- SS-;if(SS59) MM=59;num=255; if(n
39、um=14) /- MM-;if(MM23) HH=23;num=255; if(num=14) /- HH-;if(HH7) XQ=7;num=255; if(num=14)/- XQ-;if(XQ31) HH=31;num=255; if(num=14)/_ DA-;if(DA12) MO=12;num=255; if(num=14)/- MO-;if(MO99) YE=99;num=255; if(num=14)/- YE-;if(YE0) YE=0;num=255; void change_word() if(num=11) num=255;lcd_init();table10=tab
40、le11=table12=table13=table14=table15=0;A=GG=x =counter1=0; Beep_key(); lcd_goto_xy(0,0); lcd_puts(Set password:); GG=0; while(1) num=keyscan();/反复扫描 4*4 键盘获得按键参数 if(num10)BB=RR=0;lcd_init();table10=table11=table12=table13=table14=table1 5=0;LED=1;A=x=counter1=0;num=255;break; if(num=15) Beep_key();l
41、cd_init();MM=HH=SS=0;table10=table11=table12=table13=table14=t able15=0;LED=1;A=x=counter1=0;num=255;break; RR+; if(RR=1000) RR=0; BB+; void mimasuo() lcd_goto_xy(0,2); lcd_puts(Input password:); if(num10) MM+; if(MM59) MM=0; HH+; if(HH23) HH=MM=SS=0; void main() N=12;Y=5;R=16;HH=22;MM=58;SS=GG=0; l
42、cd_init(); timer1_int(); num=255; H=15; L=5; LED=beep=1; P3=0XFF; while(1) mimasuo(); num=keyscan();/反复扫描 4*4 键盘获得按键参数 if(num=15) num=255; Beep_key();SectorErase(0X2000);byte_write(0X2000, 0); #ifndef _lcd1602_H_ #define _lcd1602_H_ #include #include stc89c5x.h #define uchar unsigned char #define ui
43、nt unsigned int sbit rs= P27; sbit rw = P26; sbit ep = P25; code uchar LCDnumber=; void delay22(unsigned char ms) unsigned char i; while(ms-) for(i = 0; i0;a-)/声音的长度 beep = beep; delay13(150); /音调设置延时 beep = 1; /音乐结束后扬声器拉高关闭 void delay(unsigned int tc) /按键延时程序 while( tc != 0 ) unsigned int i; for(i=0; i100; i+); tc-; unsigned char keyscan() /* jianpansaomiao */ /*第一行键盘的检测*/ P3=0 xfe; /设置 P1 口的电平为,也就是让 P1.0 口为低电平,其他的口为高电 平 temp=P3; /读取 P1 口的电平 temp=temp /P1 口的电平跟做与操作 while(temp!=0 xf0) /检测到第一行上有键盘按下去了 delay(5); /延时 5ms 用来消除按键的抖动 temp=P3; /再次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学排球教案集
- 企业采购管理规范与流程优化
- 浙江省科研机构聘用合同模板
- 石材加工机械招投标合同范例
- 企业与高校合作研发协议
- 古建筑修复监理工程师聘用条款
- 商业综合体招标密封条
- 大型活动搅拌车租赁协议
- 消防设施招投标奖励规定
- 机场物业招聘合同
- 2024-2025学年初中九年级数学上册期中测试卷及答案(人教版)
- 师范大学学术规范测试
- 混凝土路面工程监理实施细则
- 福建师范大学《数字摄像》2023-2024学年第一学期期末试卷
- 人教版2024新版七年级上册数学期中模拟测试卷(含答案解析)
- 2023年中级经济师《工商管理》真题及答案解析(11月12日下午)
- 2024中国石化校园招聘超1万人高频考题难、易错点模拟试题(共500题)附带答案详解
- 中职学考《哲学与人生》考试复习题库(含答案)
- 电梯日管控、周排查、月调度内容表格
- 房屋施工安全协议书
- (完整版)六宫格数独100题
评论
0/150
提交评论