(完整版)基于单片机的语音电子门锁毕业设计_第1页
(完整版)基于单片机的语音电子门锁毕业设计_第2页
(完整版)基于单片机的语音电子门锁毕业设计_第3页
(完整版)基于单片机的语音电子门锁毕业设计_第4页
(完整版)基于单片机的语音电子门锁毕业设计_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

1、摘要现今社会,随着生活的进步电子业的蓬勃发展,单片机应用已经成为电子产品研制以及开发中首选的微控制器。随着人们的生活水平不断提高,怎样实现家庭的防盗这一问题也就变的尤为突出,采用传统的机械锁结构由于其构造简单,安全性能又低,已经无法满足人们的日常需要。本文从实用、可靠的角度出发,采用宏晶科技有限公司的单片机STC89C52与 STC11L08XE作为主控芯片,其中STC11L08XE单片机主要负责语音识别处理功能,STC89C52单片机主要负责键盘、显示及密码处理等功能,最终控制门的打开或者关闭由STC11L08XE单片机最终输出。通过这两款的单片机结合外围的键盘输入、报警、显示等电路,本文的

2、单片机程序都用 C 语言编写,硬件电路设计使用pro 99se 设计。设计的语音电子门锁可以多次的更改密码,并且具有报警功能。经实验证明,该密码锁具有设计方法合理,安全可靠,成本低,实用等特点,符合住宅、办公室用锁要求,具有推广价值。关键词 : 密码锁 语音识别单片机 报警1 引言1.1 语音电子门锁简介语音电子密码锁是一种可以通过密码输入或者语音识别来控制外扩电路工作,从而控制门锁机械开关的打开、闭合,完成开锁或者闭锁任务的电子设备。现在应用比较多的电子密码锁是以芯片为核心,通过编程来实现即单片机控制外围电路的语音电子密码锁。其安全性及可靠性已大大超过了普通的机械锁。其特点如下:1) 保密性

3、好,可靠性高,远远大于机械锁。随机开锁成功的几率几乎不可能。2) 密码随意可变,用户可以随时根据需要更改密码,防止固定密码被盗,同时也可以避免因为人员的更替等原因而使锁的保密功能下降。3) 错误密码输入保护功能,如果输入的密码错误超过三次时时,报警系统自动启动。4) 无活动机械零件,不会有磨损,这样使用的寿命就变长了。5) 使用的灵活性好,不像机械锁那样需要必须佩带钥匙才可以开锁。6) 语音电子密码锁操作非常简单,一用即会。1.2 语音电子门锁的发展趋势在日常的生活与工作当中,住宅、公司、单位等的安全防范以及单位的文件档案和财务报表等一些涉密资料的保存大多是以加锁的方式来解决。目前来看,门锁主

4、要还是用的弹子锁,这种方式的锁的钥匙很容易丢失;保险箱一般主要用的是机械密码锁,这种的结构较为复杂,制造的精度要求很高,成本也就很高,并且容易出现故障,人们常常需要随身携带多把钥匙,这样使用起来极不方便。如果钥匙丢失了那么安全性就会大打折扣。针对这些不同类型的锁具的缺点本设计用密码或者语音口令的方式代替传统的钥匙锁。它的出现给人们的生活提供了极大的方便,有非常广阔的市场前景。由于电子器件的限制,以前开发的一些电子密码门锁,其种类不多而且保密性又差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但很不安全,其硬件电路结构繁杂,分立元件较多,也有一些是使用早的2051 系列的单片机来做的

