基于单片机的作息时间控制钟系统设计文档格式.docx
- 文档编号:17673136
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:37
- 大小:210.18KB
基于单片机的作息时间控制钟系统设计文档格式.docx
《基于单片机的作息时间控制钟系统设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的作息时间控制钟系统设计文档格式.docx(37页珍藏版)》请在冰豆网上搜索。
如上下课打铃及扩音设备的开与关。
采用AT89S52单片机来实现对上述开关量的控制,利用24C02芯片来存储数据,设有六位数码管、可以实时显示时间、系统还设有输入键盘,用以修改实时时钟,体现了系统简单、工作稳定可靠、价廉、控制时间精确及系统体积小等优点。
关键词:
作息时间控制;
AT89S52;
24C02
2.4系统整体电路图4
3.3.1系统主程序6
3.3.2系统数据读写子程序10
3.3.3显示子程序14
3.3.4报警扫描子程序19
3.3.5键盘扫描子程序20
3.3.6设置时钟子程序22
3.3.7T1定时器中断子程序25
5结论29
1绪论
1.1背景介绍
16位单片机的问世,使得单片机的科技含量及应用跃上一个新的台阶。
本设计是一个具有报时功能的作息时间控制钟。
它利用AT89S52单片机的定时器计时,进行时间计算;
在进行时间计算,分每加一时,都与规定的作息时间比较,如果相等则进行相应的控制或动作。
由键盘和显示部分组成,系统扩展八个按键用于报时及校正时间。
现代机关企业,特别是学校要求对时间加以控制,要按时打铃及播放广播,以保证学习与工作的正常运行。
本设计实现了这些功能,给学校及其他机关企业带来方便,整体性好,人性化强、可靠性高,实现了对时间控制的智能化。
1.2作息时间控制钟概述
科技的进步需要技术不断的提升。
该系统以AT89S52为主体的设计,整体性好,人性化强、可靠性高,实现了对时间控制的智能化,摆脱了传统由人来控制时间的长短的不便,是现代学校必不可少的设备。
2硬件介绍
2.1硬件仿真环境介绍:
Protues软件是英国Labcenterelectronics公司出版的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个闹铃时间,并且可以长时间记录时间,不会造成时间混乱,可以满足正常的作息时间设置,简单实用,可以满足正常的生活。
根据学校作息时间,可以得到需要打铃的时间如下表所示:
表2.1作息时间控制表
时间
事件
动作
8:
00
第一节课上课
铃响;
延时20S
45
第一节课下课
55
第二节课上课
9:
40
第二节课下课
10:
第三节课上课
第三节课下课
第四节课上课
11:
第四节课下课
13:
第五节课上课
第五节课下课
第六节课上课
14:
第六节课下课
50
第七节课上课
15:
35
第七节课下课
第八节课上课
16:
30
第八节课下课
第九节课上课
17:
25
第九节课下课
第十节课上课
18:
20
第十节课下课
2.4系统整体电路图
系统的整体的电路图如下图所示:
图2.3作息时间控制钟系统整体电路图
3作息时间控制钟软件设计
3.1总体介绍
硬件平台结构一旦确定,大的功能框架即形成。
软件在硬件平台上构筑,完成各部分硬件的控制和协调。
系统功能是由软硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。
因此,软件是本系统的灵魂。
软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。
同时,对软件进行全面测试也是检验错误排除故障的重要手段。
本程序用汇编语言设计。
3.2软件环境介绍:
KeiluVision2是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,使您能在很短的时间内就能学会使用keilc51来开发您的单片机应用程序。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
3.3流程图介绍
软件设计以定时器T1、T2定时、内存读取、时钟显示、键盘扫描、报警程序为主程序。
在设计中利用单片机时钟计时集成电路完成计时的任务,并500ms向单片机发一个中断,中断子程序有时钟显示及时间比较,如比较相等,则说明作息时间已到,发出指令控制电铃开、关操作。
3.3.1系统主程序
根据控制钟的设计要求,设计的程序的主流程图如图所示:
开始
不相等
比较键值是否相等
不等
比较键值
图3.1主程序流程图流程图
程序如下:
TF2EQU0CFH;
T2中断标志控制位
TR2EQU0CAH;
T2启动/停止控制位
ET2EQU0ADH;
T2允许中断控制位
PT2EQU0BDH;
T2优先级控制位
RCAP2LEQU0CAH;
T2自动重载低位
RCAP2HEQU0CBH;
T2自动重载高位
TL2EQU0CCH;
T2计数器低位
TH2EQU0CDH;
T2计数器高位
I2cStartEQU55H;
I2C开始标志
I2cStopEQU0AAH;
I2C结束标志
SDAEQU0B2H;
I2C数据线
SCLEQU0B3H;
I2C时钟线
SHOW_CODEEQU80H;
显示段码
SHOW_BITEQU0A0H;
显示位码
KeyFlagEQU00H;
按键标志位
S_FlashEQU01H;
秒闪标志位
LED_FLAGEQU02H;
LDE显示模式标志位
BeforKeyEQU22H;
上次采样键值
NowKeyEQU23H;
现在次采样键值
LS_SEQU24H;
临时变量1
LS_MEQU25H;
临时变量2
LS_HEQU26H;
临时变量3
CLOCK_DATA0EQU27H;
时钟秒
CLOCK_DATA1EQU28H;
时钟分
CLOCK_DATA2EQU29H;
时钟时
SHOW_MOUDEEQU2AH;
显示模式
SHOW_PCEQU2BH;
显示数据指针
RingCountEQU2CH;
报警数据个数
ShowRingEQU2DH;
显示报警数据地址
RINGDATAHEQU2EH;
报警数据高位起始地址
RINGDATALEQU57H;
报警数据低位起始地址
ORG0000H
MOVSP,#10H
SJMPSTART
ORG0001BH
AJMPINT_T1
ORG0002BH
CPLP3.5
CLRTF2
RETI
ORG00035H
START:
MOVTH2,#3CH;
设置T2定时50ms
MOVTL2,#0B0H
MOVRCAP2H,#3CH
MOVRCAP2L,#0B0H
SETBPT2
SETBET2
MOVTMOD,#60H;
设置T1定时500ms(T2中断10次,T1中断5次)
MOVTH1,#0FBH
MOVTL1,#0FBH
SETBET1
ACALLREAD_DATA
SETBEA
SETBTR2
SETBTR1
MOVCLOCK_DATA0,#0
MOVCLOCK_DATA1,#0
MOVCLOCK_DATA2,#12
SETBLED_FLAG
CLRP3.4
AGAIN:
MOVSHOW_MOUDE,#0;
显示模式0
MOVSHOW_PC,#CLOCK_DATA0;
显示时钟(传时钟地址指针)
ACALLDISPLAY;
调用动态扫描子程序
ACALLCOMP_DATA;
调用报警扫描子程序
MOVBeforKey,NowKey
ACALLGETKEY;
调用键盘扫描子程序
MOVNowKey,A
CJNEA,BeforKey,AGAIN
CJNEA,#0,NEXT_KEY0
SETBKeyFlag
SJMPAGAIN
NEXT_KEY0:
JNBKeyFlag,AGAIN
CLRKeyFlag
CJNEA,#1,NEXT_KEY2
ACALLSetTimer;
调用设置时钟子程序
NEXT_KEY2:
CJNEA,#2,AGAIN
ACALLSetRing;
调用设置报警子程序
SJMPAGAIN;
--------------------//主程序结束//
3.3.2系统数据读写子程序
系统中利用24C02存储系统数据,该芯片为单电源供电,工作电压范围为1.8-5.5V,低功耗CMOS技术,自定时写周期,页面写周期的典型值为2ms,具有硬件写保护。
通过串行I2C总线扩展技术对数据进行读写操作,节省了接口引脚数,只利用两根传输总线就可以实现全双工同步数据传送。
其程序流程图如下:
开始
读开始错误刷新24C02
数据读取结束
读取结束
未读完
是否读完
结束
图3.2数据读写子程序流程图
I2C_START:
;
I2C开始
SETBSDA
SETBSCL
NOP
CLRSDA
CLRSCL
RET
I2C_STOP:
I2C结束
CLRSDA
I2C_SEND:
I2C发送一个字节
MOVR7,#08
CLRC
SEND_BIT:
RLCA
MOVSDA,C
DJNZR7,SEND_BIT
I2C_RECEIVE:
;
I2C接收一个字节
RECEIVE_BIT:
MOVC,SDA
DJNZR7,RECEIVE_BIT
READ_24C02:
读24C02
ACALLI2C_START
MOVA,#0A0H
ACALLI2C_SEND
MOVA,R0
MOVA,#0A1H
ACALLI2C_RECEIVE
ACALLI2C_STOP
WRITE_24C02:
写24C02
MOVA,R1
READ_DATA:
;
--------------------从24C02中读取数据更新内存
MOVR2,#10
READ_START_AGAIN:
读开始标志位
MOVR0,#0
CLREA
ACALLREAD_24C02
CJNEA,#I2cSTART,READ_SUB
SJMPWRITE_STOP
READ_SUB:
DJNZR2,READ_START_AGAIN;
读开始位错误刷新24C02
WRITE_STOP:
XRLA,#I2cSTART
JZREAD_NEXT1
MOVR1,#I2cStart
ACALLWRITE_24C02;
写开始字节
MOVR7,#5
ACALLDelay1ms
MOVR0,#1
MOVR1,#I2cStop
写结束字节
READ_NEXT1:
MOVR0,#1;
读数据地址;
R1为间地址寻址寄存器
MOVR3,#0;
读数据总数;
R2为数据缓存器
READ_DATA_AGAIN:
ACALLREAD_24C02;
读高位
INCR0
CJNEA,#I2cStop,READ_NEXT2;
判断是否是结束标志
SJMPREAD_EXIT
READ_NEXT2:
MOVR2,A
MOVA,#RINGDATAH
ADDA,R3
MOVR1,A
MOVA,R2
MOV@R1,A
读低位
MOVA,#RINGDATAL
INCR3
CJNER3,#40,READ_DATA_AGAIN
READ_EXIT:
MOVRingCount,R3;
更新报警数据个数
3.3.3显示子程序
对多位LED显示器的动态显示,通常都是采用动态扫描的方法进行显示,即逐个循环点亮各位显示器。
这样虽然在任一时刻只有一位显示器被点亮,但是由于间隔时间较短,且人眼具有视觉残留效应,看起来与全部显示器持续点亮一样。
为了实现LED显示器的动态扫描,除了要给显示器提供的输入之外,还要对显示器加位选择控制,这就是通常所说的段控和位控。
因此多位LED显示器接口电路需要有两个输出口,其中一个用于输出8位信号;
另一个用于输出段控制信号。
其显示模式有五种:
0:
正常显示数据;
1:
显示调试模式(0,1位闪烁);
2:
显示调试模式(2,3位闪烁);
3:
显示调试模式(4,5位闪烁);
4:
显示特殊字符模式。
A=0A=0
未完全显示
数码管
结束
图3.3显示子程序流程图
SHOW_NUMBER:
段码
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DB40H
SHOW_NULL:
空码
DB00H,38H,38H,3EH,37H,00H
SHOW_BIT_CODE:
位码
DB0DFH,0EFH,0F7H,0FBH,0FDH,0FEH
------------------
DISPLAY:
显示子程序
MOVR1,#6
SHOW_AGAIN:
MOVA,SHOW_MOUDE
XRLA,#4
JZSHOW_CHAR
ACALLGETCODE;
调用得到位数据子程序
MOVDPTR,#SHOW_NUMBER
MOVCA,@A+DPTR
SJMPSHOW_TO_CODE
SHOW_CHAR:
显示模式为4则显示字符NULL
MOVDPTR,#SHOW_NULL
DECA
SHOW_TO_CODE:
MOVSHOW_BIT,#0FFH;
-------显示数据屏蔽
MOVSHOW_CODE,A
MOVDPTR,#SHOW_BIT_CODE-1
MOVSHOW_BIT,A
MOVR7,#1
DJNZR1,SHOW_AGAIN
--------显示数据屏蔽
Delay1ms:
-----------延时1MS
MOVR5,#2
DELAY:
MOVR6,#0
DJNZR6,$
DJNZR5,DELAY
DJNZR7,Delay1ms
GETCODE:
得到位数据子程序
MOVB,#10
RLA
MOVDPTR,#FIND_BIT
JMP@A+DPTR
FIND_BIT:
位散转
SJMPSHOW_0
SJMPSHOW_1
SJMPSHOW_2
SJMPSHOW_3
SJMPSHOW_4
SJMPSHOW_5
SHOW_0:
;
得到位0数据
MOVR0,SHOW_MOUDE
CJNER0,#1,SHOW_LED_0
JBS_Fl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 作息 时间 控制 系统 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)