1、本科生毕业论文(设计)打印专用纸 毕业设计 题 目 S7-200 PLC在十字路口交通信号灯的控制 学生姓名 杨元琮 学号 0702250002 班 级 08221班 专 业 自动化电气技术 系 部 电气工程系 指导教师 陈家敏 题目类型: 理论研究 实验研究 √工程设计 工程技术研究 软件开发
2、 2009 年 12月 10日 目 录 目录 1 摘要 2 1、S7-200 PLC的概述 3 1.1 S7-200 PLC的基本配置 3 图1.1 2 1.2 S7-200 PLC 的主要技术性能 2 2、S7-200 PLC的基本指令 1 2.1 基本逻辑指令 1 表2.1 1 2.2 定时器指令 1 2.3 计数器指令 2 3、十字路口交通信号灯PLC控制器的设计 4 3.1 交通信号灯PLC控制系统的控制要求 4 3.2 交通信号灯布置 4 图2.1 4 3.3 交通信号灯的时序图 4 图2.2 5 3.4 交通信号灯的I
3、/O分配及I/O接线图 5 3.5 交通信号灯PLC的控制指令表 6 3.6 交通信号灯PLC的控制系统调试 8 致谢语 10 参考文献 11 摘 要 随着社会经济快速的发展,现在城市交通控制与管理问题的现状,是人们越来越关注的问题了。结合城乡交通的实际情况阐述交通信号灯控制系统的工作原理。本文介绍了应用PLC实现十字路口交通信号灯的自动控制。对PLC控制系统的电路原理、设计计算和程序调试等问题进行具体分析讨论。 关键词:(PLC ; 交通信号灯 ; 自动控制 ; 程序 ; 设计)
4、 1、S7-200 PLC的概述 SIMATIC S7-200系列PLC适用于各行各业,各种场合中的检测、监测及控制的自动化。S7-200系列的强大功能使其无论在独立运行中,或相连成网络皆能实现复杂控制功能。【1】因此S7-200系列具有极高的性能/价格比。 S7-200系列出色表现在以下几个方面: * 极高的可靠性 * 极丰富的指令集 * 易于掌握 * 便捷的操作 * 丰富的内置集成功能 * 实时特性 * 强劲的通讯能力 S7-200系列在集散自动化系统中充分发挥其强大功能。使用范围可覆盖从替代继电器的简单控制到更复杂的自动化控制。【
5、1】应用领域极为广泛,覆盖所有与自动检测,自动化控制有关的工业及民用领域,包括各种机床、机械、电力设施、民用设施、环境保护设备等等。【2】如:冲压机床,磨床,印刷机械,橡胶化工机械,中央空调,电梯控制,运动系统。 1.1 S7-200 PLC的基本配置 因为S7-200PLC有5种CPU,其中CPU226XM与CPU226基本相同,所以S7-200共有4种基本配置。 CPU221 (6入/4出) CPU222 (8入/6出) CPU224 (14入/10出) CPU226(XM) (24入/16出) 输入点地址 I0.0、I0.1、I0.2、I0.3、I0.4
6、I0.5 I0.0、I0.1、I0.2、I0.3、I0.4、I0.5、I0.6、I0.7 I0.0、I0.1、I0.2、I0.3、I0.4、I0.5、I0.6、I0.7 I1.0、I1.1、I10.2、 I0.0、I0.1、I0.2、I0.3、I0.4、I0.5、I0.6、I0.7 I1.0、I1.1、I1.2、I1.3、I1.4、I1.5 I1.6、I1.7 I2.0、I2.1、I2.2、I2.3、I2.4、I2.5 I2.6、I2.7 输出点地址 Q0.0、Q0.1、Q0.2、 Q0.3 Q0.0、Q0.1、Q0.2、Q0.3、Q0.4、 Q0.5 Q0.0、Q0.1
7、Q0.2、Q0.3、Q0.4、Q0.5、Q0.6、 Q0.7 Q1.0、 Q0.0、Q0.1、Q0.2、Q0.3、Q0.4、Q0.5、Q0.6、 Q0.7 Q1.0、 Q1.1 、Q1.2、Q1.3、Q1.4、Q1.5、Q1.6、 Q1.7 图1.1 1.2 S7-200 PLC 的主要技术性能 下面以S7-200 CPU224为例说明S7系列PLC的主要技术性能。 1.一般性能 S7-200 CPU224的一般性能如表所示。 电源电压 DC 24V,AC 100~230V 方案二:液晶显示方式。液晶显示效果出众,可以运用菜单项来方便操作,比较简 电源电压波动
8、 DC 20.4-28.8V,AC 84-264 V(47-63Hz) 环境温度、湿度 水平安装0~550C,垂直安装0~450C,5~95% 大气压 860~1080hPa 保护等级 IP20到IEC529 输出给传感器的电压 DC 24V (20.4-28.8V) 输出给传感器的电流 280mA,电子式短路保护(600mA) 为扩展模块提供的输出电流 660mA 程序存储器 8K字节/典型值为2.6K条指令 数据存储器 2.5K字 存储器子模块 1个可插入的存储器子模块 数据后备 整个BD1在EEPROM中无需维护 在RAM中当前的DB1标志位、
9、定时器、计数器等通过高能电容或电池维持,后备时间190h(400C时120h),插入电池后备200天 编程语言 LAD,FBD,STL 程序结构 一个主程序块(可以包括子程序) 程序执行 自由循环。中断控制,定时控制(1~255ms) 子程序级 8级 用户程序保护 3级口令保护 指令集 逻辑运算、应用功能 位操作执行时间 0.37μs 扫描时间监控 300ms(可重启动) 内部标志位 256,可保持:EEPROM中0~112 计数器 0~256,可保持:256,6个高速计数器 定时器 可保持:256, 4个定时器,1ms~30s 16个定时器,1
10、0ms~5min 236个定时器,100ms~54min 接口 一个RS485通信接口 可连接的编程器/PC PG740P = 2 \* ROMAN II,PG760P = 2 \* ROMAN II,PC(AT) 本机I/O 数字量输入:14,其中4个可用作硬件中断,14个用于高速功能 数字量输出:10,其中2个可用作本机功能, 模拟电位器:2个 可连接的I/O 数字量输入/输出:最多94/74 模拟量输入/输出:最多28/7(或14) AS接口输入/输出:496第 5 页 振荡源的稳定性,主要由起振时间频率稳定度和占空比稳定度决定 起振时
11、间可由电路参数整定稳定度受振荡器类型温度和电压等参数影响复位电路的可靠性。 2.输入特性 S7-200 CPU224的输入特性如表所示。【2】 S7-200 CPU224输入特性 类型 源型或汇型 输入电压 DC 24V,“1信号”:14-35A,“0信号”:0-5A, 隔离 光耦隔离,6点和8点 输入电流 “1信号”:最大4mA 输入延迟(额定输入电压) 所有标准输入:全部0.2-12.8ms(可调节) 中断输入:(I0.0-0.3)0.2-12.8ms(可调节) 高速计数器:(I0.0-0.5)最大30kHz 表1.2 3.输出特性 S7-200 CP
12、U224输出特性如表示。 S7-200 CPU224的输出特性 类型 晶体管输出型 继电器输出型 额定负载电压 DC 24V(20.4-28.8V) DC 24V(4-30V) AC24-230V(20-250V) 输出电压 “1信号”:最小DC 20V L+/L- 隔离 光耦隔离,5点 继电器隔离,3点和4点 最大输出电流 “1信号”:0.75A “1信号”:2A 最小输出电流 “0信号”:10μsA “0信号”:0mA 输出开关容量 阻性负载:0.75A 灯负载:5W 阻性负载:2A 灯负载:DC30W,AC200W 2、S7-200 P
13、LC的基本指令 2.1 基本逻辑指令 S7-200系列的基本逻辑指令与FX系列和CPM1A系列基本逻辑指令大体相似,编程和梯形图表达方式也相差不多,这里列表表示S7-200系列的基本逻辑指令(见表)。 表 S7-200系列的基本逻辑指令 指令名称 指令符 功能 操作数 取 LD bit 读入逻辑行或电路块的第一个常开接点 Bit: I,Q,M,SM,T,C,V,S 取反 LDN bit 读入逻辑行或电路块的第一个常闭接点 与 A bit 串联一个常开接点 与非 AN bit 串联一个常闭接点 或 O bit 并联一个常开接点 或非 ON b
14、it 并联一个常闭接点 电路块与 ALD 串联一个电路块 无 电路块或 OLD 并联一个电路块 输出 = bit 输出逻辑行的运算结果 Bit:Q,M,SM,T,C,V,S 置位 S bit,N 置继电器状态为接通 Bit: Q,M,SM,V,S 复位 R bit,N 使继电器复位为断开 表2.1 2.2 定时器指令 (1) 类型、编号及分辨率 2 TON——接通延时 TONR——有记忆接通延时 TOF——断开延时 3种分辨率(时基):1ms、10ms、100ms——分别对应不同的定时器号 定时器6个要素: 指令格式(时基、编号等)
15、 预置值——PT 使能——IN 复位——3种定时器不同 当前值——Txxx 定时器状态(位)——可由触点显示 定时值=时基×预置值PT。由于定时器的计时间隔与程序的扫描周期并不同步,定时器可能在其时基(1ms、10ms、100ms)内任何时间启动,所以,未避免计时时间丢失,一般要求设置PT预置值必须大于最小需要的时间间隔。例如:使用10ms时基定时器实现140ms延时(时间间隔),则PT应设置为15(10ms×15=150ms)。【3】 (2)功能 1、接通延时定时器TON——一般用于单一时间间隔的定时 2、断开延时定时器TOF——一般用于故障时间后的时间延时 3、有记忆接通延时
16、定时器TONR——一般用于累计许多时间间隔 2.3 计数器指令 (1)类型及编号 CTU——增计数 CTD——减计数 C0~C255 CTUD——增减计数 计数器6个要素: 指令格式(类型、编号等)预置值——PV . 使能——CU、CD 复位——R、LD 当前值——Cxxx 计数器状态(位)——与定时器类似 (2)功能、时序图及应用示例 此例为一个增减计数器的应用示例,其与MODICON PLC计数器指令的比较,同学可自己进行,并注意到,计数器指令的使能均是采样上升沿(“0” 3、十字路口交通信号灯PLC控制器的设计 3.1 交通信号灯PLC控制系统的控制要求 (1)接
17、通启动按钮后,信号灯开始工作,南北方向红灯、东西方向绿灯同时亮。 (2)东西方向绿灯亮25,闪烁3次(每次0.5s),接着东西方向黄灯亮2s后,东西方向红灯亮30后东西方向绿灯又亮、、、、、、、如此不断循环,直到停止工作。 (3)南北方向红灯亮30s后,向绿灯亮25s后方向绿灯闪烁3次(每次0.5s),接着南北方向黄灯亮2s后,南北方向红灯又亮、、、、、、如此不断循环,直到工作停止。 3.2 交通信号灯布置 十字路口交通信号灯设置示意图如下: 图2.1 3.3 交通信号灯的时序图 十字路口交通信号灯时序图如下: 图2.2 3.4 交通信号灯的I/O分配及I
18、/O接线图 I/O分配表如下图所示: 输入信号 停止按钮SB1 I0.0 启动按钮SB2 I0.1 输出信号 南北向红灯HL1 Q0.0 南北向黄灯HL2 Q0.1 南北向绿灯HL3 Q0.2 南北向红灯HL4 Q0.4 南北向黄灯HL5 Q0.5 南北向绿灯HL6 Q0.6 表2.1 I/O接线图如下图所示: 图2.3 3.5 交通信号灯PLC的控制指令表 交通信号灯指令表如下图所示: LD I0
19、1 R M1.3, 1 AN Q0.0 LD M.1.2 AN Q0.1 LD C1 AN Q0.2 LD I0.1 AN Q0.4 EU AN Q0.5 OLD AN Q0.6 CTU C1,
20、4 S M0.0 , 2 LD M1.2 LD M0.0 TON T45, +5 TON T37, +300 LD T45 LD M0.1 R M1.2, 1 TON T38 , +25 S M1.3, 1 LD T38 LD M1.3
21、 R M0.1, 1 AW>= C1, +3 S M0.2, 1 S M1.4, 1 LD M0.2 LD M1.4 O M0.4 TON T46, +20 TON T39 , +5 R M1.2, 1 LD T39
22、 LD T46 R M0.2, 1 R M1.4, 1 LD M1.1 S M0.0, 1 O M1.3 LD M0.0 TON T44, +5 = Q0.0 LD T44
23、 LD M1.4 R M1.1, 1 = Q0.1 S M1.2, 1 O M1.2 = Q0.2 LD T41 LD M0.6 R M0.5, 1 = Q0.4
24、 S M0.6, 1 LD M0.5 LD M0.6 = Q0.5 TON T42, +30 LD M0.1 LD T42 O M0.3 R M0.6, 1 = Q0.6
25、 S M0.1, 1 LD I0.1 LD T37 R M0.0 , 16 R M0.0, 1 R Q0.0 , 7 S M1.0, 1 S M0.3, 1 LD M1.0, 1 R M0.4, 1
26、 TON T43 LD M0.3 R M1.0, 1 LD C0 S M1.1, 1 LD I0.0 S M0.4, 1 EU LD M0.4 OLD AW>=
27、 C0, +3 CTU C0 , +4 S M0.5, 1 LD M0.3 LD M0.5 TON T40, +5 TON T41, +20 LD T40 R M0.3 R M0.3, 1 3.6 交通信号灯PLC的控制系统调试 PLC系统的调试分为硬件调试和PLC程序。硬件调试主要是测试PLC控制系统的接线是否正确,PLC控制器及其模块是否正
28、常工作。当整个系统设计并接线完毕以后,调试人员要根据接线图仔细检查,看是否出现了接线错误,特别是警告电源线电路这种情况,因为电源电路将会烧坏系统元器件,甚至烧坏PLC。如果接线正确,则可以打开电源,查看PLC系统的远行情况,这主要依赖PLC本身的报错指示灯,一般报错指示灯亮表明系统有错误。【3】当然这有可能是PLC程序及配置参数出错,也可能是PLC本身硬件出错,可根据系统的实际情况来判断,如果是PLC本身硬件出错,那么要及时修复。 (1)将指令表程序输入到计算机。 (2)按I/O连接图接好PLC的输入与输出端,将PLC与计算机连接好。 (3)对程序进行调试运行。 将S闭合,按下启动按钮
29、SB1,观察HL1~HL6的指示状态。将S打开,按下启动按钮SB1,观察HL1~HL6的指示状态。按下停止按钮,再观察HL1~HL6的指示状态。 结束语 通过此次毕业设计,我不仅把知识融会贯通,而且丰富了大脑,同时在查找资料的过程中也了解了许多课外知识,开拓了视野,认识了将来电子的发展方向,使自己在专业知识方面和动手能力方面有了质的飞跃。 毕业设计是我作为一名学生即将完成学业的最后一次作业,他既是对学校所学知识的全面总结和综合应用,又为今后走向社会的实际操作应用铸就了一个良好开端,毕业设计是我对所学知识理论的检验与总结,能够培养和提高设计者独立分析和解决问题的能力;是我在校期
30、间向学校所交的最后一份作业,从老师的角度来说,指导做毕业设计是老师对学生所做的最后一次执手训练。其次,毕业设计的指导是老师检验其教学效果,改进教学方法,提高教学质量的绝好机会。 总之,不管学会的还是学不会的的确觉得困难比较多,真是万事开头难,不知道如何入手。最后终于做完了有种如释重负的感觉。此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。 谢 辞 在此要感谢学院在这三年里对我的培养。在这三年的学习中,我不断学习与努力,不断的
31、提高自己,使我成为一个有理想、有志向的大学生。在这里我度过了我人生中最快乐、最有意义的一段日子,我不但在这里学到了很有用的知识与技能,还学到了做人的道理。谢谢!我更要谢谢那些带我课的老师,谢谢他们不辞辛苦的教导我。 参考文献 1.陈建明,《电气控制和PLC应用》,北京电子工业出版社,2006.8 2. 肖宝兴,《西门子S7-200PLC的使用经验与技术》北京机械工业出版社, 2008.8 3.张泽荣,《可编程序控制器原理与应用》,北京清华大学出版社,2004.10 →“1” )。 3.6复位电路的可靠性
32、设计 复位是单片机的初始化操作。单片机启运运行时,都需要先复位,其作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。因而,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。 复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开 关或电源插头分-合过程中引起的抖动而影响复位。 图5 RC复位电路 Fig.5 RC Reset Circuit 2.3.7 按键部分
33、 本设计总的用了四个按扭开关作为键盘,其中一个是复位键,另三个中的其中两个是调整时间增加、减少的键,第三个是切换年、月、日及时、分、秒的显示状态并在所切换的显示状态下配合加减两个键调整时间。 图6 按键电路 Fig.6 Key circuit 2.3.8蜂鸣器电路 利用AT89S51单片机的IO口控制一个8550的三极管,三极管控制蜂鸣器的电源通断。从而实现输出声音。 图7 蜂鸣器电路 Fig.7 Buzzer circuit 3.3.9 根据各模块的功能互相连接成电子万年历的控制电路 图8 控制模块示意图 Fig.8 Control Module Sket
34、ch 3各硬件介绍 3.1 AT89S51的引脚说明 AT89S51系列单片机中有PDIP,PLCC,TQFP多种封装形式。本设计采用的是PDIP封装40管脚的单片机,各引脚如图2-2所示。 图9 AT89S51的PDIP封装引脚图 Fig.9 AT89S51 40个引脚中, 4组8位共32个I/O口,正电源和地线两根,外置石英振荡器的时钟线两根,现在对这些引脚的功能加以说明: (1)Pin9:RESET/Vpd复位信号复用脚,当AT89S51通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统开始复位。而RESET由高电平下降为低电平后,系统即从00
35、00H地址单元开始执行程序。 (2)Pin29:PESN当访问外部程序存储器时,此脚输出负脉冲选通信号,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。 (3)Pin30:ALE/PROG 地址锁存允许信号端。单片机上电后,ALE引脚不断向外输出正脉冲信号, ALE信号可以用作对外输出时钟或定时信号。 (4)Pin31:EA/Vpp程序存储器的内外部选通线,89S51单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。 3.2 发
36、光二极管指示电路设计 发光二极管简称为LED。由镓(Ga)与砷(AS)、磷(P)的化合物制成的二极管,当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管, 在电路及仪器中作为指示灯,或者组成文字或数字显示。磷砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光。 它是半导体二极管的一种,可以把电能转化成光能;常简写为LED。发光二极管与普通二极管一样 是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N 区的电子和P区的空穴复合,产生自发辐射的荧光。不同的半导体材料中电子和空穴所
37、处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能 量越多,则发出的光的波长越短。常用的是发红光、绿光或黄光的二极管。 设计中,我使用了1个发光二极管作为电源的指示。为了避免供给发光二极管的电流过大,使用1K的电阻进行限流。 3.3 蜂鸣器电路设计 3.3.1 蜂鸣器的介绍 1.蜂鸣器的作用 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 2.蜂鸣器的分类 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。 3.蜂鸣器的电路图形符号 蜂鸣
38、器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。 3.3.2 蜂鸣器的结构原理 1.压电式蜂鸣器 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。 多谐振荡器由晶体管或集成电路构成。当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。 压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。 2.电磁式蜂鸣器 电磁式蜂鸣器由振荡器、
39、电磁线圈、磁铁、振动膜片及外壳等组成。 接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。 有源蜂鸣器直接接上额定电源(新的蜂鸣器在标签上都有注明)就可连续发声。 3.4 LCM1602简介 图11 LCM1602 Fig.11 LCM1602 LCM1602采用标准的16脚接口,其中: 第1脚:VSS为地电源 第2脚:VDD接5V正电源 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比最高,对比度过高时会产生“鬼影”,使用时
40、可以通过一个10K的电位器调整对比度 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RSRW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可读忙信号,当RS为高电平RW为低电平时可以写入数据.第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第7~14脚:D0~D7为8位双向数据线。 第15~16脚:空脚 3.5 DS1302 简介 DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接
41、口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.5~5.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。DS1302的外部引脚分配如图1所示及内部结构如图2所示。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。 图12 DS1302的外部引脚分配 Fig.12 DS1302 external pin
42、assignment 图13 DS1302的内部结构 Fig.13 The internal structure of the DS1302 各引脚的功能为: Vcc1:主电源;Vcc2:备份电源。当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2< Vcc1时,由Vcc1向DS1302供电。SCLK:串行时钟,输入; I/O:三线接口时的双向数据线;CE:输入信号,在读、写数据期间,必须为高。该引脚有两个功能:第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。 4 系统硬件设计所需的器材
43、 5V电源 3V电源 AT89S51单片机1个 液晶显示器1个 DS1302 1个 电阻 1 K的2个、4.7K的2个4.7欧排阻 8550三极管 晶振12M的一个 32768K的一个 电容(30P的两个) 蜂鸣器1个 LED二极管1个 22μf电容1个 轻触开关5个 5 系统软件总体设计 系统的软件设计采用汇编语言,对单片机进行编程实现各项功能。程序在WindowsXP环境下采用LCA51软件编写。软件控制程序主要有主控程序、电子万年历的时间控制程序组成。主控程序中对整个程序进行控制,进行了初始化程序及计数器、还有键盘功能程序、以及显示程序和时间控制程序是电
44、子万年历中比较重要的部分。时间控制程序体现了年、月、日、时、分、秒及星期的计算方法。时间控制程序主要是定时器0计时中断程序每隔10ms中断一次当作一个计数,每中断一次则计数加1,当计数100次时,则表示1秒到了,秒变量加1,同理再判断是否1分钟到了,再判断是否1小时到了,再判断是否1天到了,再判断是否1月到了,再判断是否1年到了,若计数到了则相关变量清除0。先给出一般年份的每月天数。如果是闰年,第二个月天数不为28天,而是29天。闰年的判断规则为,如果该年份是4或100的整数倍或者是400的整数倍,则为闰年;否则为非闰年。 5.1 公历与星期的换算方法 在现行公历中,历年的长度365天(
45、平年)或者366天(闰年)都不是七的整数倍,所以日期与星期之间没有明显的对应关系。一般情况下,不看日历牌就无法知道某月某日是星期几。不过,它们之间还是有一定规律可循的,只要经过简单计算,或者查找表格,就可以知道与任何日期相对应的星期数。这里列出两种方法供读者选用。 (1)公式法:设y麦示公元年数,d表示从1月1日起算的日数。 首先求出1月0日(即上一年12月31日)的星期序数,然后与日数d相加,其和用7除,余数就是答案。为了推导公式,我们想一想,第一年1月0日的星期序数与第二年1月0日的星期序数有什么关系?平年365天,等于52个星期零1天,所以第二年1月0日的星期序数比第一年的多l,但
46、这个l已包含在y中了,因为第二年的年数y比第一年大1;闰年366天,等于52个星期零二天,所以第二年1月0日的星期序数等于第一年(闰年)的星期序数加2,除了y中包含的1外,还需加修正值1。根据这些道理我们可以推得三个公式,将式中S用7除,余数就表示星期几。 从公元1900年1月1日到公元210I年1月1日之间这201年,可用公式: S = y-1900 + [(y-1901)/4] + d 方括号表示取商的整数部分,对于1900年~1904年这五年方括号值为0。这个公式是这样来的:1900年1月0日(即1899年12月31日)是星期天。这年是平年,以后直到2100年前都是每隔4年一闰,
47、闰年多出的那一天,影响到下一年1月0日的星期序数,并不影响闰年本身,闰年产生的修正值应加到下一年上去,所以〔(y-1901)/4〕中,计算时用190l而不是1900。 例:求2000年12月31日是星期几? 2000年是闰年,从1月1日算起,12月31日是第366天,所以d=366。根据公式有: S=2000-1900 +〔(2000-1901)/4〕+ 366 =100 +〔99/4〕+ 366 =l00 + 24 + 366 =490 490为7的整数倍,即余数为0,所以2000年12月31日为星期日。 (2)更普遍的公式为: s=v-1 +〔(y-1/4
48、〕-〔(y-1/100〕+〔(y-1/400〕+ d 对于这个公式,我们不妨这样考虑:公历400年中有97个闰年,共365x 400 + 97 =146.097天,146,097=20,871× 7,即正好是7的整数倍。这表明某年某月某日所对应的星期序数与四百年前同月同日所对应的星期序数完全相同。前边例中我们已算出公元2001年1月0日(即2000年12月31日)是星期日,那么,公元1601年、1201年……以及公元1年的1月0日都是星期日。假如每个历年都是365天的话,那么,由于公元1年1月0日是星期日,只要公式S=y-1 + d就可以了,但实际上闰年是366天,所以我们必须根据闰年的有关
49、规定进行修正。〔(y-1)/4〕是四年一闺产生的修正值。如果只取这一个修正项,就会多修正以至造成错误,这是因为,根据公历的规定,逢百之年虽然能被4整除,却不一定是闰年,所以必须减去多修正的值,它等于〔(y-1/100)〕。如果逢百之年都是平年,只要这两个修正项也就可以了。可是,公元年数能被400整除的年(当然也一定能被100整除)仍是闰年,所以还必须加上〔(y-1/400)〕。这个修正项才行。方括号中之所以用y-1而不用y,是由于修正值是加到闰年的下一年上去,而不是加到闰年本身上。 6 系统功能介绍 6.1 按键处理 当系统在正常显示状态下要进行调整时,按一下切换键进入按键处理中断程序
50、并且此时默认的是调整年,在液晶显示器上显示N,此时按加或减按钮可以进行加减调整,若再按一下切换键,则跳到月上显示Y,同样可以调整加减,同样的道理,进入日(R)、时(S)、分(F)、秒(M)的调整,最后再按一下切换键时退出中断程序,星期系统自动的调整过来。 7.2星期计算 星期计算流程框图 图15 星期计算 Fig.15 Weeks diagram 7 主程序流程图 开始 单片机读DS1302数据 单片机送数据到LCM1602 单片机判断按键 单片机处理按键调显示数据 结束 图16 主流程框图






