基于单片机的电子闹钟系统.docx
- 文档编号:6996215
- 上传时间:2023-01-15
- 格式:DOCX
- 页数:29
- 大小:566.17KB
基于单片机的电子闹钟系统.docx
《基于单片机的电子闹钟系统.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子闹钟系统.docx(29页珍藏版)》请在冰豆网上搜索。
基于单片机的电子闹钟系统
设计题目:
基于单片机的电子闹钟系统
设计要求:
1、电子闹钟系统应具有自动计时功能,由6位LED显示器显示时、分、秒;
2、具有准确走时、定时、闹钟定时、到时铃响、定点报时、驱动电铃等功能。
3、设计出该系统相应的时钟硬件电路;
4、设计该时钟相应的软件电路;
5、上机连接试验箱调试出应有的效果。
设计进度要求:
第一周:
领取题目,分析设计题目原理及设计思路
第二周:
去图书倌查阅资料,制定大纲
第三周:
编写程序,拟定论文
第四周:
上机调试,验证实验效果
第五周:
根据设计要求进行编排电子稿
第六周:
由指导老师审核,进行更改指正
第七周:
交正规电子稿,由指导老师评阅
第八周:
进行毕业论文答辩
指导教师(签名):
摘要
电子闹钟不仅能够计时还能按预定时间发出声响的时钟,尤其是单片机技术的应用产品在社会的各个领域都有应用,如电子万年历的出现给人们的生活、学习、工作、娱乐带来极大的方便。
我所设计的是电子闹钟系统用到的单片机芯片是AT89C51芯片,除此之外还包括:
DS1302芯片、晶振电路和复位电路构成单片机最小应用系统,还有独立式按键电路,动态显示电路等等。
用单片机的汇编语言来进行软件程序编写,通过伟福系统调试,再经过proteus模拟仿真,它不仅能实现数字电子时钟的各种功能,还具有较时、调时、定时、闹钟等功能,而且还能实现定点报时的功能。
关键词:
AT89C51,电子闹钟,汇编语言
目录
设计任务书I
摘要II
1总体方案设计2
1.1系统框图2
1.2设计方案介绍2
2硬件设计4
2.1单片机的选型4
2.2复位电路5
2.3晶振电路6
2.4DS1302的简介6
2.5按键设计10
2.6七段LED显示11
3软件设计15
3.1设计思路15
3.2系统工作流程15
3.3主程序模块16
3.4按键程序模块17
3.5显示程序模块21
3.6中断服务程序模块22
4仿真调试25
4.1通过伟福仿真软件和Keil软件来验证程序25
4.2利用proteus仿真软件进行仿真27
4.3仿真效果29
致谢31
参考文献32
附录A33
1总体方案设计
1.1系统框图
本文设计的是一个电子闹钟系统,它不仅具有数字电子时钟的各种功能,还具有较时、调时、定时、闹钟等功能,而且还具有驱动电铃,定点报时等功能。
总体设计框图如图1.1所示:
图1.1系统框图
1.2设计方案介绍
1、硬件的设计方案
(1)由于我设计的是一个电子闹钟系统,它需要准确的走时、较时、调时、定时、定点报时等,因此我选用的是AT89C51单片机芯片,再配以DS1302芯片,按键电路、晶振电路、复位电路以及LED动态显示器,就可以实现。
采用AT89C51的P0接口外接8路反相三态缓冲器74LS240作LED动态扫描的段码控制驱动信号,用P2接口的P2.0-P2.5外接一片集电极开路反相门电路7406做为6位LED的位选信号驱动口,6个数码管的8根段选线分别接74LS240的输出,LED共阴极端与74LS07的输出端相连;按键接口,由P1.7、P1.6、P1.5、P1.4来完成,DS1302实时时钟由P1.0、P1.1、P1.2来控制。
DAS1302的X1、X2接口用来接蜂鸣器。
(2)电路原理图见附录A
2、软件的设计方案
由于我考虑到用单片机的汇编语言来做电子闹钟系统的设计比较简单。
对于程序我的设计思路是:
(1)主程序进行显示和中断的初始化。
(2)设计显示子程序,当键入一个时间值时显示程序要把这个键入的时间值给显示出来。
(3)设计中断服务程序,功能是对走时进行判断,看是否到定时时间等。
(4)按键程序,进入按键程序,判断是否有键按下,没有,则调用延时重新判断,如果到了,调用延时去抖程序,再次判断有键按下否,没有则返回延时程序,如果有按键,则判断键号,堆栈,判断键是否释放,没有,继续判断,释放了,则输入键号送往累加器。
2硬件设计
2.1单片机的选型
我的设计里用到的单片机芯片是AT89C51芯片,除此之外还包括:
DS1302芯片、晶振电路和复位电路构成单片机最小应用系统。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能、CMOS、8位单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
AT89C51的管脚图如图2.1所示:
图2.1AT89C51管脚图
AT89C51特性有:
1、与MCS-51兼容
2、4K字节可编程闪烁存储器
3、寿命:
1000写/擦循环
4、数据保留时间:
10年
5、全静态工作:
0Hz-24Hz
6、三级程序存储器锁定
7、128*8位内部RAM
8、32可编程I/O线
9、两个16位定时器/计数器
10、5个中断源
11、可编程串行通道
12、片内振荡器和时钟电路
2.2复位电路
单片机在开机时或在工作中会由于干扰而使程序失控,或工作中程序处于某种死循环状态,因此需要复位。
本设计采用的是手动复位方式,AT89C51单片机的复位靠外部电路实现,信号由RESET(RST)引脚输入,高电平有效,在振荡器工作时,只要保持RST引脚高电平两个机器周期,单片机即复位。
复位后,PC程序计数器的内容为0000H,片内RAM中内容不变。
如图2.2所示,复位电路由C3,R1和S1组成。
当系统加电时,由于C1两端的电压不能突变,因此引脚RST为高电平,单片机进入复位状态。
随着C3充电,它两端的电压上升,使得引脚RST上电压下降,最终是单片机推出复位状态。
或者按S1键,直接进行复位。
C3和R1的取值分别为10uF,10kΩ。
图2.2单片机复位电路
2.3晶振电路
石英晶体也连接在晶振引脚的输入和输出之间,等效为一个并联谐振回路,振荡频率应该是石英晶体的并联谐振频率。
晶体旁边的两个电容接地,实际上就是电容三点式电路的分压电容,接地点就是分压点。
以接地点即分压点为参考点,振荡引脚的输入和输出是反相的,但从并联谐振回路即石英晶体两端来看,形成一个正反馈以保证电路持续振荡。
晶振电路如图2.3所示
图2.3单片机晶振电路
2.4DS1302的简介
DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。
DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。
DS1302串行时钟芯片主要是由移位寄存器、控制逻辑、振荡器、实时时钟、RAM以及电源组成,它的电路工作原理图如下图2.4所示:
图2.4DS1302的内部结构
在本设计中,它的I/O引脚、串行时钟SCLK引脚、CE引脚分别与AT89C51的I/O接口的P1.1口、P1.2口、P1.0口相接,X1、X2接口接蜂鸣器。
1、DS1302时钟芯片包括:
(1)实时时钟/日历:
实时时钟/日历提供秒、分、时、日、星期、月、年等信息,每月天数以及闰年能自动调整,时钟可以采用24h或AM/PM的12h格式。
(2)31字节的静态RAM:
用于存放数据。
(3)带慢速充电控制备份电源的充电特性。
(4)简单的三线串行接口:
该芯片使用同步串行通信。
与时钟/RAM通信共需3根线:
RST(复位)、I/O(数据线)、SCLK(串行时钟)。
数据可以以每次1个字节或多个字节的形式传送到时钟/RAM或从其读出。
2、各管脚描述
(1)X1X232.768KHz晶振管脚
GND地
RST复位脚
I/O数据输入/输出引脚
SCLK串行时钟
Vcc1,Vcc2电源供电管脚
订单信息
部分#描述
DS1302串行时钟芯片8脚DIP
DS1302S串行时钟芯片8脚SOIC200mil
DS1302Z串行时钟芯片8脚SOIC150mil
(2)DS1302内部寄存器
CH:
时钟停止位寄存器2的第7位12/24小时标志
CH=0振荡器工作允许bit7=1,12小时模式
CH=1振荡器停止bit7=0,24小时模式
WP:
写保护位寄存器2的第5位:
AM/PM定义
WP=0寄存器数据能够写入AP=1下午模式
WP=1寄存器数据不能写入AP=0上午模式
TCS:
涓流充电选择DS:
二极管选择位
TCS=1010使能涓流充电DS=01选择一个二极管
TCS=其它禁止涓流充电DS=10选择两个二极管
DS=00或11,即使TCS=1010,充电功能也被禁止
RS位电阻典型位
00没有没有
01R12K
10R24K
11R38K
3、DS1302读写时序说明
DS1302是SPI总线驱动方式。
它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。
要想与DS1302通信,首先要先了解DS1302的控制字。
DS1302的控制字如表2.1所示:
表2.1控制字(即地址及命令字节)
控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。
位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;
位5至位1(A4~A0):
指示操作单元的地址;
位0(最低有效位):
如为0,表示要进行写操作,为1表示进行读操作。
图2.5数据读写时序
控制字总是从最低位开始输出。
在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。
同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。
数据读写时序如图2.5。
2.5按键设计
1、键盘接口工作原理
在单片机应用系统中,常用键盘作为输入设备,通过它将数据、内存地址、命令及指令等输入到系统中,来实现简单的人机通信。
2、按键开关的去除抖动功能
目前,AT89C51单片机应用系统上的按键常采用机械触点式按键,它在断开、闭合时输入电压波形如图2.6所示.可以看出机械触点在闭合及断开瞬间均有抖动过程,时间长短与开关的机械特性有关,一般为5~10ms。
由于抖动,会造成被查询的开关状态无法准确读出。
例如,一次按键产生的正确开关状态,由于键的抖动,CPU多次采集到底电平信号,会被误认为按键被多次按下,就会多次进行键输入操作,这是不允许的。
为了保证CPU对键的一次闭合仅在按键稳定时作一次键输入处理,必须消除产生的前沿(后沿)抖动影响。
在本次设计中采用的是软件去抖。
图2.6按键过程
3.按键的应用
本设计的电子闹钟系统是一个具有电子时钟、闹钟、定点报时功能的系统,系统工作时应具备随时对当前时间进行调整,因此它只需要独立式键盘的四个按键即可完成操作。
独立式键盘的接口电路:
在单片机应用系统中,有时只需要几个简单的按键向系统输入信息。
这时,可将每个按键直接接在一根I/O接口线上,这种连接方式的键盘称为独立式键盘。
如图2.7所示,每个独立按键单独占有一根I/O接口线,每根I/O接口线的工作状态不会影响到其他I/O接口线。
这种按键接口电路配置灵活,硬件结构简单,但每个按键必须占用一根I/O线,I/O接口线浪费较大。
故只在按键数量不多时采用这种按键电路。
在此电路中,按键输入都采用低电平有效。
上拉电阻保证了按键断开时,I/O接口线有确定的高电平。
当I/O接口内部有上拉电阻时,外电路可以不配置上拉电阻。
本设计中个按键的功能为:
一个为功能键K1;一个为数字调整键K2;一个为取消设置键K3,用来设置时间;一个为K4键,用来设置定时时间。
图2.7独立式键盘电路
2.6七段LED显示
1、数码管简介
(1)数码管结构
数码管由8个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数字09、字符AF及小数点“·”。
数码管的外形结构如图2.8(a)所示。
数码管又分为共阴极和共阳极两种结构,分别如图2.8(b)和图2.8(c)所示:
(a)外型结构;(b)共阴极;(c)共阳极
图2.8数码管结构图
(2)数码管工作原理
由于我们采用的是共阴极数码管,所以介绍共阴极数码管的工作原理如下:
共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起。
通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。
当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮。
根据发光字段的不同组合可显示出各种数字或字符。
此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
共阳极数码管的工作原理与共阴极的正好相反。
(3)数码管字形编码
要使数码管显示出相应的数字或字符,必须使段数据口输出相应的字形编码。
LED显示字型码表见表2.2:
表2.2LED显示字型码表
显示字符
共阴极
共阳极
显示字符
共阴极
共阳极
0
3FH
C0H
9
6FH
90H
1
06H
F9H
A
77H
88H
2
5BH
A4H
B
7CH
83H
3
4FH
B0H
C
39H
C6H
4
66H
99H
D
5EH
A1H
5
6DH
92H
E
79H
86H
6
7DH
82H
F
71H
8EH
7
07H
F8H
8
7FH
80H
2、显示的种类
(1)静态显示概念
静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。
这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极)。
每个数码管的8个字段分别与一个8位I/O口地址相连,I/O口只要有段码输出,相应字符即显示出来,并保持不变,直到I/O口输出新的段码。
采用静态显示方式的优点:
较小的电流即可获得较高的亮度,且占用CPU时间少,编程简单,显示便于监测和控制,但其占用的接口线多,硬件电路复杂,成本高,只适合于显示位数较少的场合。
(2)动态显示概念
动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。
通常,各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的位选线(公共阴极或阳极)由另外的I/O口线控制。
动态方式显示时,各数码管分时轮流选通,要使其稳定显示,必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码。
依此规律循环,即可使各位数码管显示将要显示的字符。
虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人以同时显示的感觉。
采用动态显示方式比较节省I/O口,硬件电路也较静态显示方式简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,占用CPU较多的时间。
此次设计中我们采用定时器来完成动态扫描显示。
用定时器T0定2ms的时间间隔,每次定时时间到时就输出一个LED信号,即显示1位。
定时器每中断6次后循环到第一位LED显示。
这样动态显示占用CPU的时间只有输出断码和输出位码的有限时间,提高了CPU的工作效率。
在本次设计中所使用的是动态显示,其显示电路图形如图2.9所示:
图2.9LED动态显示电路
3软件设计
3.1设计思路
由于我做的是电子闹钟系统,它需要具有较时、调时、定时、闹钟等功能,而且还具有驱动电铃,定点报时等功能。
另外当时钟走到24点时则自动清零。
所以我们考虑到用单片机的汇编语言来做我们的设计比较简单。
对于程序我们的设计思路是:
1、要有主程序,主程序一般是显示和中断的初始化。
2、要有显示子程序,当键入一个时间值时显示程序要把这个键入的时间值给显示出来。
3、要有中断服务程序,功能,走时,判断是否到定时时间等等。
4、要有按键程序,进入按键程序,判断是否有键按下,没有,则调用延时重新判断,如果到了,调用延时去抖程序,再次判断有键按下否,没有则返回延时程序,如果有按键,则判断键号,堆栈,判断键是否释放,没有,继续判断,释放了,则输入键号送往累加器。
3.2系统工作流程
1、时钟显示:
6位LED从左到右一次显示时、分、秒,采用24小时计时。
2、按键控制功能:
采用4个独立键盘,其中一个为功能键;一个为数字调整键;一个为取消设置键,用来设置时间;一个为ALM键,用来设置定时时间。
3、时间显示:
通电后,系统自动进入时钟设置,从00:
00:
00开始计时,此时可以设定当前时间。
4、时间调整:
按下功能键,系统停止计时显示,进入时间设定状态,系统只显示小时的内容,其余4位LED处于全暗状态,等待按键设置。
此时按动数字调整键后小时将会加1,按动取消键后又重新回到原来的时间显示状态;若再按动功能键则用来调整分钟,此时小时和秒的4位LED指示全暗,按数字调整键后可以对分钟增1调整,按动取消键后又重新回到原来的时间显示状态;再按动功能键则用来调整秒,此时小时和分钟的4位LED指示全暗,秒显示当前的秒数,暗数字调整键可以对秒进行增1调整,按动取消键后又重新回到原来的时间显示状态,按动功能键后系统将自动由设定后的时间开始计时显示。
5、闹钟设置/启闹:
按下K4键,系统继续计时,但显示为00:
00:
00,此时再按动功能键后进入闹钟设置状态,设置过程和时间调整相同,但是最后按功能键确定后显示定时时间30S后自动启动定时闹钟功能,并恢复时间显示。
定时时间到,蜂鸣器鸣叫1min后自动停闹,每次设置时只能定一次,下次需重新设置。
3.3主程序模块
首先,设置初始常数,设置定时器常数,它主要是显示和中断的初始化。
主程序的内容一般包括:
主程序的起始地址,中断服务程序的起始地址,有关内存单元及相关部件的初始化和一些子程序调用等。
主程序及流程图:
图3.1主程序流程图
主程序如下:
START:
MOV R0,#70H ;清70H-7AH共11个内存单元
MOV R7,#0BH ;
CLEARDISP:
MOV @R0,#00H ;
INC R0 ;
DJNZ R7,CLEARDISP ;
MOV 20H,#00H ;清20H(标志用)
MOV 7AH,#0AH ;放入"熄灭符"数据
MOVTMOD,#11H ;设T0、T1为16位定时器
MOV TL0,#0B0H ;50MS定时初值(T0计时用)
MOV TH0,#3CH ;50MS定时初值
MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)
MOV TH1,#3CH ;50MS定时初值
SETB EA ;总中断开放
SETB ET0 ;允许T0中断
SETB TR0 ;开启T0定时器
MOV R4,#14H ;1秒定时用初值(50MS×20)
START1:
LCALLDISPLAY ;调用显示子程序
JNBP3.2,SETMM1 ;P3.7口为0时转时间调整程序
SJMP START1 ;P3.7口为1时跳回START1
SETMM1:
LJMPSETMM ;转到时间调整程序SETMM
3.4按键程序模块
按下功能键,系统停止计时显示,进入时间设定状态,系统只显示小时的内容,其余4位LED处于全暗状态,等待按键设置。
此时按动数字调整键后小时将会加1,按动取消键后又重新回到原来的时间显示状态;若再按动功能键则用来调整分钟,此时小时和秒的4位LED指示全暗,按数字调整键后可以对分钟增1调整,按动取消键后又重新回到原来的时间显示状态;再按动功能键则用来调整秒,此时小时和分钟的4位LED指示全暗,秒显示当前的秒数,暗数字调整键可以对秒进行增1调整,按动取消键后又重新回到原来的时间显示状态,按动功能键后系统将自动由设定后的时间开始计时显示。
该系统的按键功能如下:
按下功能键,系统停止计时显示,进入时间设定状态,系统只显示小时的内容,其余4位LED处于全暗状态,等待按键设置。
此时按动数字调整键后小时将会加1,按动取消键后又重新回到原来的时间显示状态;若再按动功能键则用来调整分钟,此时小时和秒的4位LED指示全暗,按数字调整键后可以对分钟增1调整,按动取消键后又重新回到原来的时间显示状态;再按动功能键则用来调整秒,此时小时和分钟的4位LED指示全暗,秒显示当前的秒数,暗数字调整键可以对秒进行增1调整,按动取消键后又重新回到原来的时间显示状态,按动功能键后系统将自动由设定后的时间开始计时显示。
进入按键程序,判断有键按下吗?
没有,则调用延时重新判断,如果到了,调用延时去抖程序,再次判断有键按下否,没有则返回延时程序,如果有按键,则判断键号,堆栈,判断键是否释放,没有,继续判断,释放了,则输入键号送往累加器,然后返回主程序。
按键程序及流程图:
图3.2按键程序流程图
按键程序如下:
当调时按键按下时进入此程序
SETMM:
cLR ET0 ;关定时器T0中断
CLR TR0 ;关闭定时器T0
LCALL DL1S ;调用1秒延时程序
JB P3.2,CLOSEDIS ;键按下时间小于1秒,关闭显示(省电)
MOV R2,#06H ;进入调时状态,赋闪烁定时初值
SETB ET1 ;允许T1中断
SETB TR1 ;开启定时器T1
SET2:
JNB P3.2,SET1 ;P3.7口为0(键未释放),等待
SETB 00H ;键释放,分调整闪烁标志置1
SET4:
JB P3.2,SET3 ;等待键按下
LCALL DL05S ;有键按下,延时0.5秒
JNB P3.2,SETHH ;按下时间大于0.5秒转调小时状态
MOV R0,#77H ;按下时间小于0.5秒加1分钟操作
LCALLADD1 ;调用加1子程序
MOV A,R3 ;取调整单元数据
CLR C ;清进位标志
CJNE A,#60H,HHH ;调整单元数据与60比较
HHH:
JC SET4 ;调整单元数据小于60转SET4循环
LCALL CLR0 ;调整单元数据大于或等于60时清0
CLR C ;清进位标志
AJMP SET
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 电子 闹钟 系统