毕业设计-基于STC89C52单片机的可调式电子日历设计

上传人:e****s 文档编号:227412029 上传时间:2023-08-11 格式:DOC 页数:30 大小:361KB
收藏 版权申诉 举报 下载
毕业设计-基于STC89C52单片机的可调式电子日历设计_第1页
第1页 / 共30页
毕业设计-基于STC89C52单片机的可调式电子日历设计_第2页
第2页 / 共30页
毕业设计-基于STC89C52单片机的可调式电子日历设计_第3页
第3页 / 共30页
资源描述:

《毕业设计-基于STC89C52单片机的可调式电子日历设计》由会员分享,可在线阅读,更多相关《毕业设计-基于STC89C52单片机的可调式电子日历设计(30页珍藏版)》请在装配图网上搜索。

1、基于STC89C52单片机的可调式电子日历设计摘 要本论文主要讲述了可调式电子日历的设计过程,主要包括硬件设计和程序设计。硬件主要包括以STC89C52单片机为主要控制电路、时钟电路DS1302、显示模块和按键模块电路等。程序设计主要包括:主程序流程图、按键扫描子程序、液晶初始化子程序等。相比于老师要求我们做的“简易数字钟的设计要求:1、开机时,显示12:00:00的时间开始计时;2、 P0.0控制“秒的调整,每按一次加1秒; 3、P0.1控制“分的调整,每按一次加1分; 4、P0.2控制“时的调整,每按一次加1个小时。我们进行了如下拓展:实现日历和时钟的显示并且能够对年月日时分秒进行调试。关

2、键词:STC89C52单片机、DS1302、LCD1602目 录目录1设计要求与方案论证21.1 设计要求:21.2 系统根本方案选择和论证21.2.1 单片机芯片的选择方案和论证21.2.2 显示模块选择方案和论证21.2.3 时钟芯片的选择方案和论证31.3 电路设计最终方案决定3系统的硬件设计与实现32.1 电路设计框图32.2 系统硬件概述32.3 主要单元电路的设计42.3.1 单片机主控制模块的设计42.3.2 时钟电路DS130252.3.3 显示模块的设计62.3.4 按键模块的设计7系统的软件设计83.1 主程序流程图83.2 按键扫描子程序93.3 液晶初始化子程序123.

3、4 软件测试123.5数据计算处理与性能分析:13加减键对时间日期改变处理算法:13性能分析:13实验结论以及实验心得总结134.1 实验结论:134.2 实验心得总结:14致谢词15参考文献15附录一 系统电路图16附录二 Proteus仿真图17附录三 系统程序17设计要求与方案论证1.1 设计要求: 具有年、月、日、时、分、秒等显示功能; 具备年、月、日、时、分、秒校准功能;1.2 系统根本方案选择和论证 单片机芯片的选择方案和论证方案一:采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,

4、但是运用于电路设计中时由于不具备ISP在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的屡次拔插会对芯片造成一定的损坏。方案二:采用STC89C52,片内ROM全都采用Flash ROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全兼容该芯片内部存储器为8KB ROM 存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,对所下载的程序能够加密,比拟平安。当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片屡次拔插,所以不会对芯片造成损坏。所以选择采用STC89C52作为主控制系统。 显示模块

5、选择方案和论证方案一:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比拟适合,如采用在显示数字显得太浪费,且价格也相对较高,所以不用此种作为显示。方案二:采用LED数码管动态扫描,虽然LED数码管价格适中,但要显示多个数字所需要的个数偏多,功耗较大,所以也不用此种作为显示。方案三:采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,与普通数码管相比功耗较小,硬件连接简单。所以显示局部采用1602液晶显示。 时钟芯片的选择方案和论证方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种

6、方案虽然减少芯片的使用,节约本钱,但是,实现的时间误差较大。所以不采用此方案。方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、周、月、年一级闰年补偿的年进行计数,而且精度高,RAM作为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA.1.3 电路设计最终方案决定综上各方案所述,对此次作品的方案选定:采用STC89C52作为主控制系统;DS1302提供时钟;LCD1602液晶作为显示 系统的硬件设计与实现2.1 电路设计框图图1电路设计框图2.2 系统硬件概述本电路是由STC89C52单片机为控制核心,具有在线编程功能

7、,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31*8的用于临时性存放数据的RAM存放器。可产生年、月、日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能,本电路采用DS1302单字节传送方式实现与主控机之间数据的传送;显示局部由1602构成。2.3 主要单元电路的设计 单片机主控制模块的设计STC89C52单片

