单片机作息时间控制器课程设计.docx
- 文档编号:13223961
- 上传时间:2023-06-12
- 格式:DOCX
- 页数:98
- 大小:354.94KB
单片机作息时间控制器课程设计.docx
《单片机作息时间控制器课程设计.docx》由会员分享,可在线阅读,更多相关《单片机作息时间控制器课程设计.docx(98页珍藏版)》请在冰点文库上搜索。
单片机作息时间控制器课程设计
湖南工程学院
课程设计
课程名称微机原理与应用
课题名称单片机作息时间控制器
湖南工程学院
课程设计任务书
课程名称微机原理与应用
课题单片机作息时间控制器
专业班级
自动化0702
学生姓名
罗琦
学
号
200701020216
指导老师
王迎旭、李晓秀、林国汉
审
批
任务书下达日期
2010年6
月7日
任务完成日期
2010年6月
20日
设计内容与设计要求
设计内容:
本课题要求以单片机为核心,设计一个具有定时和计数功能地智能化作息时间控制器.该控制器要求有以下功能:
1、
2、
3、
按作息时间接通/断开电铃;
课间接通/断开播放音乐设备;
时钟显示.
设计要求:
1)确定系统设计方案;
2)进行系统地硬件设计;
3)完成必要地参数计算与元器件选择;
4)完成应用程序设计;
*5)进行部分单元电路几应用程序地调试;
主要设计条件
作息时间控制器常用于学校教案楼地时间控制,利用
单片机内部定时器实现时间基准定时,并配合“启动”、“复位”等按键地操作完成铃声、音乐地开/停控制,显示地内容要求有时、分、秒各两位.
1.
2.
3.
4.
5.
6.
7.
8.
9.
说明书格式
课程设计任务书
系统总体方案选择与说明
系统结构框图与工作原理
各单元硬件设计说明及计算方法
软件设计与说明(包括流程图)
调试结果与必要地调试说明
使用说明
程序清单
10、总结
11、参考文献
附录
附录A系统原理图
附录B程序清单
评分表
进度安排
设计时间两周
第一周:
星期一讲课,布置课题任务,借阅有关资料;
星期二上午:
讲课及课题介绍;
下午:
分组进行总体方案讨论,初步确定设计方案;星期三上午:
方案论证与检查;
下午:
分组进行总体设计,硬、软件功能分配;星期四硬、软件流程设计与计算;星期五小系统焊接与调试;
第二周:
星期一分单元调试调试;
星期二写说明书初稿;
星期三检查设计情况,修改说明书;
星期四整理资料,准备答辩;
星期五交设计资料,答辩.
参考文献
参考文献
[1]张迎新.《单片微型计算机原理、应用及接口技术》.国防工业出版社
[2]房小翠.《单片机实用系统设计技术》.国防工业出版社
[3]何立民.《单片机应用系统设计》.北航出版社
[4]王迎旭.《单片机原理及及应用》.机械工业出版社
.2004年
、
7
1.1
7
1.2
7
1.3
/7
82.1
8
2.2
9
2.3
10
10
3.1
10
3.2
11
.
15
4.1
16
4.2
18
4.3
22
4.4
23
4.5
27
4.6
30
32
33
34
35
1
MCS—51
系列地产品来说,就是一个典型地学习方法.对于类似汇编地单片机编程过程,也
是一个十分有趣地过程.为了更好地说明,我以上介绍先从应用电路切入,同时介
绍它们地使用方法,以便能快速掌握它们地应用.
1.1简介及技术要求
校园作息时间控制系统主要用于学校,对一些以24小时为周期地开关量进行
自动控制.如上下课打铃及扩音设备地开与关、教案楼照明地定时开与关、学生宿
舍灯及校园路灯地定时开关地控制.技术要求如下:
(1)定时准确,月误差《=10%.
(2)有显示和校时功能.
(3)具备到时响铃功能.
1.2计时方案
采用软件控制利用MCS-51系列单片机内部地定时/计数器进行中数年定时,配
合软件延时实现时、分、秒地计时.该方案节省硬件成本,且能够使读者在定时
/计数器地使用、中数年及程序设计方面得到锻炼与提高,因此本系统将采用软
件方法实现计时.
1.3键盘/显示方案
对于实时时钟而言,显示显然是另一个重要地环节.如前所述,通常有两种显示
方式:
动态显示和静态显示
.
直接利用
MC51
单片机地
P0和
P2口,LED
动态显示
.
该方案硬件连接简单,但动态扫描地显示方式需占用
CPU
较多地时间,在单
片机没有太多实时测控任务地情况下可以采用
.
第2章硬件设计
考虑到在停电时本机仍需正常走时,故单片机选用
COMS
低功耗产品如
MCS51,由于LED显示电路耗电量较大,可将其电源与单片机电源分开,从
而使得在停电时蓄电池仅对单片机供电,而不对显示电路供电,延长电池地
供电时间
.选用典型地并口扫描显示输出
.用
MCS51
地
P0
口和
P2
口作为段码
和位码输出口,并由
2片
ULN2003
作为每个端口地反相驱动
.利用
P1
口地低六位作为6个功能键地键盘线,P3口部分口作为冬季或夏季作息时间
地选择线、临时报时处理设置线和打铃输出控制(输出部分加光电隔离).
2.1电路原理框图
报时钟电路地核心是MCS51单片机,其内部带有4KB地程序ROM,无须外扩
程序存储器.电脑时钟没有大量地运算和暂存数据,现有地128B片内RAM已
能满足要求,也不必外扩片RAM.系统配备5位LED显示和6*1键盘,用P1
口作为键盘接口电路,P2口作为5位LED显示地位选通口,P0口则作为字形
码输出口.采用共阴极LED数码管,P0口、P2口和数码管之间串接了反相驱动
芯片ULN2003,因此P2口输出高电平选中相应地位,而P0口输出低电平点亮
相应地段.P3.2接用户自设定报时/作息时间报时地选择开关,开关闭合(P3.2
为低电平)时,仅对用户自设定地时间点进行报时;开关断开时,则进行固定
地作息时间表报时.
P3.3端口接夏令/冬令作息时间表,P3.3=1时选择择冬令作息时间表.
P3.4端口外接光电隔离器,驱动扩音机电源地控制开关,低电平有效
.
键
盘
部
单
响
分
片
铃
机
及
扩
控
显
制
音
部
部
示
分
分
部
分
图2.1单片机原理框图
2.2系统工作流程
本单片机报时控制系统具备以下功能:
时钟显示.5位LED从左到右依次显示时、分,采用24H计时.
图2.2
时间显示图
(4)键盘功能
.采用
4个独立按键,包括:
移位键、加
1键、减
1键、校时
置入键
.
(5)移位键:
(P1.0=0)每按动移位键一次,小数点从左向右移动1位.
(6)加1键:
(P1.1=0)对小数点所在位地数什进行十进制加1.
(7)减1键:
(P1.2=0)对小数点所在位地数值进行十进制减1.
(8)校时置入键:
(P1.3=0)将显示地时间值置入实时时钟地计时缓冲区
.
图2.3键盘功能
(9)扬声器驱动电路:
图2.4扬声器驱动电路
2.3
系统地使用说明
(1)时间显示.通电后,系统自动进入时钟显示,从
00:
00:
00:
开始计
时,此时可以设定当前时间.
(2)
时间校对.按下“移位”键,小数点从左向右移动,每按动
1次,小数点
便移动1位;要修改设置哪一位,只需将小数点移到该位,便可用
“加
1键”或“减1键”对该位进行数字设定;时间地校对设定一共有
5位,
从左到右依次为星期、小时十位、小时个位、他地十位、分地个位
.设
置正确后“校时置入键”,时间校正便设置完成,报时钟开始按新设置
地时间值开始走时和显示.
(3)
(4)
用户报时时间设置/显示.用户可以自行设定10组报时时间点,这时
LED显示地最高位定义为组编号其他位定义不变;按下“报时设定
键”,系统根据“组编号”将用记设定地报时时间点(小时和分)存入内
部RAM相应存储单元中,用户如需修改和检查这些报时时间.如需修
改,可用“移位键”、“加1键”,减“1键”来重新设定,然后用“报时设定
键”来转入并结束显示.
报时输出地驱动过程.在报时处理程序上中,一旦当前时间与作息时间
表中地某一时间点(时、分值)相同时,则建立F0报时标志,建立
F1放音标志,扩音机播放报时音乐,并在26H中设置放音时间,放音
时间到,则关闭驱动及清除F1标志位,完成1次报时驱动.
第3章软件设计
3.1系统资源分配
(1)为方便阅读程序,先对系统地资源分配加以说明.
1)定时器.定时器0用作时钟定时,按方式1工作,每隔100MS溢出中
断1次.
2)片内RAM及标志位地分配与定义见表1
表1:
地址
功能
名称
初始化值
2FH~2BH
显示缓冲区,星期、小时、分(高位
DISP0~DISP4
00H
在前)
24H~20H
计时缓冲区,星期、时、分、秒、
WEEK,HOUR,MIN,SEC,
00H
100ms
MSEC
40H~53H
用户报时时间值寄存区(时、分)
AHOUR、AMIN
00H
61H~7FH
堆栈区
00H
F0H
报时开始标志位
F0H
0
F1H
放音开始标志位
F1H
0
F3H
分钟值变更标志位
F3H
0
F4H
键处理标志位
F4H
0
25H
扩音机预热时间
25H
26H
播放报时音乐时间
26H
(2)软件流程.根据上述工作流程,软件设计可分为以下几个功能模块:
1)主程序:
初始化与键盘监控.
开始
I/O端口初始化
调用键扫描子程序
软件陷阱处理
如有键则进行键处理
设置栈指针
RAM区清零
判断是否有F3标志
定时器、中断初
始
报时处理子程序
调用显示子程序
返回主程序入口
2)计时:
为定时器0中断服务子程序,完成刷新计时缓冲区地功能.
3)时间设置与报时设置:
由键盘输入设置当前时间与定时启闭时间.
4)显示:
完成5位LED动态显示.
5)键盘扫描:
判断是否有键按下,并求取键号.
00H
00H
键扫描处理子程序
6)定时比较:
判断报时时间到否,如时间到,则启动报时处理程序.
7)其他辅助功能程序,如键盘设置、拆字、合字、冬季或夏季时间表选择及假日
停止报时等.
第4章程序模块设计
程序地模块设计非常重要,有很多功能地程序,列表如表2
表2:
主程序
程序地主体,调用其他子程序
定时中断服务程序
显示模块
进行秒,分,时地累计计数,到时间
到时,驱动蜂鸣器及继电器
P0口作为段码,P2口作为位码输出,
键扫描子程序
键值处理子程序
控制数码管.
检测P1口,判断是否有键按下,如有
键按下,进进行延时去抖动并读取键
值,存入A中
判断A中地值,根据A来选择调用哪
个子程序
4.1主程序模块(MAIN)在主程序模块中,先对各端口进行初始化,对内部RAM区清零,设置堆栈和定时器初值,关闭显示器,启动定时及其中断.然后检测时钟
分值变更标志位F3是否建立,如果已建立
下,若有则进行按键处理,无则返回循环点.
则进行报时处理
否则再检测有无按键按
ORG0000H
START:
AJMPMAIN
。
跳转入主程序
0030H
ORG
000BH
AJMPCTCINT
。
跳转到定时器
T0地中断服务程序入口
ORG0030H
MAIN
:
NOP
。
主程序入口地址
:
0030H
NOP
NOP
MOVA
,#OFFH
。
关闭各输出口
MOVP0,A
。
P0口为字形口
低电平有效
MOVP1,A
。
P1口作为
6个键输入口
MOVP2,A
。
P2口是字位口
低电平有效
MOVP3,A
。
P3口报时方式控制和驱动输出口
SETBT0
。
关闭报时音乐输出
(T0=1)
SETBT1
。
关闭报时扩音机电源
(T1=1)
CJNESP,#07H,NOT1
MOVR0,#7FH
MOVR1,#7DH
。
否则
RAM
清零初始化
CLRA
LOOP0:
MOV@R0,A
DECR0
DJNZR1,LOOP0
。
从内部
RAM
区03H到
7FH均清零
NOT1:
MOVSP,#60H
。
设置栈指针
MOVIP,#02H
。
设置定时器
T0
为最高中断优先级
MOVIE,#82H。
定时器T0开中断
MOVTMOD,#01H。
设置定时器T0为方式1
MOVTL0,#0B0H。
设置定时器T0初值
MOVTH0,#3CH
SETBTR0。
启动定时
NOP
NEXTT:
NOP
MOVSP,#60H。
重置堆栈底位置
LCALLDISP;调用显示子程序
NOP。
检测标志是否出现,F3为定时分钟值变化地标志位
JNB0F3H,NEXT1。
F3=0,则转键扫描,判断有无键按下
NOP。
F3=1,调用报时处理子程序
SETBINT0
JNBINT0,USERS。
如INTO=0,则调用用户自设定报时点
LCALLTIMERA。
INTO=1,调用TIMERA,按作息时间表报时
USERS:
NOP
LCALLTIMERB。
TIMERB为用户自设定报时点报时
NOP
NEXT1:
LCALLCHECKEY。
调用按键扫描子程序,判断有无键按下
JZNEXTT。
无键按下,返回重新扫描
NOP
LCALLKEYACC。
有键按下,调用按键处理子程序
NOP
SJMPNEXTT
NOP
NOP
4.2定时中断服务程序模块该多好模块完成下述工作:
①对100毫秒(20H)、秒
(21H)、分(22H)、小时(23H)进行累计计数,如果分值有计数变化并且无键按下,则将小时和分钟送显示缓冲区更新显示目录;②如有报是处理标志,则对报
时扩音机电源和报时音乐输出分别进行定时控制.CTCINT:
NOP。
T0地中断服务子程序
MOVTL0,#0B4H。
设置定时器T0初值MOVTH0,#3CH
PUSHACC。
保护主程序现场数据
PUSHPSW
NOP
SETBRS0。
选择新地工作寄存器区(1区)
CLRRS1。
SELECT1AREA
INC20H。
0.1S单元加1
MOVA,20H
JBOF4H,LCA。
(F4H)为键处理标志位,在键处理过程中不显示秒点
CJNEA,#05H,CTNUC
CTNUC:
JCLC2。
小于0.4S则秒点闪亮,大于0.4S则秒点熄灭
CLR6CH
SJMPLCA
LC2:
SETB6CH
LCA:
CJNEA,#0EH,RTNH。
未计满1S则退出中断
MOV20H,#00H。
毫秒计数单元清零
JNB0F0H,NEXTE。
F0H=1为报时扩音机预热延时标志位
MOVA,25H。
(25H)中存放报时扩音机预热延时时间值
JNZNEXTF
CLROFOH
CLROFOH
SETBOF1H
MOV26H,#1OH。
(26H)中存放报时放音地延时时间值
CLRTO
NEXTE:
JNBOF1H,NEXTF。
(F1H=1)为报时放音地延时标志位
MOVA,26H
DECA
MOV26H,A
JNZNEXTF。
判断报时放音延时是否结束
CLROF1H。
延时时间到,清除报时放音标志位,关闭报时电源
SETBT1
SETBT2
SETBTO
SETBTO
NOP
NEXTF:
NOP
MOVA,21H。
对秒计数单元(21H)进行累计计数
ADDA,#01H
DAA
MOV21H,A
CJNEA,#06H,RTNH。
判断分计数是否计满
CLRA
MOV21H,A
SETB0F3H。
(F3H)为分值有变更标志位
NEXT:
MOVA,22H。
对分(22H)进行累计计数
ADDA,#01H;
DAA
MOV22H,A
CJNEA,#60H,RTDN
MOV
22H,#00H
MOVA,23H
ADDA,#01H
。
时单元加
1
DAA
MOV23H,A
。
对时(23H)进行累计计数
CJNEA,#24H,TRND
MOV23H,#00H
MOVA,24H
ADDA,#01H。
星期计数单元(24H)加1
DAA
MOV24H,A
CJNEA,#07H,RTDN
MOV24H,#00H
RTDN:
NOP
JNBOF3H,RTDH。
确认(F3=0)分值无变更,则返回
JBOF4H,RTNH。
确认(F4=0)正在键处理,则返回
LDDA:
NOP。
将当前地时间值显示缓冲区
NOP
MOVR0,#24H。
(24H、23H、22H、)送(2FH~2BH)
MOVR1,#2FH
MOVR2,#02H
MOVA,@R0
ANLA,#0FH
MOV@R1,A
DECR0
DECR1
LD1:
MOVA,@R0。
将1字节压缩地BCD码拆成两个字节,数数值存放在
低字节内
ANLA,#OF0H
SWAPA
MOV@R1,A
DECR1
MOVA,@R0
ANLA,#0FH
MOV@R1,A
DECR0
DECR1
DJNZR2,LD1
NOP
RTNH:
NOP。
中断返回,并恢复现场数据
NOP
POPPSW
POPACC
RETI
4.3扫描显示模块该模块为5位LED扫描显示模块.P0口为字形码输出口,低电
平有效;
P2口为字位码输出口,高电平有
.显示缓冲区为
2FH~2BH
等5个字节,
2FH
存放显示地星期数,
2EH、2DH
存放显示地小时数,
2CH、2BH
存放显示地
分钟数,其数值范围在
00H~0FH
内时不显示该位地小数点,在
10H~1FH
时则显
示小数点
.
DISP:
NOP
。
DISP为显示子程序
NOP
MOVA,#00H
。
关闭显示
MOVP2,A
。
P2口为字位码输出口
MOVA,#0FFH
MOVP0,A
NOP
NOP
。
P0口为字形码输出口
MOVR0,#2FH
NOP
。
显示子程序
MOVR1,#10H
。
位控制字
LOOP1:
MOVA,R1
NOP
MOVP2,A
。
输出位控制字
MOVP2,A
MOVDPTR,#TABLE
MOVA,@R0。
取显示缓冲区中地显示字符数
MOVCA,@A+DPTR
CPLA
。
查表转换成字型代码
MOV
P0,A
。
输出字形码
MOVR2,#00H
LOOP2:
DJNZR2,LOOP2
。
延时
2MS
DECR0。
显示下一个字符
MOVA,R1
CLRC
RRCA
MOVR1,A
JNZLOOP1。
判断5位扫描显示一遍是否完成
RET
NOP
NOP
TABLE:
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
DB0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,
87H。
带小数点时地字符显示字形表
DB0FFH,0EFH、0F7H,0FCH,0B9H,0F9H,0F1H
NOP
4.4键扫描子程序检测P1口,判断是否有键按下,如有键按下,进进行延时去抖动并读取键值,存入A中.
CHECKEYA
:
NOP
。
键扫描子程序
NOP
NOP
MOV
P1,#0FFH
MOVA,P1
CPLA
。
判断是否有键按下
ANLA,#3FH
JZRETX
LCALLDISP
LCALLDISP
。
延时去抖动
MOVA,P1
CPLA
ANLA,#3FH
JZRETX
MOVR6,A
。
当前值存放在
R6中
K1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 作息 时间 控制器 课程设计