精编时间管理毕业设计基于单片机的作息时间控制器.docx
《精编时间管理毕业设计基于单片机的作息时间控制器.docx》由会员分享,可在线阅读,更多相关《精编时间管理毕业设计基于单片机的作息时间控制器.docx(18页珍藏版)》请在冰豆网上搜索。
精编时间管理毕业设计基于单片机的作息时间控制器
【时间管理】毕业设计基于单片机的作息时间控制器
xxxx年xx月xx日
xxxxxxxx集团企业有限公司
Pleaseenteryourcompany'snameandcontentv
摘要
校园作息时间控制系统主要用于学校,对一些以24小时为周期的开关量进行自动控制。
该控制系统是采用8031单片机来实现对上述开关量的控制,利用内部时钟来提供时钟信息,设有六位数码管、可以实时显示时间、系统还设有输入键盘,用以修改实时时钟,体现了系统简单、工作稳定可靠、价廉、控制时间精确及系统体积小等优点。
关键词作息时间控制定时器语音芯片8031
Abstract
Thecampusthedailytimetablecontrolsystemwhichismainlyusedinthecampus,itauto-controlsomeswitcheswhichhaveperiodsof24hours.
ThiscontrolsystemcarriesouttheswitchparametercontrolsallabovebySCM8031.ItusestheInternalClocktoprovidetheclockinformation.Itcouldshowtherealtimewith6bitdigitaltube.Anditcouldmodifytherealtimeclockwiththeinputkeyboard.Thesystemissimple,therunningissteadyanddependable,thecontrolledtimeisexact,andthephysicalvolumeofthesystemissmall,alltheadvantagesabovecanbeincarnatedinthissystem.
Keywords:
THEDAILYTIMETABLECONTROL,TIMER,DELAYEDACTION,8031
1引言5
1.1概述5
1.2本文研究内容5
2作息时间控制器的整体设计5
3作息时间控制器的硬件设计5
3.1单片机芯片介绍6
3.2扩展电路7
3.2.1程序存储器(2764)7
3.2.2数据存储器(6264)8
3.2.3扩展电路部分接线9
3.3键盘显示电路10
3.4音乐播放电路12
3.5复位电路14
3.6晶振电路15
3.7电源电路15
3.8作息时间控制器的硬件原理图16
4作息时间控制器的软件设计设计17
4.1定时中断服务程序18
4.1.1定时流程18
4.1.2定时中断服务程序设计18
4.2时钟比较程序20
4.2.2控制流程图及程序22
4.3其他部分流程25
4.3.1主程序流程图25
4.3.2动态显示流程图25
4.3.3键盘扫描流程图26
致谢28
参考文献29
1引言
随着计算机技术的发展和在控制系统中的广泛应用,以及设备向小型化,智能化发展,作为高新技术之一的单片机以其体积小,功能强,价格低廉,使用灵活等优势,显示出很强的生命力。
其功耗低,超高型,低成本,功能完整,在国内越来越受到用户的重视和广泛使用。
1.1概述
基于单片机的作息时间控制,充分发挥它体积小,价格便宜,功耗低,可靠性高的优点。
可用于学校作息,方便广大师生。
同时也可以作为各种时钟控制电路的报警装置使用,用途广泛,原理简单,便于操作和维护等优点。
总体上,单片机设计方案在现实生活中也比较容易实现设计。
1.2本文研究内容
通过对一个能实现时钟显示及定时功能的时间系统的设计学习,达到单片机应用中的数据转换显示,数码管显示原理,动态扫描显示原理,单片机的定时中断原理、及单片机相关指令在各方面的应用。
以8031单片机为核心,由LED数码管、按键、二极管等部分构成,由软件实现打铃时刻表的预置与修改,实现实时时间的显示、校正和铃响控制。
此种响铃器实际为一种可编程时间控制器,它提供定时控制输出接口,可方便地用于各种定时控制。
2作息时间控制器的整体设计
根据设计要求,画出系统框图,如图1所示。
该控制系统由单片机,音乐电路,数码显示部分以及键盘部分组成。
该控制系统设有6位数码管,可以实时显示时间和定时时间等,系统还设有输入键盘,用以修改实时时钟和定时等操作。
软件方面,通过晶振电路和软件设计,实现时钟设计。
作息时间表有2套可选择,一套为冬季作息时间,另一套为夏季作息时间。
图1设计的系统框图
3作息时间控制器的硬件设计
3.1单片机芯片介绍
设计选用了8031单片机,其引脚图,如图2所示。
(1)电源引脚VCC和GND
VCC:
电源端,接+5V
GND:
接地
(2)外接晶振引脚XTAL1和XTAL2
XTAL1:
片内反相放大器的输入端,接外部晶振的一个引脚。
当单片机采用外部时钟信号时,此引脚应接地。
XTAL2:
片内反相放大器的输出端,接外部晶振的另一个引脚。
当单片机采用外部时钟信号时,外部信号由此引脚接入。
(3)输入输出引脚
P0:
是双向8位三态I/O端口,在不接外存储器与不扩展I/O接口时,可作为准双向口。
在访问外存储器时,它分时用于低八位地址总线和8位双向数据总线。
P1:
是8位双向静态I/O端口。
P2:
是8位准双向I/O端口,在访问外部存储器时,它作为扩展电路的高8位地址总线,送出高8位。
P3:
是8位准双向I/O端口。
一般只用P0和P2作为输入输出引脚。
图28031引脚图
(4)其他引脚
RESET/VPD:
复位信号输入端。
Vcc掉电后,此引脚可接备用电源,以保持内部RAM的数据不丢失。
复位电路用了手动复位,VCC掉电期间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。
ALE/PROG:
地址锁存允许端。
当单片机访问外部存储器时,该隐脚输出的信号用于锁存P0端口送出的8位地址。
其输出信号的频率为时钟震荡的频率的1/6。
PSEN:
外部程序存储器的读选通信号输出端,或称为片外取指信号输出端。
从外部程序存储器取指令期间,PSEN在每个机器周期两次有效,其频率为振荡周期的1/6;但若此期间有访问外部数据存储器,则两次有效的PSEN信号将不出现。
EA/Vpp:
当其保持低电平时单片机只访问外部程序存储器,而不管片内是否有程序存储器。
3.2扩展电路
3.2.1程序存储器(2764)
由于8031没有程序存储器,所以扩展了一个8K的程序存储器2764。
2764引脚图如图3所示。
图32764引脚图
其主要引脚功能如下:
D0~D7:
8条双向数据总线,用于读出数据或编程时写入的编程代码。
A0~A7:
地址输入线,扩展时与单片机的P2口和P0口相连,用于传送单片机送来的地址编码信号。
CE:
片选端,低电平有效。
OE:
输出允许端数据输出允许信号线(低电平时,数据处于读出状态)。
Vcc:
电源端(+5V)。
GND:
接地端。
3.2.2数据存储器(6264)
由于8031数据存储器仅为128B,程序运行过程中需要调用大量的数据,所以扩展了一个8K数据存储器6264。
6264引脚图如图4所示。
其主要引脚功能如下:
D0~D7:
8条双向数据总线,用于读出数据或编程时写入的编程代码。
A0~A12:
地址线,扩展时与单片机的P2口和P0口相连,用于传送单片机送来的地址编码信号。
CE:
片选端,低电平有效。
OE:
输出允许端数据输出允许信号线(低电平时,数据处于读出状态)。
WE:
写选通信号线,低电平是数据处于写入状态。
Vcc:
电源端(+5V)。
GND:
接地端。
图46264引脚图
3.2.3扩展电路部分接线
这部分主要是用来存储数据、程序,是整个系统的存储器。
将P0口的低8位地址锁存后,在接到6264和2764的A0~A7上。
地址锁存信号ALE接锁存器控制端G,当ALE发生负跳变时,将低8位地址锁存于74LS138中,这时P0口就可以做数据线使用了。
当PSEN向OE输出低电平时,2764才可以和单片机之间进行数据交换。
同样的只有OE片选端输入低电平时,6264才可以进行写信号,只有PSEN和RD同时输出低电平时,读信号才有效。
这样2764、6264和单片机之间可以相互读数据,进行工作。
该部分电路接线图如图5所示[6]。
图5扩展电路图
3.3键盘显示电路
单片机扩展了一个并行I/O口8155,用来连接键盘显示电路。
8155其内部包含两个8位并行口(A口和B口),一个6位并行C口和一个14位计数器。
其电路图如图6所示[2]。
图6键盘显示电路连接图
通过键盘的外部输入,利用软件编程改变时分秒,并通过显示电路显示出来。
矩阵键盘12个键如图7所示,功能如表1。
图7键盘编号
S1
0
S2
1
S3
2
S4
3
S5
4
S6
5
S7
6
S8
7
S9
8
S10
9
S11
模式选择
S12
移位
表1按键功能
模式选择(S11)键包括:
校时,定时,时令选择,显示当前时间。
与移位(S12)键配合使用,完成相关功能。
3.4音乐播放电路
音乐播放电路部分,选用了美国ISD公司出品的ISD1400系列优质单片语音录放集成电路。
其引脚图,如图8所示。
图8ISD1400引脚图
ISD1400电气特性如下:
工作电压VDD:
5V
A0~A7:
地址输入端;
VCCD:
数字电路源;
VCCA:
模拟电路源;
SP+:
喇叭(+);
SP-:
喇叭(-);
SCLK:
外接时钟可选;
ANAIN:
模拟量输入;
ANAOUT:
模拟量输出;
AGC:
自动增益控制;
MIC:
驻极体话筒输入;
MICREF:
驻极体话筒参考输入;
PLAYE:
边沿触发放音;
PLAYL:
电平触发放音;
REC:
录音触发;
RECLED:
发光二极管接口;
NC:
空脚。
ISD1400系列有下列型号:
ISD1408、ISD1410、ISD1412、ISD1416、ISD1420。
录放时间分别为:
8秒、10秒、12秒、16秒、20秒(ISD14XX——其中型号的后两位表示其录音的时间长度,单位是秒)[4]。
图9ISD1410连接图
设计选用ISD1410(录音时间20秒),该芯片与主电路的连接图,如图9所示。
在该电路中,当P1.0输出一个低电平时,播放音乐,放音时先由软件给出一个地址,74LS377用来实现地址锁存,就是一个语音段首址,在这一放音过程中地址是不能变化的,故需要一个锁存器。
3.5复位电路
8031的复位方式可以是自动复位,也可以是手动复位,如图10。
此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。
本设计采用手动复位。
图10复位电路
3.6晶振电路
用一个12MHz晶振和两个30Pf瓷片电容组成,为单片机提供标准时钟,其中两个瓷片电容起微调作用.其电路图如图11。
图11晶振电路
3.7电源电路
依系统需要提供+5V直流电源。
在此我们引入220V交流电源通过电源变压器变换成交流低压,再经过桥式整流电路D1~D4和滤波电容C1的整流和滤波,在固定式三端稳压器7805的Vin和GND两端形成一个并不十分稳定的直流电压(该电压常常会因为市电电压的波动或负载的变化等原因而发生变化)。
此直流电压经过7805的稳压和C3的滤波便在稳压电源的输出端产生了精度高、稳定度好的直流输出电压。
本稳压电源可作为TTL电路或单片机电路的电源。
三端稳压器是一种标准化、系列化的通用线性稳压电源集成电路,以其体积小、成本低、性能好、工作可靠性高、使用简捷方便等特点,成为目前稳压电源中应用最为广泛的一种单片式集成稳压器件。
电路图如图12。
图12电源电路
3.8作息时间控制器的硬件原理图
综上所述,做出本设计的硬件原理图,如图13所示。
图13作息时间控制器的硬件原理图
4作息时间控制器的软件设计设计
利用单片机的定时器设计一个时钟,在每次秒加1的计时过程中都与规定的作息时间比较,如果相等,就进行播放音乐的操作,不相等则返回。
4.1定时中断服务程序
程序设计中,以单片机定时器/计数器T0工作在模式1,定时50ms,允许中断。
在中断服务程序中重赋T0计数初值,开中断返回
设:
20H为中断计数单元,计满20次为1秒
21H为秒的计数单元,计满60次为1分钟
22H为分的计数单元,计满60次为1小时
23H为时的计数单元,计满24次为1天
4.1.1定时流程
如图14所示。
图14计时流程图
4.1.2定时中断服务程序设计
选择定时/计数器作为定时器,工作方式为方式1。
计数器的加1信号由振荡器(晶振)的12分频产生,即每经过1个机器周期,计数器增1,直至计数溢出为止。
晶振频率为12MHz,则计数周期Tcy为1μs
定时器的方式1为16位计数器,计数最大值为216=65536,定时50MS,需要计数50000个1μs(计数周期)。
计数初值=65536-50000=15536
15536转换为十六进制即为3CB0
计数器从3CB0开始计数,计数到65536溢出,产生定时中断。
系统晶振为12MHZ,设定定时器每隔50MS溢出中断1次,则循环中断20次延时时间为1秒,上述过程重复60次为1分钟,分计时60次为1小时,小时计时24次则时间重新回到00:
00:
00[5]。
汇编程序如下:
ORG0000H;程序执行开始地址
LJMPMAIN;跳转主程序
ORG000BH;T0中断入口地址
LJMPINT0;跳至INT0执行
ORG0100H
COUNTEQU20H
SECONDEQU21H
MINUTEEQU22H
HOUREQU23H
MAIN:
MOVTMOF,#01H;定时器工作方式1
MOVTL0,#0B0H;设定初值
MOVTH0,#3CH
SETBEA;总中断开放
SETBET0;允许T0中断
SETBTR0;开启T0定时器
INT0:
PUSHACC;累加器入栈保护
PUSHPSW;状态字入栈保护
MOVTL0,#0B0H;重装初值
MOVTH0,#3CH
SETBTR0;开启定时器T0
ADDC:
INCCOUNT
MOVA,TCOUNT
CJNEA,#14H,OUTT0;20次中断未到中断退出
MOVCOUNT,#00H
ADDS:
INCSECOND
LCALLTIME;调用时钟比较子程序(见4.2.2)
MOVA,SECOND
CJNEA,#60,OUTT0
MOVSECOND,#00H
ADDM:
INCMINUTE
MOVA,MINUTE
CJNEA,#60,OUTT0
MOVMINTUE,#00H
ADDH:
INCHOUR
MOVA,HOUR;时数据放入A
CJNEA,#24,OUTT0
MOVHOUR,#00H
OUTT0:
POPPSW;恢复状态字(出栈)
POPACC;恢复累加器
SETBET0;开放T0中断
RETI;中断返回
4.2时钟比较程序
作息时间预先制成表格存入EPROM数据区,利用软件每过一秒,将当前时间与数据区时间相比较,相等说明要进行控制,完成播放音乐的操作。
通过模式选择键,和移位键,完成时间表的切换。
由INT1端口状态来选择夏季作息时间或是冬季作息时间。
4.2.1作息时间数据区
数据区每一项时间控制字需要占8个存储单元:
控制码1
时
分
秒
启动装置时间
控制码2
时
分
秒
关闭装置时间
8031单片机的P1.0用作语音芯片的开启和关闭。
控制码定义表,如表2所示
控制码
功能
对应输出码
FEH
启动语音芯片
P1.0控制播放
FFH
关闭语音芯片
P1.0输出关闭
00H
数据区结束
表4-1控制码定义
作息时间如表3(冬季),表4(夏季)所示,以及与根据作息时间编制的数据区如表5(冬季),表6(夏季)所示
时间
作息
8:
00~8:
45
第一节
8:
55~9:
40
第二节
10:
20~11:
05
第三节
11:
15~12:
00
第四节
14:
00~14:
45
第五节
14:
55~15:
40
第六节
15:
50~16:
35
第七节
16:
45~17:
30
第八节
19:
00~21:
30
晚自习
时间
作息
8:
00~8:
45
第一节
8:
55~9:
40
第二节
10:
20~11:
05
第三节
11:
15~12:
00
第四节
14:
30~15:
15
第五节
15:
25~16:
10
第六节
16:
20~17:
05
第七节
17:
15~18:
00
第八节
19:
30~22:
20
晚自习
表3冬季作息时间表4夏季作息时间
地址
数据(时间控制字)
1110H~1117H
FE080000~FF080010
1118H~111FH
FE084500~FF084510
1120H~1127H
FE085500~FF085510
1128H~112FH
FE094000~FF094010
1130H~1137H
FE102000~FF102010
1138H~113FH
FE110500~FF110510
1140H~1147H
FE111500~FF111510
1148H~114FH
FE120000~FF120010
1150H~1157H
FE143000~FF143010
1158H~115FH
FE151500~FF151510
1160H~1167H
FE152500~FF152510
1168H~116FH
FE161000~FF161010
1170H~1177H
FE162000~FF120610
1178H~117FH
FE170500~FF170510
1180H~1187H
FE172500~FF172510
1188H~118FH
FE180000~FF180010
1190H~1197H
FE193000~FF193010
1198H~119FH
FE220000~FF220010
11A0H~11A7H
00H
地址
数据(时间控制字)
1010H~1017H
FE080000~FF080010
1018H~101FH
FE084500~FF084510
1020H~1027H
FE085500~FF085510
1028H~102FH
FE094000~FF094010
1030H~1037H
FE102000~FF102010
1038H~103FH
FE110500~FF110510
1040H~1047H
FE111500~FF111510
1048H~104FH
FE120000~FF120010
1050H~1057H
FE140000~FF140010
1058H~105FH
FE144500~FF144510
1060H~1067H
FE145500~FF145510
1068H~106FH
FE154000~FF154010
1070H~1077H
FE155000~FF155010
1078H~107FH
FE163500~FF163510
1080H~1087H
FE164500~FF164510
1088H~108FH
FE173000~FF173010
1090H~1097H
FE190000~FF190010
1098H~109FH
FE213000~FF213010
10A0H~10A7H
00H
表5冬季作息时间数据区表6夏季作息时间数据区
程序所用到的片外RAM数据存储单元安排如下:
2EH为控制字存储区地址指针暂存单元
R0为控制字存储区的指针
6AH为暂存控制字的开关操作码单元
6BH~6DH依次为控制字预设的秒,分,时的数值单元
4.2.2控制流程图及程序
如图15所示。
图15定时比较流程图
汇编程序如下:
TIME:
SETBP1.7
JBP1.7,SUMMER;P1.7低电平,跳转SUMMER
WINTER:
MOVDPTR,#TABLE1
SJMPCOMP
SUMM:
MOVDPTR,#TABLE2
COMP:
SETBRS0;指向第一组工作寄存器
PUSHPSW
PUSHACC;堆栈
MOVR0,2EH;控制字首地址送R0
MOVXA,@R0;取控制字开关操作码
MOV6AH,A;暂存6AH
INCR0;修改指针
MOVXA,@R0;取出控制字预设时值
MOV6DH,A;暂存6DH单元
INCR0
MOVXA,@R0;取出控制字预设分值
MOV6CH,A;暂存6CH单元
INCR0
MOVXA,@R0;取出控制字预设秒值
MOV6BH,A;暂存6BH单元
INCR0
MOV2EH,R0;存入2EH单元
MOVA,SECOND;取当前秒值
CJNEA,6BH,OUT1;当前秒值与预设秒值,不等跳转
MOVA,MINUTE;取当前分值
CJNEA,6CH,OUT1;当前分值与预设分值,不等跳转
MOVA,HOUR;取当前时值
CJNEA,6DH,OUT1;当前时值与预设时值,不等跳转
MOVA,6AH;时分秒都相等,取开关操作码
CJNEA,#00H,OUT0;开关操作码不为00H,跳转
SJMPEXIT;00H,跳转
OUT0:
MOVP1.0,A;开关操作由P1.0输出控制
EXIT:
POPPSW
POPACC;出栈
CLRRS0
OUT1:
CLRC;进位清零
MOVA,2EH
SUBBA,#04H;回复原控制字指针
MOV2EH,A
SJMPEXIT
RET
控制码:
冬时令
ORG1010H
TABLE1:
DBFEH,08H,00H,00H,0FFH,08H,00H,10H
DBFEH,08H,45H,00H,0FFH,08H,45H,10H
DBFEH,08H,55H,00H,0FFH,08H,55H,10H
DBFEH,09H,40H,00H,0FFH,09H,40H,10H
DBFEH,10H,20H,00H,0FFH,10H,20H,10H
DBFEH,11H,05H,00H,0FF