版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.....摘要现代社会电子闹钟已广泛用于各种私人和公众场合,成为我们生活、工作和学习中不可缺少的好帮手,因此研究实用性更强的电子闹钟具有十分重要的意义。本设计是基于单片机的电子钟设计,不仅具有时分秒的显示功能,还具有双闹铃和倒计时的功能,实用性非常强。电子钟的计时部分采用AT89S52单片机内部定时器实现,而显示功能是采用液晶模块LCD1602来实现,该电子闹钟可以让使用者通过按键来轻松选择的功能菜单和调节时间,具有非常良好地人机界面。关键词:电子闹钟;倒计时;AT89S52;液晶LCD1602;按键AbstractInmodernsociety,
theelectronicalarmclockhasbeenwidelyusedin
variousoccasionsandbecomeindispensableto
life.Itisagoodhelpertoourworkandlearning.So,thereisveryimportantsignificance
toresearch
morepracticalelectronicalarmclock.Thisdesignisbasedonsinglechipmicrocomputer,Ithasdisplayfunctionofhours,minutesandseconds,dualalarmandcountdown.TheinternaltimerofAT89S52achievethepartoftime.TheliquidcrystalLCD1602achievethepartofdisplay.Theuserscanusethepush-buttonstochoicethemenuoffunctionsandadjustthetime.Theman-machineinterfaceisverygood.Keywords:electronicalarm;countdown;AT89S52;liquidcrystalLCD1602;button目录TOC\o"1-3"\h\u16721引言 1112761设计要求 2184032方案论证 2221352.1计时方案的选择 2250592.2显示方案的选择 2168602.3按键功能方案设计 3256402.4指示灯和响铃方案设计 371173系统组成 3106734硬件设计 4287304.1单片机最小系统设计 4245624.2显示电路设计 5192014.3蜂鸣器电路设计 537444.4按键电路设计 6233075软件设计 6324865.1走时部分 6192515.2闹铃检测部分 713125.3键盘扫描部分 7265115.4液晶部分 824475.5流程图 866116仿真设计 11203987系统调试及结果 11240287.1软件调试 11145937.2硬件调试 1260697.3调试结果 13265258总结 1316011谢辞 141469参考文献 1511367附录 16.....引言电子闹钟在科学技术高度发展的今天,千家万户以及一些公共场合都少不了它,所以设计一个电子闹钟,为人们提供报时方便显得非常有意义。本文给出了一种以51单片机芯片电子闹钟设计方法,给人们带来更为方便的工作与生活。除此之外,此次设计也训练了自己对单片机最小系统及其外围电路设计的能力和单片机C语言的编程能力,帮助自己巩固和运用所学课程,理论联系实际,提高分析、解决问题的能力。近年来集成电路技术的出现和应用,推动了人类文明的突飞猛进,基于集成电路技术的单片机产品更是方便了人们的生活和工作,目前以单片机技术的应用为核心的产品种类非常丰富。我制作的这个以单片机技术为基础的LCD可校时可定时电子闹钟,是一个实用性很强的单片机电子设计产品。设计时先进行系统的整体规划确定整个系统的功能,然后按照每个功能的具体要求,进行各个软件模块的仿真设计并逐个调试,待全部通过后,才开始实际电路板的制作,最后安装元器件并下载程序,根据实际情况作进一步的完善。电子钟的计时部分采用AT89S52单片机内部定时器实现,而显示功能是采用液晶模块LCD1602来实现。51系列单片机的控制器运算能力强,处理速度快,可以精确计时,很好地解决了实际生产生活中对计时高精确度的要求,LCD1602液晶显示模块有很强的显示功能,能够同时显示16*02个即32个字符,另外使用者可以通过按键来轻松选择功能和调节时间,因此具有非常良好地人机界面。1设计要求1、利用单片机设计一个用LCD显示时钟的电子时钟,带闹钟功能。2、接通电源后,蜂鸣器连续发出2次响声,同时工作指示灯闪动,表示开始工作,液晶显示"000000"〔时分秒。3、通过键盘设定两个闹铃响的时间,即设置几小时几分钟后闹铃响。4、可设置单独显示一个或循环显示两个闹钟的时、分,用2个LED灯分别指示当前LED数码管上显示的是闹钟1、闹钟2的时间。5、可设置倒计时或正计时。6、硬件成本控制在40元内。2方案论证2.1计时方案的选择1、采用专门的时钟芯片,例如美国DALLAS公司推出的DS1302实时时钟芯片,它的工作电压为2.5V-5.5V,采用三线接口与CPU进行同步通信,并可采用突发式一次传送多个字节的时钟信号或RAM数据,优点是高性能、低功耗,可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,但DS1302存在时钟精度不高,易受环境影响,出现时钟混乱等缺点,并且会增加电路硬件复杂性。2、采用AT89S52单片机内部定时器,51系列单片机内部有两个16位定时器/计数器,简称定时器0和定时器1,简称T0和T1,设置T0工作在模式0状态下,每隔50ms中断一下,中断20次正好是1秒。用此方法的优点是可节少硬件设计,计时精度高,缺点是软件编程略显复杂。总结:综合两种方案的优缺点,以及此次课设的要求,选择第二种方案是用单片机内部定时器。因为使用该方案不但可以节省硬件成本,还可以更锻炼自己使用单片机内部定时器和C语言编程的能力。2.2显示方案的选择1、使用LED数码管,由多个发光二极管封装在一起组成"8"字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。它能够在低电压、小电流的条件下驱动发光,发光响应时间极短,单色性好,亮度高,但是数码管显示内容单一,引脚与单片机I/0连接复杂。2、使用液晶LCD1602,液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,LCD1602是字符型液晶显示模块,它是一种专门用于显示字母、数字、符号等点阵式LCD,并且显示质量高,功耗小。缺点是较数码管成本高。总结:数码管显示内容单一,液晶则比较丰富,并且数码管消耗电力会比液晶更高,若选择数码管硬件布线会较复杂,影响美观性,而选择液晶也不会超过经费支持。综合两种方案的优缺点,选择方案二液晶显示。2.3按键功能方案设计根据题目设计要求,定义6个12*12mm的按键来选择系统功能菜单和调节时间,分别为K1、K2、K3、K4、K5、K6。各个按键的具体功能如表2.1:K1选择调节时间菜单键及时增加键K4选择倒计时菜单键K2选择调节闹铃1菜单键及分增加键K5关闭闹铃响声键K3选择调节闹铃2菜单键及秒增加键K6确认键表2.1按键功能表2.4指示灯和响铃方案设计1、指示灯:综合设计要求和自我考虑,需要的指示灯个数为4个,分别为电源指示,程序运行指示和两个闹铃指示。为了加以区分可使用不同颜色的LED。2、响铃选择:采用经济适用的蜂鸣器,它是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、报警器、电子玩具、定时器等电子产品中作发声器件,而且驱动电路简单,由单片机一个I/O口外接一个三极管即可。3系统组成经过以上的计时方案选择和显示方案选择,确定本设计的电子闹钟的计时方案为单片机内部定时,显示方案为液晶LCD1602。闹铃的响铃来源选择经济适用的蜂鸣器,并用按键来选择功能菜单和调节时间,用4个不同颜色的发光二极管作为两个闹铃指示灯,程序运行指示灯和电源指示灯。因此系统组成框图如图3.1:LCD1602LCD1602指示灯蜂鸣器指示灯蜂鸣器AT89S52最小系统AT89S52最小系统键盘键盘图3.1系统框图4硬件设计4.1单片机最小系统设计单片机最小系统的设计关键的就是时钟电路和复位电路的设计。1、时钟电路在这里使用单片机内部振荡电路,管脚XTAL1、XTAL2用来外接石英晶体和微调电容,如图4.1所示。晶体可在1.2—12MHz之间选择,电容可在6—30pF之间选择。图4.1时钟电路2、复位电路当振荡电路工作,并且在RST引脚加上一个至少保持两个机器周期的高电平时,就能完成一次复位。这里我使用按钮复位方式,如图4.2,利用RC微分电路产生正脉冲来达到复位目的,该正脉冲的持续时间大于两个机器周期。图4.2复位电路.....4.2显示电路设计此设计的显示电路采用的是液晶模块LCD1602,其为5V电压驱动,只有并行接口。其与单片机连接的硬件电路如图4.3,其中的D0-D7分别连接到单片机的P0.0-P0.7,VSS接地,VDD接+5V电源,VEE经10K电位器接地,用于调节背光,RS端为向液晶控制器写数据/写命令选择端,接单片机P2.1口,RW为读/写选择端,因为我们不从液晶读取任何数据,故接地,E端为使能信号,接单片机P2.2口。图4.3液晶连接电路4.3蜂鸣器电路设计电路设计如图4.4,单片机的P2.0脚通过限流电阻R与三极管基极相接,集电极接蜂鸣器。当P2.0引脚电平为0是,三极管导通,蜂鸣器工作,引脚电平为1时,三极管截止,蜂鸣器不工作。因为单片机口输出低电平时的驱动能力比高电平强的多,故三极管采用基极低电平导通PNP型的三极管。图4.4蜂鸣器驱动电路4.4按键电路设计此次按键电路设计可直接将按键一端接到单片机的I/O口,另一端直接接地。通过单片机检测低电平判断按键按下,K1-K6分别接至单片机的P3.0-P3.5。按键电路如图4.5:图4.5按键电路5软件设计软件设计主要包含显示走时、闹铃检测和键盘扫描三部分。5.1走时部分走时部分主要有3个变量hour、min、sec和deda做为时钟的时、分、秒和定时标志位,通过单片机内部定时器定时50ms,定时标志位deda加1,此过程在中断服务程序中完成,当加满20次时,deda清零并且时钟的秒sec加1,从而到达计时目的。代码如下:voidT0_srv<void>interrupt1{TH0=0x3C;TL0=0x0B0;deda++;}voidconv<>{if<deda>=20>{sec++;deda=0;}if<sec==60>{min++;sec=0;ok=1;}if<min==60>{hour++;min=0;}if<hour==24>{hour=0;}}5.2闹铃检测部分闹铃检测部分主要的变量有6个,hh1、mm1和flag1做为闹铃1的时、分和开关标志位,hh2、mm2和flag2做为闹铃2的时、分和开关标志位,当hh1=hour,mm1=min并且开关标志flag1=1时,闹铃1便可以执行响铃程序,当hh2=hour,mm2=min并且开关标志flag2=1时,闹铃2便可以执行响铃程序,在这个子程序中为了不影响正常走时时间,故加上走时函数time<>。代码如下:voidalm_check1<>{while<<alm_flag1==1>&&<hour==hh1>&&<min==mm1>&&<ok==1>>{time<>; alm_led1=0; beep=~beep;delay<40>; if<k5==0>{alm_led1=1;beep=1;ok=0;}}}5.3键盘扫描部分键盘扫面部分是该软件设计中较复杂的部分,用单片机I/O口检测低电平来判断是否有键按下,根据按下的键值来执行相应的子程序。在此部分增加一个标志变量ok做为子程序执行完毕的标志变量,在子程序执行过程中当K6键按下,则ok=1,返回主程序。while<1>{time<>;alm_check1<>;alm_check2<>;if<k1==0>set_time<>; if<k2==0>set_atime1<>; if<k3==0>set_atime2<>; if<k4==0>set_countdown<>;}5.4液晶部分液晶LCD1602做为本设计的显示元件,其初始化程序如下:voidTS1602_INIT<void>{ RS=0; write_com<0x38>;//设置16*2显示,5*7点阵,8位数据接口 write_com<0x0c>;//设置开显示,不显示光标 write_com<0x06>;//写一个字符后地址指针自动加1 write_com<0x01>;//清屏}5.5流程图1、主程序流程图,如图5.1:图5.1主程序流程图2、中断服务流程图: 如图5.2:图5.2中断服务流程图2、时间流程图,如图5.3:图5.3时间流程图3、闹铃检测流程图,如图5.4:图5.4闹铃检测流程图4、键盘扫描流程图,如图5.5:图5.5键盘扫面流程图6仿真设计仿真设计是设计一个系统十分重要的环节,在实际电路做好之前系统软件调试最好选择。此次仿真设计采用的是英国Labcenterelectronics公司出版的EDA工具软件Protues,在PROTUES绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTUES的原理图中看到模拟的实物运行状态和过程。仿真电路图如下,图6.1:图6.1仿真电路图7系统调试及结果7.1软件调试此时设计的软件调试部分主要在仿真软件Protues中完成。首先根据硬件设计在Protues中完成原理图的设计,确定使用单片机的哪些I/O口,然根据软件设计中的流程图编写单片机C语言程序。结合题目要求模块化地编写程序,首先编写走时程序,然后编写闹铃1、闹铃2、的程序,最后完成倒计时设计,在分模块化编写过程中,不断地根据仿真现象调试程序来修复软件编写错误。例如调试液晶的显示问题,写指令write_com<0x80>将数据指针定位到第一行第一个字处,当写第二行时需要重新定位数据指针,写指令write_com<0x80+0x40>。再者,在显示倒计时时出现走时时间不准确的问题,故在倒计时变量处理的程序中要加上正计时走时时间变量处理,C_sec、C_min、C_hour是倒计时时间变量,sec、min、hour是走时时间变量。程序如下:voidC_conv<>{if<deda>=20>{C_sec--;sec++;deda=0;}if<C_sec<0>{C_sec=59;C_min--;}if<sec==60>{min++;sec=0;}if<C_min<0>{C_hour--;C_min=59;}if<min==60>{hour++;min=0;}if<hour==24>{hour=0;}if<C_hour<0>{ C_sec=0;C_min=0;C_hour=0;for<i=0;i<10;i++> { routine_led=~routine_led; beep=~beep; delay<80>; }ok=1;}最后在显示时间问题上,要将数字显示到液晶上,采取的方法是将数字转化为字符串中的元素然后再送往液晶显示。程序如下:其中,ucharcodelcd_code[]="0123456789"。voiddisplay_num<unsignedcharnum>{ ucharge,shi; ge=num%10; shi=num/10; write_date<lcd_code[shi]>; write_date<lcd_code[ge]>;}7.2硬件调试此次的硬件设计较为简单,主要的调试部分在于液晶对比度的调试,期间遇到的问题是液晶的对比度调节引脚所接的10k电位器封装不正确,导致VCC与GND短路,还好及时发现问题,没有损坏器件。7.3调试结果经过近两周的软件调试和硬件调试,对比设计要求,完成情况如下:1、电路板大小7cm*12cm;2、电路接通电源后,蜂鸣器连续发出2次响声,同时工作指示灯闪动,液晶第一行显示"Time:00:00:00",代表时间,第二行显示"00:00F00:00F",代表两个闹铃,初始为关。3、可通过按键设定走时时间、两个闹铃响的时间和倒计时时间。4、可显示两个闹钟的时、分,并用2个LED灯分别指示闹钟1、闹钟2的时间。8总结1、通过本次课程设计,实现了基于单片机的电子时钟设计,在这过程中,我学到了很多,加深了对单片内部模块的理解,进一步学习了C语言的编写规则。在设计的前期,我认真地复习了51单片机的相关资料,掌握了单片机外部电路的合理设计以及各个引脚的功能。系统的进行电子时钟的需求分析,合理的设计出了电路原理框图,根据原理框图设计出电路原理图,然后设计软件流程图,根据流程图对单片机使用C语言编程。在此过程中,我学到了很多在书本上学不到的东西,尤其是在处理故障和解决问题方面的考虑,受益颇多。2、本次设计的题目为基于单片机的电子时钟设计,通过两周努力,可以顺利实现的功能有:在液晶上显示走时时间;两个闹铃时间和是否开启以及倒计时时间;并且能通过按键实现设置时间的暂停、启动、调节等控制。3、在完成设计后,发现有还可以改进的地方,例如增加一个省电模式,即在不需要看时间的时候,将液晶显示关闭,这是设计前考虑不周的地方。最后,我深刻感受到要做好一个课程设计,就必须做到:在设计程序之前,对所需资料的综合整理,有效的挑选资料;要明确目标,整理思路;合理设计出系统所必须的流程图,做好充分的心里准备。这次设计是对我所学单片机一书的综合考验,使我能查漏补缺,复习课本知识,加深理解记忆,所以每一步我都用心去做。谢辞这三周来感谢指导老师对我的指导和建议,感谢同学的热心帮助,也感谢学校为我们提供学习的环境和条件,在这三周的设计过程中老师和同学的帮助至关重要,在关键时刻老师的指点和同学之间的研究让我少走了许多的弯路。衷心地感谢我的指导老师邱治金老师。本文从选题到完成,从理论上的探讨到实际问题的解决,无处不饱含着董老师的心血。邱老师的悉心指导和建议给了我极大的帮助和支持,使我受益匪浅。参考文献[1]沈红卫.基于单片机的智能系统设计与实现[M].北京:电子工业出版社,2005[2]王守中、聂元铭.51单片机开发入门与典型实例〔第2版[M].北京:人民邮电出版社,2009[3]白驹珩、雷晓平.单片计算机及其应用〔第2版[M].XX:电子科技大学出版社,2012附录1、元器件清单:《专业工程设计》元器件清单示例__1000820527__周志通课题名称:基于单片机的简易闹钟设计序号名称数量单价备注1单片机89C52及锁紧底座12lcd1602134脚按键〔规格12*12mm6带按键帽44脚按键〔规格6*6mm15发光二极管〔直径3mm3蓝绿黄各一个6发光二极管〔直径5mm1红7直插电阻360欧48直插电阻1K19直插电阻100欧210直插电阻2.7k111精密电位器10k112晶振12MHz113电解电容10u114直插电容22pF2159012三极管116蜂鸣器117排阻1K*81181*40圆孔插座11排19双排插针11排20单排插针11排21ISP下载口2*5插座12、电路原理图:3、PCB图:顶层底层4、程序代码#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint#defineTS1602_DATAP0 sbitroutine_led=P1^0;sbitalm_led1=P1^1;sbitalm_led2=P1^2; sbitE=P2^2;sbitRS=P2^1;sbitbeep=P2^0;sbitk1=P3^0;sbitk2=P3^1;sbitk3=P3^2;sbitk4=P3^3;sbitk5=P3^4;sbitk6=P3^5;uchari,j;ucharhour=0,min=0,sec=0;ucharhh1=0,mm1=0,hh2=0,mm2=0;ucharalm_flag1=0,alm_flag2=0;uchardeda=0;charC_hour=0,C_min=0,C_sec=0;ucharok=0;ucharstring1[]="Time:::";ucharstring2[]=":F:F";ucharstring3[]=":N:F";ucharstring4[]=":F:N";ucharstring5[]=":N:N";ucharstring6[]="Countdown_time:";ucharstring7[]="::";ucharcodelcd_code[]="0123456789";voiddelay<uintx>{ uinti,j; for<i=0;i<x;i++>{for<j=0;j<121;j++> {;}}}//************************************************//函数功能:写指令//************************************************voidwrite_com<ucharcom>{ RS=0; TS1602_DATA=com; delay<1>; E=1; delay<1>; E=0;}//***************************************************//函数功能:写数据//****************************************************voidwrite_date<uchardate>{ RS=1; TS1602_DATA=date; delay<1>; E=1; delay<1>; E=0;}//***************************************************//函数功能:显示数据//****************************************************voiddisplay_num<unsignedcharnum>{ ucharge,shi; ge=num%10; shi=num/10; write_date<lcd_code[shi]>; write_date<lcd_code[ge]>;}//***************************************************//函数功能:LCD初始化//****************************************************voidTS1602_INIT<void>{ RS=0; write_com<0x38>; write_com<0x0c>; write_com<0x06>; write_com<0x01>; //清屏 write_com<0x80>;//光标的位置}//***************************************************//函数功能:显示第一行字符串//****************************************************voiddisplay_string1<uchar*P>{ while<*P> { write_date<*P>; P++; }}//***************************************************//函数功能:显示第二行字符串//****************************************************voiddisplay_string2<uchar*S>{ write_com<0x80+0x40>; while<*S> { write_date<*S>; S++; }}//***************************************************//函数功能:定时器初始化函数//****************************************************voidinit_timer<>{TMOD=0x01;TH0=0x3C;TL0=0x0B0;IE=0x82;TR0=1;}//***************************************************//函数功能:中断服务程序//****************************************************voidT0_srv<void>interrupt1{TH0=0x3C;TL0=0x0B0;deda++;}//***************************************************//函数功能:时分秒转换程序//****************************************************voidconv<>{if<deda>=20>{sec++;deda=0;}if<sec==60>{min++;sec=0;ok=1;}if<min==60>{hour++;min=0;}if<hour==24>{hour=0;}}//***************************************************//函数功能:显示走时时间//****************************************************voiddisp_time<>{write_com<0x80+0x05>;display_num<hour>;delay<1>;write_com<0x80+0x08>;display_num<min>;delay<1>;write_com<0x80+0x0B>;display_num<sec>;delay<1>;}//***************************************************//函数功能:倒计时分秒转换程序//****************************************************voidC_conv<>{if<deda>=20>{C_sec--;sec++;deda=0;}if<C_sec<0>{C_sec=59;C_min--;}if<sec==60>{min++;sec=0;}if<C_min<0>{C_hour--;C_min=59;}if<min==60>{hour++;min=0;}if<hour==24>{hour=0;}if<C_hour<0>{ C_sec=0;C_min=0;C_hour=0;for<i=0;i<10;i++> { routine_led=~routine_led; beep=~beep; delay<80>; } ok=1;}}//***************************************************//函数功能:显示倒计时时间//****************************************************voiddisp_Countdown_time<>{write_com<0x80+0x40>;display_num<C_hour>;delay<1>;write_com<0x80+0x43>;display_num<C_min>;delay<1>;write_com<0x80+0x46>;display_num<C_sec>;delay<1>;}//***************************************************//函数功能:调用走时时间程序函数//****************************************************voidtime<>{conv<>;disp_time<>;}//***************************************************//函数功能:调用倒计时时间程序函数//****************************************************voidCtime<>{C_conv<>;disp_Countdown_time<>;}//***************************************************//函数功能:显示闹铃1时间//****************************************************voiddisp_alm1<>{write_com<0x80+0x40>;display_num<hh1>;delay<1>;write_com<0x80+0x43>;display_num<mm1>;delay<1>;}//***************************************************//函数功能:显示闹铃2时间//****************************************************voiddisp_alm2<>{write_com<0x80+0x48>;display_num<hh2>;delay<1>;write_com<0x80+0x4B>;display_num<mm2>;delay<1>;}//***************************************************//函数功能:调整时间//****************************************************voidset_time<>{delay<500>;TR0=0;sec=0;ok=0;while<ok==0>{if<k1==0>delay<100>;if<k1==0>hour++;if<hour==24>hour=0;delay<5>;disp_time<>;if<k2==0>delay<100>;if<k2==0>min++;if<min==60>min=0;delay<5>;disp_time<>;if<k3==0>delay<100>;if<k3==0>sec++;if<sec==60>sec=0;delay<5>;disp_time<>;if<k6==0>ok=1;TR0=1;}}//***************************************************//函数功能:调整闹铃1//****************************************************voidset_atime1<>{alm_led1=0;delay<500>;ok=0;while<ok==0>{if<k1==0>delay<100>;if<k1==0>hh1++;if<hh1==24>hh1=0;delay<5>;disp_alm1<>;if<k2==0>delay<100>;if<k2==0>mm1++;if<mm1==60>mm1=0;delay<5>;disp_alm1<>;if<k3==0>{alm_flag1=1;if<<alm_flag1==0>&&<alm_flag2==0>>{display_string2<string2>;disp_alm1<>;disp_alm2<>;}if<<alm_flag1==1>&&<alm_flag2==0>>{display_string2<string3>;disp_alm1<>;disp_alm2<>;}if<<alm_flag1==0>&&<alm_flag2==1>>{display_string2<string4>;disp_alm1<>;disp_alm2<>;}if<<alm_flag1==1>&&<alm_flag2==1>>{display_string2<string5>;disp_alm1<>;disp_alm2<>;}}if<k4==0>{alm_flag1=0;if<<alm_flag1==0>&&<alm_flag2==0>>{display_string2<string2>;disp_alm1<>;disp_alm2<>;}if<<alm_flag1==1>&&<alm_flag2==0>>{display_string2<string3>;disp_alm1<>;disp_alm2<>;}if<<alm_flag1==0>&&<alm_flag2==1>>{display_string2<string4>;disp_alm1<>;disp_alm2<>;}if<<alm_flag1==1>&&<alm_flag2==1>>{display_string2<string5>;disp_alm1<>;disp_alm2<>;}}if<k6==0>{ok=1;}time<>;}alm_led1=1;}//***************************************************//函数功能:调整闹铃2//****************************************************voidset_atime2<>{alm_led2=0;delay<1000>;ok=0;while<ok==0>{if<k1==0>delay<100>;if<k1==0>hh2++;if<hh2==24>hh2=0;delay<5>;disp_alm2<>;if<k2==0>delay<100>;if<k2==0>mm2++;if<mm2==60>mm2=0;delay<5>;disp_alm2<>;if<k3==0>{alm_flag2=1;if<<alm_flag1==0>&&<alm_flag2==0>>{display_string2<string2>;disp_alm1<>;disp_alm2<>;}if<<alm_flag1==1>&&<alm_flag2==0>>{display_string2<string3>;disp_alm1<>;disp_alm2<>;}if<<alm_flag1==0>&&<alm_flag2==1>>{display_string2<string4>;disp_alm1<>;disp_alm2<>;}if<<alm_flag1==1>&&<alm_flag2==1>>{display_string2<string5>;disp_alm1<>;disp_alm2<>;}}if<k4==0>{alm_flag2=0;if<<alm_flag1==0>&&<alm_flag2==0>>{display_string2<string2>;disp_alm1<>;disp_alm2<>;}if<<alm_flag1==1>&&<alm_flag2==0>>{display_string2<string3>;disp_alm1<>;disp_alm2<>;}if<<alm_flag1==0>&&<alm_flag2==1>>{display_string2<string4>;disp_alm1<>;disp_alm2<>;}if<<alm_flag1==1>&&<alm_flag2==1>>{display_string2<string5>;disp_alm1<>;disp_alm2<>;}}if<k6==0>{ok=1;}time<>;}alm_led2=1;}//***************************************************//函数功能:调整倒计时时间//****************************************************voidset_countdown<>{write_com<0x01>;display_string1<string6>;display_string2<string7>;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国物流行业协会发展现状及职能转型与行业服务创新
- 2026中国稀土永磁材料在全球供应链中的地位与竞争策略分析
- 2026人工智能机器人应用前景调研及智能工厂数据分析报告
- 2026中国氢燃料电池汽车商业化进程与基础设施配套方案报告
- 生氧施工安全技术措施培训
- 2026全息顯示行業市場前景技術創新評估商業化規劃發展策略研究報告
- 2026中国印刷复制行业市场供需分析及投资评估规划分析研究报告
- 升降机安全技术知识培训
- 防止汽轮机大轴弯曲安全技术措施培训
- 2026中国医疗健康产业发展现状养老服务模式创新分析投资规
- 2026年河北高考化学试卷答案详解及复习备考指导
- 2026年山西省中考语文试卷(含答案及解析)
- GB/T 1345-2026水泥细度检验方法筛析法
- 神经外科术后颅内感染诊治共识2026
- 手术患者的静脉输液管理
- 2026古建筑保护与开发市场现状及文化遗产价值评估分析研究报告
- 成都环境投资集团有限公司招聘笔试题库2026
- 2026年师德师风教育《筑牢师德师风根基培育铸魂育人之师》(课件+文字稿)
- 社区健康监测数据采集标准手册
- 卒中的急救和康复护理
- 2025-2030中国竞赛帆船行业市场发展趋势与前景展望战略研究报告
评论
0/150
提交评论