单片机作息时间控制器课程设计.docx

上传人:b****6 文档编号:11941222 上传时间:2023-06-03 格式:DOCX 页数:52 大小:1.74MB
下载 相关 举报
单片机作息时间控制器课程设计.docx_第1页
第1页 / 共52页
单片机作息时间控制器课程设计.docx_第2页
第2页 / 共52页
单片机作息时间控制器课程设计.docx_第3页
第3页 / 共52页
单片机作息时间控制器课程设计.docx_第4页
第4页 / 共52页
单片机作息时间控制器课程设计.docx_第5页
第5页 / 共52页
单片机作息时间控制器课程设计.docx_第6页
第6页 / 共52页
单片机作息时间控制器课程设计.docx_第7页
第7页 / 共52页
单片机作息时间控制器课程设计.docx_第8页
第8页 / 共52页
单片机作息时间控制器课程设计.docx_第9页
第9页 / 共52页
单片机作息时间控制器课程设计.docx_第10页
第10页 / 共52页
单片机作息时间控制器课程设计.docx_第11页
第11页 / 共52页
单片机作息时间控制器课程设计.docx_第12页
第12页 / 共52页
单片机作息时间控制器课程设计.docx_第13页
第13页 / 共52页
单片机作息时间控制器课程设计.docx_第14页
第14页 / 共52页
单片机作息时间控制器课程设计.docx_第15页
第15页 / 共52页
单片机作息时间控制器课程设计.docx_第16页
第16页 / 共52页
单片机作息时间控制器课程设计.docx_第17页
第17页 / 共52页
单片机作息时间控制器课程设计.docx_第18页
第18页 / 共52页
单片机作息时间控制器课程设计.docx_第19页
第19页 / 共52页
单片机作息时间控制器课程设计.docx_第20页
第20页 / 共52页
亲,该文档总共52页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机作息时间控制器课程设计.docx

《单片机作息时间控制器课程设计.docx》由会员分享,可在线阅读,更多相关《单片机作息时间控制器课程设计.docx(52页珍藏版)》请在冰点文库上搜索。

单片机作息时间控制器课程设计.docx

单片机作息时间控制器课程设计

单片机作息时间控制器课程设计

湖南工程学院

课程设计

课程名称微机原理与应用

课题名称单片机作息时间控制器

湖南工程学院

课程设计任务书

 

课程名称微机原理与应用

课题单片机作息时间控制器

 

专业班级自动化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)用户报时时间设置/显示。

用户可以自行设定10组报时时间点,这时LED显示的最高位定义为组编号其他位定义不变;按下“报时设定键”,系统根据“组编号”将用记设定的报时时间点(小时和分)存入内部RAM相应存储单元中,用户如需修改和检查这些报时时间。

如需修改,可用“移位键”、“加1键”,“减1键”来重新设定,然后用“报时设定键”来转入并结束显示。

(4)报时输出的驱动过程。

在报时处理程序上中,一旦当前时间与作息时间表中的某一时间点(时、分值)相同时,则建立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

计时缓冲区,星期、时、分、秒、100ms

WEEK,HOUR,MIN,SEC,MSEC

00H

40H~53H

用户报时时间值寄存区(时、分)

AHOUR、AMIN

00H

61H~7FH

堆栈区

00H

F0H

报时开始标志位

F0H

0

F1H

放音开始标志位

F1H

0

F3H

分钟值变更标志位

F3H

0

F4H

键处理标志位

F4H

0

25H

扩音机预热时间

25H

00H

26H

播放报时音乐时间

26H

00H

(2)软件流程。

根据上述工作流程,软件设计可分为以下几个功能模块:

1)主程序:

初始化与键盘监控。

 

2)计时:

为定时器0中断服务子程序,完成刷新计时缓冲区的功能。

3)时间设置与报时设置:

由键盘输入设置当前时间与定时启闭时间。

4)显示:

完成5位LED动态显示。

5)键盘扫描:

判断是否有键按下,并求取键号。

6)定时比较:

判断报时时间到否,如时间到,则启动报时处理程序。

7)其他辅助功能程序,如键盘设置、拆字、合字、冬季或夏季时间表选择及假日停止报时等。

 

第4章程序模块设计

程序的模块设计非常重要,有很多功能的程序,列表如表2

表2:

主程序