5、,这种的也是密码相对简单,很容易被破解。随着各种锁的出现,功能上日益强大,使用方面更加简便,安全性更强,从以前的单密码输入发展到现在的语音和电子密码双重的门锁,实现了真正的电子加密,用户只有通过密码或者是语音密钥才能打开锁具,如果用其他的办法是不能打开锁的。针对方便、安全等方面的需要许多的电子类型密码锁已经相继问世。但是这类产品一般都是针对特定的有效卡、指纹或者是声音等有效,并且不能实现通过远程来控制,只能适用在保密要求高而且只供个人使用的箱子、衣柜、房间等方面。由于字符、数字、人体生物特征、图形图像和时间等要素都可以成为钥匙的信息,那么将这些信息组合使用就能够使电子锁具有高度的安全保密性,比

6、如防范严密的金库,需要使用各种复合信息密码的电子锁,这样对盗贼来说是 “道高一尺、魔高一丈”。这些组合信息的使用使电子锁得到无穷的扩展,也能让产品多样化,对于用户来说是 “千挑百选、 自得其所”。 由此可以看出组合使用各种信息是电子锁以后发展的必然趋势。1.3 本设计实现的目标本设计采用单片机STC89C52与 STC11L08XE为主控芯片,结合一些外围电路,组成语音电子门锁,用户如果想要打开门锁,必需要先通过提供的键盘输入正确的密码才能将门锁打开,或者通过二级语音口令识别开门。如果密码输入错误蜂鸣器会有提示,为了提高实际安全性,设计当密码输入错误超过三次后将报警并且封锁键盘。密码可以由用户

7、登陆后由自己随意修改设定,设定密码长度为4 位。 修改密码只有门锁打开后才能修改密码。修改密码时要前后两次输入的新密码一致才能修改成功,修改成功后会有指示灯提示。语音识别开门时要首先说出一级加密的口令,其次再说出二级加密口令才能将门打开。1.4 设计方案的设计由于现在市面上的单片机种类很多,每种单片机都具有一定的优缺点,因此在选用时做了很多比较,最后比较合理的选择了STC单片机,以期获得最高的性价比。通常情况来说在选取单片机时要从以下几个方面考虑:存储器、性能、运行速度、定时计数器、IO口、模拟电路功能、串行接口、功耗、工作电压、抗干扰性、封装形式、保密性等,除了以上方面还有一些最基本参数比如

8、:中断源的优先级和数量、有没有低电压检测功能、工作温度范围、有无上电复位功能、单片机内有无时钟振荡器等。在开发过程中项目的开发还受到:编程器、开发工具、开发人员的适应性、开发成本、技术服务和支持等等因素。基于以上一些因素本设计选用单片机 STC89C52与 STC11L08XE两个单片机作为主控单片机。其中STC89C52单片机主要负责的功能是四位数码管的显示、按键设置密码、蜂鸣器报警。一些操作时的指示状态等;单片机STC11L08XE主要负责语音部分识别,及门锁控制的输出。本设计之所以选择用两个芯片是因为如果用一个芯片来完成,就需要用一个比较高端的芯片,而且管脚资源要足够多,Flash等要足

9、够大,这样处理起来才更容易,但是如果选择了这种芯片成本就会提高很多。而向本设计这样采用两个简单的单片机来做就既能照顾到成本,又能保证硬件资源够用。性价比还是很高的。当用户开锁时,先按键盘的开锁键,之后再按键盘的确定键来调整要设置密码的位,再通过增加键或者减小键来调整密码,当调整好后按下确定键,继续调整下一位,直到四位密码都输入完,按确定键瑞出键盘输入程序。如果密码输入正确则开锁,不正确蜂鸣器会发出短暂的一生响动要重新输入密码,如果连续输入三次密码错误那么就会发出报警。如果用户需要修改密码时,需要在输入密码正确后,继续输入两次新密码,只有这两次新密码一致时,新密码才修改成功。密码修改成功时会有绿

