915153924基于单片机的校园作息时间控制系统毕业设计论文_第1页
915153924基于单片机的校园作息时间控制系统毕业设计论文_第2页
915153924基于单片机的校园作息时间控制系统毕业设计论文_第3页
915153924基于单片机的校园作息时间控制系统毕业设计论文_第4页
915153924基于单片机的校园作息时间控制系统毕业设计论文_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、基于单片机的校园作息时间控制系统【摘要】: 校园作息时间控制系统主要用于学校,对一些以24小时为周期的开关量进行自动控制。如上下课打铃、教学楼照明的定时开与关、学生宿舍灯及校园路灯的定时开关、水泵的定时启动以及自来水供水时间控制等等。该控制系统是采用at89s52单片机来实现对上述开关量的控制,利用ds12887时钟芯片来提供时钟信息,设有六位数码管、可以实时显示时间、系统还设有输入键盘,用以修改实时时钟,体现了系统简单、工作稳定可靠、价廉、控制时间精确及系统体积小等优点。【abstract】: the campus the daily timetable control system whi

2、ch is mainly used in the campus, it auto-control some switches which have periods of 24 hours. such as the bells ringing when classes begin or finish, the time switches of lamps in teaching buildings and student dormitories, the time start-up of water pump, and the tap water supply control system, e

3、tc.this control system carries out the switch parameter controls all above by scm at89s52. it uses the clock chip called ds12887 to provide the clock information. it could show the real time with 6 bit digital tube. and it could modify the real time clock with the input keyboard. the system is simpl

4、e, the running is steady and dependable, the controlled time is exact, and the physical volume of the system is small, all the advantages above can be incarnated in this system. 【关键词】:作息时间控制 at89s52 ds12887 【keyword】:the daily timetable control,at89s52,ds12887引 言该时钟控制系统有6位数码显示器,具有实时显示时钟(显示当前时间的小时、分钟

5、及秒)功能,通过外扩锁存器还可以实现多点、多电器设备的控制。该控制系统可广泛用于学校、工厂和机关的自动打铃、电视、室内照明及其他对象控制,也可用于家庭或学生寝室进行时间指示及多点时间提醒。该校园作息时间控制系统实现了对上下课打铃、教学楼照明、学生宿舍灯、校园路灯四个开关量的精确控制。月时间累计误差1分钟。系统设有的键盘电路,方便定期进行时间校准。1、整体设计根据设计要求画出系统框图,如图1所示,原理见附录1。该控制系统是由微处理器、时钟控制芯片、蜂鸣器、数码显示部分以及键盘输入部分所组成。该控制系统设有六位数码管、可以实时显示时间、系统还设有输入键盘,用以修改实时时钟。系统还采用at89s52

6、作为处理器,用ds12887实时时钟芯片作时钟计时单元,它不仅可以计时,同时内部还有114个非易失ram单元,可以保证时钟及内部ram内的数据不受停电的影响,保护数据不丢失。显示电路采用了cd4511芯片来完成驱动和译码的功能,另外该芯片具有的数据锁存功能克服了采用软件扫描显示电路所固有的闪烁的问题。输出驱动电路部分,采用了cd4042反相锁存器来驱动二极管、蜂鸣器工作。图1 系统框图根据实际情况对上下课打铃、教室照明、学生宿舍灯及校园路灯四个开关量在一天内的控制时间列表如下:表1 作息时间控制表时间事件动作6:30学生宿舍送电d2亮7:15早读上课铃响教室灯开、宿舍灯关ls1响,延时15s;

7、d1亮、d2灭7:45早读下课铃响ls1响,延时15s8:00第一节上课铃响ls1响,延时15s8:40第一节下课铃响ls1响,延时15s8:50第二节上课铃响ls1响,延时15s9:30第二节下课铃响ls1响,延时15s9:40第三节上课铃响ls1响,延时15s10:20第三节下课铃响ls1响,延时15s10:40第四节上课铃响ls1响,延时15s11:10第四节下课铃响教室灯关,宿舍灯开ls1响,延时15s;d1灭、d2亮12:50第五节课预备铃响宿舍灯关、教室灯开ls1响,延时15s;d2灭、d1亮13:00第五节课上课铃响ls1响,延时15s13:40第五节课下课铃响ls1响,延时15