程序的主体,调用其他子程序

定时中断服务程序

进行秒,分,时的累计计数,到时间到时,驱动蜂鸣器及继电器

显示模块

P0口作为段码,P2口作为位码输出,控制数码管。

键扫描子程序

检测P1口,判断是否有键按下,如有键按下,进进行延时去抖动并读取键值,存入A中

键值处理子程序

判断A中的值,根据A来选择调用哪个子程序

4.1主程序模块(MAIN)在主程序模块中,先对各端口进行初始化,对内部RAM区清零,设置堆栈和定时器初值,关闭显示器,启动定时及其中断。

然后检测时钟分值变更标志位F3是否建立,如果已建立,则进行报时处理,否则再检测有无按键按下,若有则进行按键处理,无则返回循环点。

ORG0000H

START:

AJMPMAIN;跳转入主程序0030H

ORG000BH

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

MOV22H,#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;P0口为字形码输出口

NOP

NOP

MOVR0,#2FH;显示子程序

NOP

MOVR1,#10H;位控制字

LOOP1:

MOVA,R1

NOP

MOVP2,A;输出位控制字

MOVP2,A

MOVDPTR,#TABLE

MOVA,@R0;取显示缓冲区中的显示字符数

MOVCA,@A+DPTR;查表转换成字型代码

CPLA

MOVP0,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

MOVP1,#0FFH

MOVA,P1;判断是否有键按下

CPLA

ANLA,#3FH

JZRETX

LCALLDISP;延时去抖动

LCALLDISP

MOVA,P1

CPLA

ANLA,#3FH

JZRETX

MOVR6,A;当前值存放在R6中

K1:

LCALLDISP;等待释放按键

MOVA,P1

CPLA

ANLA,#3FH

JNZK1

MOVA,R6

NOP

NOP

RETX:

RET

NOP

i.用户自设定报时时间点置入键程序模块。

将显示缓冲区2FH~2BH中的内容压缩后存入40H为首地址的片内RAM中,其中2FH为定时时间点的编号,2EH、2DH为小时值,2CH、2BH为分钟数值。

USESET:

NOP

MOVR0,#2FH

MOVR1,#40H;本次用户设定报时点首址为40H

MOVA,@R0

ANLA,#OFH

RLA

ADDA,R1;报时点编号乘2加首址,为本次存放的实际地址

MOVR1,A

DECR0

NOP;定时设定时间置入子程序

NOP

MOVR2,#02H

LDD:

MOVA,@R0;

ANLA,#0FH

SWAPA

MOVR7,A

DECR0

MOVA,@R0

ANLA,#0FH

ADDA,R7

MOV@R1,A

DECR0

INCR1

DJNZR2,LDD

NOP

CLR0F4H

NOP

RET

NOP

ii.减1键处理。

在小数点点亮的对应位上进行十进制减1处理。

SUBONE:

NOP

NOP

JNB7CH,SCH74

MOVR0,#2FH

SJMPSUB1

SCH74:

NOP

JNB74H,SCH6C

MOVR0,#2EH

SJMPSUB1

SCH6C:

NOP

JNB6CH,SCH64

MOVR0,#2DH

SJMPSUB1

SCH5C:

NOP

JNB64H,SCH5C

MOVRO,#2CH

SJMPSUB1

SCH5C:

NOP

JNB5CH,ERR1

MOVR0,#2BH

SJMPSUB1

NOP

NOP

ERR1:

RET

NOP

SUB1:

NOP

MOVA,@R0

ADDA,#99H

DAA

XCHDA,@R0

RET

iii.用户自设定报时时间点显示键处理模块。

由(2FH)指定的用户自设定报时点编号,计算其在RAM中存放的地址,再根据此地址找出该报时时间点的2个字节码,将其4个半字节分别存入2EH~2BH单元低半字中。

DSPUSE:

NOP

MOVR0,#2FH;自设定报时点编号由(2FH)指定

MOVR1,#40H;用户设定报时点首址为40H

MOVA,@R0

ANLA,#0FH

RLA

ADDA,R1;报时点编号乘2加首址,为其存放的实际地址

MOVR1,A

DECR0

NOP;取定时设定时间并置入显示缓冲区

NOP

MOVR2,#02H

LDR:

MOVA,@R1;将小时和分钟值解压缩后装入相

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2