10、色的LED指示。2 单片机介绍2.1 单片机 STC89C52STC89C52R这个单片机是宏晶科技公司推出的新一代的低功耗、C高速并且有很强抗干扰的能力,它的指令代码兼容传统的老8051 单片机,可以 12 时钟机器周期或者是6 时钟机器周期的任意选择。2.1.1 单片机STC89C52的主要特性1. 这是一款增强型的8051 单片机, 6 时钟机器周期或者是12 时钟机器周期可以任意选择,其指令代码完全兼容传统8051 单片机的指令代码。2. 这种单片机的工作电压范围:5.5V 3.3V( 5V单片机) 或者3.8V2.0V( 3V单片机)。3. 它的工作频率范围:0 40MH,相对于普通

11、z8051 的 0 80MHz,实际上其工作频率可达48MH。z4. 用户的应用程序存储空间为8K 字节( Flash ) 。 片上集成了512字节数据存数区(RAM) 。6. 通用 IO 口有 32 个,复位后为:P1P2P3P4是准双向口弱上拉的,P0口是漏极开路输出口,当在作为总线扩展用时是不用加上拉电阻的,当作为 IO 口用时,需加若上拉电阻。7. ISP (在系统可编程)IAP(在应用可编程),不需要专用的编程器和专用仿真器,就可以通过串口(RxDP3.0,TxDP3.1)将用户程序直接下载到单片机里,数秒即可完成一片数据的写入操作。8. 新增了EEPRO功能。M9. 具有看门狗功能

12、。10. 片上共有3 个 16 位定时器计数器。即定时器T0、 T1、 T2定时器。11. 有 4路外部中断,包括低电平触发电路或下降沿中断,Power Down模式可以由外部的中断低电平方式触发进行中断唤醒。12. 片上有通用的异步通信串行口(UART) ,它还可以用定时器实现多个UART工作。13. 单片机的工作温度范围:-40 +85(工业级)0 75(商业级)2.1.2 STC89C52RC单片机的工作模式模式1. 典型功耗<0.1 A, 可以由外部的中断来唤醒,中断执行并且返回后,继续执行原来的用户程序。2. 空闲模式:此种模式的典型功耗2mA 。3. 正常工作模式:此种模式的

13、典型功耗4mA 7mA 。4. 掉电模式可以通过外部中断来唤醒,这适用气表、水表等一些电池 供电的设备及一些便携的设备。STC89C52R单片机引脚功能说明。引脚图如图C2-1 所示。图 2-1 STC89C52RC引脚图VCC( 40 引脚):接电源电压。VSS( 20 引脚):接地。P0 端口 ( P0.0 P0.7 对应39 32 引脚) 。 P0端口是一个漏极开路的8 位双向的IO 口。当作为输出端口用时,每个引脚可以驱动8 个 TTL 的P0端口写入“1”时,它又可以作为高阻抗输入。在访问外部P0 端口也可以提供低8 位地址和8 位数据的复用P0端口内部的若上拉电阻有效。当在Flas

14、h ROM编程时,由P0端口接收指令字节;在校验程序时,则输出指令字节。在验证时,要求P1 端口(P1.0 P1.7 对应于1 8 引脚) 。 P1 端口是一个带内部上拉电阻的 8 位的双向IO端口。 P1 的输出缓冲器可以驱动4 个 TTL的输入。当对端口写入1 时,内部的上拉电阻会把端口拉到高电平,这时端口可以当做输出使用。当P1 端口作输入口使用时,因为内部有上拉电阻,那些被外部拉低的引脚会输出一个电流(I IL) 。P2 端口(P2.0 P2.7, 21 28 引脚) : P2 口是一个带内部上拉电阻的 8 位双向 IO 端口。 P2 的输出缓冲器可以驱动(吸收或输出电流方式)4 个

15、TTL 输入。对端口写入1 时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2端口作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(I IL) 。P3端口(P3.0 P3.7 对应于10 17 引脚) 。 P3端口是一个带有内部上拉电阻的8 位的双向IO 端口。P3端口的输出缓冲器可以驱动(吸收或输出电流方式)4 个 TTL 输入的信号。当对端口写入“1 ”时,它内部的上拉电阻会把端口拉到高电平,此时P3端口可用作输出口。当P3端口做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流(I IL) 。当在对 Flash ROM编程

