多功能打铃系统的设计.docx
《多功能打铃系统的设计.docx》由会员分享,可在线阅读,更多相关《多功能打铃系统的设计.docx(38页珍藏版)》请在冰点文库上搜索。
多功能打铃系统的设计
密级:
公开
NANCHANGUNIVERSITY
学士学位论文
THESISOFBACHELOR
(2008—2012年)
题目多功能打铃系统的设计
学院:
信息工程学院系电子信息工程
专业:
电子信息工程
班级:
学号:
学生姓名:
指导教师:
起讫日期:
2012年3月5日—2012年.5月27日
南昌大学
学士学位论文原创性申明
本人郑重申明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果。
对本文的研究作出重要贡献的个人和集体,均已在文中以明确方式表明。
本人完全意识到本申明的法律后果由本人承担。
作者签名:
日期:
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权南昌大学可以将本论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
保密□,在年解密后适用本授权书。
本学位论文属于
不保密□。
(请在以上相应方框内打“√”)
作者签名:
日期:
导师签名:
日期:
多功能打铃系统的设计
专业:
电子信息工程学号:
6100208208
学生姓名:
指导教师:
摘要
时钟伴随着人类发展每一个过程。
它由古代的沙漏发展到近代的机械表再发展到现代的电子表。
步入快节奏的二十一世纪,精准的时钟和打铃系统更成为不可或缺的工具。
我采用AT89C51单片机作为整个设计的中枢。
AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS8位的微处理器。
本设计由四个模块组成,分别是单片机、控制按钮、铃声装置和数码管等。
本文利用AT89C51单片机的2Hz时基计时并进行年历计算。
在时间计算时,每增加一秒都与系统设定的某个固定时间进行比较,如果和系统设定的时刻相同,则会进行相应的控制即打铃输出,从而驱动相应的蜂鸣器打铃。
并且使用LED发光管显示当前时间。
在整个设计中,全部功能通过四个按键来加以控制,以更好地调控准确的时间等。
关键词:
单片机;AT89C51;打铃系统;时间显示
Multifunctionalbellsystem
Abstract
Clockalongwitheveryprocessofhumandevelopment.Itconsistsofthethehourglassdevelopmentoftheancienttothemodernmechanicalwatch,thedevelopmentofmodernelectronicwatches.Thetwenty-firstcenturyintothefast-paced,preciseclockandbellsystemshavebecomeanindispensabletool。
IusetheAT89C51microcontrollerasthehuboftheentiredesign.TheAT89C51isalowvoltageofonekindwith4Kbytesflashmemory,high-performanceCMOS8-bitmicroprocessor.Thisdesignconsistsoffourmodules,namely,themicrocontroller,controlbuttons,ringtones,devices,anddigitaltube.UsingAT89C51microcontroller2Hzwhenthetimingandcalendaryearbasisand5vvoltagesourcetothemicrocontroller.Thecalculationoftimeforeachadditionalonesecondandthesystemsetafixedtimeforcomparison.Ifatsomepointandsetthesamemoment,istheappropriatecontrolofthebelloutput,inordertodrivethebuzzerrangthebell.UseofLEDandLEDdisplaysthecurrenttime.Throughoutthedesign,controlofallfunctionsviafourbuttonstocontrol,youcanbettercontroltheaccuratetime.
Keywords:
microcontroller;onAT89C51;bellsystem;timedisplay
摘要..............................................................I
Abstract..........................................................II
引言-1-
第一章设计简介及方案论述-2-
1.1本设计任务和主要内容-2-
1.2方案论证-2-
1.3多功能打铃系统概述-3-
第二章系统硬件电路-4-
2.1多功能打铃系统总体框图。
-4-
2.2各硬件模块的使用和性能介绍-4-
2.3系统硬件电路图-9-
第三章系统软件设计-11-
3.1系统软件的主要内容-11-
3.2主程序流程设计-11-
第四章系统调试与测试结果分析-13-
4.1系统调试-13-
4.2仿真结果-13-
第五章汇编程序与器材仪表-15-
5.1汇编程序-15-
5.2器材仪表-28-
结论-29-
参考文献-30-
致谢-31-
引言
本设计是根据我们所学习的单片机课程,按照大纲要求对我们进行的一次课程检验,是进行单片机课程训练的必要任务,也对我们掌握单片机应用有很大的帮助。
掌握单片机技术是一门不可或缺的技术,对我们将来的工作以及生活和学习都有很密切的联系。
近年来,随着电子技术和微机计算机的迅速发展,单片机的档次不断提高,其应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到了广泛的应用,成为现代电子系统中最重要的智能化的核心部件。
当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未有的速度被单片机智能控制系统所取代。
单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。
目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。
学习单片机的最有效的方法就是理论与实践并重,本文就是用AT89C51单片机设计的一个自动打铃系统。
第一章设计简介及方案论述
1.1本设计任务和主要内容
(1)设计任务
用可编程器件为主体,设计并制作一台自动打铃系统。
要求完成的作品必须固化软件,测试检查时上电即可工作。
能够实现显示当前的准确时间,同时能够在规定的时间点控制打铃装置打出预期的铃声。
另外增设四个按钮,通过分配以实现对时间的调整,包括对时钟、分钟的增加和减少,秒钟的清零以及强制打铃和关闭打铃等。
(2)主要内容
1、基本计时和显示功能(用24小时制显示)。
包括上下午标志,时、分的数字显示,秒指示。
2、能设置当前时间(含上、下午,时,分)
3、能实现基本打铃功能,规定:
上午6:
00起床铃:
打铃5秒、停2秒、再打铃5秒。
下午10:
30熄灯铃:
打铃5秒、停2秒、再打铃5秒。
4、通过按键输入每节课的时间,课间的休息时间及中饭、晚饭等时间间隔值。
铃声可用小喇叭播放,凡是用到铃声功能的均按此处理。
1.2方案论证
方案一
根据设计要求,由于本设计是可调时钟显示与打铃功能,可以使用中断之类的器件利用其转换功能。
在有键按下时,就可以用单片机进行数据的处理,从而实现调时钟与打铃功能。
在显示电路上,可以用数码管将被调时钟显示出来,直接用AT89C51引脚接数码管、键盘、蜂鸣器,这种设计只需要用到少量的CPUI/O口。
方案二
根据设计要求,也可以用8255A可编程并行I/O接口芯片,8255A芯片有3个8位并行口。
要实现显示时间和打铃功能还需要一些时序电路和逻辑电路器件,计时部分使用单片机内部的可编程定时器,该方案利用MCS51中的89C52作为其核心部分,利用其内部的定时/计数器进行中断定时,配合软件延时实现时、分的计时,键盘输入部分,用8255A作为单片机的键盘输入,采用3*1矩阵结构,其中两个键用于调整时间分和时,另一个键用于调上下午标志。
从以上两种方案,很容易看出,采用方案一,能充分利用资源,软件设计思路也比较简单,在软件和硬件方面设计可以使用模块化思路。
故采用了方案一。
本方案利用AT89C51作为其核心部分,其内部的定时/计数器进行中断定时,配合软件程序实现时、分的计时。
键盘输入部分采用4*1矩阵结构,其中三个键用于调整时间分和时,另外一个键强制打铃或关闭打铃。
上电后系统自动进入时钟显示,从零时开始计时,此时可以设定当前时间。
系统内部设定固定的打铃时间,一旦相应的时间到,蜂鸣器鸣叫打铃。
1.3多功能打铃系统概述
本设计是一个具有报时功能的作息时间控制钟。
它利用AT89C51单片机的2Hz时基计时,进行年历计算,并用蜂鸣器将它报出来;在进行时间显示过程中,时间每过一秒,都与规定的作息时间比较,如果相等则进行相应的控制或动作。
整个单片机外围电路由七段显示驱动模块、蜂鸣器驱动模块和按钮控制模块三部分组成。
在按钮控制模块中有四个按键,这些按键作用用于报时及校正时间。
现代机关企业,特别是学校要求对时间加以控制,要按时打铃及播放广播,以保证学习与工作的正常运行。
本文设计实现了这些功能,给学校及其他机关企业带来方便,整体性好,人性化强、可靠性高,实现了对时间控制的智能化。
第二章系统硬件电路
2.1多功能打铃系统总体框图。
图2-1系统框图
打铃系统模块组成框图如图2-1所示,该模块由七段式数码管模块、蜂鸣器驱动模块和按钮控制模块三部分组成。
且三部分都通过AT89C51来统一控制管理。
2.2各硬件模块的使用和性能介绍
2.2.1单片机的使用和其性能介绍
一,单片机的端口和使用
连接在AT89C51的端口XTAL1和端口XTAL2分别连接晶体振荡器的两端。
而XTAL1是构成片内振荡器的反相放大器的输入端,XTAL2是构成片内振荡器的输出端。
晶体振荡器的作用是产生原始的时钟频率。
经过频率放大器的放大或缩小后就成了我们系统所需要的各种不同频率。
在晶振的另外两个端口分别连接30PF的电容然后接地。
RST端口是复位端,它连接一个保护电阻然后连接地。
当振荡器运行时,在该引脚上出现两个机器周期的高电平将使单片机复位。
EA端口连接一个给定的电源然后在和复位端口RST之间连接10PF的电容,该连接可以允许外部访问。
单片机的P1.0到P1.3端口连接外部的按键控制,分别为S1、S2、S3、和S4。
在每个开关与给定的电源之间接一个10K的保护电阻。
防止电流过大,从而保护电路。
端口P3.7连接一个三极管的基极,电源连接在集电极,在三极管的发射极连接一个蜂鸣器。
P0.0—P0.7这八个端口分别引出三组接口,一组接口连接RESPACK-8排阻器,另外两组分别连接两组LED显示器的ABCDEFG和DP接口。
二,单片机的性能介绍
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
引脚说明:
VCC:
供电电压。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。
89C51各部分引脚图如图2-2所示:
P1.0140Vcc
P1.1239P0.0
P1.2338P0.1
P1.3437P0.2
P1.4536P0.3
P1.5635P0.4
P1.6734P0.5
P1.7833P0.6
RST/Vpd932P0.7
RXDP3.01031EA/Vpp
TXDP3.11130ALE/-P
INT0P3.21229PSEN
INT1P3.31328P2.7
T0P3.41427P2.6
T1P3.51526P2.5
WRP3.61625P2.4
RDP3.71724P2.3
X21823P2.2
X11922P2.1
GND2021P2.0
图2-289C51引脚图
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
为使该模块化自动打铃系统具有更加方便和灵活性,我们对系统的硬件做了精心设计。
2.2.2蜂鸣器驱动模块和硬件设计
该打铃系统采用的是压电式蜂鸣器。
压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。
多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5-15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。
本设计中的蜂鸣器驱动模块用到了蜂鸣器(SPEAKER)、三极管、100欧姆的电阻等器件。
将蜂鸣器的一端连接三极管的发射极,蜂鸣器的另一端直接与地相连。
三极管的基极通过100欧姆的电阻接在单片机的P3.7引脚,三极管的集电极接+5V的电源。
其电路图如下图所示。
电流和电压等信号会经过共发射极放大。
如图2-3所示。
图2-3蜂鸣器驱动电路图
2.2.3七段式数码管驱动模块和硬件设计
采用动态扫描方式,通过一组单片机端口P0.0—P0.7驱动并联在一起的LED发光管的共阳端,LED发光管的另一脚接通用I/O口。
利用单片机的P2.0—P2.7端口控制这八个数码管的亮灭。
该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。
LED数码管显示器内部有七个条形发光二极管和一个小圆点发光二极管组成,其结果如2-4图所示。
com
A
B
C
D
E
F
G
图2-4七段数码显示管
因而它的控制原理和发光二极管的控制原理是相同的。
根据各管接线的形式,可分成共阴极型和共阳极型。
本系统设计使用的是共阳极型。
其八个接口对应的字形如表2-1。
表2-1数码管字型码表
显示字形
dp
g
f
e
d
c
b
a
共阴极字型码
共阳极字型码
0
0
0
1
1
1
1
1
1
0x3F
0xC0
1
0
0
0
0
0
1
1
0
0x06
0xF9
2
0
1
0
1
1
0
1
1
0x5B
0xA4
3
0
1
0
0
1
1
1
1
0x4F
0xB0
4
0
1
1
0
0
1
1
0
0x66
0x99
5
0
1
1
0
1
1
0
1
0x6D
0x92
6
0
1
1
1
1
1
0
1
0x7D
0x82
7
0
0
0
0
0
1
1
1
0x07
0xF8
8
0
1
1
1
1
1
1
1
0x7F
0x80
9
0
1
1
0
1
1
1
1
0x6F
0x90
A
0
1
1
1
0
1
1
1
0x77
0x88
B
0
1
1
1
1
1
0
0
0x7C
0x83
C
0
0
1
1
1
0
0
1
0x39
0xC6
D
0
1
0
1
1
1
1
0
0x5E
0xA1
E
0
1
1
1
1
0
0
1
0x79
0x86
F
0
1
1
1
0
0
0
1
0x71
0x8E
2.2.4按键控制驱动模块和设计
按键模块共有四个按键,分别为S1、S2、S3、S4。
其中S1连接P1.0端口,通过按钮S1可以选择调整的位,选择调整小时或分钟或秒等。
S2按键可以在选择位的基础上增加数值并且长按S2可以快速增加数值。
S3按键主要的功能在于对于选定的位可以减小该位上的数值,长按可以快速减小该位上的数值。
S4按键的功能可以强制打铃和强制关闭打铃,以应对突发的状况例如时钟出错或者打铃设定时间出错的特殊情况等。
按键S1到S4的四个按钮的一端分别接地,另一端接单片机一个端口的四个引脚分别从P1.0到P1.3。
在按键的闸门处分别通过电阻连接电源。
在按钮没按下去的时候,电压为高电平。
当某一个按钮按下的时候,其对应的引脚就由高电平变成低电平,然后通过单片机扫描读取引脚的电平来判断按钮是否按下。
2.3系统硬件电路图
系统主要硬件电路作为驱动整个打铃系统的电路又分为七段数码显示电路和蜂鸣器驱动电路。
由显示七段数码显示电路和蜂鸣器驱动电路组成的系统硬件主要电路如图2-5所示
图2-5系统硬件电路图
该系统通过按钮控制(系统使用4只按键,3只按键用来调整时间,另一只为强制打铃按钮;调整选择键SET_KEY:
P1.0通过选择键选择调整位,选中位闪烁;增加键ADD_KEY:
P1.1按一次使选中位加1;减少键DEC_KEY:
P1.2按一次使选中位减1;如果长按ADD_KEY或DEC_KEY,识别后则进行调时快进,此时停止闪烁)。
AT89C51的计时和定时,在七段数码管上显示出来(实现24小时制电子钟,8位数码管显示,显示时分秒),再通过蜂鸣器(BEEP:
P3.7)来实现打铃。
第三章系统软件设计
AT89C51中的软件程序是使LED发光管系统工作的核心部分,在系统的软件设计中我们也用了模块化设计这一思路,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。
3.1系统软件的主要内容
系统软件设计由三个程序模块组成:
蜂鸣器打铃程序模块,七段显示管显示程序模块,按键程序模块。
3.2主程序流程设计
主程序初始化,并开放中断,然后执行中断服务程序。
实现24小时制电子钟,8位数码管显示,显示时分秒显示格式:
23-59-59(小时十位如果为0则不显示) 到预定时间启动蜂鸣器模拟打铃,蜂鸣器BEEP:
打铃方式分起床、熄灯铃和上、下课铃两种系统使用4只按键,3只按键用来调整时间,另一只为强制打铃按钮 调整选择键SET_KEY:
P1.0;通过选择键选择调整位,选中位闪烁增加键ADD_KEY:
P1.1;按一次使选中位加1减少键DEC_KEY;P1.2;按一次使选中位减1,如果长按ADD_KEY或DEC_KEY,识别后则进行调时快进,此时停止闪烁。
主程序流程设计图,如图3-1所示
图3-1主程序流程设计图
如图3-1所示主程序开始初始化后,就跳转到中断服务程序,如正常走时,则往下进行打铃时间的比较,继续向下执行对打铃的判断程序;如不正常走时,则直接转到显示程序。
这以后,继续执行按键的检测,若有键按下,则取值打铃;反之,则返回到中断服务程序的开始继续执行。
主程序清单见附录一。
第四章系统调试与测试结果分析
4.1系统调试
本系统的调试共分为三大部分:
硬件调试,软件调试和软硬件联调。
由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试。
先对硬件模块中的七段式数码管模块、蜂鸣器驱动模块以及按键控制按钮模块调试,然后在实验室中进行软件模块化调试,最后将各模块组合后进行整体测试。
4.1.1硬件调试
对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。
结果显示包括七段式数码管模块、蜂鸣器驱动模块以及按键控制按钮模块在内的硬件都能正常运行。
4.1.2软件