logo资料库

基于单片机的校园作息时间控制系统设计.doc

第1页 / 共34页
第2页 / 共34页
第3页 / 共34页
第4页 / 共34页
第5页 / 共34页
第6页 / 共34页
第7页 / 共34页
第8页 / 共34页
资料共34页,剩余部分请下载后查看
2.2 系统整体设计
3 作息时间控制钟软件设计
SHOW_NUMBER:;段码
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DB 40H
SHOW_NULL:;空码
DB 00H,38H,38H,3EH,37H,00H
SHOW_BIT_CODE:;位码
DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEH
;------------------
DISPLAY:;显示子程序
MOV R1,#6
SHOW_AGAIN:
MOV A,SHOW_MOUDE
XRL A,#4
JZ SHOW_CHAR
MOV A,R1
ACALL GETCODE ;调用得到位数据子程序
MOV DPTR,#SHOW_NUMBER
MOVC A,@A+DPTR
SJMP SHOW_TO_CODE
SHOW_CHAR: ;显示模式为4则显示字符NULL
MOV DPTR,#SHOW_NULL
MOV A,R1
DEC A
MOVC A,@A+DPTR
SHOW_TO_CODE:
MOV SHOW_BIT,#0FFH;-------显示数据屏蔽
MOV SHOW_CODE,A
MOV A,R1
MOV DPTR,#SHOW_BIT_CODE-1
MOVC A,@A+DPTR
MOV SHOW_BIT,A
MOV R7,#1
ACALL Delay1ms
DJNZ R1,SHOW_AGAIN
MOV SHOW_BIT,#0FFH;--------显示数据屏蔽
RET
Delay1ms: ;-----------延时1MS
MOV R5,#2
DELAY:MOV R6,#0
DJNZ R6,$
DJNZ R5,DELAY
DJNZ R7,Delay1ms
RET
GETCODE:;得到位数据子程序
MOV B,#10
DEC A
RL A
MOV DPTR,#FIND_BIT
JMP @A+DPTR
FIND_BIT:;位散转
SJMP SHOW_0
SJMP SHOW_1
SJMP SHOW_2
SJMP SHOW_3
SJMP SHOW_4
SJMP SHOW_5
SHOW_0:;得到位0数据
MOV R0,SHOW_MOUDE
CJNE R0,#1,SHOW_LED_0
JB S_Flash,SHOW_LED_0
MOV A,#10
RET
SHOW_LED_0:
MOV R0,SHOW_PC
MOV A,@R0
DIV AB
MOV A,B
RET
SHOW_1:;得到位1数据
MOV R0,SHOW_MOUDE
CJNE R0,#1,SHOW_LED_1
JB S_Flash,SHOW_LED_1
MOV A,#10
RET
SHOW_LED_1:
MOV R0,SHOW_PC
MOV A,@R0
DIV AB
RET
SHOW_2:;得到位2数据
MOV R0,SHOW_MOUDE
CJNE R0,#2,SHOW_LED_2
JB S_Flash,SHOW_LED_2
MOV A,#10
RET
SHOW_LED_2:
MOV R0,SHOW_PC
INC R0
MOV A,@R0
DIV AB
MOV A,B
RET
SHOW_3:;得到位3数据
MOV R0,SHOW_MOUDE
CJNE R0,#2,SHOW_LED_3
JB S_Flash,SHOW_LED_3
MOV A,#10
RET
SHOW_LED_3:
MOV R0,SHOW_PC
INC R0
MOV A,@R0
DIV AB
RET
SHOW_4:;得到位4数据
MOV R0,SHOW_MOUDE
CJNE R0,#3,SHOW_LED_4
JB S_Flash,SHOW_LED_4
MOV A,#10
RET
SHOW_LED_4:
MOV R0,SHOW_PC
INC R0
INC R0
MOV A,@R0
DIV AB
MOV A,B
RET
SHOW_5:;得到位5数据
MOV R0,SHOW_MOUDE
CJNE R0,#3,SHOW_LED_5
JB S_Flash,SHOW_LED_5
MOV A,#10
RET
SHOW_LED_5:
MOV R0,SHOW_PC
INC R0
INC R0
MOV A,@R0
DIV AB
RET
COMP_DATA:;报警扫描子程序
MOV A,RingCount
JZ COMP_EXIT
MOV A,CLOCK_DATA0
JNZ COMP_EXIT
MOV R2,RingCount
COMP_LOOP:
MOV A,RINGDATAH
CJNE A,CLOCK_DATA2,NEXT_COMP
MOV A,RINGDATAL
CJNE A,CLOCK_DATA1,NEXT_COMP
SETB P3.4
SJMP COMP_EXIT
NEXT_COMP:
INC R0
INC R1
DJNZ R2,COMP_LOOP
COMP_EXIT:
RET
3.2.5 键盘扫描子程序
系统利用独立式键盘,作为系统的输入设备,可以实现对时钟的调整,以及对响铃报警时间的设置,具有
GETKEY:;扫描键盘得到键值子程序
MOV A,P1
CJNE A,#0FEH,GOTO_KEY2
MOV A,#1
RET
GOTO_KEY2:
CJNE A,#0FDH,GOTO_KEY3
MOV A,#2
RET
GOTO_KEY3:
CJNE A,#0FBH,GOTO_KEY4
MOV A,#3
RET
GOTO_KEY4:
CJNE A,#0F7H,GOTO_KEY5
MOV A,#4
RET
GOTO_KEY5:
CJNE A,#0EFH,GOTO_KEY6
MOV A,#5
RET
GOTO_KEY6:
CJNE A,#0DFH,GOTO_KEY7
MOV A,#6
RET
GOTO_KEY7:
CJNE A,#0BFH,GOTO_KEY8
MOV A,#7
RET
GOTO_KEY8:
CJNE A,#07FH,KEY_EXIT
MOV A,#8
RET
KEY_EXIT:
MOV A,#0
RET
SetTimer:;时钟设置子程序
MOV LS_S,CLOCK_DATA0;时钟数据放临时变量
MOV LS_M,CLOCK_DATA1
MOV LS_H,CLOCK_DATA2
MOV SHOW_MOUDE,#1;显示模式1
MOV SHOW_PC,#LS_S;显示数据指针转临时变量
SetTimer_Again:
ACALL DISPLAY;调用显示扫描子程序
ACALL COMP_DATA;调用报警扫描子唾弃
MOV BeforKey,NowKey
ACALL GETKEY ;调用键值扫描子程序
MOV NowKey,A
CJNE A,BeforKey,SetTimer_Again
CJNE A,#0,SetTimer_KEY0
SETB KeyFlag
SJMP SetTimer_Again
SetTimer_KEY0:
JNB KeyFlag,SetTimer_Again
CLR KeyFlag;健值控制
CJNE A,#03,SetTimer_KEY4;模式左移
MOV A,SHOW_MOUDE
CJNE A,#3,SHOW_MOUDE_ADD
MOV SHOW_MOUDE,#1
AJMP SetTimer_Again
SHOW_MOUDE_ADD:
INC SHOW_MOUDE
AJMP SetTimer_Again
SetTimer_KEY4:
CJNE A,#04,SetTimer_KEY5
MOV A,SHOW_MOUDE
CJNE A,#1,ADD_M;秒加
MOV A,LS_S
CJNE A,#59,NOT_RESET_S
MOV LS_S,#0
AJMP SetTimer_Again
NOT_RESET_S:
INC LS_S
AJMP SetTimer_Again
ADD_M:;分加
CJNE A,#2,ADD_H
MOV A,LS_M
CJNE A,#59,NOT_RESET_M
MOV LS_M,#0
AJMP SetTimer_Again
NOT_RESET_M:
INC LS_M
AJMP SetTimer_Again
ADD_H:;时加
MOV A,LS_H
CJNE A,#23,NOT_RESET_H
MOV LS_H,#0
AJMP SetTimer_Again
NOT_RESET_H:
INC LS_H
AJMP SetTimer_Again
SetTimer_KEY5:
CJNE A,#05,SetTimer_KEY6
MOV A,SHOW_MOUDE
CJNE A,#1,SUB_M;秒减
MOV A,LS_S
CJNE A,#0,NOT_SET_S
MOV LS_S,#59
AJMP SetTimer_Again
NOT_SET_S:
DEC LS_S
AJMP SetTimer_Again
SUB_M:;分减
CJNE A,#2,SUB_H
MOV A,LS_M
CJNE A,#0,NOT_SET_M
MOV LS_M,#59
AJMP SetTimer_Again
NOT_SET_M:
DEC LS_M
AJMP SetTimer_Again
SUB_H:;时减
MOV A,LS_H
CJNE A,#0,NOT_SET_H
MOV LS_H,#23
AJMP SetTimer_Again
NOT_SET_H:
DEC LS_H
AJMP SetTimer_Again
SetTimer_KEY6:;模式右移
CJNE A,#06,SetTimer_KEY7
MOV A,SHOW_MOUDE
CJNE A,#1,SHOW_MOUDE_SUB
MOV SHOW_MOUDE,#3
AJMP SetTimer_Again
SHOW_MOUDE_SUB:;退出
DEC SHOW_MOUDE
AJMP SetTimer_Again
SetTimer_KEY7:
CJNE A,#07,SetTimer_KEY8
SJMP EXIT_SetTimer
SetTimer_KEY8:;保存退出
CJNE A,#08,RETURN_SetTimer
MOV CLOCK_DATA0,LS_S
MOV CLOCK_DATA1,LS_M
MOV CLOCK_DATA2,LS_H
SJMP EXIT_SetTimer
RETURN_SetTimer:
AJMP SetTimer_Again
EXIT_SetTimer:
RET
INT_T1:;T1中断子程序
PUSH PSW
PUSH ACC
CPL S_Flash
JB LED_FLAG,NOT_CONTROL0
SETB P3.1
SJMP NOT_CONTROL
NOT_CONTROL0:
MOV C,S_Flash
MOV P3.1,C
NOT_CONTROL:
JB S_Flash,INT_TI_EXIT
MOV A,CLOCK_DATA0
CJNE A,#59,INC_CLOCK_DATA0
MOV CLOCK_DATA0,#0
MOV A,CLOCK_DATA1
CJNE A,#59,INC_CLOCK_DATA1
MOV CLOCK_DATA1,#0
MOV A,CLOCK_DATA2
CJNE A,#23,INC_CLOCK_DATA2
MOV CLOCK_DATA2,#0
SJMP COMP_RING
INC_CLOCK_DATA2:
INC CLOCK_DATA2
SJMP COMP_RING
INC_CLOCK_DATA1:
INC CLOCK_DATA1
SJMP COMP_RING
INC_CLOCK_DATA0:
INC CLOCK_DATA0
COMP_RING:
MOV A,CLOCK_DATA0
CJNE A,#20,INT_TI_EXIT
CLR P3.4
INT_TI_EXIT:
POP ACC
POP PSW
RETI
END
课程设计任务书 分院 信息科学与工程学院 专业 自动化 学生姓名 王利伟 学号 0803010319 设计题目 基于单片机的作息时间控制钟系统的设计 ——软件设计 课程设计内容及要求: 内容: 1 设计电路,选择器件 2 利用 Protel 画原理图 3 编程,调试 4 焊接电路,调试 要求: 1.系统时间设计,设计以 24 小时为周期的时间钟。 2.LED 数码管显示时间。 3.设计键盘,通过键盘修改时间、设定闹铃。 进度及安排:(10 天) 1.查资料(2 天) 2.设计电路画电路图(2 天) 3.编程与调试(2 天) 4.焊接硬件电路并调试(2 天) 5.写报告(2 天) 指导教师(签字): 分院院长(签字): 年 月 日 年 月 日
摘 要 单片机作息时间控制系统设计的目的和意义: 随着计算机技术的发展和在控制系统中的广泛应用,以及设备向小型化、智 能化发展,作为高新技术之一的单片机以其体积小、功能强、价格低廉、使用灵 活等优势,显示出了很强的生命力。进入 21 世纪以来,开发推出单片机的公司 很多,各种高性能单片机芯片市场也异常活跃,新技术的不断采用,更加使单片 机的种类、性能以及应用领域不断扩大和提高。因其功耗低,超高型,低成本, 功能完整,在国内越来越受到用户的重视和广泛使用。 随着科技的进步和技术不断的提升。一块大而复杂的模拟电路花费了您巨大 的精力,繁多的元器件增加了您的成本。而现在,只需要一块几厘米见方的单片 机,写入简单的程序,就可以使您以前的电路简单很多。相信您在使用并掌握了 单片机技术后,不管在您今后开发或是工作上, 一定会带来意想不到的惊 喜。 以 AT89S52 为核心控制器件的作息时间控制钟,由键盘、声音输出模块、 电源转换模块和存储模块四部分组成。它利用 AT89S52 的定时/计数器来计算时 间,并用存储器记录数据,保证了系统的可靠性。AT89S52 单片机是整个设计的 核心控制器件,根据从键盘接受的数据控制整个系统的工作流程。整体性好,人 性化强、可靠性高,实现了对时间控制的智能化,摆脱了传统由人来控制时间的 长短的不便,是现代学校必不可少的设备。 本次校园作息时间控制系统主要用于学校,对一些以 24 小时为周期的开关 量进行自动控制。如上下课打铃及扩音设备的开与关。采用 AT89S52 单片机来实 现对上述开关量的控制,利用 24C02 芯片来存储数据,设有六位数码管、可以实 时显示时间、系统还设有输入键盘,用以修改实时时钟,体现了系统简单、工作 稳定可靠、价廉、控制时间精确及系统体积小等优点。 关键词:作息时间控制; AT89S52; 24C02
目 录 1.1 1.2 3.1 3.2 3.3 2.1 2.2 2.3 2.4 1 绪论 ............................................................. 1 背景介绍................................................................ 错误!未定义书签。 作息时间控制钟概述.............................................................................. 1 2 硬件介绍................................................................................................................... 2 硬件仿真环境介绍.................................................................................. 2 系统整体设计.......................................................................................... 2 控制钟硬件设计...................................................................................... 3 系统整体电路图..................................................................................... 4 3 作息时间控制钟软件设计........................................................................................ 6 总体介绍.................................................................................................. 6 软件环境介绍.......................................................................................... 6 流程图介绍.............................................................................................. 6 3.3.1 系统主程序...................................................................................... 6 3.3.2 系统数据读写子程序.................................................................... 10 3.3.3 显示子程序.................................................................................... 14 3.3.4 报警扫描子程序............................................................................ 19 3.3.5 键盘扫描子程序............................................................................ 20 3.3.6 设置时钟子程序............................................................................ 22 T1 定时器中断子程序...................................................................25 3.3.7 4 系统调试................................................................................................................. 28 5 结论.......................................................................................................................... 29 6 附录.......................................................................................................................... 24 6.1 参考文献.........................................................................................30 6.2 主要元件列表................................................................................. 31
1 绪论 1.1 背景介绍 随着计算机技术的发展和在控制系统中的广泛应用,以及设备向小型化、智 能化发展,作为高新技术之一的单片机以其体积小、功能强、价格低廉、使用灵 活等优势,显示出了很强的生命力。进入21世纪以来,开发推出单片机的公司很 多,各种高性能单片机芯片市场也异常活跃,新技术的不断采用,更加使单片机 的种类、性能以及应用领域不断扩大和提高。16位单片机的问世,使得单片机的 科技含量及应用跃上一个新的台阶。因其功耗低,超高型,低成本,功能完整, 在国内越来越受到用户的重视和广泛使用。 本设计是一个具有报时功能的作息时间控制钟。它利用AT89S52单片机的定 时器计时,进行时间计算;在进行时间计算,分每加一时,都与规定的作息时间 比较,如果相等则进行相应的控制或动作。由键盘和显示部分组成,系统扩展八 个按键用于报时及校正时间。现代机关企业,特别是学校要求对时间加以控制, 要按时打铃及播放广播,以保证学习与工作的正常运行。本设计实现了这些功能, 给学校及其他机关企业带来方便,整体性好,人性化强、可靠性高,实现了对时 间控制的智能化。 1.2 作息时间控制钟概述 科技的进步需要技术不断的提升。一块大而复杂的模拟电路花费了您巨大的 精力,繁多的元器件增加了您的成本。而现在,只需要一块几厘米见方的单片机, 写入简单的程序,就可以使您以前的电路简单很多。相信您在使用并掌握了单片 机技术后,不管在您今后开发或是工作上, 一定会带来意想不到的惊喜。该系 统以 AT89S52 为主体的设计,整体性好,人性化强、可靠性高,实现了对时间控 制的智能化,摆脱了传统由人来控制时间的长短的不便,是现代学校必不可少的 设备。
2 硬件介绍 2.1 硬件仿真环境介绍: Protues 软件是英国 Labcenter electronics 公司出版的 EDA 工具软件。它 不仅具有其它 EDA 工具软件的仿真功能,还能仿真单片机及外围器件。它是目前 最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片 机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。 Proteus 是世界上著名的 EDA 工具(仿真软件),从原理图布图、代码调试到单片 机与外围电路协同仿真,一键切换到 PCB 设计,真正实现了从概念到产品的完整 设计。是目前世界上唯一将电路仿真软件、PCB 设计软件和虚拟模型仿真软件三 合一的设计平台,其处理器模型支持 8051、HC11、PIC10/DsPIC33、AVR、ARM、 8086 和 MSP430 等,2010 年即将增加 Cortex 和 DSP 系列处理器,并持续增加其 他系列处理器模型。在编译方面,它也支持 IAR、Keil 和 MPLAB 等多种编译器。 支持当前的主流单片机,如 51 系列、AVR 系列、PIC12 系列、PIC16 系列、 PIC18 系列、Z80 系列、HC11 系列、68000 系列等。 1)提供软件调试功能 2)提供丰富的外围接口器件及其仿真 RAM,ROM,键盘,马达,LED,LCD, AD/DA,部分 SPI 器件,部分 IIC 器件。这样很接近实际。在训练学生时,可以 选择不同的方案,这样更利于培养学生。 3) 提供丰富的虚拟仪器 利 用虚拟仪器在仿真过程中可以测量外围电路的特性,培养学生实际硬件的调试能 力。 4) 具有强大的原理图绘制功能 2.2 系统整体设计 根据设计要求画出系统框图,如图 1.1 所示: 电源 时钟 复位电路 键盘电路 上拉电阻 数码管 驱动电路 存储器 响铃 单片机 图 2.1 系统总体框图
该系统是由微处理器、存储器、数码显示部分以及键盘输入部分所组成。该 控制系统用 LED 数码管显示时、分、秒时间,可以显示实时时钟,显示闹铃时间, 尽量减少时间积累误差,具有秒闪功能。显示电路采用了 7407 芯片来完成驱的 功能,利用上拉电阻共同驱动数码管显示时间。 系统采用 AT89S52 作为处理器,利用 24C02 芯片作为数据存储器,打铃时间 点数据存储于非易失存储器存储 24C02 中,防止掉电丢失数据;能逐个检查、修 改、删除已设置的打铃时间点和增加打铃时间点。 系统还设有输入键盘,用以校正实时时钟,设定闹铃时间,键盘设计简单、 易于操作。 输出驱动电路部分,利用 220V 电源为系统提供供电,利用继电器驱动,便 于控制 220V 的电铃。同时利用直流——交流转换模块为整个系统提供电源,更 方便实际应用。 2.3 控制钟硬件设计 按系统框图分五个部分设计如下图 2.1。 键盘 部分 显示 部分 单片机 控制部分 响铃部分 图 2.2 硬件系统框图 系统以单片机为基本核心,利用 24C02 芯片可以记录 40 个闹铃时间,并且 可以长时间记录时间,不会造成时间混乱,可以满足正常的作息时间设置,简单 实用,可以满足正常的生活。 根据学校作息时间,可以得到需要打铃的时间如下表所示:
时间 8:00 8:45 8:55 9:40 10:00 10:45 10:55 11:40 13:00 13:45 13:55 14:40 14:50 15:35 15:45 16:30 16:40 17:25 17:35 18:20 表 2.1 作息时间控制表 事件 第一节课上课 第一节课下课 第二节课上课 第二节课下课 第三节课上课 第三节课下课 第四节课上课 第四节课下课 第五节课上课 第五节课下课 第六节课上课 第六节课下课 第七节课上课 第七节课下课 第八节课上课 第八节课下课 第九节课上课 第九节课下课 第十节课上课 第十节课下课 动作 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 铃响;延时 20S 2.4 系统整体电路图 系统的整体的电路图如下图所示:
图 2.3 作息时间控制钟系统整体电路图
分享到:
收藏