16、或程序校验时,P3端口还接收一些控制信号。P3口除作为一般IO 口外,还有其他一些复用功能,如下表所示:引脚号复用功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2( 外部中断0)P3.3( 外部中断1)P3.4T0(定时器0的外部输入)P3.5T1(定时器1 的外部输入)P3.6( 外部数据存储器写选通)P3.7( 外部数据存储器读选通)表 2-1 P3 口引脚复用功能复用功能RST( 9 引脚):复位引脚。当通过此引脚给单片机连续输入两个机器周期以上的高电平信号时为有效,此引脚的功能为用来完成单片机的复位初始化操作。当看门狗计时完成后,RST复位引脚输出96 个晶振周期的

17、高电平信号。特殊寄存器AUXR(地址8EH)上的DISRTO位可以让此功能无效。DISRTO在默认状态下,复位高电平有效。ALE ROG( 30引脚):地址锁存控制功能:( ALE)引脚是当访问外部程序存储器的时候,锁存低8 位地址的输出脉冲。当在Flash 编程时,此引脚(ROG)也可以用作编程输入脉冲。(29 引脚 ) : ()是外部程序存储器的选通信号。当单片机从外部程序存储器执行外部代码时,会在每个机器周期被激活两次,而访问外部数据存储器的时候,将不被激活。EAVPP( 31 引脚) :访问外部程序存储器的控制信号。:为了使能从0000H到 FFFFH的外部程序存储器的读取指令,EA必

18、须接地(GND) 。注意加密方式为1 时,EA将内部锁定为RESE。为了执行内部程序指令,TEA应该接VCC。在Flash 编程期间,A也接收12伏特的VPP电压。XTAL(1 19 引脚) : 振荡器的反相放大器和内部时钟发生电路的输入端。XTAL2( 18 引脚) :振荡器的反相放大器的输入端5 .2 单片机 STC11L08XESTC11L08XE的主要性能:1. 高速, 1 个时钟机器周期,增强型8051 内核,速度比普通8051 快8-12 倍2. 宽电压,5.5-4.13.7 , 3.6-2.42.13. 低功耗设计,空闲模式4. 低功耗模式,掉电模式和远程唤醒模式5. 工作频率,

19、0-35MHz,相当于普通8051 的 0-420MHz6. 时钟,外部晶振或内部晶振磕训啊7. 片内EEPRO功能,擦写次数M10 万次以上8.2 个 16 位定时器1.1 个独立波特率发生器10. 可编程时钟输出功能11. 硬件看门狗12. 全双工异步串行口13. 先进的指令集结构14. 通用 IO 口( 3640个)管脚图如图2-2- 所示:2-2 STC11L08XE单片机引脚图3 语音识别模块介绍语音识别模块实物如图3-1 所示。本模块的主要芯片是LD3320语音别 芯 片 。 LD3320 是 一 颗 基 于 非 特 定 人 语 音 识 别 ( SI-ASR:Speaker-Ind

20、ependentAutomatic Speech Recognition )技术的语音识别LD3320 芯片上集成AD 和 DA 接口,不再需要外接辅助的Flash 和 RAM,即可以基于LD3320, 可以在任何的电子产品中,甚至包括最简单的51 作VUI( Voice User Interface )语音用户操作界面。3-1 语音识别模块实物图主要特色功能:非特定人语音识别技术:不需要用户进行录音训练51 等MCU的编程中,简单地通过设置芯片的寄存器,把诸如“你好”这样的识别关键词的内容动态地传入芯片中,芯片就可以识别这样设定的关键词语AD和 DA通道:不需要外接AD 芯片, 只需要把麦克

