《打铃系统毕业论文.doc》由会员分享,可在线阅读,更多相关《打铃系统毕业论文.doc(42页珍藏版)》请在三一办公上搜索。
1、摘要在现如今快节奏的生活中,人们对于时间的要求越来越苛刻,很多时候都需要对时间进行规划,然后到时间点就要有时间提醒,这就必须用到时钟提醒装置,亦可称为打铃装置。打铃装置有很多种,比如手机的打铃系统,闹钟的机械打铃装置,广播打铃系统等等,但是日常生活中见得最多的还是校园的自动打铃系统。在学校生活中,每天上下课都离不开打铃系统的使用。打铃器可以为上下课的学生和老师们提供时间提醒,有利于师生对上课和学习的合理安排,同时,也可作为一个提醒学生们作息时间的时间表,让老师和学生都能有一个规律和科学的时间安排。因此,打铃系统的核心部分也是时钟部分,为系统提供时间基准。本设计主要是针对适用于校园打铃系统要求的
2、,其介绍了一种基于单片机的自动打铃系统的设计方法,系统以AT89C52单片机作为控制器,以DS1302时钟芯片作为系统提供时间,并在液晶显示器上显示,通过按键可以设定定时打铃时间。系统软件设计采用C语言来完成,C语言语法简洁,使用方便,用于完成软件设计非常方便。本文提出的设计方法电路简单、成本低廉、实用性强。关键字:AT89C52单片机、DS1302、液晶显示器、打铃器AbstractNow fast-paced life, the time more and more demanding, often need time to plan and then to the point in ti
3、me there should be reminded, which must be used to clock reminder can also be calledrang the bell device. Rang the bell device are many, such as the phone rang the bell system, mechanical bell device of the alarm clock, radio bell systems, etc., but in daily life appear or campus automatic bell syst
4、em. In school life, the last class of the day are inseparable from the bell system. The bell can provide time for the last class of students and teachers to remind conducive to a reasonable arrangement of the teachers and students to school and learning, but also as a reminder of the schedule of the
5、 students schedule, so that teachers and students cana law and scientific timing. Therefore, the core part is the clock part of the bell system, the system provides a time reference.This design is mainly for the applicable requirements of the campus bell system, introduced a microcontroller-based au
6、tomatic bell system design method, the system controller is AT89C52 SCM , the DS1302clock chip provide the system with time, and the LCD displayed on the monitor button can set the time interval of the timer rang the bell time. System software design using C language, C language syntax is simple, ea
7、sy to use, very convenient to be used to complete the software design. This paper presents the design circuit is simple, low cost, and practical.Key words: AT89C52 SCM the DS1302 LCD monitors Rang the bell 目录摘要IAbstractII1 绪论31.1 选题目的及意义31.2 技术发展概况31.3 论文内容与结构32 方案设计32.1 方案比较与选择32.1.1 系统方案选择32.1.2 时
8、钟芯片选择32.1.3 显示器件选择32.2 设计方案33 系统硬件设计33.1 硬件电路图33.2 时钟电路33.2.1 DS1307简介33.2.2 时钟电路设计33.3 按键电路33.4 单片机电路33.4.1 单片机简介33.4.2 单片机最小系统电路33.5 显示电路33.6 打铃电路34 系统软件设计34.1 软件设计流程图34.2 读取DS1307时间程序设计34.3 显示程序设计34.4 按键设定程序设计35 系统调试35.1 元件清单35.2 调试过程36 总结与展望3致谢3参考文献3附录3附录一:电路图3附录二:源程序31 绪论1.1 选题目的及意义随着现代科技的发展,管理
9、水平的完善,具有自动提示功能的打铃器能够为企业节省人力资源,减少开支,对做到一体化管理具有很大的帮助。而且自动打铃系统不断影响着我们的学习和生活,它已被广泛应用于各个学校中,它能够实现学校的办公自动化,便于学校的管理。用单片机控制的自动打铃器,充分发挥了体积小,价格便宜,功耗低可靠性好等优点,而且具有可改性,用于学校作息,方便了广大师生。目前自动打铃系统的研究和使用已经非常普及,之所以选这个课题就是看在他的成熟性和普遍性。在学校生活中,每天上下课都离不开打铃器的使用。打铃器可以为上下课的学生和老师们提供时间提醒,同时,也可作为一个提醒学生们作息时间的时间表,让大家有一个时间意识,形成规律的生物
10、钟,对自身的健康也有很大的好处的。对于那些上课精力过于集中、知识面拓展比较广的老师的拖堂现象也给了一个下课时间提醒,以免耽误学生们下一节课的上课时间。打铃器作为一个提醒人们时间的设备,自然离不开提供时间的系统,最原始的打铃器是人工根据时间通过敲钟来提醒,随着技术的发展,开始有了机械时打铃器。随着二十世纪电子技术的发展和二十一世纪半导体技术和集成电路的发展,电子技术开始渗入到各行各业,以电子表为主要基础提供时间基准的打铃器自然也是更新换代的更快,现在各种功能更多、使用更先进的打铃器层出不穷,有的还可以以音乐响铃代替传统的“呤呤”声,打铃器更多的向着智能型转变。设备的智能化离不开单片机的使用。单片
11、机简单的说就是一款微型的计算机,包含中央处理器CUP、随机存取存储器RAM、只读存储器ROM、I/O口、串行口等部分,可以作为一个系统的主控制器,将其他部分电路整合到一起组成一个系统,为控制提供智能化。基于以上原因,本课题设计了一款基于单片机的自动打铃系统,使用简单方便、功能齐全。本次的设计重点在于实现自动打铃系统的基本功能之外,争取设计出亮点,出新意,对我本身是个不小的挑战,因此对这个课题的研究不管是对于我本身还是对此项目在科技方面的发展都是有很重要的意义。1.2 技术发展概况1400年,第一批机械钟开始在欧洲流行,其始祖由意大利人乔瓦尼唐迪于1364年制成,他首次在机械钟里引入了轮式钟摆。
12、1511年,荷兰人彼得亨莱茵制成了第一块怀表,但它只有时针而没有分针和秒针,怀表和钟的结构其实是完全一样的,所不同的是它利用螺旋弹簧制成的发条驱动,从而摆脱了传统的钟摆,它靠小巧的“体形”,轻松进入人们的口袋。1582年前后,意大利的伽利略发明了重力摆,1657年,荷兰的惠更斯把重力摆引入机械钟,创立的摆钟。17281759年,英国的哈里森制造出高精度的标准航海钟。17751780年,英国的阿诺德创造出精密表用擒纵机构。1819世纪,钟表制造业已逐步实现工业化生产,并达到相当高的水平。1969年,由瑞士人创意、日本精工企业制作的第一块石英手表Seiko Astron诞生,石英手表的发明是基于科
13、学家们发现处于电路之中的石英晶体能产生频率稳定的振动以及可以通过特殊的切割方式来控制石英晶体振动的频率。一九七二年,美国的汉密尔顿公司发明了数字显示手表,马达和齿轮从手表中消失了。在我国,东汉元初四年张衡发明了世界第一架“水运浑象”,此后唐高僧一行等人又在此基础上借鉴改进发明了“水运浑天仪”、“水运仪象台”。至元明之时,计时器摆脱了天文仪器的结构形式,得到了突破性的新发展。机械钟表进入中国最早是在公元1601年,意大利传教士把鸣钟作为贡品献给当时的皇帝,揭开了中国人使用机械时钟的序幕。清朝康熙年间,中国成为世界上最大的钟表进口国。19世纪末期,我国造钟工艺达到了一个崭新的水平,1875年由上海
14、“美利华”作坊制造的南京钟以造型古朴典雅、民族风格鲜明和报时清脆、走时准确而闻名于海内外。我国近代机械制钟工业始于1915年,民族实业家李东山开办了中国时钟制造业的第一家钟厂,并在1918年自制成功第一批座挂钟投放市场。新中国成立后,1955年初在天津成功制造装配出2只钻成品手表,从那时起,结束了中国人只能修表、不能制表的历史。时至今日,人们已经可以通过测量原子的周期来计时了。目前市场上各种类型的自动打铃系统层出不穷,大部分的打铃系统都是基于单片机开发的,而且是结合各种设备的综合应用系统,能实现的功能更强大也更便捷,例如基于校园网的自动打铃系统,自动广播打铃系统,音乐打铃系统等等,但是基本功能
15、都相差不大,区别在于表现的形式有所不同。不过就目前而言打铃系统的功能由单一型发展成多功能多花样的通用型,而且核心技术不再局限于单片机,这更好的刺激了单片机行业的进步和革新,要想不被时代的脚步所抛弃就必须不断研究出新的东西,保持自身的优势。1.3 论文内容与结构本设计是以AT89C52单片机为核心的一款自动打铃系统,以时钟芯片来实现计时功能,然后单片机负责将时间送入显示电路显示,整个系统不是很复杂,其设计主要包括单片机控制模块、时钟电路和显示电路三个模块的设计,在设计前本人在学校图书馆看了很多关于单片机方面的书,也在网上查了不少资料,也查阅过跟此设计相似的论文或者期刊,得到了不少启发和经验,对本
16、人的设计工作有很大的帮助,能很好的把握设计的整体方向和细节,论文的结构如下:第二章:系统的设计方案,根据系统所要实现的功能,确定设计的基本方案。第三章:系统的硬件设计,主要介绍了硬件的电路图,各模块电路的设计,硬件元器件的结构,特点,引脚功能等。第四章:系统软件部分的设计,主要是对系统的主程序的结构图和流程图的解说。第五章:系统的调试,主要是介绍下系统硬件和软件调试过程中的问题和解决方案,还有调试步骤的细节问题的说明。第六章:论文总结。2 方案设计2.1 方案比较与选择2.1.1 系统方案选择方案一:采用AT89C2051芯片,它具有体积小、功耗小。含有中断、定时/计数器。本次设计需要非常大的
17、编程量,虽然其价钱相对便宜,但IO口数和存储空间相对较少,所以此芯片不利于系统的工作和系统功能的扩展。方案二:采用AT89C51芯片,它具有AT89C2051芯片的所有功能,且IO口数相对较多,价钱相对也比较便宜,但存储空间不是非常大,而本次的设计需要大量的存储空间。方案三:采用AT89C52芯片,它具有AT89C2051和AT89C51芯片的所有功能,且IO口数非常多,比AT89C2051和AT89C51多。价钱虽然比AT89C2051和AT89C51昂贵,但存储空间非常大,可以到达8K。而本次的设计正需要此容量的空间。 综上所述,我选择AT89C52芯片作为本次设计的主控芯片。2.1.2
18、时钟芯片选择方案一:采用DS12C887芯片,它的最大特点是有15种频率可编程方波输出功能,在某些情况下可作为简易的方波发生器,电路板上也设有输出拉环和插针,便于不同场合的连接需求,体积大价格相对较贵。方案二:采用DS1302, 它是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态RAM 通过简单的串行接口与单片机进,行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM 指示决定采用24或12小时格式DS1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1 RES复位2 I/O 数据线3 SC
19、LK串行时钟时钟/RAM 的读/写数据以一个字节或多达31个字节的字符组方式通信DS1302 工作时功耗很低保持数据和时钟信息时功率小于1mW。体积小价格便宜功能齐全很适合本次设计。综上所述,我选择DS1302芯片作为本次设计的时钟芯片。2.1.3 显示模块 方案一:采用LED数码管模块,它是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,d,p来表示。它具有结构简单价格便宜可靠性强等特点,但是本次设计需要时钟显示,需要的二极管过多
20、,显示的时间也不够清晰。 方案二:采用LCD1602液晶模块,1602 液晶模块内部的字符发生存储器已经存储了160 个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H 中的点阵字符图形显示出来,我们就能看到字母“A”。它具有显示字母数字,控制简单,成本较低,更适合时钟显示。综上所述,我选择LCD1602芯片作为本次设计的显示芯片。2.2 设计方案本设计系统框图如图2-1所示。系统以AT89S52单片机为控制器,通过DS1302来为系统提供标准时间,单片
21、机读取DS1302时间后送LCD1602液晶显示器显示,通过按键来设置打铃时间。当打铃时间到时,系统实现蜂鸣器提示。系统设计框图如下:显示电路单片机控制时钟电路打铃电路按键设定打铃时间图2-1 系统设计框图3 系统硬件设计3.1 硬件电路图根据系统设计框图,本设计硬件电路主要由时钟电路、按键设定电路、单片机电路、显示电路和打铃电路组成,电路原理图见附录一所示。系统工作原理:系统时间由时钟芯片DS1302来提供,单片机通过P3口读取了DS1302的时间数据后,经过处理得到时间显示模式的时钟数据,并通过P2口送液晶显示器显示出来。再通过扫描P1口是否有按键按下,有按键按下时,通过液晶显示器显示来设
22、置定时时间、打铃时间间隔,通过设定、移位、加数来实现。当到达打铃时间时,单片机引脚启动蜂鸣器工作以实现打铃功能。3.2 时钟电路3.2.1 DS1302简介DS1302 是由DS1202 改进而来增加了以下的特性双电源管脚用于主电源和备份电源供应Vcc1 为可编程涓流充电电源附加七个字节存储器它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域,下面将主要的性能指标作一综合实时时钟能计算2100 年之前的秒、分、时、日、月、年、日期、星期的能力还有闰年调整的能力31 8 位暂存数据存储RAM串行I/O 口方式使得管脚数量最少宽范围工作电压2.0 5.5V工作电流2.0V 时,小于30
23、0nA读/写时钟或RAM 数据时有两种传送方式单字节传送和多字节传送字符组方式8 脚DIP 封装或可选的8 脚SOIC 封装根据表面装配与TTL 兼容Vcc=5V可选工业级温度范围-40 +85与DS1202 兼容在DS1202 基础上增加的特性对Vcc1 有可选的涓流充电能力双电源管用于主电源和备份电源供应备份电源管脚可由电池或大容量电容输入附加的7 字节暂存存储器3.2.2 DS1302 的基本组成管脚描述 X1 X2 32.768KHz 晶振管脚 GND 地RST 复位脚I/O 数据输入/输出引脚SCLK 串行时钟 Vcc1,Vcc2 电源供电管脚 图3-1 DS1302管脚配置3.2.
24、3 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没有没有01R12
25、K10R24K11R38K图3-2 RS配置表图3-3 DS1302时钟3.2.4 时钟电路设计时钟电路如图3-4所示。时钟芯片的SCL引脚和SDA引脚分别由单片机的P3.1和P3.2引脚控制,单片机只需按照DS1302的工作时序来控制即可实现时间的写入和读取,其中DS1302的时钟端与数据端需外接上拉电阻,本设计选用5针排阻来充当上拉电阻。DS1302在任何数据传送时必须先初始化,把RST引脚置为高电平,然后把8位地址和命令装入移位寄存器,数据在SCLK的上升沿被输入,无论是读周期还是写周期开始8位指定40个寄存器中哪个将被访问到,在开始8个时钟周期,把命令字节装入揿位寄存器之后,另外的时钟
26、周期在闱时操作时输出数据,在写操作时写入数据,时钟脉冲的个数在单位字节下为8加8,在多字节方式下为8加字节数,最大可达248字节数。图34时钟电路为了提高对32个地址的寻址能力,可以把时钟或RAM寄存器规定为多字节方式,在多字节方式中,读或写从地址0的位0开始,必须管按数据传送的次序电先的8个寄存器。但是当以多个字节写RAM时,为了传送数据不必写所有31字节,不管是否写了全部31字节,所写的每个字节都将传送至RAM。时钟暂停:秒寄存器的位7定义位时钟暂停位,当它为1时,DS1302停止振荡,进入低功耗的备份方式,通常在对DS1302进行写操作时,停止振荡,当它为0时时钟将开始启动。AT89C5
27、2通过串口向DS1302写数据的程序框图如图3-5,其中,Px可以是单片机的任何一位I/O口,注意因为DS1302的数据发送或接收时序和AT89C52的串行口不完全一致,因此,需要在TXD的输出端加反相器,另外,接收数据时,不能以串行口的接收方式接收,必须将串行口当作普通I/O口进行数据接收.DS1302的晶振选用32.768KHZ,电容推荐值为6PF,因为振荡频率较低,也可以不接电容, 对计时精度影响不大。AT89C52 PX TXDRXDVcc1Vcc2 DS1302RSTSCLKI/O X2 图3-5 DS1302写数据的程序框图3.3 按键电路键盘是单片机应用中常用的一种输入器件,键盘
28、的按键有触点式和非触点式之分,按接口原理有编码键盘和非编码键盘之分。编码键盘主要用硬件来实现对按键的识别,非编码键盘是由软件来实现键盘的定义与识别。常用的按键一般为触点式按键,根据按键所连接的单片机引脚的电平高低来判断其是否按下。按功能分,键盘有独立按键和矩阵按键之分,独立按键每一路按键就占用单片机的一个控制引脚,单片机直接获取其信息;矩阵按键将按键排成由行和列组成的行列式,通过确认按键的行号和列号来确定每一路按键,利用少的单片机引脚控制更多的按键。本设计中按键电路如图3-6所示,由单片机的P1口控制按键电路。本设计中按键用于设定定时时间、打铃时间间隔,所以只需4路按键即可实现所需功能,采用独
29、立式按键即可。由于按键是机械式触点,所以在断开或闭合时,一般都有抖动产生,虽然这个抖动时间在我们看来非常短,但是单片机执行指令的速度为微秒级别,很容易会读取这个时间而将其判断为真正的工作状态,从而引起误判。因此,在设计中必须考虑到按键抖动的影响。常用的去抖动的方法有两种:硬件方法和软件方法。硬件方法一般是加电容或者RS触发器;软件方法是在单片机在检测引脚所连接的按键的工作状态时加一个延时程序再次确认,通过2次的确认就可以确保按键的工作状态不受机械抖动的影响了。图3-6 按键电路3.4 单片机电路3.4.1 单片机简介AT89C52是一种带8K字节闪烁可编程可擦除只读存储器的低电压,高性能CMO
30、S8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。引脚说明: VCC:供电电压。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
31、 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”时
32、,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0
33、外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。AT89C52各部分引脚图如下: 图3-7 AT89C52引脚图 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据
34、存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。为使该模块化自动打铃系统具有更加方便和灵活性,我们对系统的硬件做了精心设计。硬件电路包括七段式数码管驱动模块、蜂鸣器驱动模块、按钮控制模块等三大模块。3.4.2 单片机最小系统电路单片机最小系统由晶振电路和复位电路组成。晶振电路用于产生单片机工作时所需要的时钟信号,单片机的指令必须在时钟信号下按照时序执行。晶振电路通常用两种设计方式:内部振荡方式和外部振荡方式。内部振荡方式是在单片
35、机的XTAL1和XTAL2引脚外接一个晶体振荡器,与单片机内部的振荡器组成时钟信号;外部振荡方式是在外部将已有的脉冲信号引入单片机内,一般用于使单片机的时钟与外部信号保持同步。本设计选用内部振荡方式,在XTAL1和XTAL2引脚之间连接一个12MHz的晶振,再分别外接30p的对地电容。 单片机在启动时需要复位,使系统各器件处于初始状态。复位引脚为RST,当系统上电后晶振电路稳定后,RST引脚有一个高电平且持续2个机器周期以上,单片机系统就可以实现复位功能。复位一般有手动复位和上电复位功能。手动复位是在RST引脚设置按键,当按键按下时,RST引脚会有高电平,即可实现复位功能;上电复位是在RST引
36、脚连接一个电解电容接至电源,再接一个电阻接地,系统上电时,电容充电,只要电源的上升时间不超过1ms,就可以实现复位功能。本设计选用按键复位。图3-8 单片机最小系统电路3.5 显示电路LCD1602为字符型液晶显示器,分为带背光和不带背光两种,主要技术参数:显示容量,162个字符;芯片工作电压,4.5V-5.5V;工作电流,2.0mA;模块最佳工作电压,5V;字符尺寸,2.954.35mm。LCD1602共有16个引脚,引脚说明如下:1脚,VSS,电源地;2脚,VDD,电源正极,接+5V;3脚,VL,液晶显示偏压,接正电源时对比度较弱,接地时对比度最高;4脚,RS,数据/命令选择,高电平时选择
37、数据寄存器,低电平时选择指令寄存器;5脚,R/W,读/写选择,高电平时进行读操作,低电平时进行写操作,当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据;6脚,E,使能信号,当E端由高电平跳变为低电平时,液晶块执行命令;7-14脚,D0-D7,8位双向数据线;15脚,BLA,背光源正极;16脚,BLK,背光源负极。本设计中显示电路如图3-9所示。单片机的P2口作为LCD1602的数据线端口,P3口控制LCD1602的使能端。单片机读取数据后,通过控制LCD1602的读写端、复位端和使能端将其设置为写入数据
38、状态,再将数据通过P2口送入LCD1602实现显示功能。图3-9 显示电路3.6 打铃电路打铃电路一般用声音或音乐作为提醒,本设计选用蜂鸣器和LED灯实现声光双重打铃功能,电路如图3-7所示。打铃时间到时,单片机P3.3引脚置高,三极管9013导通,继而蜂鸣器和LED灯导通,实现蜂鸣和灯亮打铃功能。系统蜂鸣器的工作原理如下:当单片机端口输出高电平时,三极管B极(三极管的各个参数如3.6节所示)处于高电平,三极管不导通,蜂鸣器不响。当单片机端口输出低电平时,三极管B极处于低电平,三极管导通,蜂鸣器鸣响。在本系统中如果要运用到实际中的话本来是要把单片机端口P3.4口接上继电器再控制220V电源的电
39、铃的,但由于各种原因,在这次设计中我是用蜂鸣器来显示出打铃的效果的,蜂鸣器与单片机的连接图如图3-10所示。 图3-10蜂鸣器连接图4 系统软件设计4.1 软件设计流程图 系统软件设计流程图如图4-1所示。开始初始化读取DS1302的时间时间送液晶显示设定定时时间判断是否到达打铃时间NY蜂鸣器响结束图4-1 软件设计流程图程序设计过程:首先要定义单片机的引脚,然后初始化器件,再利用DS1307的读写时序读取时间数据。再利用按键进入时间设定状态,设定完时间后单片机通过比较时间是否到达设定的时间来确定是否到打铃时间,如果达到打铃时间,则控制蜂鸣器响LED灯亮。4.2 读取DS1302时间程序设计D
40、S1302中的时间寄存器地址编码为00H-07H,而具有掉电保护的RAM寄存器的地址编码为08H-3FH。当地址指针指向RAM的最后一个地址3FH时,若进行多字节操作,则地址指针将会复位而指向00H,这样原来存在00H的数据将会丢失。DS1302的各类时间数据均以BCD码的格式存储在相应的时间寄存器中,具体分配如表4-1所示:表4-1 DS1302寄存器分配00H01H02H03H04H05H06H07H秒分时星期日月年控制数单片机通过读取DS1302相应的寄存器字节,可以获取时钟和日历信息。时钟和日历信息以BCD码的形式存放在寄存器中,寄存器0的第7位为时钟停止位,振荡器停止工作。由于在初次
41、上电时,所有寄存器的状态是不确定的,所以在初始化时必须将寄存器0中的第7位设为0。DS1302可运行在12/24小时模式下,并由时间控制器中的相应位来进行控制。根据小时寄存器的第6位是0还是1,置为1时,是工作于12小时模式下,此时,小时寄存器的第5位为AM/PM标志。在24小时模式中,小时寄存器的第5位和第4位共同组成小时的十位数。时钟模块设计流程:单片机按如下顺序将数据写入到DS1302 寄存器或内部RAM 中:1、START 信号2、写SLA+W(0xd0)字节,DS1307 应答(ACK);3、写1 字节内存地址(在以下第四步写入的第一字节将存入到DS1302内该地址处,DS1307应
42、答);4、写数据(可写多个字节,每一字节写入后DS1302 内部地址计数器加一,DS1307 应答);5、STOP 信号单片机读取DS1302子程序流程图如图4-2所示:开始初始化DS1302读取时、分、秒写入相应数据DS1302应答结束图4-2单片机读取DS1302子程序流程图4.3 显示程序设计LCD1602的基本操作时序:读状态:输入:RS=L,RW=H,E=H;输出:D0-D7=状态字。写指令:输入:RS=L,RW=L,D0-D7=指令码,E=高脉冲;输出:无。读数据:输入:RS=H,RW=H,E=H;输出:D0-D7=数据。写数据:输入:RS=H,RW=L,D0-D7=数据,E=高脉
43、冲;输出:无。LCD1602初始化过程:延时15ms;写指令38H(不检测忙信号);延时5ms;写指令38H(不检测忙信号);延时5ms;写指令38H(不检测忙信号);以后每次写指令、读/写数据操作均需要检测忙信号;写指令38H,显示模式设置;写指令08H,显示关闭;写指令01H,显示清屏;写指令06H,显示光标移动设置;写指令0CH,显示开及光标设置。LCD有11条控制指令,如表4-2所示。表4-2LCD1602控制指令表序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制000000
44、1DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存储器地址0001字符发生存储器地址8置数据存储器地址001显示数据存储器地址9读忙标志或地址01BF计数器地址10向CGRAM或DDRAM写数10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容LCD1602内部自带有808位的RAM缓冲区,RAM地址映射如表4-3所示。表4-3 LCD1602的RAM地址映射表00010203040506070809404142434445464748490A0B0C0D0E0F10274A4B4C4D4E4F5067LCD1602写操作时序如图4-3所示。 图4-3 LCD1602写操作时序向LCD1602写数据程序子程序流程图如图4-4所示:开始初始化LCD将相应数据写入LCD是否写入完成?NYLCD相应位正常显示结束图4-4 向LCD1602写数据程序子程序流程图4.4 按键设定程序设计单片机读取按键的方式有2种:查询方式和中断方式。查询方式是利用单片机引脚不断查询是否有按键按下,如果有按键按下,利用延时程序去除抖动再次确认后,进入该按键对应的子程序执行命令。中断方式是利用单片机的外部中断功能来检测是否有按键按下。利用中断功能可以不用在主程序