基于单片机控制的智能定时闹钟方案设计书含完整程序仿真图.docx
《基于单片机控制的智能定时闹钟方案设计书含完整程序仿真图.docx》由会员分享,可在线阅读,更多相关《基于单片机控制的智能定时闹钟方案设计书含完整程序仿真图.docx(42页珍藏版)》请在冰豆网上搜索。
基于单片机控制的智能定时闹钟方案设计书含完整程序仿真图
本设计是定时闹钟的设计,由单片机 AT89C51 芯片和 LED 数码管为核心,辅
以必要的电路,构成的一个单片机电子定时闹钟。
电子钟设计可采用数字电路
实现,也可以采用单片机来完成。
数字电子钟是用数字集成电路构成的,用数码
管显示“时”,“分”,“秒”的现代计时装置。
若用数字电路完成,所设计的
电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各
功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。
若用单片机来设
计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电
路的复杂性,而且其成本也有所降低,所以在该设计中采用单片机利用 AT89C51,
它是低功耗、高性能的 CMOS 型 8 位单片机。
片内带有 4KB 的 Flash 存储器,且
允许在系统内改写或用编程器编程。
另外, AT89C51 的指令系统和引脚与 8051
完全兼容,片内有 128B 的 RAM、32 条 I/O 口线、2 个 16 位定时计数器、5 个中
断源、一个全双工串行口等。
AT89C51 单片机结合七段显示器设计的简易定时
闹铃时钟,可以设置现在的时间及显示闹铃设置时间,若时间到则发出一阵声
响,进—步可以扩充控制电器的启停。
设计内容包括了秒信号发生器、时间显示电路、按键电路、供电电源以及
闹铃指示电路等几部分的设计。
采用四个开关来控制定时闹钟的工作状态,分
别为:
K1、设置时间和闹钟的小时; K2、设置小时以及设置闹钟的开关; K3、
设置分钟和闹钟的分钟;K4、设置完成退出。
课设准备中我根据具体的要求,查找资料,然后按要求根据已学过的时钟
程序编写定时闹钟的程序,依据程序利用 proteus 软件进行了仿真实验,对出
现的问题进行分析和反复修改源程序,最终得到正确并符合要求的结果。
设计完成的定时闹钟达到课程设计的要求,在到达定时的时间便立即发出
蜂鸣声音,持续一分钟。
显示采用的六位数码管电路,如果亮度感觉不够,可
以通过提升电阻来调节,控制程序中延迟时间的长短,可以获得不同的效果。
也可以改蜂鸣器为继电器,通过控制继电器从而进一步扩展的来控制一些家电
开关。
1 概述 ....................................................................................................................................................... 3
2 系统总体方案及硬件设计 ................................................................................................................... 4
2.1 总体设计 ..................................................... 4
2.2 系统时钟电路设计 ............................................. 4
2.3 系统复位电路的设计 ........................................... 4
2.4 闹钟指示电路设计 ............................................ 5
2.5 电子闹钟的显示电路设计 ....................................... 5
3 软件设计 ............................................................................................................................................... 6
3.1 概述 ......................................................... 6
3.2 主模块的设计 ................................................. 6
3.3 基本显示模块设计 ............................................. 7
3.4 时间设定模块设计 ............................................. 7
3.5 闹铃功能的实现 ............................................... 8
4.PROTEUS 软件仿真 ......................................................................................................................... 11
5 课程设计体会 ..................................................................................................................................... 13
参考文献 ................................................................................................................................................ 14
附 1:
源程序代码 ................................................................................................................................. 15
附 2:
系统原理图 ................................................................................................................................. 25
1 概述
本设计是定时闹钟的设计 ,由单片机 AT89C51 芯片和 LED 数码管为核
心,辅以必要的电路,构成的一个单片机电子定时闹钟。
定时闹钟设计可采用数字电路实现,也可以采用单片机来完成。
定时闹
钟是用数字集成电路构成的 ,用数码管显示 “时”,“分”,“秒”的现代计时
装置。
单片机具有集成度高、功能强、通用性好、特别是它能耗低、价格便
宜、可靠性高、抗干扰能力强和使用方便等独特的优点,所以单片机现在广
泛的应用到家用电器、机电产品、儿童玩具、机器人、办公自动化产品等领
域。
所以在该设计中采用单片机利用 AT89C51,它是低功耗、高性能的 CMOS
型 8 位单片机。
片内带有 4KB 的 Flash 存储器,且允许在系统内改写或用编
程器编程。
另外, AT89C51 的指令系统和引脚与 8051 完全兼容,片内有 128B
的 RAM、32 条 I/O 口线、2 个 16 位定时计数器、5 个中断源、一个全双工串
行口等。
AT89C51 单片机结合七段显示器设计的简易定时闹铃时钟,可以设
置现在的时间及显示闹铃设置时间,若时间到则发出一阵声响,进 —步可以
扩充控制电器的启停。
设计内容包括了秒信号发生器、时间显示电路、按键电路、供电电源以
及闹铃指示电路等几部分的设计。
采用四个开关来控制定时闹钟的工作状
态,分别为:
K1、设置时间和闹钟的小时;K2、设置小时以及设置闹钟的开
关;K3、设置分钟和闹钟的分钟;K4、设置完成退出。
课设准备中根据具体的要求,查找资料,然后按要求根据已学过的时钟
程序编写定时闹钟的程序,依据程序利用 proteus 软件进行了仿真实验,对
出现的问题进行分析和反复修改源程序,最终得到正确并符合要求的结果。
设计完成的定时闹钟达到课程设计的要求,在到达定时的时间便立即发
出蜂鸣声音,持续一分钟。
显示采用的六位数码管电路,如果亮度感觉不
够,可以通过提升电阻来调节,控制程序中延迟时间的长短,可以获得不同
的效果。
也可以改蜂鸣器为继电器,通过控制继电器从而进一步扩展的来控
制一些家电开关。
2 系统总体方案及硬件设计
2.1 总体设计
电子闹钟应包括秒信号发生器、时间显示电路、按键电路、供电电源以及
闹铃指示电路等几部分。
按键功能说明:
K1,设置时间和闹钟的小时; K2,设置小时以及设置闹钟
的开关;K3,设置分钟和闹钟的分钟;K4;设置完成退出。
电子闹钟的系统框图如下所示:
复位、时钟等电
6 位数码管显示电路
CPU
按钮电路闹铃声指示电路
电源系统
图 1
电子闹钟的主电路指的是图1中虚线框内部分,主要涉及到 CPU 电路和按
键按钮电路。
主机的设计具体地说有:
1)系统时钟电路设计; 2)系统复位电
路设计;3)按键与按钮电路设计;4)闹铃声指示电路设计。
2.2 系统时钟电路设计
对于时间要求不是很高的系统,只要按图进行设计就能使系统可靠起振并稳定运行。
但由于原理图中的 C1、C2 电容起着系统时钟频率微调和稳定的作用,因此,在本闹钟系统
的实际应用中一定要注意正确选择参数(30±10 PF),并保证对称性(尽可能匹配),选
用正牌厂家生产的瓷片或云母电容,如果可能的话,温度系数要尽可能低。
实验表明,这
2 个电容元件对闹钟的走时误差有较大关系。
2.3 系统复位电路的设计
智能系统一般应有手动或上电复位电路。
复位电路的实现通常有两种方
式:
1)RC 复位电路;2)专用 µP监控电路。
前者实现简单,成本低,但复
位可靠性相对较低;后者成本较高,但复位可靠性高,尤其是高可靠重复复
位。
对于复位要求高、并对电源电压进行监视的场合,大多采用这种方式。
本次课程设计采用了上电按钮电平复位电路。
2.4 闹钟指示电路设计
闹铃指示可以有声或光两种形式。
本系统采用声音指示。
关键元件是蜂鸣
器。
蜂鸣器有无源和有源两种,前者需要输入声音频率信号才能正常发声,后
者则只需外加适当直流电源电压即可,元件内部已封装了音频振荡电路,在得
电状态下即起振发声。
市场上的有源蜂鸣器分为 3V、5V、6V等系列,以适
应不同的应用需要。
闹钟电路是用比较器来比较计时系统和定时系统的输出状
态,如果计时系统和定时系统的输出状态相同,则发出一个脉冲信号,再和一
个高频信号混合,送到放大电路驱动扬声器发声,从而实现定时闹响的功能。
其电路设计参见系统原理图。
2.5 电子闹钟的显示电路设计
本次课程设计采用了 6 位数码管显示电路。
在 6 位 LED 显示时,为了简化电
路,降低成本,采用动态显示的方式, 6 个 LED 显示器共用一个 8 位的 I/O, 6
位 LED 数码管的位选线分别由相应的 P2. 0~P2. 5 控制,而将其相应的段选线
并联在一起 ,由一个 8 位的 I/O 口控制 ,即 P0 口。
译码显示电路将“时”、
“分”、“秒”计数器的输出状态菁七段显示译码器译码,通过 6 位 LED 七段
显示器显示出来。
到达定时电路时根据计时系统的输出状态产生一脉冲信号,
然后去触发一音频发生器实现闹铃。
校时电路时用来对“时”、“分”、
“秒”显示数字进行校对调整的。
3 软件设计
3.1 概述
软件设计的重点在于秒脉冲信号的产生、显示的实现、以及按键的处理等
方面。
基于软件的秒脉冲信号通常有延时法和定时中断法。
延时法一般采用查
询方式,在延时子程序前后必然需要查询和处理的程序,导致误差的产生,因
此其秒脉冲的精度不高;中断法的原理是,利用单片机内部的定时器溢出中断
来实现。
例如,设定某定时器每 100ms 中断 1 次,则 10 次的周期为 1s。
本系
统中所使用的晶振频率为 12MHZ。
3.2 主模块的设计
主模块是系统软件的主框架。
结构化程序设计一般有“自上而下”和“自
下而上”两种方式,“自上而下”法的核心就是主框架的构建。
它的合理与否
关系到程序最终的功能的多少和性能的好坏。
本系统的主模块的程序框图如下
图 2 所示:
CPU系统初始化
定时0初始化
中断初始化
串口初始化
显示待机指示符
判设置闹铃时间否?
启动走时
有关变量初始化
判时或分变化否?
Y
刷新显示
判1秒到否?
Y
秒指示
Y
设定闹铃时间判是否到闹铃时间?
Y
显示刷新
闹铃
延时
图 2
3.3 基本显示模块设计
基本显示模块设计的重点是由显示代码取得相应的段码,显示段码数据的
并行发送,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,
石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,
不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用
LED 显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表
具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性
好。
程序流程如图 3 所示。
将16进制时分秒数据转化为BCD显示代码
关显示以免显示抖动
通过串口将时分秒数据传入数码管
打开显示
图 3
3.4 时间设定模块设计
时间设定模块的设计要点是按键的去抖处理与“一键多态”的处理。
即只
涉及 4 个键完成了 6 位时间参数的设定。
软件法去抖动的实质是软件延时,即
检测到某一键状态变化后延时一段时间,再检测该按键的状态是否还保持着,
如是则作为按键处理,否则,视为抖动,不予理睬。
去抖中的延时时间一般参
考资料多描述为 10ms 左右,实际应用中,应大于 20ms,否则,会导致按一次
作多次处理,影响程序正常执行。
“一键多态”即多功能键的实现思想是,根
据按键时刻的系统状态,决定按键采取何种动作,即何种功能。
其流程图如下图 4 所示:
N
N
设置键吗?
设置模块初始化
将在编参数送显示缓冲区
闪烁标志为真?
将当前位的显示代码置暗代码
调基本显示模块刷新显示
设置键吗?
N
+键吗?
根据当前位的性质分别进行
+1处理(含上下限判断)
N
当前编辑的是分各位?
N
结束设定
当前编辑位下移(下一位)
图 4
3.5 闹铃功能的实现
闹铃功能的实现涉及到两个方面:
闹铃时间设定和是否闹铃判别与相应处
理。
闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与
处理模块的设计问题。
闹铃判别与闹铃处理的关键在于判别何时要进行闹铃。
当时十位、时个位、分十位、分个位中任一位发生改变(进位)时,就必须进
行闹铃判别。
译码显示电路将“时”、“分”、“秒”计数器的输出送到七段
显示译码驱动器译码驱动,通过六个七段 LED 显示器显示出来。
闹铃电路根据
计时系统的输出状态产生一脉冲信号,然后加上一个高频或低频信号送到放大
电路驱动蜂鸣器发声实现报时。
校时电路是直接加一个脉冲信号到时计数器或
者分计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对调
整。
其流程图如下所示:
闹铃判别处理
时十位、个位,分十位、个位改变了
是否设置了闹铃中断返回
Y
判当前时间是设定时间
YN
设置闹铃标志清除闹铃标志
中断返回
图 5.1
图 5.2
考虑到实用性,在该电子钟的设计中修改定时或调整时间时采用了闪烁,而且以定时 20
组闹钟。
在编程上 ,首先进行了初始化定义了程序的入口地址以及中断的入口地址 ,在主程
序的开始定义了一组固定单元用来存储计数的秒,分,时以及定时时间的序号等。
在显示程序段中主要进行了闪烁的处理 ,采用定时器中断置标志位 ,再与位选相互结合
的方法来控制调时或定时中的闪烁。
时,分,秒显示则是用了软件译码(查表)的方式,再用了
一段固定的程序段进行进制转化。
初始化之后 ,用中断方式对其计数 ,计数的同时采用了定
时器比较的方法 ,比较当前计数时间与定时时间是否相等 ,若相等则将闹铃标志位置数。
由
于定义了定时闹钟组,在这里采用中断组次,每中断一次比较一组闹钟,避免了一次比较中断
时间过长,影响下次中断时间。
显示之后查询闹铃标志位是否与前面所置数相等 ,若相等则
响铃。
为了避免响铃影响显示,采用了每显示几屏以后在显示程序中出现脉冲,驱动喇叭,不会
影响显示。
之后用查询方式对按键进行判断,若有键按下,则进行软件延时消抖,避免了抖动
引起的干扰,执行相应的定时,选时或调时程序段。
对当前时间或定时时间修改后又返回到
最初的显示程序段,如此循环下去。
4.Proteus 软件仿真
本次课程设计所采用的程序调试软件为 wave6000 集成调试软件,所采用
的仿真软件为 protus 6 professional 软件。
本次实验的效果图如下所示:
RP1
9
8
7
6
5
4
3
2
1
RESPACK-8
9 8 7 6 5 4 3 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1
0
A
0/
P
1
A
1/
P
2
A
2/
P
3
A
3/
P
4
A
4/
P
5
A
5/
P
6
A
6/
P
7
A
7/
P
8
0/
P
9
1/
P
0
A
2/
P
1
A
3/
P
2
A
4/
P
3
A
5/
P
4
A
6/
P
5
A
7/
P
D
X
R
0
P
D
X
T
1/
P
0
N
2
P
1
N
3
P
0
4/
P
1
5/
P
R D
W R
P P
U1
AT89C51
SPEAKER
C1
45p
X1
CRYSTAL
1
A
T
X
2
A
T
X
T
R
N
E E
P A E
0 1 2 3 4 5 6 7
P P P P P P P P
C2
45p
9 0 1
1 2 3 4 5 6 7 8
K4
K3
K2
C3
K1
100p
R1
10k
性能及误差分析
该电子钟有三个按键:
K1, K2 和 K3 键。
按 K1 键进行校时,可以分别对时及分进行单
独校时,使其校正到标准时间,校时时需要校正哪一位哪一位就闪烁。
按 K2 键是对闪烁位进
行加一或返回的操作。
按 K3 键调整定时时间和定时组数,需要调整哪一位哪一位就闪烁,该
电子钟最多可定时 20 组闹钟。
经测试该电子钟在一天的累计误差约为 0. 1 秒。
该电子钟
的误差主要由晶振自身的误差所造成 ,晶振的误差约为 0. 0001~0. 000001。
在软件的编
程过程中所产生的误差比较小,在重装初值的过程中大概需要约 8 个机器周期,但在程序开
始对定时器赋初值时,多加了 8 个机器周期,减小了这方面的误差。
另外在中断的过程中,只
会在第一次计时时产生时间的偏移,而它所产生累计误差很小,可以忽略。
结构化软件程序的调试一般可以将重点放在分模块调试上,统调是最后一
环。
软件调试可以采取离线调试和在线调试两种方式。
前者不需要硬件仿真
器,可借助于软件仿真器即可;后者一般需要仿真系统的支持。
本次课设,采
用 wave6000 集成调试软件来调试程序,通过各个模块程序的单步或跟踪调试,
使程序逐渐趋于正确,最后统调程序。
仿真部分采用 protus 6 professional 软件,此软件功能强大且操作较为
简单,可以很容易的实现各种系统的仿真。
首先打开 protus 6 professional 软件,在元件库中找到要选用的所有元件,
然后进行原理图的绘制;绘制好后再选择 wave6000 已经编译好的*.hex 文件,
选择运行,观察显示结果,根据显示的结果和课设的要求再修改程序,再运行
查,直到满足要求。
5 课程设计体会
单片机是一门应用性很强的学科,课程设计是培养我们综合运用所学知识,
发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对我们实际工
作能力的具体训练和考察过程。
虽然在做课程设计以前已经系统的把单片机课
本认真的学习了一下,但是在刚拿到设计任务书时还是有点一头雾水,不知道
该从哪里下手。
令人欣慰的是经过一周的学习,虽然过程很艰辛,但是总算实
现了定时闹钟的功能,所有的努力都很值得。
这一周的大部分时间都在研究程
序怎么处理,在这个过程中加深了我对汇编语言命令的应用,而且也更加了解
到软硬件配套的重要性。
通过这次课程设计,使我对这们功课有了更深刻的认识和了解。
首先对于
硬件电路的工作原理有了进一步系统的学习,同样就有了进一步的认识,使我
懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学
的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能
力。
其次软件在这次设计中也有不足之处,比如音乐的响声不连续,但又不知
道从哪个地方入手解决这个问题,这要求在以后的学习中,拓宽自己的知识
面,解决设计的不足之处。
总之,通过这次课程设计不仅使我巩固了本课程所学的基本知识,还使我
具有了撰写科研报告的初步训练能力,我相信这些能力在我以后的工作或者是
再学习中一定会起到不小的作用,一切的辛苦和艰难都是值得的。
参考文献
[1] 余发山 单片机原理及应用技术,徐州:
中国矿业大学出版社,2003
[2] 杨刚,周群 .电子系统设计与实践 .电子工业出版社 .2004:
18-23 341-347
118-122
[3] 何立民 .单片机高级教程(应用与设计) .北京:
北京航空航天大学出版
社,2000 年.53-98
[4] 涂时亮,张友德.单片微机控制技术.清华大学出版社.1994:
86-87 146-147
[5] 《融会贯通 Protel99 电路设计》 弘道工作室 北京 人民交通出版设,2000.
[6] 《单片机原理及接口技术实验》 朱定华 北京 北方交通大学出版社 2002.11
附 1:
源程序代码
K1 EQU P1.0;在程序开始前定义变量
K2 EQU P1.1
K3 EQU P1.2
K4 EQU P1.3
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TIME
ORG 0100H
MAIN:
MOV SP,#50H
MOV 20H,#00H。
时间 BINSECOND
MOV 21H,#00H。
BINMINUTE
MOV 22H,#00H。
BINHOUR
MOV 23H,#01H。
闹铃 BIN