21、风接高准确度和实用的语音识别效果真正单芯片解决方案:不需要任何外接的辅助Flash 和 RAM,真正在芯片的AD 引脚上;可以播放声音文件,并提供550mW的内置放大器。支持用户自由编辑50 条关键词语在同一时刻,最多在50 条关键词语中进行识别,终端用户可以根据场景需要,随时编辑和更新这50 条关键词语的内容。模块上集成了MIC音频输入设备及串口通信接口,论文模块还预留了16 个 IO 给用户使用。本设计中只有用到了模块的P1.0 与 P1.1 口。其功能及使用方法见后面介绍,这里不再多叙述。4 硬件设计硬件设计部分电路主要包括复位电路、晶振电路、电源部分、报警部分、数码管显示部分、按键部分

22、、指示灯部分、语音识别模块接口部分等。4.1 复位电路部分复位电路如图4-1 所示。图中C103为滤波电容,S1 为复位按键,电阻 R101 为下拉电阻。单片机正常运行时复位管脚RST被下拉电阻R101 拉到低电位,当按键S1 按下时,单片机管脚RST被拉倒高电平,此时单片机复位。4-1 复位电路4.2 晶振电路晶振电路如图4-2 所示。图中选用的是外接无源的12MHz晶振,根据单片机的数据手册,选择晶振电容为瓷片的33pF 电容。晶振电路在系统中虽然看起来很简单,但是在整个系统中是最重要的一部分,因为如果晶振电路不能正常运行,那么单片机的用户程序就不能呗有效的执行。4-2 晶振电路4.3 电

23、源部分电源部分如图4-3 所示。 图中 D201 是电源指示灯,当电源有电时D201点亮,当电源没电或者电压不够足时,D201 熄灭。 R201 为限流电阻,其功能是限制流过D201 的电流过大烧坏二极管D201。电容C201 与 C202为滤波电容,作用是滤除电源的杂波,保证单片机尽量小的收到外界文波带你呀的干扰。4.4 报警部分电路报警部分电路如图4-4 所示。图中R401为限流电阻,三极管Q5起到扩流的作用,因为51 的单片机驱动能力都很有限,因此要用三极管扩流。U3为报警用的蜂鸣器,当有报警时,蜂鸣器会发出声响,当无任何报警产生时,蜂鸣器静音。4.5 数码管显示电路数码管显示电路如图4

24、-5 所示。图中Q1、 Q2、 Q3、 Q4为起到扩流作用。R306-R312,R301-R304起到限流的作用。RP1为排阻,是P0口上啦电阻。加这个上拉电阻是因为51 单片机的P0口都是准双向口,即做输出时如果不加上拉电阻是不可以的。数码管LG5641BH是共阳的数码管。此部分电路的工作原理是,比如单片机的P0 口都输出低电平,P2.4 输出高电平,那么此时三极管Q1导通数码管第一位被点亮,显示的数据因为P0都为低电平,故现实的数据是8. 其他数码管的点亮及显示的数据原理如此一样。vcc 彳 1119A R ' .II i * 国 iS , I ss K . .皆 nr i iiT

25、is Aac1,一 v 工 CN e 02LG5641EHVCXP(X PO PS PO PO, POPO< POD12F*F5 7RP1X 34 56 7S 9101R31101 冏10E 冏1J*)2C>3uj:uzPO1)寸)、 .cA1 aAY9rP2,P2P21J -r一 -Qi03B t 3POPO»0PO*H)82巴.DE4-5 数码管显示电路4.6 按键部分电路按键电路如图4-6 所示。图中R401-R404为上拉电阻,当按键未被按下时,单片机的相应管脚为高电平,当按键按下时单片机的相应管脚变为低电平,当单片机检测到低电平时,说明按键按下。在本设计中P1.