8、s13:50第六节课上课铃响ls1响,延时15s14:30第六节课下课铃响ls1响,延时15s14:40第七节课上课铃响ls1响,延时15s15:20第七节课下课铃响ls1响,延时15s15:30第八节课上课铃响ls1响,延时15s16:10第八节课下课铃响教室灯关、宿舍灯开ls1响,延时15s;d1灭、d2亮18:20晚自习预备铃响;路灯开、宿舍灯关、教室灯开ls1响,延时15s;d1亮、d2灭、d3亮18:30上晚自习铃响ls1响,延时15s20:00下晚自习铃响、宿舍灯开ls1响,延时15s;d2亮21:00教室灯关d1灭22:30学生宿舍灯关、路灯关d2灭、d3灭2、硬件设计按系统框图

9、分三个部分设计如下:2.1 系统部分单片机采用片内带有4kb e2prom的at89c52,这样就不需要再扩展片外程序存储器,可以简化线路;用一片74ls138译码器提供5个外部地址(cs0、cs1、cs2、cs3、cs4),分别对于6个七段码显示器、1个时钟芯片和1个锁存器地址;采用一片时钟芯片ds12887为系统提供准确时间。该芯片内部自带锂电池,计时精确,不受系统电源影响;at89s52的t0与t1相连,利用单片机内部的定时/计数器完成15秒打铃控制。如图2所示。图2系统部分原理图 2.2 键盘接口电路键盘是由若干按键组成的开关矩阵,它是微型计算机最常用的输入设备,用户可以通过键盘向计算

10、机输入指令、地址和数据。本系统中采用 独立式按键结构,如图3所示,各按键相互独立地接通一条输入数据线,当任何一个键按下时,与之相连的输入数据线即被置0,而平时该线置1。独立式按键电路配置灵活,软件结构简单。当功能键不很多时,采用该种方式比较合适。图3键盘接口原理图2.3 显示部分选用6个七段数码管分别显示时、分、秒,数码管的驱动选用具有译码、锁存、驱动功能的cd4511芯片,显示数据来自ds12887的时单元、分单元、秒单元,经p0口(bcd码)送到cd4511芯片,译码后再送到显示器显示。如图4所示。图4 显示部分原理图2.4 输出控制部分输出控制信号由p2口送到锁存器锁存,经74

11、ls04芯片驱动相应的输出部分动作。例如:要开路灯执行指令mov p2,#02h 即可,而若执行指令mov p2,#e0h ,则是路灯、学生宿舍灯和教室灯全部打开。p2口各位所控制的对象见表2,输出部分原理图如图5所示。表2 位控表p2口的位控制,“0”控制发光二极管或三极管截止、“1”控制发光二极管或三极管导通p2.7p2.6p2.5p2.4p2.3p2.2p2.1p2.0教室灯宿舍灯路灯电铃x片选信号输出端图5输出部分原理图3、ds12887的功能及工作原理ds12887是一个dallas公司生产的实时时钟芯片,它把时钟芯片所需的晶振电路和外部锂电池等相关电路都集成与芯片内部,具有低功耗、

12、工作稳定、功能集成度高、计时精确、与各种微处理器接口简便、在没有外接电源情况下可正常工作10年等一系列优点。它主要由振荡电路、分频电路、周期中断、方波选择电路14字节时钟和控制单元、114字节非易失ram、十进制、二进制加法器、总线接口电路、电源和写保护单元、内部锂电池等部分组成。图6 ds12887的引线端子排列图各引线端子功能分配如下: ucc、gnd直流电源(+5v)电压,当ucc低与4.25v时读写禁止,当ucc低与3v时,电源切换至内部锂电池。 mot(模式选择):mot接ucc为motrola方式,mot接gnd为intel方式。 sqw方波输出。 ad0ad7双向数据/地址复用线

