




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
仪征技师学院课程设计报告项目名称电子万年台历的设计制作指导老师;朱明东制作者罗贞李飞李松赵强谢雪晨吴业强赵祥龙韩恒志马友友所在系别电子信息系班级11电子高级班摘要随着科技与技术的发展,目前设计电子万年历的方法有多种,本设计介绍了一种基于STC89C52单片机设计万年历的方法。首先介绍了电路的工作原理、STC89C52单片机的性能和特点、并概述了用单片机实现万年历的硬件框图及软件实现方法。本设计以STC89C52单片机为核心,辅以必要的外围电路,设计了一个简易的万年历。实现了年、月、日、时间一起显示,并带有测温度和星期显示功能。该万年历具有硬件成本低、计时准确、调整时间容易等特点。在设计的软件平台是以PROTUES7为仿真平台,使用C语言编程编写了该设计的应用软件;包括主程序模块、显示模块、温度测试模块、时钟模块。最后,实际制作了一台万年历产品,在实验室里进行了测试,结果表明该万年历的功能和指标达到了设计要求。关键词万年历;单片机;液晶DS1302芯片;18B20目录1前言411设计背景412设计目的413设计的主要内容和要求4131主要内容4132主要要求52整体设计方案521方案比较5211时钟电路5212显示部分5213测温部分622实际方案63硬件电路的设计731单片机电路的设计732实时时钟电路的设计833独立键盘的设计934显示部分的设计104软件设计1041主程序设计1042键盘服务子程序设计1143LCD显示子程序设计125系统测试13附录14附录一14附录二146总结151前言11设计背景万年历已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使万年历具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。尽管目前市场上已有现成的万年历集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成万年历电路的设计,因此进行万年历的设计是必要的。在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路、写程序、调试电路的能力。单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。12设计目的通过本研究性学习,进一步了解研究性学习的要求和写作过程,了解此类设计的研究方法,培养文献检索能力、创新能力、文字表达能力等。本设计主电路都采用目前流行的简单的典型电路接法,简单实用、稳定廉价。本设计可起到一个很好的教学目的和实验目的,对于认识PIC单片机也有一定的好处,能更加熟悉单片机和其它芯片之间的通信。13设计的主要内容和要求131主要内容1)MCS51单片机是由美国INTEL公司生产的一系列单片机的总称。单片机即集成在一块芯片上的计算机,集成了中央处理器CPU(CENTRALPROCESSINGUNIT)、随机存储器RAM(RANDOMACCESSMEMORY)、只读存储器(READONLYMEMORY)、定时器/计数器以及I/O接口电路等主要计算机部件。采用精简指令集结构(RISC)的高性价比嵌入式控制器,其总线结构采取数据总线和指令线分离独立的哈佛(HARVARD)结构。实时时钟芯片DS1302和温度传感芯片DS18B20都是DALLAS公司出产的,都采用单总线数据传送方式,所以我们先要弄懂单总线传送方式是一个什么样的传送方式。2)1602液晶芯片是一款常见的LCD液晶屏幕,对它的读写我们要注意读写时序,还有PIC单片机速度比8051单片机要快,以前对1602写操作前不会检查忙否,但PIC一定要确认1602不忙才进行写操作。132主要要求1设计要做到操作简单实用廉价;2要能显示秒、分、时、天、月、周、年、温度等信息,并能调整以上信息;3键盘控制调整时钟信息和显示要灵敏不能出现较大的延时,灵活,可移植性强,能够随时对电路进行改进;4可观性强,轻巧耐用。2整体设计方案21方案比较211时钟电路方案一使用单片机内部的定时器,实现时间的显示。方案二使用时钟芯片DS1302。它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能。考虑到软件的简单方便,以及时间稳定等因素。本设计采用方案二。212显示部分方案一使用常用的数码管。方案二使用液晶(1602)进行显示。由于使用数码管显示,硬件电路复杂,接线太多,并且显示效果不理想。所以本设计选择方案二。213测温电路方案一使用半导体测温模块方案二使用18B20测温虽然半导体测温模块测量温度精确,但由于它价格较高,考虑到此设计的成本,所以选着方案二。22实际方案为提高设计效率,使设计思路清晰,本设计拟将整个系统模块化。采用的整体设计方案如图21所示,整个系统由单片机1、显示电路2,独立键盘电路3、DS1302实时时钟电路4、复位电路等部分组成。图21整体设计框图当电源开关打开后,系统电路初始化,一从DS1302实时时钟电路中读取一串时钟信息,二从DS18B20温度传感电路读取一串温度信息,然后单片机系统对采集到的数据进行变换和处理,再通过LCD显示出来,完成一次显示过程。然后,通过键盘设置准确时间并确认。独立键盘作为外部中断连接,当有键盘按下时,触发中断,进入中断服务子程序,子程序将会判断哪个键被按下了,有什么作用,要进行怎样的处理,本电路按键可进行时间的增减,以及确认和跳出功能。复位电路中,当复位键按下时,系统将重新初始化,并再按上面所述重新执行下来。3硬件电路的设计31单片机电路的设计主要元器件STC89C52单片机,12MHZ晶振、30PF电容、10K电阻、开关。STC89C52单片机是宏晶科技公司推出的新一代高速、低功耗、超强抗干扰的单片机,指令代码完全兼容传统8051单片机。HD版本和90C版本内部集成MAX810专用复位电路。其采用精简指令集结构(RISC)的高性价比嵌入式控制器,其总线结构采取数据总线和指令线分离独立的哈佛(HARVARD)结构,哈佛结构是数据存储器与程序存储器独立编址,也就是两种存储器位于不同的逻辑空间里,使得它在执行一条指令的同时,就可以提取下一条指令,因此具有很高的流水处理速度。其高速度、低电压工作,低功耗,强大驱动能力,低价OTP技术,体积小巧等都体现了单片机工业的新趋势;同时第三方开发的C语言开发工具,更使得研发工程师能够快速地开发升级产品,满足市场不断变化的需求。其节约成本的最优化设计,适于用量大、档次低、价格敏感的产品4。STC89C51有40根接脚,每根接脚都有其特定功能。设计中以STC89C52单片机为主芯片,DS1302、DS18B20等为辅芯片,将结果在LCD上显示。具体总原理图如图31。图31总原理图电路图图32单片机电路图32实时时钟电路的设计主要元器件DS1302、电容、5K10K20K电阻。DS1302是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路秒、分、时、日期、月、年的信息,时钟操作是二十四小时制的显示。DS1302与单片机之间能简单地采用同步串行的方式进行通信,需用到三个口线1RES复位,2I/O数据线,3SCLK串行时钟。时钟RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。DS1302工作时功耗很低,保持数据和时钟信息时功率小于1MW。DS1302是由DS1202改进而来,VCC1为可编程涓流充电电源,附加七个字节存储器。实时时钟具有能计算2100年之前的秒、分、时、日期、星期、月、年的能力、还有闰年调整的能力,这就使本来要通过复杂的算法来计算出的星期的计算简单了许多。设计中我们要设计一个高稳定晶振电路,这里我们用二片电容和一个32768MHZ的晶振。具体电路连接如图33所示。图33实时时钟电路图33独立键盘的设计主要元器件键盘、10千欧和100欧电阻、电源和地等等。键盘电路一般都是让端口检测低电平,有用扫描的方法检测哪个键有按下,也有用中断的方法检测。本设计中的独立键盘是前者,一般键盘可直接接地,但这里为了稳定起见,在挂键盘的端口用了个上拉电阻。具体电路连接如图34所示。图34独立键盘电路图34显示部分的设计主要元件电阻、滑动变阻器、1602液晶、电源和地等。液晶显示器是利用液晶经过处理后能够改变光线传输方向的特性,达到显示字符或者图形的目的。其特点是体积小、重量轻、功耗极低、显示内容丰富等特点,在单片机应用中有着日益广泛的应用。1602芯片主要用于显示时间和定时时间。1602芯片由点阵字符液晶显示器件和专用的行、列驱动器、控制及必要的链接件、结构件组装而成,可以显示数字和西文字符,但不能显示图形,已经可以满足本次设计的需要。1602型LCD可以显示2行16个字符,有8位数据总线D0D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。为了显示的稳定,本部分在液晶屏的数据线端口每个上面都连接了上拉电阻。现实电路中屏幕的背光电源也已经接上,使得显示更加清晰美观。其中第三引脚连接了一个10K的滑动变阻器,这样可以调节屏幕上显示信息的清晰度,最终使得此设计更加完善。具体电路如图35所示。图35液晶显示电路4软件设计41主程序设计在主程序中,需要完成整体的功能构架并对各芯片的初始化,另外,在主程序模块中还需要设置定时器0,并对它们进行初始化。主程序一次循环流程图如图51所示。当打开电源开关时,各个模块初始化,然后显示固定在液晶上的用于美化显示的图形。之后读取温度信息,定时器0初始化,读取时间等信息,冒号闪烁,读取星期、农历信息,显示所有信息,结束一次循环。在实际运行时,显示完所有信息后,将返回到读取温度子函数前再往循环下执行。图41主程序流程图42键盘服务子程序设计在主程序中,进入键盘服务子程序后,开始扫描键盘情况,如果设置键没有键按下或是按下次数KK100,则本次扫描结束;若设置键按下次数KK101,则扫描加减键是否按下,若按下则可进行加减调节秒;若设置键按下次数KK102,则可通过加、减键调节分;若设置键按下次数KK103,则可通过加、减键调节时;若设置键按下次数KK104,则可通过加、减键调星期;若设置键按下次数KK105,则可通过加、减键调节天;若设置键按下次数KK106,则可通过加、减键调节月;若设置键按下次数KK107,则可通过加、减键调节年;设置键按下次数KK108,将回到初始显示界面。在次扫描过程中,如果检测到跳出键按下,则直接回到显示界面。图42独立键盘服务流程图43LCD显示子程序设计在LCD显示子程序中,初始化后,从LCD中读状态字,判断LCD是否忙状态,不是则可向LCD写控制命令,再写数据,即显示数据。图43LCD显示流程图5系统测试1测试原理在系统设计中,以MCS51单片机为核心的万年历,将18B20采集到的温度传送到单片机经过换算转化成对应的数值由液晶屏显示,同时将时钟芯片DS1302的信号送入单片机,经单片机处理后通过1602一起显示。以PROTUES7为仿真平台,画出实物图,进行仿真操作。使用C语言编程编写了系统应用程序;包括主程序模块、显示模块、温度测试模块。2测试方法以成功显示时间、日期、温度且可调为最终目的。首先,主要是在仿真软件中进行初步测试,检测电路的设计问题。然后在实物上,检测电路的焊接以及有没有错误连线等问题。3测试仪器万用表,计算机。4测试结果通过按键,实现其按键所对应的功能,并观察测试结果,对设计进一步的进行校正和对实现功能的可靠性的确认,并记录观察结果。本设计测试结果成功完成了设计要求,达到设计目的。附录附录一器材元件清单元件器材LCD1602一个单片机STC89C52一个滑动变阻器一个DS1302一个底座一个万用版若干电池三个电池盒一个晶振12MHZ一个18B20一个32768HZ的晶振一个30PF的电容二个10K的电阻若干1K的电阻若干BUTTON按键四个导线若干焊锡若干附录二源程序INCLUDEINCLUDE/INCLUDE“LCD1602H“/INCLUDE“DS1302H“DEFINEUINTUNSIGNEDINTDEFINEUCHARUNSIGNEDCHARSBITDS1302_CLKP17/实时时钟时钟线引脚SBITDS1302_IOP16/实时时钟数据线引脚SBITDS1302_RSTP15/实时时钟复位线引脚SBITWIRELESS_1P30SBITWIRELESS_2P31SBITWIRELESS_3P32SBITWIRELESS_4P33SBITACC0ACC0SBITACC7ACC7CHARHIDE_SEC,HIDE_MIN,HIDE_HOUR,HIDE_DAY,HIDE_WEEK,HIDE_MONTH,HIDE_YEAR/秒,分,时到日,月,年位闪的计数SBITSETP20/模式切换键SBITUPP21/加法按钮SBITDOWNP22/减法按钮SBITOUTP23/立刻跳出调整模式按钮SBITDQP10/温度传送数据IO口CHARDONE,COUNT,TEMP,FLAG,UP_FLAG,DOWN_FLAGUCHARTEMP_VALUE/温度值UCHARTEMPBUFFER5,WEEK_VALUE2VOIDSHOW_TIME/液晶显示程序/1602液晶显示部分子程序/PORTDEFINITIONSSBITLCDRSP25SBITLCDRWP26SBITLCDENP27SFRDBPORT0X80/P00X80,P10X90,P20XA0,P30XB0数据端口/内部等待函数UNSIGNEDCHARLCD_WAITVOIDLCDRS0LCDRW1_NOP_LCDEN1_NOP_LCDEN0RETURNDBPORT/写LCD写命令或数据DEFINELCD_COMMAND0/COMMANDDEFINELCD_DATA1/DATADEFINELCD_CLEAR_SCREEN0X01/清屏DEFINELCD_HOMING0X02/光标返回原点VOIDLCD_WRITEBITSTYLE,UNSIGNEDCHARINPUTLCDEN0LCDRSSTYLELCDRW0_NOP_DBPORTINPUT_NOP_/注意顺序LCDEN1_NOP_/注意顺序LCDEN0_NOP_LCD_WAIT/设置显示模式DEFINELCD_SHOW0X04/显示开DEFINELCD_HIDE0X00/显示关DEFINELCD_CURSOR0X02/显示光标DEFINELCD_NO_CURSOR0X00/无光标DEFINELCD_FLASH0X01/光标闪动DEFINELCD_NO_FLASH0X00/光标不闪动VOIDLCD_SETDISPLAYUNSIGNEDCHARDISPLAYMODELCD_WRITELCD_COMMAND,0X08|DISPLAYMODE/设置输入模式DEFINELCD_AC_UP0X02DEFINELCD_AC_DOWN0X00/DEFAULTDEFINELCD_MOVE0X01/画面可平移DEFINELCD_NO_MOVE0X00/DEFAULTVOIDLCD_SETINPUTUNSIGNEDCHARINPUTMODELCD_WRITELCD_COMMAND,0X04|INPUTMODE/初始化LCDVOIDLCD_INITIALLCDEN0LCD_WRITELCD_COMMAND,0X38/8位数据端口,2行显示,57点阵LCD_WRITELCD_COMMAND,0X38LCD_SETDISPLAYLCD_SHOW|LCD_NO_CURSOR/开启显示,无光标LCD_WRITELCD_COMMAND,LCD_CLEAR_SCREEN/清屏LCD_SETINPUTLCD_AC_UP|LCD_NO_MOVE/AC递增,画面不动/液晶字符输入的位置VOIDGOTOXYUNSIGNEDCHARX,UNSIGNEDCHARYIFY0LCD_WRITELCD_COMMAND,0X80|XIFY1LCD_WRITELCD_COMMAND,0X80|X0X40/将字符输出到液晶显示VOIDPRINTUNSIGNEDCHARSTRWHILESTR0LCD_WRITELCD_DATA,STRSTR/DS1302时钟部分子程序/TYPEDEFSTRUCT_SYSTEMTIME_UNSIGNEDCHARSECONDUNSIGNEDCHARMINUTEUNSIGNEDCHARHOURUNSIGNEDCHARWEEKUNSIGNEDCHARDAYUNSIGNEDCHARMONTHUNSIGNEDCHARYEARUNSIGNEDCHARDATESTRING11UNSIGNEDCHARTIMESTRING9SYSTEMTIME/定义的时间类型SYSTEMTIMECURRENTTIMEDEFINEAMXXDEFINEPMXX12/转成24小时制DEFINEDS1302_SECOND0X80/时钟芯片的寄存器位置,存放时间DEFINEDS1302_MINUTE0X82DEFINEDS1302_HOUR0X84DEFINEDS1302_WEEK0X8ADEFINEDS1302_DAY0X86DEFINEDS1302_MONTH0X88DEFINEDS1302_YEAR0X8CVOIDDS1302INPUTBYTEUNSIGNEDCHARD/实时时钟写入一字节内部函数UNSIGNEDCHARIACCDFORI8I0IDS1302_IOACC0/相当于汇编中的RRCDS1302_CLK1DS1302_CLK0ACCACC1UNSIGNEDCHARDS1302OUTPUTBYTEVOID/实时时钟读取一字节内部函数UNSIGNEDCHARIFORI8I0IACCACC1/相当于汇编中的RRCACC7DS1302_IODS1302_CLK1DS1302_CLK0RETURNACCVOIDWRITE1302UNSIGNEDCHARUCADDR,UNSIGNEDCHARUCDA/UCADDRDS1302地址,UCDATA要写的数据DS1302_RST0DS1302_CLK0DS1302_RST1DS1302INPUTBYTEUCADDR/地址,命令DS1302INPUTBYTEUCDA/写1BYTE数据DS1302_CLK1DS1302_RST0UNSIGNEDCHARREAD1302UNSIGNEDCHARUCADDR/读取DS1302某地址的数据UNSIGNEDCHARUCDATADS1302_RST0DS1302_CLK0DS1302_RST1DS1302INPUTBYTEUCADDR|0X01/地址,命令UCDATADS1302OUTPUTBYTE/读1BYTE数据DS1302_CLK1DS1302_RST0RETURNUCDATAVOIDDS1302_GETTIMESYSTEMTIMETIME/获取时钟数据到自定义的结构型数组UNSIGNEDCHARREADVALUEREADVALUEREAD1302DS1302_SECONDTIMESECONDREADVALUEREADVALUEREAD1302DS1302_MINUTETIMEMINUTEREADVALUEREADVALUEREAD1302DS1302_HOURTIMEHOURREADVALUEREADVALUEREAD1302DS1302_DAYTIMEDAYREADVALUEREADVALUEREAD1302DS1302_WEEKTIMEWEEKREADVALUEREADVALUEREAD1302DS1302_MONTHTIMEMONTHREADVALUEREADVALUEREAD1302DS1302_YEARTIMEYEARREADVALUEVOIDDATETOSTRSYSTEMTIMETIME/将时间年,月,日,星期数据转换成液晶显示字符串,放到数组里DATESTRINGIFHIDE_YEAR2就不显示,输出字符串为2007/07/22TIMEDATESTRING02TIMEDATESTRING10TIMEDATESTRING2TIMEYEAR/100TIMEDATESTRING3TIMEYEAR100ELSETIMEDATESTRING0TIMEDATESTRING1TIMEDATESTRING2TIMEDATESTRING3TIMEDATESTRING4/IFHIDE_MONTHDATESTRING5TIMEMONTH/100TIMEDATESTRING6TIMEMONTH100;ELSETIMEDATESTRING5TIMEDATESTRING6TIMEDATESTRING7/IFHIDE_DAYDATESTRING8TIMEDAY/100TIMEDATESTRING9TIMEDAY100;ELSETIMEDATESTRING8TIMEDATESTRING9IFHIDE_WEEKWEEK100/星期的数据另外放到WEEK_VALUE数组里,跟年,月,日的分开存放,因为等一下要在最后显示ELSEWEEK_VALUE0WEEK_VALUE10TIMEDATESTRING100/字符串末尾加0,判断结束字符VOIDTIMETOSTRSYSTEMTIMETIME/将时,分,秒数据转换成液晶显示字符放到数组TIMESTRINGIFHIDE_HOURTIMESTRING0TIMEHOUR/100TIMETIMESTRING1TIMEHOUR100ELSETIMETIMESTRING0TIMETIMESTRING1TIMETIMESTRING2IFHIDE_MINTIMESTRING3TIMEMINUTE/100TIMETIMESTRING4TIMEMINUTE100ELSETIMETIMESTRING3TIMETIMESTRING4TIMETIMESTRING5IFHIDE_SECTIMESTRING6TIMESECOND/100TIMETIMESTRING7TIMESECOND100ELSETIMETIMESTRING6TIMETIMESTRING7TIMEDATESTRING80VOIDINITIAL_DS1302VOID/时钟芯片初始化UNSIGNEDCHARSECONDREAD1302DS1302_SECONDIFSECOND/写入允许WRITE13020X8C,0X07/以下写入初始化时间日期07/07/25星期3时间235955WRITE13020X88,0X07WRITE13020X86,0X25WRITE13020X8A,0X07WRITE13020X84,0X23WRITE13020X82,0X59WRITE13020X80,0X55WRITE13020X8E,0X80/禁止写入/DS18B20子程序/DS18B20延迟子函数(晶振12MHZ)/VOIDDELAY_18B20UNSIGNEDINTIWHILEI/DS18B20初始化函数/VOIDINIT_DS18B20VOIDUNSIGNEDCHARX0DQ1/DQ复位DELAY_18B208/稍做延时DQ0/单片机将DQ拉低DELAY_18B2080/精确延时大于480USDQ1/拉高总线DELAY_18B2014XDQ/稍做延时后如果X0则初始化成功X1则初始化失败DELAY_18B2020/DS18B20读一个字节/UNSIGNEDCHARREADONECHARVOIDUCHARI0UCHARDAT0FORI8I0IDQ0/给脉冲信号DAT1DQ1/给脉冲信号IFDQDAT|0X80DELAY_18B204RETURNDAT/DS18B20写一个字节/VOIDWRITEONECHARUCHARDATUNSIGNEDCHARI0FORI8I0IDQ0DQDATDELAY_18B205DQ1DAT1/读取DS18B20当前温度/VOIDREADTEMPVOIDUNSIGNEDCHARA0UNSIGNEDCHARB0UNSIGNEDCHART0INIT_DS18B20WRITEONECHAR0XCC/跳过读序号列号的操作WRITEONECHAR0X44/启动温度转换DELAY_18B20100/THISMESSAGEISWERYIMPORTANTINIT_DS18B20WRITEONECHAR0XCC/跳过读序号列号的操作WRITEONECHAR0XBE/读取温度寄存器前两个就是温度DELAY_18B20100AREADONECHAR/读取温度值低位BREADONECHAR/读取温度值高位TEMP_VALUEB4VOIDTEMP_TO_STR/温度数据转换成液晶字符显示TEMPBUFFER0TEMP_VALUE/100/十位TEMPBUFFER1TEMP_VALUE100/个位TEMPBUFFER20XDF/温度符号TEMPBUFFER3CTEMPBUFFER40VOIDDELAY1MSUNSIGNEDINTCOUNTUNSIGNEDINTI,JFORI0I0DELAYFORI0I0X59/超过59秒,清零TEMP0BREAKCASE2TEMPREAD1302DS1302_MINUTE/读取分数TEMPTEMP1/分数加1UP_FLAG1IFTEMP0X59/超过59分,清零TEMP0BREAKCASE3TEMPREAD1302DS1302_HOUR/读取小时数TEMPTEMP1/小时数加1UP_FLAG1IFTEMP0X23/超过23小时,清零TEMP0BREAKCASE4TEMPREAD1302DS1302_WEEK/读取星期数TEMPTEMP1/星期数加1UP_FLAG1IFTEMP0X7TEMP1BREAKCASE5TEMPREAD1302DS1302_DAY/读取日数TEMPTEMP1/日数加1UP_FLAG1IFTEMP0X31TEMP1BREAKCASE6TEMPREAD1302DS1302_MONTH/读取月数TEMPTEMP1/月数加1UP_FLAG1IFTEMP0X12TEMP1BREAKCASE7TEMPREAD1302DS1302_YEAR/读取年数TEMPTEMP1/年数加1UP_FLAG1IFTEMP0X85TEMP0BREAKDEFAULTBREAKWHILEUP0WHILEWIRELESS_21/VOIDDOWNKEY/降序按键DOWN1IFDOWN0|WIRELESS_31MDELAY8SWITCHCOUNTCASE1TEMPREAD1302DS1302_SECOND/读取秒数TEMPTEMP1/秒数减1DOWN_FLAG1/数据调整后更新标志IFTEMP0X7F/小于0秒,返回59秒TEMP0X59BREAKCASE2TEMPREAD1302DS1302_MINUTE/读取分数TEMPTEMP1/分数减1DOWN_FLAG1IFTEMP1TEMP0X59/小于0秒,返回59秒BREAKCASE3TEMPREAD1302DS1302_HOUR/读取小时数TEMPTEMP1/小时数减1DOWN_FLAG1IFTEMP1TEMP0X23BREAKCASE4TEMPREAD1302DS1302_WEEK/读取星期数TEMPTEMP1/星期数减1DOWN_FLAG1IFTEMP0TEMP0X7BREAKCASE5TEMPREAD1302DS1302_DAY/读取日数TEMPTEMP1/日数减1DOWN_FLAG1IFTEMP0TEMP31BREAKCASE6TEMPREAD1302DS1302_MONTH/读取月数TEMPTEMP1/月数减1DOWN_FLAG1IFTEMP0TEMP12BREAKCASE7TEMPREAD1302DS1302_YEAR/读取年数TEMPTEMP1/年数减1DOWN_FLAG1IFTEMP1TEMP0X85BREAKDEFAULTBREAKWHILEDOWN0WHILEWIRELESS_31VOIDSETKEY/模式选择按键SET1IFSET0|WIRELESS_41MDELAY8COUNTCOUNT1/SETKEY按一次,COUNT就加1DONE1/进入调整模式WHILESET0WHILEWIRELESS_41VOIDKEYDONE/按键功能执行UCHARSECONDIFFLAG0/关闭时钟,停止计时WRITE13020X8E,0X00/写入允许TEMPREAD13020X80WRITE13020X80,TEMP|0X80WRITE13020X8E,0X80/禁止写入FLAG1SETKEY/扫描模式切换按键SWITCHCOUNTCASE1DO/COUNT1,调整秒OUTKEY/扫描跳出按钮UPKEY/扫描加按钮DOWNKEY/扫描减按钮IFUP_FLAG1|DOWN_FLAG1/数据更新,重新写入新的数据WRITE13020X8E,0X00/写入允许WRITE13020X80,TEMP|0X80/写入新的秒数WRITE13020X8E,0X80/禁止写入UP_FLAG0DOWN_FLAG0HIDE_SEC/位闪计数IFHIDE_SEC3HIDE_SEC0SHOW_TIME/液晶显示数据WHILECOUNT2BREAKCASE2DO/COUNT2,调整分HIDE_SEC0OUTKEYUPKEYDOWNKEYIFTEMP0X60TEMP0IFUP_FLAG1|DOWN_FLAG1WRITE13020X8E,0X00/写入允许WRITE13020X82,TEMP/写入新的分数WRITE13020X8E,0X80/禁止写入UP_FLAG0DOWN_FLAG0HIDE_MINIFHIDE_MIN3HIDE_MIN0SHOW_TIMEWHILECOUNT3BREAKCASE3DO/COUNT3,调整小时HIDE_MIN0OUTKEYUPKEYDOWNKEYIFUP_FLAG1|DOWN_FLAG1WRITE13020X8E,0X00/写入允许WRITE13020X84,TEMP/写入新的小时数WRITE13020X8E,0X80/禁止写入UP_FLAG0DOWN_FLAG0HIDE_HOURIFHIDE_HOUR3HIDE_HOUR0SHOW_TIMEWHILECOUNT4BREAKCASE4DO/COUNT4,调整星期HIDE_HOUR0OUTKEYUPKEYDOWNKEYIFUP_FLAG1|DOWN_FLAG1WRITE13020X8E,0X00/写入允许WRITE13020X8A,TEMP/写入新的星期数WRITE13020X8E,0X80/禁止写入UP_FLAG0DOWN_FLAG0HIDE_WEEKIFHIDE_WEEK3HIDE_WEEK0SHOW_TIMEWHILECOUNT5BREAKCASE5DO/COUNT5,调整日HIDE_WEEK0OUTKEYUPKEYDOWNKEYIFUP_FLAG1|DOWN_FLAG1WRITE13020X8E,0X00/写入允许WRITE13020X86,TEMP/写入新的日数WRITE13020X8E,0X80/禁止写入UP_FLAG0DOWN_FLAG0HIDE_DAYIFHIDE_DAY3HIDE_DAY0SHOW_TIMEWHILECOUNT6BREAKCASE6DO/COUNT6,调整月HIDE_DAY0OUTKEYUPKEYDOWNKEYIFUP_FLAG1|DOWN_FLAG1WRITE13020X8E,0X00/写入允许WRITE13020X88,TEMP/写入新的月数WRITE13020X8E,0X80/禁止写入UP_FLAG0DOWN_FLAG0HIDE_MONTHIFHIDE_MONTH3HIDE_MONTH0SHOW_TIMEWHILECOUNT7BREAKCASE7DO/COUNT7,调整年HIDE_MONTH0OUTKEYUPKEYDOWNKEYIFUP_FLAG1|DOWN_FLAG1WRITE13020X8E,0X00/写入允许WRITE13020X8C,TEMP/写入新的年数WRITE13020X8E,0X80/禁止写入UP_FLAG0DOWN_FLAG0HIDE_YEARIFHIDE_YEAR3HIDE_YEAR0SHOW_TIMEWH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西体育职业学院《C语言》2023-2024学年第二学期期末试卷
- 贵阳康养职业大学《微波测量技术及仪器》2023-2024学年第二学期期末试卷
- 宁波工程学院《成本会计学》2023-2024学年第二学期期末试卷
- 吉林城市职业技术学院《传感与检测技术》2023-2024学年第二学期期末试卷
- 九江职业技术学院《云计算和大数据技术》2023-2024学年第二学期期末试卷
- 南京城市职业学院《商务决策模型》2023-2024学年第二学期期末试卷
- 2024年发电机组、内燃发电机组及旋转式变流机项目资金需求报告代可行性研究报告
- 核磁共振成像设备维护保养培训
- 学生个人规划课件
- 小学生感恩教育主题班会
- DEFORM-3D模拟控制(五):网格重划分
- 2023年江苏南京市市属国企高层次人才招聘笔试参考题库附带答案详解
- COMMERCIAL INVOICE 商业发票模板
- 耳尖放血课件完整版
- 履带式起重机
- 基于TLR4-ACE2轴研究铁死亡在幽门螺杆菌感染致病中的作用及机制
- 篮球比赛计时计分器设计
- 并购重组试题
- GB/T 23329-2009纺织品织物悬垂性的测定
- GB/T 21411.2-2009石油天然气工业井下设备人工举升用螺杆泵系统第2部分:地面驱动装置
- GB 2757-2012食品安全国家标准蒸馏酒及其配制酒
评论
0/150
提交评论