26、0 口的功能定义为菜单键,P1.1 口的功能定义为确定键,P1.2 口的功能定义为增加键,P1.3 口的功能定义为减小键。图 4-6 按键部分电路4.7 指示灯部分电路指示灯部分电路如图4-7 所示。图中D402为密码输入指示灯,R403为密码输入指示灯的限流电阻。D403 为密码修改正确指示灯,R404 为密码修改指示灯的限流电阻。在系统运行时,当用户按下菜单键后准备输入密码的过程中D402指示灯亮。如果用户密码修改正确时,用D403指示密码修改成功与否,如果修改正确,D403亮,如果修改不成功,则D403保持灭的状态。4.8 语音识别接口语音识别接口电路如图4-8 所示。因为语音识别模块的

27、用电电压是3.3V,故如果要让两个单片机通过IO 口连接就需要将电平信号做一些转变。途中的R201 与稳压管D1 就是将 5V电压转变到3.3V 的电路。图中语音识别模块部分的R402与 D401 为最终的门控制输出指示灯。当D401 亮时表示门锁打开,当D401 灭时表示门锁关闭。4-8 语音识别接口电路5 软件部分软件部分的程序包括两个方面,STC89C52单片机的程序和STC11L08XE单片机程序。其中STC89C52单片机主要负责按键处理及密码显示、报警与一些操作状态的处理,而STC11L08XE单片机负责语音的识别及处理和检测STC89C52单片机的IO 开关门命令以及门锁控制的最

28、终输出。5.1 STC89C52 单片机的程序STC89C52的单片机程序包括宏定义、初始化、按键处理、显示、主函数等部分。线距离来说明程序部分。5.1.1 单片机程序的宏定义及一些申明程序代码及注视如下:#include <reg52._led=P23; 定义 P2.3 口为输入密码指示灯sbit password_led=P22; 定义 P2.2 口为密码设置成功指示灯sbit door_out=P20; 定义 P2.0 口为门锁输出sbit alarm=P14; 定义报警输出unsigned char Trg=0;按键触发标志unsigned char Cont=0;长按键标志un

29、signed char key_menu=0; 菜单标志unsigned char key_enteradd=0; 按键设置位变量unsigned char key_datadd=0; 按键设置位变量unsigned char key_lock=0; 键盘锁标志unsignedcharcodeDIG_CODE10=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90; 0 、 1、 2、 3、 4、 5、 6、 7、 8、 9 的显示码int ge,shi,bai,qian;unsigned char key_password=0;unsigned

30、 int result=1234;unsigned int result1=0;unsigned int result2=0;unsigned int result3=0;unsigned int password_count=0;unsigned int count=0;unsigned int t1_count=0;void Delay();密码设置标志默认密码为1234输入密码验证密码验证密码验证密码计数输入密码错误计数定时器 1 定时计数延时void Init();初始化函数void data_change();数据转换void key_read();按键函数void key_set(

31、);按键设置函数void DigDisplay(unsigned char x);动态显示函数5.1.2 初始化函数*函数名: Init()* 函数功能: 初始化函数* 输入:无* 输出: 无*void Init()alarm=1; 初始化报警关闭in_led=1; 初始化,输入密码指示灯door_out=0; 门锁输出默认为0,关闭状态password_led=1; 关闭以下为定时器初始化EA=1; 开全局中断ET0=1; 开定时中断0IT0=0;外部中断0电平触发IT1=0;外部中断1电平触发PT0=1;定时中断0高TMOD = 0x28; T0T1方式控制TH0= 0x0c; T0高 8

32、 位TL0= 0x78; T0低 8 位初始化完成5.1.3 主程序* 函 数 名: main* 函数功能: 主函数* 输入:无* 输出:无void main(void) unsigned char i;Init(); 初始化函数while(1) if(key_lock=0) 只有键盘未锁定时,才可以操作键盘 key_set();按键设置函数* 函数名5.1.4 按键处理函数: key_set()* 函数功能: 按键设置函数* 输入:无* 输出: 无*void key_set()按键设置函数unsigned int i;key_read();按键函数if (Trg=1)TR0=1; 启动 T0