13、。 as(地址选通输入)用于实现信号分离,在as信号的下降沿把地址锁入ds12887。 ds数据选通或读输入。 r/w读写输入。 cs片选输入。 irq中断申请输入。 reset复位输入。 ds12887利用as(地址选通信号),可以对总线分时复用的微处理器实现简便的接口。 从00h09h 10个单元为时钟、日历及闹钟单元,其内容可由程序写入或读出。其初始值在芯片初始化时由程序写入,其值可用bin值(二进制数,编程时写作16进制数)或bcd值,这由寄存器b的dm位(b2)决定。时钟初始化时,寄存器b的set位(b7)必须置1,采用每天12h或24h制有寄存器b的24/12位(b1)决定。在12

14、h制时,时字节的最高位为1表示下午(pm)。在各单元的内容写完之后,将寄存器b的set位清0,时钟即开始运行。这三个闹钟单元有两种用法。根据写入到三个闹钟单元 的时分秒值,每天产生闹中断一次;在各闹钟单元写入“自由”码=0c00ffh,即最高两位为“1”时为“自由”状态。如时钟单元写入0c00ffh,则每小时闹一次,在时闹和分闹两单元写入0c00ffh,则每分闹一次,在三个闹钟单元均写入0c00ffh,则每秒闹一次。 ds12887内部的4个可由程序访问的寄存器。寄存器ab7b6b5b4b3b2b1b0uipdv2dv1dv0rs3rs2rs1rs0 uip(b7)时间的更新正在进行位。uip

15、=1,表示正在进行。uip=0不更新,此时读写时钟日历字节有效。 dv2、dv1、dv0这三位用于震荡器开关和复位计数器链,当他们为010组合时将打开震荡器并允许rtc保持时间;为11x(x为0或1)组合时将使能震荡器并保持计数器链为复位状态。在把010写到 dv0、dv1、dv2之后500ms将发生新的数据更新。 rs3、rs2、rs1、rs0速率选择位,用于选择周期中断的速率和sqw输出的方波速率,如rs3rs0全为0,则禁止分频器输出,如表4所示。表9 ds12887方波输出频率的选择寄存器a选择位时基4.194304mhz或1.048576mhz时基32.768khzrs3rs2rs1

16、rs0周期中断速率sqw方波输出频率周期中断速率sqw方波输出频率0000000130.517us32.768khz3.90625ms256hz001061.035us16.384khz7.8125ms128hz0011122.07us8.192khz122.07us8.192khz0100244.141us4.096khz244.141us4.096khz0101488.281us2.048khz488.281us2.048khz0110976.562us1.024khz976.562us1.0234khz01111.953125us512hz1.953125us512hz10003.906

17、25us256hz3.90625us256hz10017.8125ms128hz7.8125ms128hz101015.625ms64hz15.625ms64hz101131.25ms32hz31.25ms32hz11006.25ms16hz6.25ms16hz1101125ms8hz125ms8hz1110250ms4hz250ms4hz1111500ms2hz500ms2hz寄存器bb7b6b5b4b3b2b1b0setpieaieuiesqwedm24/12dse set设置位。时钟不更新,set=1用于时钟初始化。set=0时钟每秒更新一次。 pie周期中断允许位,reset使pie=

18、0。 aie闹钟中断允许位,reset使aie=0。 uie更新结束中断允许位,reset使uie=0。 sqwe方波输出允许位,reset使sqwe=0。 dm数据模式位。dm=1,时间用bin值;dm=0,时间用bcd值。 24/12该位=1时,时间为24h模式。该位=0时,时间为12h模式。 dse夏时制允许位。dse=1,自动执行夏时制制作。寄存器cb7b6b5b4b3b2b1b0irqfpfafuf0000 irqf中断请求标志。当下例事件之一或多件同时出现时irqf=1 pf=pif=1。 af=aie=1。 uf=uie=1。 即:irqf=pf*pie+af*aie+uf*ui

