电子台历电子设计_第1页
电子台历电子设计_第2页
电子台历电子设计_第3页
电子台历电子设计_第4页
电子台历电子设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

2016年全国大学生电子设计竞赛电子台历(B题)2016年6月3日摘要电子台历中需显示时间、日期、和温度等信息的校准使用四个按键,另外还需要显示星期几。根据项目要求,该系统选用AT89C52单片机作为处理器;使用DS1302作为时钟芯片,使用1602液晶显示模块。目录一、系统方案11、系统构造12、元器件的论证与选择2二、系统理论分析与计算21、电子台历的分析3(1)51单片机的最小系统3(2)DS1302的引脚分析3(3)液晶显示器的引脚分析3三、电路与程序设计41、电路的设计4(1)系统总体框图4(2)系统显示子系统框图与电路原理图4(3)系统按键子系统框图与电路原理图4(4)电源42、程序的设计5(1)程序功能描述与设计思路5(2)程序流程图6四、测试方案与测试结果81、测试方案82、测试条件与仪器83、测试结果及分析9(1)测试结果数据9(2)测试分析与结论9五、结论与心得10六、参考文献11附录1电路原理图12附录2源程序13电子台历(B题)【高职高专组】一、系统方案1系统构造本系统主要由时钟模块,按键模块,数据处理模块,温度模块,下面介绍电子台历的元器件选择时钟模块该模块采用DS1302时钟芯片,使用13768KHZ晶振,芯片自带时间存储器,单片机可从中直接读取,免去繁琐的计算。按键模块使用四个按键,其中两个作为左右选择和时间校准;一个作为功能键,用于时间校准和闹铃输入;另外1个作为确认键,用于确认信息和返回。数据处理模块数据处理模块采用AT89C52,信息汇集到单片机经单片机处理后再发送到其他设备,完成一个工作周期后再返回重复执行。温度模块采用18D20,能够干净有效的获取温度,链接方便,利于使用。2方案和论证单片机芯片的选择方案和论证方案一采用89C51芯片作为硬件核心,采用FLASHROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。方案二采用AT89C52,片内ROM全都采用FLASHROM;能以3V的超底压工作;同时也与MCS51系列单片机完全该芯片内部存储器为8KBROM,具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏,所以选择采用AT89C52作为主控制系统。显示模块选择方案和论证方案一采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见。方案二采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。方案三采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。但是功能比较单一,且不能显示较多字符。所以采用LED液晶显示屏。时钟芯片的选择方案和论证方案一直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。方案二采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压25V55V范围内,25V时耗电小于300MA温度传感器的选择方案与论证方案一使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。方案二采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。电路设计最终方案决定综上各方案所述,对此次作品的方案选定采用AT89C52作为主控制系统;DS1302提供时钟;数字式温度传感器;LED液晶显示器二、系统理论分析1、电子台历的分析(1)51单片机的最小系统此最小系统中的电源供电模块的电源可以通过电脑的USB口供给,也可以使用外部稳定的5V电源供电模块供给。电源电路中接入了电源指示LED。STC89系列的复位电路由按键复位和上电复位两部分组成。上电复位通常在复位引脚RST上连接一个电容到VCC,再连接电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10UF。按键复位按键复位就是在复位电容上并联一个开关,当开关按下时电容被放点、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。(2)DS1302的引脚分析X1,X2是32768KHZ晶振的引脚VCC2是电源供电引脚,VCC1是3V纽扣电池的供电引脚;SCLK为与单片机串行通信的时钟引脚I/O为与单片机传送数据的引脚RTS是DS1302的复位引脚,低电平有效。(3)液晶显示器的引脚分析RT1602采用标准的16脚接口,各引脚情况如下第一脚VSS,电源地第二脚VDD,5V电源第三脚V0,液晶显示偏压信号,一般加电位器调整第四脚RS,数据、命令选择端,高电平时选择数据寄存器、低电平时选择指令寄存器。第五脚R/W,读/写选择端,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第六脚E,端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚D0D7,为8位双向数据线。第15脚BLA,背光源正极第16脚BLK,背光源负极三、电路与程序设计1、电路的设计(1)系统总体框图系统总体框图(2)系统显示子系统框图与电路原理图(3)系统键扫子系统框图与电路原理图(4)电源此最小系统中的电源供电模块的电源可以通过电脑的USB口供给,也可以使用外部稳定的5V电源供电模块供给。电源电路中接入了电源指示LED。2、程序的设计(1)程序功能描述与设计思路1、程序功能描述在液晶显示年,月,日,时,分,秒。1键用于模式调整,按一下改变一个模块值。B键用于按下2键后的1。C键用于按下3键后的1。D键用于确定改变值。到23时59分59秒时到0时0分0秒的自动进位。日期到一个月的自动进位1,满1年自动进位1。且可以显示温度,星期几。2、程序设计思路由平时使用的手机,电脑和手表的等携带的功能延伸过来的,并加上了对温度的显示,取消了闹钟功能。(2)程序流程图1、主程序流程图2、中断子程序流程图四、测试方案与测试结果1、测试方案(1)硬件测试我们在焊接好电路之后因为原件引脚接错了,导致一两个元器件损坏,然后用万用表测试,发现有一些小问题。(2)软件仿真测试软件仿真我们用的是PROTEUS仿真,仿真结果很好,如图可以显示现在的日期和时间,星期几以及温度(3)硬件软件联调一开始因为元器件焊接有一点点的问题,导致只能点亮液晶显示屏不能显示任务的要求,后来更改了这些问题之后,液晶就可以正常显示了2、测试条件与仪器测试条件检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。测试仪器硬件用指针式万用表,软件用PROTEUS。3、测试结果及分析(1)测试结果数据电路为通路,电压为5V。PROTEUS正常显示时间,日期,星期及温度。液晶为正常5V电压,且正常显示软件仿真的数据。(2)测试分析与结论根据上述测试数据,由此可以得出以下结论1、硬件电路无虚焊。2、PROTEUS软件仿真无误。3、软件硬件联调无误,正常显示功能。综上所述,本设计达到设计要求。焊接工艺在焊接方面,我们是用的手工焊接,在手工焊接方面,我们主要按照以下几个步骤进行A准备焊接清洁被焊元件处的积尘及油污,再将被焊元器件周围的元器件左右掰一掰,让电烙铁头可以触到被焊元器件的焊锡处,以免烙铁头伸向焊接处时烫坏其他元器件。在此期间,我们也要给烙铁预热,让温度达到250400。焊接新的元器件时,应对元器件的引线镀锡。B加热焊接将沾有少许焊锡和松香的电烙铁头接触被焊元器件约几秒钟。若是要拆下印刷板上的元器件,则待烙铁头加热后,用手或镊子轻轻拉动元器件,看是否可以取下。C清理焊接面若所焊部位焊锡过多,可将烙铁头上的焊锡甩掉注意不要烫伤皮肤,也不要甩到印刷电路板上,用光烙锡头“沾“些焊锡出来。若焊点焊锡过少、不圆滑时,可以用电烙铁头“蘸“些焊锡对焊点进行补焊。D检查焊点看焊点是否圆润、光亮、牢固,是否有与周围元器件连焊的现象。五、结论与心得这次实训,用了一周的时间,让我们受益匪浅,学习到了很多课本上学不到的知识。这次实训初步完成了原本的要求。之前学习到的知识得到了进一步的巩固和提高,学到了不少新的东西,也学习到了作为一个团队应该做的事情,互相帮助的团队精神,相信在今后的工作和学习中会使我们终身受益。这次实训让我们的的学习能力得到了提高,完成了对于单片机程序的编写、PCB的设计、和硬件电路的设计等。当然在实训的过程中我们也遇到了很多的困难,但是通过查阅资料、问同学和老师帮助下,解决了困难,这无疑让我们对理论知识有了更深一步的认识与理解,也培养了我们的自学能力以及分析问题和解决问题的能力。感觉这次实训比较困难的地方是编写程序还有对电路的设计和布局,为了让电路板看起来比较美观,花了很多的时间和精力,但是最后还是做好了,感觉看起来还是很不错。这次实训我们组受益匪浅,也让我们知道了,想要做好一件事情,要有耐心,不能浮躁,一步接着一步的做下去,才能做成功。六、参考文献1李泽中C语言程序设计M清华大学出版社,2010附录1源程序INCLUDEINCLUDE/INCLUDE“LCD1602H“/INCLUDE“DS1302H“DEFINEUINTUNSIGNEDINTDEFINEUCHARUNSIGNEDCHARSBITDS1302_CLKP23/实时时钟时钟线引脚SBITDS1302_IOP24/实时时钟数据线引脚SBITDS1302_RSTP25/实时时钟复位线引脚SBITWIRELESS_1P30SBITWIRELESS_2P31SBITWIRELESS_3P32SBITWIRELESS_4P33SBITACC0ACC0SBITACC7ACC7CHARHIDE_SEC,HIDE_MIN,HIDE_HOUR,HIDE_DAY,HIDE_WEEK,HIDE_MONTH,HIDE_YEAR/秒,分,时到日,月,年位闪的计数SBITSETP34/模式切换键SBITUPP35/加法按钮SBITDOWNP36/减法按钮SBITOUTP37/立刻跳出调整模式按钮SBITDQP27/温度传送数据IO口CHARDONE,COUNT,TEMP,FLAG,UP_FLAG,DOWN_FLAGUCHARTEMP_VALUE/温度值UCHARTEMPBUFFER5,WEEK_VALUE2VOIDSHOW_TIME/液晶显示程序/1602液晶显示部分子程序/PORTDEFINITIONSSBITLCDRSP20SBITLCDRWP21SBITLCDENP22SFRDBPORT0X90/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/100TIMEDATESTRING6TIMEMONTH100ELSETIMEDATESTRING5TIMEDATESTRING6TIMEDATESTRING7/IFHIDE_DAYDATESTRING8TIMEDAY/100TIMEDATESTRING9TIMEDAY100ELSETIMEDATESTRING8TIMEDATESTRING9IFHIDE_WEEKWEEK1010/星期的数据另外放到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/读取温度寄存器等(共可读9个寄存器)前两个就是温度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

温馨提示

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

评论

0/150

提交评论