单片机课程设计作息时间控制系统.docx
- 文档编号:9892326
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:25
- 大小:406.19KB
单片机课程设计作息时间控制系统.docx
《单片机课程设计作息时间控制系统.docx》由会员分享,可在线阅读,更多相关《单片机课程设计作息时间控制系统.docx(25页珍藏版)》请在冰豆网上搜索。
单片机课程设计作息时间控制系统
信息科学与技术学院
作息时间控制系统
课程设计报告
题目名称:
作息时间控制系统
学生姓名:
xx
学号:
20090823xx
专业年级:
xx级电信xx班
指导教师:
xx
时间:
2012/xx/xx
目录
1.设计目的-1-
2.设计要求-1-
3.方案设计-1-
4.硬件设计-1-
4.1单片机的选型-1-
4.2总体电路的设计-1-
4.3系统各个部分的电路设计-2-
4.3.1系统复位电路的设计-2-
4.3.2系统时钟电路设计-3-
4.3.3闹钟指示电路设计-3-
4.3.4显示电路的设计-4-
4.3.5按键设置-4-
5.软件设计-5-
5.1软件概述-4-
5.2主模块的设计-4-
5.3显示模块设计-5-
5.4时间设定模块设计-5-
5.5闹铃功能实现-6-
6.系统调试-7-
6.1仿真结果-8-
6.2性能及误差分析-9-
7.总结-10-
8.参考文献-10-
附录1-10-
附录2-18-
作息时间系统设计
一、设计目的
熟悉单片机语言,可以熟练的应用其完成基本设计,为以后的应用打下坚实的基础。
搭建单片机最小应用系统,进一步加深对单片机应用的理解,提高处理实际问题的能力和独立分析思考的能力。
二、设计要求
1、显示时间(时、分、秒);
2、规定的作息时间给出闹钟信号;
3、手动输入作息时间表
三、方案设计
设计方案中应该包括了秒信号指示(由发光二极管来表示)、时间“时”和“分”显示电路(由四位数码管显示)、按键调整电路、供电电源以及闹铃指示电路等几部分的设计。
采用四个开关来控制作息时间控制器的工作状态,分别为:
K1、设置时间和闹钟的小时;K2、设置时间以及设置闹钟的分;K3、设置完成退出;K4、显示定时时间及进入闹钟设置。
当作息时间控制器达到课程设计的要求,在到达设定的定时时间时蜂鸣器便被控制立即发出声音,持续一分钟,而后恢复时钟状态。
显示采用的四位数码管电路,定时提示采用蜂鸣器发声指示。
本设计方案也可以经过改进作为实现定时控制系统的控制定时电路。
四、硬件设计
4.1单片机的选型
AT89s52是低功耗、高性能的CMOS型8位单片机。
片内带有8KB的Flash存储器,且允许在系统内改写或用编程器编程。
另外,AT89s52的指令系统和引脚与MCS-51完全兼容,片内有256B的RAM、32条I/O口线、3个16位定时计数器、8个中断源、一个全双工串行口等。
基于以上优点,本设计采用AT89S52单片机。
4.2总体电路的设计
电子闹钟的主体电路应包括秒信号发生器、时间显示电路、按键电路、供电电源以及闹铃指示电路等几部分。
按键功能说明:
K1,设置时间和闹钟的小时;K2,设置时间以及设置闹钟的分;K3,设置完成推出;K4;显示定时时间及进入闹钟设置。
系统框图1如下所示:
图1
4.3系统各个部分的电路设计
1、系统复位电路的设计
单片机系统一般应有手动或上电自动复位电路。
复位电路的实现通常有两种方式:
1)RC复位电路;2)专用µP监控电路。
前者实现简单,成本低,但复位可靠性相对较低;后者成本较高,但复位可靠性高,尤其是高可靠重复复位。
对于复位要求高、并对电源电压进行监视的场合,大多采用这种方式。
复位电路主要用来在单片机的程序进入死循环后,能使单片机重新从头执行程序而不会无休止的执行程序。
本设计采用了上电按钮电平复位电路,如图2
图2
2、系统时钟电路设计
对于时间要求不是很高的系统,只要按图进行设计就能使系统可靠起振并稳定运行。
但由于实际工作过程中的C1、C2电容起着系统时钟频率微调和稳定的作用,因此,在实际应用中一定要注意正确选择参数(30±10PF),并保证对称性(尽可能匹配),这两个电容元件对闹钟的走时误差有很大关系,并且选用正规的瓷片或云母电容,如果可能的话,温度系数要尽可能低。
另外,瓷片电容的实际焊接距离不应该离单片机太远否则误差较大。
具体的时钟电路如图三所示:
图3
3、闹钟指示电路设计
闹铃指示可以有声或光两种形式。
本系统采用声音指示。
关键元件是蜂鸣器。
蜂鸣器有无源和有源两种,前者需要输入声音频率信号才能正常发声,后者则只需外加适当直流电源电压即可,元件内部已封装了音频振荡电路,在得电状态下即起振发声。
市场上的有源蜂鸣器分为3V、5V、6V等系列,以适应不同的应用需要。
闹钟电路是用比较器来比较计时系统和定时系统的输出状态,如果计时系统和定时系统的输出状态相同,则发出一个脉冲信号,再和一个高频信号混合,送到放大电路驱动扬声器发声,从而实现定时闹响的功能。
其电路设计参见系统原理图。
4、显示电路的设计
本设计采用了4位数码管显示电路。
在4位LED显示时,为了简化电路,降低成本,采用动态显示的方式,4个LED显示器共用一个8位的I/O,4位LED数码管的位选线分别由相应的P2.4~P2.7控制,而将其相应的段选线并联在一起,由一个8位的I/O口控制,即P0口。
由于采用了四位数码管,所以数码管显示“时”、“分”;秒的显示选用了一个发光二极管,两灭周期为两秒,即点亮和熄灭时间均为一秒。
到达定时时间时,由计时系统的输出状态产生一脉冲信号,然后去触发蜂鸣器实现闹铃。
校时电路是用来对“时”、“分”显示数字进行校对调整的。
具体的电路设计如图4示:
图4
5、按键设置
K1,设置时间和闹钟的小时;K2,设置时间以及设置闹钟的分;K3,设置完成退出;K4;显示定时时间及进入闹钟设置。
五、软件设计
5.1软件概述
软件设计的重点在于秒脉冲信号的产生、显示的实现、以及按键的处理等方面。
基于软件的秒脉冲信号通常有延时法和定时中断法。
延时法一般采用查询方式,在延时子程序前后必然需要查询和处理的程序,导致误差的产生,因此其秒脉冲的精度不高;中断法的原理是,利用单片机内部的定时器溢出中断来实现。
本设计使定时器每50ms中断1次,则20次的周期为1s。
这种实现法的特点是精度高,秒脉冲的发生和其他处理可以并行进行。
本系统中所使用的晶振频率为12MHZ。
5.2主模块的设计
主模块是系统软件的主框架。
结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建。
它的合理与否关系到程序最终的功能的多少和性能的好坏。
本系统的主模块的程序框图如下
图5
5.3显示模块设计
显示是由显示代码取得相应的段码,显示段码数据的并行发送,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
5.4时间设定模块设计
时间设定模块的设计要点是按键的去抖处理与多种状态公用一个键的处理问题。
即只涉及4个键完成了4位时间参数的设定。
软件法去抖动的实质是用延时,即检测到某一键状态变化后延时一段时间,再检测该按键的状态是否还保持着,如是则作为按键处理,否则,视为抖动,不予理睬。
去抖中的延时时间一般参考资料多描述为10ms左右,实际应用中,应大于20ms,否则,会导致按一次作多次处理,影响程序正常执行。
5.5闹铃功能的实现
闹铃功能的实现涉及到两个方面:
闹铃时间设定和是否闹铃判别与相应处理。
闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题。
闹铃判别与闹铃处理的关键在于判别何时要进行闹铃。
在每次循环扫描的过程中,判断现在的时间和定时的时间是否一致。
一致的话,闹铃电路根据计时系统的输出状态产生一脉冲信号,然后加上一个高频或低频信号送到放大电路驱动蜂鸣器发声实现报时。
时间调节电路根据不同状态下的具体按键意义将相对应的计数器加以改变,并通过数码管显示出来。
具体如图6示:
图6
编程上,首先进行了初始化定义了程序的入口地址以及中断的入口地址,在主程序的开始定义了一组固定单元用来存储计数的秒,分,时以及定时时间的序号等。
显示程序段中主要进行了闪烁的处理,采用定时器中断置标志位,再与位选相互结合的方法来控制调时或定时中的闪烁。
时,分,秒显示则是用了软件译码(查表)的方式,再用了一段固定的程序段进行进制转化。
初始化之后,用中断方式对其计数,计数的同时采用了定时器比较的方法,比较当前计数时间与定时时间是否相等,若相等则将闹铃标志位置数,使得蜂鸣器工作
六、系统调试
仿真软件为Proteus6professional软件。
本设计在Proteus软件上进行了仿真,大体上基本实现了设计所要求的具体内容。
6.1仿真结果
图7
图8
6.2性能及误差分析
该作息时间控制器有四个按键:
K1,K2,K3和K4。
初始加电时数码管显示时钟计数初值并运行。
按K1键进行校时,可以分别按K2和K3键进行对时及分进行单独校时,使其校正到标准时间;并按K4键退出。
时钟正常显示运行状态时,按K2键显示闪烁并进行定时时间设置,按K1键和K3进行分和时的定时时间设定;并按K4键退出。
该电路显示的误差主要由晶振自身的误差所造成,晶振的误差约为0.0001~0.000001。
在软件的编程过程中所产生的误差比较小,另外在中断的过程中,只会在第一次计时时产生时间的偏移,而它所产生累计误差很小,可以忽略。
综合以上分析,本次设计时钟误差较小,能得到比较理想结果,性能稳定。
七、总结
1、在设计系统过程中,学会用Proteus7Professional画原理图和仿真。
2、自己动手接线,提高动手能力。
3、调试程序过程中,针对遇到的问题,寻找解决方法,同时学会利用汇编语言编制单片机程序。
4、感谢在整个设计单片机过程中给我很大帮助的老师,同学,师哥等。
5、但最后发现并不能完全实现时间表设置,无法准确的起到作息提醒作用。
该部分存在很大问题,发现了自己的不足。
但能力有限。
实在是没有办法。
望体谅。
八、参考文献
[1]徐时亮.单片机软件设计技术。
科学文献出版社重庆分社
[2]李华.MCS-51系列单片机实验借口技术。
北京航空航天大学出版社
[3]沈红卫.基于单片机的智能系统设计与实现.电子工业出版社
[4]胡健.单片机及接口技术实践教程。
机械工业出版社
[5]祁伟.单片微型计算机原理与接口技术教程北京航天航空大学出版社
附1程序源代码
K1EQUP1.0;在程序开始前定义变量
K2EQUP1.1
K3EQUP1.2
K4EQUP1.3
ORG0000H
LJMPMAIN
ORG000BH
LJMPTIME
ORG0100H
;主程序:
MAIN:
MOVSP,#50H
MOV20H,#00H;时间PINSECOND
MOV21H,#00H;PINMINUTE
MOV22H,#00H;PINHOUR
MOV23H,#05H;闹铃PINMINUTE
MOV24H,#06H;PINHOUR
MOV25H,#00H;定义一个标志位
MOV30H,#00H;时间BCDSECOND
MOV31H,#00H;
MOV32H,#00H;BCDMINUTE
MOV33H,#00H;
MOV34H,#00H;BCDHOUR
MOV35H,#00H;
MOV36H,#05H;闹铃BCDMINUTE
MOV37H,#00H;
MOV38H,#06H;BCDHOUR
MOV39H,#00H
CPLP3.0;
MOVTMOD,#01H;16位计数器T0,方式
MOVTH0,#03CH;赋初值
MOVTL0,#0B0H
MOVIE,#87H;开中断T0,EA=1
SETBTR0;T0启动计数
MOVR2,#14H;计数器
MOVP2,#0FFH
LOOP:
LCALLTIMEPRO;调用现在时间与闹铃时间比较程序
LCALLDISPLAY1;调用现在时间显示子程序
JBK1,M1;判断按键是否按下
LCALLXIAODOU1;调用消抖程序
MOVC,25H.0
JCA1
A1:
CLR25H.0
LCALLSETTIME;调用设置现在时间子程序
LJMPLOOP
M1:
JBK2,M2;判断P1.1键是否按下
LCALLXIAODOU2
MOVC,25H.0
JCA2
A2:
CLR25H.0
LCALLSETATIME;调用设置闹钟的程序
LJMPLOOP
M2:
JBK4,M3
A3:
LCALLXIAODOU3
MOVC,25H.0
JCA4
A4:
CLR25H.0
M3:
LJMPLOOP
SETTIME:
L0:
LCALLDISPLAY1
JBK2,L1
LCALLXIAODOU4
MOVC,25H.0
JCA5
A5:
CLR25H.0
INC22H
MOVA,22H
CJNEA,#18H,GO12
MOV22H,#00H
MOV34H,#00H
MOV35H,#00H
LJMPL0
L1:
JBK3,L2
LCALLXIAODOU5
MOVC,25H.0
JCA6
A6:
CLR25H.0
INC21H
MOVA,21H
CJNEA,#3CH,GO11
MOV21H,#00H
MOV32H,#00H
MOV33H,#00H
LJMPL0
GO11:
MOVB,#0AH
DIVAB
MOV32H,B
MOV33H,A
LJMPL0
GO12:
MOVB,#0AH
DIVAB
MOV34H,B
MOV35H,A
LJMPL0
L2:
JBK4,L0
LCALLXIAODOU3
MOVC,25H.0
JCAX
AX:
CLR25H.0
RET
SETATIME:
LCALLDISPLAY2;调用闹钟设置,闹铃响时的显示程序
N0:
LCALLDISPLAY2
JBK3,N1
LCALLXIAODOU6
MOVC,25H.0
JCA7
A7:
CLR25H.0
INC24H
MOVA,24H
CJNEA,#24,GO22
MOV24H,#00H
MOV38H,#00H
MOV39H,#00H
LJMPN0
N1:
JBK1,N2
LCALLXIAODOU7
MOVC,25H.0
JCA8
A8:
CLR25H.0
INC23H
MOVA,23H
CJNEA,#60,GO21
MOV23H,#00H
MOV36H,#00H
MOV37H,#00H
LJMPN0
GO21:
MOVB,#0AH
DIVAB
MOV36H,B
MOV37H,A
LJMPN0
GO22:
MOVB,#0AH
DIVAB
MOV38H,B
MOV39H,A
LJMPN0
N2:
JBK4,N0
LCALLXIAODOU3
MOVC,25H.0
JCA9
A9:
CLR25H.0
RET
TIMEPRO:
MOVA,21H
MOVB,23H
CJNEA,B,BK
MOVA,22H
MOVB,24H
CJNEA,B,BK
SETB25H.0
MOVC,25H.0
JCXX
XX:
LCALLTIMEOUT
BK:
RET
TIMEOUT:
X1:
LCALLBZ
LCALLDISPLAY2
CLR25H.0
JBK4,X1
RET
BZ:
SETBP3.0
MOVR7,#250
T2:
MOVR6,#124
T3:
DJNZR6,T3
DJNZR7,T2
CLRP3.0
JBK4,XY
LCALLXIAODOU3
MOVC,25H.0
JCXY1
XY:
RET
XY1:
LJMPLOOP
XIAODOU1:
LCALLDISPLAY1
JBK1,XIAODOU1
MOVC,K1
JCXIAODOU1
LCALLDELAY
MOVC,K1
JCXIAODOU1
STOP1:
MOVC,K1
JNCSTOP1
LCALLDELAY
MOVC,K1
JNCSTOP1
SETB25H.0
RET
XIAODOU2:
LCALLDISPLAY2
JBK2,XIAODOU2
MOVC,K2
JCXIAODOU2
LCALLDELAY
MOVC,K2
JCXIAODOU2
STOP2:
MOVC,K2
JNCSTOP2
LCALLDELAY
MOVC,K2
JNCSTOP2
SETB25H.0
RET
XIAODOU3:
LCALLDISPLAY1
JBK4,XIAODOU3
MOVC,K4
JCXIAODOU3
LCALLDELAY
MOVC,K4
JCXIAODOU3
STOP3:
MOVC,K4
JNCSTOP3
LCALLDELAY
MOVC,K4
JNCSTOP3
SETB25H.0
RET
XIAODOU4:
LCALLDISPLAY1
JBK2,XIAODOU4
MOVC,K2
JCXIAODOU4
LCALLDELAY
MOVC,K2
JCXIAODOU4
STOP4:
MOVC,K2
JNCSTOP4
LCALLDELAY
MOVC,K2
JNCSTOP4
SETB25H.0
RET
XIAODOU5:
LCALLDISPLAY1
JBK3,XIAODOU5
MOVC,K3
JCXIAODOU5
LCALLDELAY
MOVC,K3
JCXIAODOU5
STOP5:
MOVC,K3
JNCSTOP5
LCALLDELAY
MOVC,K3
JNCSTOP5
SETB25H.0
RET
XIAODOU6:
LCALLDISPLAY2
JBK3,XIAODOU6
MOVC,K3
JCXIAODOU6
LCALLDELAY
MOVC,K3
JCXIAODOU6
STOP6:
MOVC,K3
JNCSTOP6
LCALLDELAY
MOVC,K3
JNCSTOP6
SETB25H.0
RET
XIAODOU7:
LCALLDISPLAY2
JBK1,XIAODOU7
MOVC,K1
JCXIAODOU7
LCALLDELAY
MOVC,K1
JCXIAODOU7
STOP7:
MOVC,K1
JNCSTOP7
LCALLDELAY
MOVC,K1
JNCSTOP7
SETB25H.0
RET
DELAY:
MOVR4,#14H
DL00:
MOVR5,#0FFH
DL11:
DJNZR5,DL11
DJNZR4,DL00
RET
TIME:
PUSHACC
PUSHPSW
MOVTH0,#03CH
MOVTL0,#0B0H
DJNZR2,RET0
MOVR2,#14H
MOVA,20H
CPLP3.5
CLRC
INCA
CJNEA,#3CH,GO1
MOV20H,#0
MOV30H,#0
MOV31H,#0
MOVA,21H
INCA
CJNEA,#3CH,GO2
MOV21H,#0H
MOV32H,#0
MOV33H,#0
MOVA,22H
INCA
CJNEA,#18H,GO3
MOV22H,#00H
MOV34H,#0
MOV35H,#0
AJMPRET0
GO1:
MOV20H,A
MOVB,#0AH
DIVAB
MOV31H,A
MOV30H,B
AJMPRET0
GO2:
MOV21H,A
MOVB,#0AH
DIVAB
MOV33H,A
MOV32H,B
AJMPRET0
GO3:
MOV22H,A
MOVB,#0AH
DIVAB
MOV35H,A
MOV34H,B
AJMPRET0
RET0:
POPPSW
POPACC
RETI
DISPLAY1:
MOVR0,#30H
MOVR3,#0FEH
MOVA,R3
PLAY1:
MOVP2,A
MOVA,@R0
MOVDPTR,#DSEG1
MOVCA,@A+DPTR
MOVP0,A
LCALLDL1
MOVP2,#0FFH
MOVA,R3
RLA
JNBACC.6,LD1
INCR0
MOVR3,A
LJMPPLAY1
LD1:
RET
DISPLAY2:
PUSHACC
PUSHPSW
MOVR0,#36H
MOVR3,#0FBH
MOVA,R3
PLAY2:
MOVP2,A
MOVA,@R0
MOVDPTR,#DSEG1
MOVCA,@A+DPTR
MOVP0,A
LCALLDL1
MOVP2,#0FFH
MOVA,R3
RLA
JNBACC.6,LD2
INCR0
MOVR3,A
LJMPPLAY2
LD2:
POPPSW
POPACC
RET
DL1:
MOVR7,#05H
DL:
MOVR6,#0FFH
DL6:
DJNZR6,$
DJNZR7,DL
RET
DSEG1:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
END
附2原理图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 作息 时间 控制系统