19、e当irqf=1时,irq端子变为低电平,发出中断请求。pf周期中断标志。当由rs3rs0决定的周期中断时间到时,pf置1。 af闹钟中断标志。当设置的闹钟时间到时,af置1。 uf更新结束中断标志。每个时间更新周期结束时,uf=1。 b3、b2、b1、b0无用位,读时为0。寄存器db7b6b5b4b3b2b1b0vrt0000000 4、程序框图软件设计以时钟显示、键盘扫描、为主程序。在设计中利用单片机时钟计时集成电路完成计时的任务,并500ms向单片机发一个中断,中断子程序有时钟显示及时间比较,如比较相等,则说明作息时间已到,发出指令控制电铃或照明电路的开、关操作。4.1程序流程图(见图7

20、)图7程序流程图4.2源程序清单 org 0000h ljmp main org 0030hmain: mov sp,#70h clr p2.4 ;电铃控制脚 clr p2.5 ;宿舍灯控制脚 clr p2.6 ;路灯控制脚 clr p2.7 ;教学灯控制脚 clr p2.3 ;ds12887选通脚 mov r0,#0ah ;指向寄存器a mov a,#2fh ;初始化寄存器a,启动ds12887,中断速率500ms movx r0,a clr p2.3 ;指向寄存器b mov r0,#0bh mov a,#42h ;初始化寄存器b,周期中断允许,选择bcd码,24小时模式 movx r0,a

21、 clr p2.3 mov r0,#04h mov a,#06h movx r0,a clr p2.3 mov r0,#02h mov a,#29h movx r0,a clr p2.3 mov r0,#00h mov a,#55h movx r0,a modify: lcall read lcall disp lcall adjust lcall int887 sjmp modifyadjust: jb p1.0,ajt1 jnb p1.0,$ lcall adhourajt1:jb p1.1,ajt2 jnb p1.1,$ lcall dehourajt2: jb p1.2,ajt3 jn

22、b p1.2,$ lcall adminajt3: jb p1.3,ajt4 jnb p1.3,$ lcall deminajt4: retadhour: mov a,20h ;小时加1子程序 add a,#01h da a cjne a,#24h,inch2 mov a,#00hinch2: jc inch3inch3: mov 20h,a lcall wrhour clr p2.3 mov r0,#0bh mov a,#42h movx r0,a retdehour: mov a,20h ;小时减1子程序 cjne a,#00h,dech2 mov a,#23h sjmp dech3dec

23、h2:anl a,#0fh cjne a,#00h,dech4 mov a,20h swap a anl a,#0fh dec a swap a orl a,#09h ajmp dech3dech4: mov a,20h dec adech3: mov 20h,a lcall wrhour clr p2.3 mov r0,#0bh mov a,#42h movx r0,a retwrhour: clr p2.3 mov r0,#0bh mov a,#82h movx r0,a clr p2.3 mov r0,#04h mov a,20h movx r0,a retadmin:mov a,21h

24、 ;分钟加1子程序 add a,#01h da a cjne a,#60h,inch4 mov a,#00hinch4:jc inch5inch5: mov 21h,a lcall wrmin clr p2.3 mov r0,#0bh mov a,#42h movx r0,a retdemin: mov a,21h ;分钟减1子程序 cjne a,#00h,dech6 mov a,#59h sjmp dech7dech6:anl a,#0fh cjne a,#00h,dech8 mov a,21h swap a anl a,#0fh dec a swap a orl a,#09hajmp de