8、机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口P0、P1、P2、P3,每一条I/O线都能独立地作输出或输入。单片机的最小系统如下列图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路, 如图-2图2主控制系统 时钟电路DS13021. DS1302的性能特性图3示出DS1302的引脚排列图,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情

9、况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768KHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位存放器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,那么会终止此次数据传送,I/O引脚变为高阻

10、态。上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。中有在SCLK 为低电平时,才能将RST置为高电平,I/O为串行数据输入端双向。SCLK始终是输入端。 图3 DS1302的引脚图2. DS1302数据操作原理DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0,接着把RST端置“1,最后才给予SCLK脉冲。DS1302的控制字,此控制字的位7必须置1,假设为0那么不能把对DS1302进行读写数据。对于位6,假设对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0那么表示进

11、行的是写操作。控制字节总是从最低位开始输入/输出的。DS1302的日历、时间存放器内容:“CH是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP是写保护位,在任何的对时钟和RAM的写操作之前,“WP必须为0。当“WP为1时,写保护位防止对任一存放器的写操作。 显示模块的设计1. 1602介绍字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子的1602字符型液晶显示器为例,介绍其用法。 2. 1602LCD的根本参数及引脚功能1602LCD分

12、为背光和不带背光两种,基控制大局部为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差异,引脚功能说明1602LCD采用标准的14脚无背光或16脚带背光接口,各引脚接口说明如表1所示:编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极表1:引脚接口说明表第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器比照度调整端,接正电源时比照度最弱,接地时比照

13、度最高,比照度过高时会产生“鬼影,使用时可以通过一个10K的电位器调整比照度。第4脚:RS为存放器选择,高电平时选择数据存放器、低电平时选择指令寄器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。1602LCD的一般初始化复位过程延时15mS写指令38H不检测忙信号延时5mS写指令38

14、H不检测忙信号延时5mS写指令38H不检测忙信号以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置3.LCD1602液晶显示 如图5所示:图5 LCD液晶显示 按键模块的设计根据设计要求需要选择四个独立按键分别为选择、加、减、确定,按键模块如图6所示:图6按键模块设计 系统的软件设计3.1 主程序流程图 图-A 主程序流程图主程序:void main() init(); write_setds(0x80,0x50); write_setds(0x82,0x59); wr

15、ite_setds(0x84,0x10); write_setds(0x86,0x17); write_setds(0x88,0x03);write_setds(0x8a,0x03); write_setds(0x8c,0x10);write_setds(0x90,0xa4);while(1) keyscan(); display(); 3.2 按键扫描子程序调整时间用4个调整按钮,1个作为选择控制用,另外3个分别作为加调整,减调整和确定用。时间调整程序流程图如图-B所示:图-B 时间调整程序流程图void SET_DS1302()uchar i;Write_DS1302(0x8e,0x00)