33、t1_count=0;in_led=0; 输入密码指示灯亮data_change(); 调用数据变换子程序key_menu=1;while (key_menu=1) 菜单键按下时key_read();按键函数if (Trg=2)如果确定键按下t1_count=0;key_datadd+;if (key_datadd>=5)如果超过合法值,则清零, (合法值为0-4)if (key_password=0) result1=qian*1000+bai*100+shi*10+ge; 保存设置结果if(result=result1) 如果输入密码与设置密码相同 in_led=1; 关闭密码输入指

34、示灯输入密码清零t1_count=0;key_password=1; 设置密码标志password_count=0; 验证密码计数清零count=0;密码错误计数清零door_out=1; 打开门锁密码设置标志result1=0;elsecount+;密码输入错误计数加一result1=0;输入密码清零alarm=0;时间报警提示密码错误Delay();Delay();Delay();Delay();Delay();Delay();Delay();Delay();alarm=1;if(count>=3) 如果密码输出错误次数超过三次,则报警并锁定键盘in_led=1;关闭密码输入指示灯k

35、ey_lock=1; 键盘锁定alarm=0;报警产生else 设置密码password_count+;if (password_count=1)result2=qian*1000+bai*100+shi*10+ge; 设置密码elseif(password_count>=2)result3=qian*1000+bai*100+shi*10+ge; 设置密码if(result2=result3)in_led=1; 关 闭密码输入指示灯password_led=0;打开密码设置成功指示灯result=result2;设置密码成功password_count=0; key_menu=0; 设

36、置完毕,跳出设置循环key_datadd=0;else if (Trg=4) 如果增加键按下t1_count=0;if (key_datadd=4) 调整个位ge+;if (ge>9) 如果超过范围,清零 ge=0; else if(key_datadd=3) 调整十位shi+;if (shi>9) 如果超过范围,清零shi=0;else if(key_datadd=2) 调整白位bai+;if (bai>9) 如果超过范围,清零bai=0;else if(key_datadd=1) 调整千位qian+;if (qian>9) 如果超过范围,清零qian=0;else

37、if (Trg=8) 如果减小键按下t1_count=0;if (key_datadd=4) 调整个位ge-;if (ge<0) 如果超过范围,ge=9;else if(key_datadd=3) 调整十位shi-;if (shi<0) 如果超过范围,shi=9;else if(key_datadd=2) 调整白位bai-;if (bai<0) 如果超过范围,bai=9;else if(key_datadd=1) 调整千位qian-;if (qian<0)如果超过范围, qian=9; for (i=0;i<5;i+)DigDisplay(key_datadd);

38、* 函数名: key()* 函数功能: 按键函数1 . 无按键按下时,P1=0xff ; ReadData 0 ; Trg 0 ; Cont 0 ;2 .P1.0 按下时,P1.0=0;ReadData 0x01 ; Trg 0x01(Trg 只会在这个时候对应位的值为1,其它时候都为0); Cont 0x01 ;3 .P1.0 长按住时,P1.0=0;ReadData 0x01 ; Trg 0x00 ; Cont 0x01;如果是 P1.1 按键那么Trg,Cont 对应值都为2; 如果是 P1.2 按键那么Trg,Cont 对应值都为4;是P1.3 按键那么Trg,Cont 对应值都为8*

39、 输入:无* 输出: 无void key_read()按键设置函数unsigned char temp = P1|0xf0; 将临时变量temp 的高四位置一,低四位不变unsigned char ReadData = temp0xff; 1Trg = ReadData & (ReadData Cont); 2Cont = ReadData;* 函 数 名 : data_change* 函数功能: 数据转换* 输入:无* 输出:无*void data_change()ge=(result1%100)%10;shi=(result1%100)10;bai=(result1%1000)10