25、ch7dech8:mov a,21h dec adech7: mov 21h,a lcall wrmin clr p2.3 mov r0,#0bh mov a,#42h movx r0,a retwrmin: clr p2.3 mov r0,#0bh mov a,#82h movx r0,a clr p2.3 mov r0,#02h mov a,21h movx r0,a ret ;从ds12887读取时间,并将时间写入20h到22hread: lcall judge ;判断芯片状态 clr p2.3 ;读时信息 mov r0,#04h movx a,r0 mov 20h,a clr p2.3

26、 ;读分信息 mov r0,#02h movx a,r0 mov 21h,a clr p2.3 ;读秒信息 mov r0,#00h movx a,r0 mov 22h,a ret ;送显示程序disp: mov r0,#20h ;时显示 setb p2.3 clr p2.2 clr p2.1 setb p2.0 mov a,r0 mov p0,a inc r0 ;分显示 setb p2.3 clr p2.2 setb p2.1 clr p2.0 mov a,r0 mov p0,a inc r0 setb p2.3 ;秒显示 clr p2.2 setb p2.1 setb p2.0 mov a,

27、r0 mov p0,a ret ;判断芯片状态子程序judge: clr p2.3 mov r0,#0ah movx a,r0 jb acc.7,judge ;实质是判断寄存器a的最高位uip ret;中断程序开始int887: push 00h push 0e0h ;比较作息时间程序bjcx: mov a,22h ;将秒信息放入寄存器r2 mov r1,21h ;将分信息放入寄存器r1 mov r0,20h ;将时信息放入寄存器r0 cjne a,#15h,bjmiao ; 判断秒是否为"00",是就关电铃 clr p2.4 bjmiao: cjne a,#00h,ret

28、_int ;判断秒是否为"00",是就执行小时值比较 ;小时比较程序 bjhour1: cjne r0,#06h,bjhour2 ;判断时不为6点,比较下个时值 ljmp bjs1 ;判断时为6点,去比较分钟bjhour2: cjne r0,#07h,bjhour3 ;判断时不为7点,比较下个时值 ljmp bjs2 ;判断时为7点,去比较分钟 bjhour3: cjne r0,#08h,bjhour4 ;判断时不为8点,比较下个时值 ljmp bjs3 ;判断时为8点,去比较分钟bjhour4: cjne r4,#09h,bjhour5 ;判断时不为9点,比较下个时值 l

29、jmp bjs4 ;判断时为9点,去比较分钟bjhour5: cjne r0,#10h,bjhour6 ;判断时不为10点,比较下个时值 ljmp bjs5 ;判断时为10点,去比较分钟bjhour6: cjne r0,#11h,bjhour7 ;判断时不为11点,比较下个时值 ljmp bjs6 ;判断时为11点,去比较分钟bjhour7: cjne r0,#12h,bjhour8 ;判断时不为12点,比较下个时值 ljmp bjs7 ;判断时为12点,去比较分钟bjhour8: cjne r0,#13h,bjhour9 ;判断时不为13点,比较下个时值 ljmp bjs8 ;判断时为13点

30、,去比较分钟bjhour9: cjne r0,#14h,bjhour10 ;判断时不为14点,比较下个时值 ljmp bjs9 ;判断时为14点,去比较分钟bjhour10: cjne r0,#15h,bjhour11 ;判断时不为15点,比较下个时值 ljmp bjs10 ;判断时为15点,去比较分钟bjhour11: cjne r0,#16h,bjhour12 ;判断时不为16点,比较下个时值 ljmp bjs11 ;判断时为16点,去比较分钟bjhour12: cjne r0,#18h,bjhour13 ;判断时不为18点,比较下个时值 ljmp bjs12 ;判断时为18点,去比较分钟

31、bjhour13: cjne r0,#20h,bjhour14 ;判断时不为20点,比较下个时值 ljmp bjs13 ;判断时为20点,去比较分钟bjhour14: cjne r0,#21h,bjhour15 ;判断时不为21点,比较下个时值 ljmp bjs14 ;判断时为21点,去比较分钟bjhour15: cjne r0,#23h,ret_int ;判断时不为23点,返回主程序 ljmp bjs15 ;判断时为23点,去比较分钟 ;中断返回程序 ret_int: pop 0e0h pop 00h ret ;分钟比较程序 bjs1: cjne r1,#30h,ret_int ;6:30