16、;for(i=0;i7;i+)Write_DS1302(0x80+2*i,(DateTimei/104|(DateTimei%10);Write_DS1302(0x8e,0x80);/*-读取当前时期时间-*/void GetTime()uchar i;for(i=0;i7;i+)DateTimei=Read_Data(0x81+2*i); /*- 时间和日期转换成数字字符-*/void Format_DateTime(uchar d,uchar *a)a0=d/10+0;a1=d%10+0;/*- 判断是否为闰年-*/uchar isLeapYear(uint y)return (y%4=0

17、&y%100!=0)|(y%400=0);void RefreshWeekDay()uint i,d,w=5;for(i=2000;i2000+DateTime6;i+)d=isLeapYear(i) ? 366 : 365;w=(w+d)%7;d=0;for(i=1;iDateTime4;i+) d+=MonthsDaysi;d+=DateTime3;DateTime5=(w+d)%7+1;/*- 年月日时分秒+/-*/void DateTime_Adjust(char x)switch (Adjust_Index)case 6: /年if(x= 1&DateTime60) DateTime

18、6-;MonthsDays2=isLeapYear(2000+DateTime6)? 29:28;if(DateTime3MonthsDaysDateTime4) DateTime3=MonthsDaysDateTime4;RefreshWeekDay();break;case 4: /月if(x= 1&DateTime41) DateTime4-;MonthsDays2=isLeapYear(2000+DateTime6)? 29:28;if(DateTime3MonthsDaysDateTime4)DateTime3=MonthsDaysDateTime4;RefreshWeekDay()

19、;break;case 3:/日MonthsDays2=isLeapYear(2000+DateTime6)? 29:28;if(x= 1&DateTime30) DateTime3-;RefreshWeekDay();break;case 2: /时if(x= 1&DateTime20) DateTime2-;break;case 1: /秒if(x= 1&DateTime10) DateTime1-;break; 3.3 液晶初始化子程序 /*初始化*/ void T0_INT() interrupt 1TH0=-50000/256;TL0=-50000%256;if(+tCount!=2

20、) return;tCount=0;Format_DateTime(DateTime6,LCD_DSY_BUFFER1+5);Format_DateTime(DateTime4,LCD_DSY_BUFFER1+8);Format_DateTime(DateTime3,LCD_DSY_BUFFER1+11);strcpy(LCD_DSY_BUFFER1+13,WEEKDateTime5-1);Format_DateTime(DateTime2,LCD_DSY_BUFFER2+5);Format_DateTime(DateTime1,LCD_DSY_BUFFER2+8);Format_DateTi

21、me(DateTime0,LCD_DSY_BUFFER2+11);Display_LCD_String(0x00,LCD_DSY_BUFFER1);Display_LCD_String(0x40,LCD_DSY_BUFFER2);3.4 软件测试可调电子日历是多功能的数字型,可以看当前日期,时间。在编写程序和调试时出现了较多的问题。最后经过屡次的模块子程序的修改,一步一步的完成,最终解决了软件。3.5数据计算处理与性能分析: 加减键对时间日期改变处理算法:对于年月日,时分秒来说,每个变量的最大值和最小值都不一样,所以当年月份时分秒改变时,进行处理的算法也不一样,年没有最大值,所以不用采取“封顶

22、措施,每次年加一处理时,直接自加,而对于月份来说,月份是不能超过13的,所以当月份自加到13时要重新置1,具体处理见程序,在每个语句后,我都有分析注释出来。1.3时分秒进位算法当秒,分到达60时,向分进位,且秒数置零,从新开始计数。当时到达24时,也一样处理。1.4年月日进位算法因为每个月份的天数都不同,所以事先先设定一数组:dayofmonth=31,28,31,30,31,30,31,31,30,31,30,31用以判定12个月的最大值,接着判断天数,当超过本月最大天数时,月份加一,且天数要置1。月份判断比拟简单,只要超过12,年份就加1,月份置1。性能分析: 首先,lcd能够正确的显示1

23、302芯片上面的时间和日期。其次,可以通过三个按键: K1, K2和K3键对电子钟进行时间和日期的调整。按K1键进行校时,可以分别对时及分进行单独校时,使其校正到标准时间,校时时需要校正哪一位哪一位就闪烁。按K2键是对闪烁位进行加一的操作。按K3键是对闪烁位进行减一的操作。屡次按K1键,当全部闪烁位全闪烁完毕时,就可以退出调整模式。实验结论以及实验心得总结4.1 实验结论:1、在该电子钟的设计中修改定时或调整时间时采用了闪烁,在编程上,首先进行了初始化定义了程序的入口地址以及中断的入口地址,在主程序的开始定义了一组固定单元用来存储计数的秒,分,时以及定时时间的序号等。其次,时,分,秒显示用了软

24、件译码(查表)的方式,再用了一段固定的程序段进行进制转化。最后,用查询方式对按键进行判断,假设有键按下,那么进行软件延时消抖,防止了抖动引起的干扰,执行相应的定时,选时或调时程序段。对当前时间或定时时间修改后又返回到最初的显示程序段,如此循环下去。2、在硬件上,选用DS1302,LCD1602相结合,首先DS1302内含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作,这样读取数据简单。其次,选用LCD1602进行显示时,数据位串行输入,接口连线少,低功耗,显示清晰。并且本实验的电子钟

25、即要实现时间的现实,还要实现日期的现实,所以假设是运用数码管进行显示的话,就算运用动态显示,所占用的IO口多,并且所需的数码管个数多,硬件复杂。3、proteus是一个非常好用的仿真软件,其具有强大的电路原理图绘制功能,且可以实现模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统仿真、键盘、LCD系统仿真等多种功能;和keil联合使用时可以检测所编写的程序的正确与否。将keil和proteus联合起来使用是实现电子设计制作的初步阶段,可防止在实际的硬件操作中因为电路原理图或向单片机烧录的程序有误而造成的难以修改的为题。4.2 实验心得总结:1、通过本次单片机实训,我们不仅再次稳固复习了去

26、年暑假里参加电子设计赛时学到的知识,还在老师同学的帮助下,进一步了解熟悉了DS1302,LCD1602的使用,及单片机的组成及其强大和缺乏。尽管由于忙于考研中间需要熬夜来完成各种过程,但整个过程是快乐而兴奋的!2、其次,再次稳固了Keil C51工程文件的建立,程序编写以及编译的掌握程度。最重要的是,因为只是水平有限,要自己编写一整个C程序还是很难必须查阅相关资料,但是最终we make it!我们很快乐!3、更加熟悉掌握了Proteus的使用方法,再次从实际操作中认识到Proteus在仿真方面的优越性,激发了自己学习Proteus的兴趣;4、因为自己要修改程序,所以单单花费在程序分析的时间就

27、很多,为了更好的理解程序,我把每句主要程序的后面都注释了该语句的意思,详情可以见程序清单,发现注释语义的工作量也是非常大的。写实验报告时,每个模块的流程图都是自己画的,用WORD文档画图真的很麻烦,而且不是很美观。因为时间比拟仓促,流程图写的条理性不够,不过相信以后多多练习,就可以做得更好。5、尽管有参加电子设计大赛的经历了,但是可能由于近一年时间没有接触单片机,编程,看程序的原因了,在整个过程中还是遇到了很多故障,不过通过各种渠道比方网络,请教同学,老师等等解决了一些故障,虽然没有全部解决,但能在短短一周内通过此次作业,实现电子钟的功能,还是有点成就感的。在解决这些问题的过程中发现网络确实是

28、一个很好的学习平台,利用前人的经验可以提高自己的解决实际问题的能力。通过这一个多礼拜的学习实践,使我们对所学的知识进行了系统的复习和稳固,在以前学习中不够清晰的概念得到了更好的理解。致谢词感谢学院,感谢王春梅老师再次给我们提供了一个展现自己的舞台,给我们一次难得煅炼的时机,使得我们的动手能力和专业技能都有了很大的提高。在设计和制作的过程中,我们深切的体会到,实践是理论运用的最好检验和团队合作的重要性,这一次的设计是对我们所学知识的一次综合性检测,无论是动手能力还是理论知识运用能力都得到了提高,同时加深了我们对网络资源的认识,大大提高了查阅资料的效率,使我们有充足的时间投入到电路设计当中。在做作

29、品的日子里得到了王春梅老师的悉心指导,在此向我们的王春梅师致以诚挚的谢意。参考文献1:张毅刚,彭喜元,姜守达,乔立言.?新编MCS-51单片机应用设计?哈尔滨工业大学出版社,20212:马忠梅.?单片机的C语言应用设计? 北京航空航天大学出版社 20213:王静霞.?单片机应用技术?,电子工业出版社, 2021.4:: 张道德.?单片机接口技术?,中国水利水电出版社 20075:石生.?电路根本分析?,高等教育出版社20216:谭浩强.?C语言程序设计?第2版,清华大学出版社.7:胡宴如,耿苏燕.?模拟电子技术?高等教育出版社20008:谭永红,雷跃,莫振栋?电子线路实验进阶教程?北京航空航天

30、大学出版 20219:刘国巍,周晓萍,周莉?数字电子技术根底?,国防科技大学出版社202110:张永枫,?单片机应用实训教程?北京:清华大学出版社,2021.11:刘守义,?单片机应用技术?第2版西安电子科技大学出版社,200712:先锋工作室?单片机程序设计实例?北京:清华大学出版社,200313:广州周立功单片机开展,Keil C51使用技巧及实战,200314:李群芳,?单片机微型计算机与接口技术?第2版北京:电子工业出版15:徐玮,?C51单片机高效入门?,北京:机械工业出版社,2006.附录一 系统电路图附图1系统电路图附录二 Proteus仿真图附图2 Proteus仿真图附录三

31、系统程序源程序如下:#include #include #include#define uchar unsigned char#define uint unsigned intsbit SDA=P10;/ DS1302数据线sbit CLK=P11;/DS1302时钟线sbit RST=P12; /DS1302复位线sbit RS=P20;sbit RW=P21;sbit EN=P22;sbit K1=P34; / 选择sbit K2=P35; / 加sbit K3=P36; / 减sbit K4=P37; / 确定void Display_LCD_String(uchar p,uchar *

32、s);uchar tCount=0;/一年中每个月的天数,2月的天数由年份决定uchar MonthsDays=0,31,0,31,30,31,30,31,31,30,31,30,31;uchar *WEEK=SUN,MON,TUS,WEN,THU,FRI,SAT;/周日,周一到周六uchar LCD_DSY_BUFFER1=Date 00-00-00 ; /LCD显示缓冲uchar LCD_DSY_BUFFER2=Time 00-00-00 ;uchar DateTime7; /所读取的日期时间char Adjust_Index=-1; /当前调节的时间:秒,分,时,日,uchar Chan

33、ge_Flag=-MHDM-Y; uchar Read_LCD_State(); void LCD_Busy_Wait(); void Write_LCD_Data(uchar dat); void Write_LCD_Command(uchar cmd); void Init_LCD(); void Set_LCD_POS(uchar p); void DelayMS(uint x) uchar i;while(x-) for(i=0;i120;i+); uchar Read_LCD_State() uchar state;RS=0;RW=1;EN=1;DelayMS(1);state=P0

34、;EN=0;DelayMS(1);return state; void LCD_Busy_Wait()while(Read_LCD_State()&0x08)=0x80);DelayMS(5);void Write_LCD_Data(uchar dat) /写数据LCD_Busy_Wait();RS=1;RW=0;EN=0;P0=dat;EN=1;DelayMS(1);EN=0;void Write_LCD_Command(uchar cmd)/写命令LCD_Busy_Wait();RS=0;RW=0;EN=0;P0=cmd;EN=1;DelayMS(1);EN=0;void Init_LCD