40、0;qian=result11000;5.1.5 显示函数* 函 数 名 : DigDisplay* 函数功能: 使用数码管显示* 输入:无* 输出:无*void DigDisplay(unsigned char x)if (x=0)LS1=0;LS2=1;LS3=1;LS4=1; 显示第 0 位GPIO_DIG=DIG_CODEqian;Delay(); 延时LS1=1;LS2=0;LS3=1;LS4=1; 显示第 1 位GPIO_DIG=DIG_CODEbai;Delay(); 延时LS1=1;LS2=1;LS3=0;LS4=1; 显示第 2 位GPIO_DIG=DIG_CODEshi;D

41、elay(); 延时LS1=1;LS2=1;LS3=1;LS4=0; 显示第 3 位GPIO_DIG=DIG_CODEge;Delay(); 延时else if (x=4)LS1=0;LS2=1;LS3=1;LS4=1; 显示第 0 位GPIO_DIG=DIG_CODEqian;Delay(); 延时LS1=1;LS2=0;LS3=1;LS4=1; 显示第 1 位GPIO_DIG=DIG_CODEbai;Delay(); 延时LS1=1;LS2=1;LS3=0;LS4=1; 显示第 2 位GPIO_DIG=DIG_CODEshi;Delay(); 延时LS1=1;LS2=1;LS3=1;LS4

42、=0; 显示第 3 位GPIO_DIG=DIG_CODEge;Delay();延时Delay();延时Delay();延时Delay();延时Delay();延时Delay();延时Delay();延时Delay();延时else if (x=3)LS1=0;LS2=1;LS3=1;LS4=1; 显示第 0 位GPIO_DIG=DIG_CODEqian;Delay(); 延时LS1=1;LS2=0;LS3=1;LS4=1; 显示第 1 位GPIO_DIG=DIG_CODEbai;Delay(); 延时LS1=1;LS2=1;LS3=0;LS4=1; 显示第 2 位GPIO_DIG=DIG_CO

43、DEshi;Delay();延时Delay();延时Delay();延时Delay();延时Delay();延时Delay();延时Delay();延时Delay();延时LS1=1;LS2=1;LS3=1;LS4=0; 显示第 3 位GPIO_DIG=DIG_CODEge;Delay(); 延时else if (x=2)LS1=0;LS2=1;LS3=1;LS4=1; 显示第 0 位GPIO_DIG=DIG_CODEqian;Delay(); 延时LS1=1;LS2=0;LS3=1;LS4=1; 显示第 1 位GPIO_DIG=DIG_CODEbai;Delay();延时Delay();延时

44、Delay();延时Delay();延时Delay();延时Delay();延时Delay();延时Delay();延时LS1=1;LS2=1;LS3=0;LS4=1; 显示第 2 位GPIO_DIG=DIG_CODEshi;Delay(); 延时LS1=1;LS2=1;LS3=1;LS4=0; 显示第 3 位GPIO_DIG=DIG_CODEge;Delay(); 延时else if (x=1)LS1=0;LS2=1;LS3=1;LS4=1; 显示第 0 位GPIO_DIG=DIG_CODEqian;Delay();延时Delay();延时Delay();延时Delay();延时Delay(

45、);延时Delay();延时Delay();延时Delay();延时LS1=1;LS2=0;LS3=1;LS4=1; 显示第 1 位GPIO_DIG=DIG_CODEbai;Delay(); 延时LS1=1;LS2=1;LS3=0;LS4=1; 显示第 2 位GPIO_DIG=DIG_CODEshi;Delay(); 延时LS1=1;LS2=1;LS3=1;LS4=0; 显示第 3 位GPIO_DIG=DIG_CODEge;Delay(); 延时5.2 单片机STC11L08XE程序STC11L08XE单片机的最主要程序如下:void main(void)uint8 idata nAsrRes;uint8 i=0;Led_test();MCU_init();LD_

温馨提示

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

评论

0/150

提交评论