32、setb p3.1 ;宿舍灯开 clr p2.4 setb p2.5 clr p2.6 clr p2.7 ljmp ret_int bjs2: cjne r1,#15h,bjs2_1 ;7:15 setb p3.1 ;早读上课打铃、宿舍灯关、教室灯开 setb p2.4 clr p2.5 clr p2.6 setb p2.7 ljmp ret_intbjs2_1: cjne r1,#45h,ret_int ;7:45 setb p3.1 ;早读下课打铃 setb p2.4 ljmp ret_intbjs3: cjne r1,#00h,bjs3_1 ;8:00 setb p3.1 ;第一节上课打

33、铃 setb p2.4 ljmp ret_intbjs3_1: cjne r1,#40h,bjs3_2 ;8:40 setb p3.1 ;第一节下课打铃 setb p2.4 ljmp ret_intbjs3_2: cjne r1,#50h,ret_int ;8;50 setb p3.1 ;第二节上课打铃 setb p2.4 ljmp ret_intbjs4: cjne r1,#30h,bjs4_1 ;9;30 setb p3.1 ;第二节下课打铃 setb p2.4 ljmp ret_intbjs4_1: cjne r1,#40h,ret_int ;9;40 setb p3.1 ;第三节上课打

34、铃 setb p2.4 ljmp ret_intbjs5: cjne r1,#20h,bjs5_1 ;10:20 setb p3.1 ;第三节下课打铃 setb p2.4 ljmp ret_intbjs5_1: cjne r1,#30h,ret_int ;10;30 setb p3.1 ;第四节上课打铃 setb p2.4 ljmp ret_intbjs6: cjne r1,#10h,ret_int ;11;10 setb p3.1 ;第四节下课打铃、教室灯关、宿舍灯开 setb p2.4 setb p2.5 clr p2.7 ljmp ret_intbjs7: cjne r1,#50h,fa

35、nhui ;12:50 setb p3.1 ;第五节课预备铃响、宿舍灯关、教室灯开 setb p2.4 clr p2.5 setb p2.7 ljmp ret_intbjs8: cjne r1,#00h,bjs8_1 ;13:00 setb p3.1 ;第五节上课打铃 setb p2.4 ljmp ret_intbjs8_1: cjne r1,#40h,bjs8_2 ;13:40 setb p3.1 ;第五节下课打铃 setb p2.4 ljmp ret_intbjs8_2: cjne r1,#50h,fanhui ;13:50 setb p3.1 ;第六节上课打铃 setb p2.4 ljm

36、p ret_int fanhui: lcall ret_int ;比较完毕,跳转到中断返回程序 bjs9: cjne r1,#30h,bjs9_1 ;14:30 setb p3.1 ;第六节下课打铃 setb p2.4 ljmp ret_intbjs9_1: cjne r1,#40h,fanhui ;14:40 setb p3.1 ;第七节上课打铃 setb p2.4 ljmp ret_intbjs10: cjne r1,#20h,bjs10_1 ;15:20 setb p3.1 ;第七节下课打铃 setb p2.4 ljmp ret_intbjs10_1: cjne r1,#30h,fanhui ;15:30 setb p3.1 ;第八节上课打铃 setb p2.4 ljmp ret_intbjs11: cjne r1,#10h,fanhui ;16:10 setb p3.1 ;第八节下课打铃、教室灯关、宿舍灯开 setb p2.4 clr p2.7 setb p2.5 ljmp ret_intbjs12: cjne r1,#20h,bjs12_1 ;18:20 setb p3.1 ;晚自习预备铃响、宿舍灯关、路灯开、教室灯开 se

温馨提示

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

评论

0/150

提交评论