35、()/LCD初始化Write_LCD_Command(0x38); DelayMS(1);Write_LCD_Command(0x01); DelayMS(1);Write_LCD_Command(0x06); DelayMS(1);Write_LCD_Command(0x0C); DelayMS(1);Display_LCD_String(0x00,zhongzhoudaxue);/DelayMS(1000);Display_LCD_String(0x40,dian zi ri li);DelayMS(2000);void Set_LCD_POS(uchar p)Write_LCD_Comm

36、and(p|0x80);void Display_LCD_String(uchar p,uchar *s)uchar i;Set_LCD_POS(p);for(i=0;i16;i+)Write_LCD_Data(si);DelayMS(1);/*-向DS1302写入一字节-*/void DS1302_Write_Byte(uchar x) uchar i; for(i=0;i=1; /*-从DS1302读取一字节-*/uchar DS1302_Read_Byte()uchar i,b,t;for(i=0;i=1;t=SDA;b|=t7;CLK=1;CLK=0; return b/16*10+b

37、%16;/*-从DS1302指定位置数据-*/uchar Read_Data(uchar addr)uchar dat;RST=0;CLK=0;RST=1;DS1302_Write_Byte(addr);dat=DS1302_Read_Byte();CLK=1;RST=0;return dat;/*-向DS1302某地址写入数据-*/void Write_DS1302(uchar addr,uchar dat)CLK=0;RST=1;DS1302_Write_Byte(addr);DS1302_Write_Byte(dat);CLK=0;RST=0;/*- 设置时间-*/void SET_DS

38、1302()uchar i;Write_DS1302(0x8e,0x00);for(i=0;i7;i+)Write_DS1302(0x80+2*i,(DateTimei/104|(DateTimei%10);Write_DS1302(0x8e,0x80);/*-读取当前时期时间-*/void GetTime()uchar i;for(i=0;i7;i+)DateTimei=Read_Data(0x81+2*i); /*- 时间和日期转换成数字字符-*/void Format_DateTime(uchar d,uchar *a)a0=d/10+0;a1=d%10+0;/*- 判断是否为闰年-*/

39、uchar isLeapYear(uint y)return (y%4=0&y%100!=0)|(y%400=0);void RefreshWeekDay()uint i,d,w=5;for(i=2000;i2000+DateTime6;i+)d=isLeapYear(i) ? 366 : 365;w=(w+d)%7;d=0;for(i=1;iDateTime4;i+) d+=MonthsDaysi;d+=DateTime3;DateTime5=(w+d)%7+1;/*- 年月日时分秒+/-*/void DateTime_Adjust(char x)switch (Adjust_Index)c

40、ase 6: /年if(x= 1&DateTime60) DateTime6-;MonthsDays2=isLeapYear(2000+DateTime6)? 29:28;if(DateTime3MonthsDaysDateTime4) DateTime3=MonthsDaysDateTime4;RefreshWeekDay();break;case 4: /月if(x= 1&DateTime41) DateTime4-;MonthsDays2=isLeapYear(2000+DateTime6)? 29:28;if(DateTime3MonthsDaysDateTime4)DateTime3

41、=MonthsDaysDateTime4;RefreshWeekDay();break;case 3:/日MonthsDays2=isLeapYear(2000+DateTime6)? 29:28;if(x= 1&DateTime30) DateTime3-;RefreshWeekDay();break;case 2: /时if(x= 1&DateTime20) DateTime2-;break;case 1: /秒if(x= 1&DateTime10) DateTime1-;break; /*- 定时器每秒刷新LCD显示-*/void T0_INT() interrupt 1TH0=-500

42、00/256;TL0=-50000%256;if(+tCount!=2) return;tCount=0;Format_DateTime(DateTime6,LCD_DSY_BUFFER1+5);Format_DateTime(DateTime4,LCD_DSY_BUFFER1+8);Format_DateTime(DateTime3,LCD_DSY_BUFFER1+11);strcpy(LCD_DSY_BUFFER1+13,WEEKDateTime5-1);Format_DateTime(DateTime2,LCD_DSY_BUFFER2+5);Format_DateTime(DateTim

43、e1,LCD_DSY_BUFFER2+8);Format_DateTime(DateTime0,LCD_DSY_BUFFER2+11);Display_LCD_String(0x00,LCD_DSY_BUFFER1);Display_LCD_String(0x40,LCD_DSY_BUFFER2);/*- 键盘中断-*/void EX_INT0() interrupt 0if(K1=0)/选择调整对象:年,月,日,时,分,秒while(K1=0);if(Adjust_Index=-1|Adjust_Index=1) Adjust_Index=7;Adjust_Index-;if(Adjust_

44、Index=5) Adjust_Index=4;LCD_DSY_BUFFER213=;LCD_DSY_BUFFER214=Change_FlagAdjust_Index;LCD_DSY_BUFFER215=;elseif(K2=0) / 加while (K2=0); DateTime_Adjust(1);elseif(K3=0) / 减while (K3=0); DateTime_Adjust(-1);elseif(K4=0) / 确定while(K4=0);SET_DS1302();/调整后的时间写入DS1302LCD_DSY_BUFFER213= ;LCD_DSY_BUFFER214= ;

45、LCD_DSY_BUFFER215= ;Adjust_Index=-1;/*-主程序-*/void main()Init_LCD();/LCD初始化IE=0x83; / 允许INT0,T0中断IP=0x01;IT0=0x01;TMOD=0x01;TH0=-50000/256;TL0=-50000%256;TR0=1; while(1)if(Adjust_Index=-1) GetTime();g an employment tribunal claiEmployment tribunals sort out disagreements between employers and employe

46、es.You may need to make a claim to an employment tribunal if: you dont agree with the disciplinary action your employer has taken against you your employer dismisses you and you think that you have been dismissed unfairly.For more information about dismissal and unfair dismissal, seeDismissal.You ca

47、n make a claim to an employment tribunal, even if you haventappealedagainst the disciplinary action your employer has taken against you. However, if you win your case, the tribunal may reduce any compensation awarded to you as a result of your failure to appeal.Remember that in most cases you must m

48、ake an application to an employment tribunal within three months of the date when the event you are complaining about happened. If your application is received after this time limit, the tribunal will not usually accept i.If you are worried about how the time limits apply to you, take advice from on

49、e of the organisations listed underFurther help.Employment tribunals are less formal than some other courts, but it is still a legal process and you will need to give evidence under an oath or affirmation.Most people find making a claim to an employment tribunal challenging. If you are thinking abou

50、t making a claim to an employment tribunal, you should get help straight away from one of the organisations listed underFurther help.If you are being represented by a solicitor at the tribunal, they may ask you to sign an agreement where you pay their fee out of your compensation if you win the case

51、. This is known as adamages-based agreement. In England and Wales, your solicitor cant charge you more than 35% of your compensation if you win the case.If you are thinking about signing up for a damages-based agreement, you should make sure youre clear about the terms of the agreement. It might be

52、best to get advice from an experienced adviser, for example, at a Citizens Advice Bureau. To find your nearest CAB, including those that give advice by e-mail, click onnearest CAB.For more information about making a claim to an employment tribunal, seeEmployment tribunals.The (lack of) air up there Watch mCayman Islands-based Webb, the head of Fifas anti-racism taskforce, is in London for the Football Associat

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!