基于单片机的数字电子钟毕业设计_第1页
基于单片机的数字电子钟毕业设计_第2页
基于单片机的数字电子钟毕业设计_第3页
基于单片机的数字电子钟毕业设计_第4页
基于单片机的数字电子钟毕业设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的数字电子钟设计学 生:刘冰波指导老师:刘旭红(湖南农业大学东方科技学院,长沙 410128)摘 要:本文详细介绍了基于单片机的数字电子钟的设计,本电子钟可以实现日期、时间的显示和调整,带有整点语音播报和一个闹钟,并且可以显示当前气温。本设计包括硬件设计和软件设计两部分。主要硬件有:AT89S51单片机、DS1302时钟芯片、LCD1602显示管、DS18B20温度传感器、若干按键等。软件部分采用模块化的设计,包括中断模块、闹钟模块、语音模块、时间调整模块设计,并采用简单流通性强的C语言编写实现。用数字温度计DS18B20测量当前气温,在把实时数据显示在LCD1602上的同时,不断扫描按键,如果有按键按下,则对按键做出相应的响应。关键词:AT89S51单片机;数字钟;温度测量The Design of Digital Electronic Clock Base on SCMStudent:Liu Bing-boTutor:Liu Xu-hong(Oriental Science Technology College of Hunan Agricultural University, Changsha 410128)Abstract:This paper focuses on introducing the design of single chip processor based digital electronic clock, it can show and regulate time and date and bacause of integral point,voice broadcast and an alarm clock, it can also display the current temperature.The design consist of hardware and software design . The main hardware: AT89S51 MCU DS1302 clock chip, the LCD1602 display tube, DS18B20 temperature sensor, a number of buttons and so on. The software part of adopts modularization, including the interrupt module, alarm clock module, voice module, and adjusting time modular design, and simple liquid written in C language to achieve. Measuring the current temperature with digital thermometer DS18B20, it can show the current-time information in the LCD1602,at the same time, it constantly scan button, if the button is pressed, then it will make the appropriate response.Key words :AT89S51 microcontroller; Digital clock; Temperature measurement 1 前言“一寸光阴一寸金,寸金难买寸光阴”!时间对于我们每一个人都是非常宝贵的,所以钟表作为人们掌握时间的工具就显得十分重要!钟表的出现已经有几百年历史,尤其是摆钟和后来的怀表,可以称作钟表中的经典,不仅大方实用,而且制作精美。但近几十年,由于微电子的迅猛发展,这样的钟表已经销声匿迹,取而代之的则是电子时钟。电子时钟不仅精确度更高、外观小巧、功能更加完善,制作成本也是非常低。数字电子钟一个无处不在的电子产品,经过多年的发展技术已经相当成熟了。目前应用广泛的数字钟大多用AT89S51单片机为核心控制部件制作的,可以实现对年、月、日、时、分、秒的数字显示,通过扩展还可实现对电子钟所在地点的温度显示、定时闹钟功能和定时开关控制,广泛应用于车站、医院、机场、厕所等公共场所的时间显示。与机械钟表和3V电源半机械钟表相比,数字电子钟具有时间精确、停电不用校准、减少汞电池的使用等优点。现代社会,守时已不仅关系到一个人的职业生涯,还成了衡量一个人道德的标准。自从有了时间的概念,人们就开始研究如何计时。随着时代的发展,尤其是近些年来科学技术的飞速发展,计时的方式有了很大的进步,并且,这种技术日趋完善,现在以被广泛的应用在我们的生活、生产的方方面面。例如奥运会倒计时显示屏、铁路安全日显示屏、生产线看板、体育比赛计时屏、大型室外高亮度时钟等,这类产品覆盖银行、医院、地铁车站、体育运动、电视台、监控系统、高大建筑物等行业。通过一系列硬软件的设计一个基于AT89S51单片机的数字电子钟能实现日期、时间的显示和调整,带有整点语音播报和一个闹钟,并且可以显示当前气温。现在我国数字电子钟产业已经经过了30多年的发展已形成了近百家的产业规模,其中具有一定设计规模的单位有20多家,在国内电子钟行业中处于领先地位的数字电子钟品牌有漳州吉美电子有限公司电子钟;欧西亚电子钟;烟台未来塔钟有限公司电子钟。经过几十年的发展,数字电子钟衍生出各种各样类型和功能的电子钟,比如:LCD 数字钟、万年历、电波钟、多功能气像站钟、RF+RCC天气预报钟和霓虹钟等。中国数字电子钟在国内外市场上占据一席之地并赢得了广泛的赞誉。2 整体设计方案由于本系统要求具有语音播报功能,所以需采用十六位可处理语音信号的单片机。其主要设计思想是:整个系统用单片机为中央控制器,由单片机执行采集时钟芯片的时间信号并通过显示模块来输出信号及相关的控制功能。时钟芯片产生时钟信号,利用单片机的I/O口传给单片机;并通过I/O口实现LCD的显示。系统设有4个按键可以对时间星期年月日进行调整,还可以设置闹钟。整体框架如图1所示。语音模块LCD显示单片机电源模块复位电路时钟模块按键模块温度模块图1 系统整体框图Fig l System overall block diagram2.1 单片机的选择AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造1,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。 AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位2。 主要功能特性为:兼容MCS-51指令系统;4k可反复擦写(1000次)ISP Flash ROM;32个双向I/O口;4.5-5.5V工作电压;2个16位可编程定时/计数器;时钟频率0-33MHz;全双工UART串行中断口线;128x8bit内部RAM;2个外部中断源;低功耗空闲和省电模式;中断唤醒省电模式;看门狗(WDT)电路;灵活的ISP字节和分页编程;双数据寄存器指针。AT89S51单片机与其他品牌单片机相比有着性价比高,性能稳定的特点。(1) 51单片机的优点如果是作低成本的智能产品,51构架单片机的成本优势,还是无人能敌的。比如一片AT89S51和AT89S52单片机的批量价格大概是5元左右,STC89C52单片机的批量价格大概是6元多,这样的芯片价格是很低的。一片简单的74系列通用数字逻辑芯片还要1元左右,而一片51单片机内部集成有成千上万个晶体管开关电路。51构架已经诞生很多年了,到目前依然有着强大的生命力和实用性,从1976年51构架成功面市,多少年过去了,从90年代初全新闪存结构的AT89C51要90元一片,到现在AT89S51只要5元多一片,51依然大量的使用着。使用51单片机能够有效的控制智能产品整机的成本, 51系列还是有着无法替代的重要地位。(2) AT89S51与AT89C51的比较AT89S51相对与AT89C51新增加了很多功能,性能有了较大提升,价格基本不变,甚至比89C51更低! AT89S51具有ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境上拔除,可以在线烧写。AT89S51的最高工作频率为33MHz, 89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。AT89S51具有双工UART串行通道。AT89S51内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。 AT89S51具有双数据指示器。 AT89S51具有电源关闭标识。 AT89S51具有全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。 在兼容性方面,AT89S51向下完全兼容51全部字系列产品。比如8051、89C51等产品。也就是说不论教科书上采用的单片机是8051还是89C51还是MCS-51等等。在89S51上一样可以照常运行,这就是所谓的向下兼容。 AT89S51与AT89C51就如同INTEL的P3向P4升级一样,虽然都可以跑Windows98,不过速度是不同的。总之,无论是比其他品牌同类产品相比,还是与同品牌产品相比都显示出了AT89S51优良的性能,更高的性价比。所以AT89S51芯片成为了本系统的首选。2.2 单片机的基本结构AT89S51单片机基本结构主要包括了以下主要部件:(1) 控制器控制器是单片机的指挥控制部件,控制器的主要任务是识别指令,并根据指令的性质控制单片机各功能部件,从而保证单片机各部分能自动而协调地工作。单片机执行指令是在控制器的控制下进行的。首先从程序存储器中读出指令,送指令寄存器保存,然后送至指令译码器进行译码,译码结果送定时控制逻辑电路,由定时控制逻辑产生各种定时信号和控制信号,再送到单片机的各个部件去进行相应的操作。这就是执行一条指令的全过程,执行程序就是不断重复这一过程。控制器主要包括程序计数器、程序地址寄存器、指令寄存器IR、指令译码器、条件转移逻辑电路及时序控制逻辑电路。(2) 存储器AT89S51单片机存储器采用的是哈佛结构,即程序存储器空间和数据存储器空间截然分开,程序存储器和数据存储器各有自己的寻址方式,寻址空间和控制系统。这种结构对于单片机面向控制的实际应用极为方便,有利.在8051/8751弹片击中,不仅在片内集成了一定容量的程序存储器和数据存储器及众多的特殊功能寄存器,而且还具有极强的外存储器的扩展能力,寻址能力分别可达64KB,寻址和操作简单方便。(3) 并行I/O口MCS-51单片机共有4个双向的8位并行I/O端口(Port),分别记作P0-P3,共有32根口线,各口的每一位均由锁存器、输出驱动器和输入缓冲器所组成。实际上P0-P3已被归入特殊功能寄存器之列。这四个口除了按字节寻址以外,还可以按位寻址。由于它们在结构上有一些差异,故各口的性质和功能有一些差异。(4) 时钟电路与时序时钟电路用于产生MCS-51单片机工作时所必需的时钟信号。MCS-51单片机本身就是一个复杂的同步时序电路,为保证同步工作方式的实现,MCS-51单片机应在唯一的时钟信号控制下,严格地按时序执行进行工作,而时序所研究的是指令执行中各个信号的关系。3 数字钟的硬件设计3.1 最小系统设计单片机要正常运行,必须具备一定的硬件条件,其中最主要的就是三个基本条件:(1)电源正常;(2)时钟正常;(3)复位正常。AT89S51的引脚如图2所示。在AT89S51单片机的40个引脚中,电源引脚2根,晶振引脚2根,控制引脚4根,可编程输入输出引脚32根3。(1) 工作电源电源是单片机工作的动力源泉,对应的接线方法为;40脚(VCC)电源引脚,工作时接5电源,20脚(GND)为接地线。(2) 时钟电路时钟电路为单片机产生时序脉冲,单片机所有运算与控制过程都是在统一的时序脉冲的驱动下进行的,时钟电路就好比人的心脏一样重要。当采用内部时钟时,连接方法如图2所示,在晶振引脚XTAL1(19脚)和XTAL2(18脚)引脚之间接入一个晶振,两个引脚对地分别再接入一个电容即可产生所需的时钟信号,电容的容量一般在几十皮法,如30PF。图2 AT89S51的最小系统Fig 2 The AT89S51 minimum system (3) 复位电路在复位引脚(9脚)持续出现24个振荡器脉冲周期(即2个机器周期)的高电平信号将使单片机复位4。如图1所示电容C和电阻R构成了单片机上电自动复位电路。复位后,单片机从0000H单元开始执行程序,并初始化一些专用寄存器为复位状态值,受影响的专用寄存器如表1所示。表1 复位寄存器状态表Table 1 Reset register status table寄存器 状态 寄存器 状态PC ACCPSWSPDPTRP0P3IPIETMOD000H00H00H07H0000HFFHXXX00000HOXX00000H00HTC0NTL0TH0TL1TH1SCONSBUFPCON00H00H00H00H00H00H不确定0XXX0000HEA/VPP(31脚)为内外程序存储器选择控制引脚,当EA为低电位时单片机从外部程序存储器取指令;当EA接高电平时单片机从内部程序存储器取指令。AT89S51单片机内部有4KB可反复擦写1000次以上的程序存储器,因此要把EA接+5V高电平,让单片机运行内部的程序,这样就可以通过反复烧写来验证程序了。这就是AT89S51单片机最小化系统的连接,只要把编写好的程序烧写到单片机内部,并接上5V电源就可以正常运行了,在17脚接上的发光二极管可以用来验证系统是否正常。3.2 数字钟的外围电路设计3.2.1 时钟电路(1) 单片机时钟时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。本文用的是内部时钟方式。电路设计如图3所示。AT89S51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器5。图3 单片机时钟Fig 3 MCU clock(2) 时钟芯片采用带RAM的时钟芯片DS1302。该芯片可以进行时分秒的计数,具有100年日历,可编程接口,还具有报警功能和掉电保存功能,并且可以对其方便的进行程序控制【6】。DS1302它通过串行方式与单片机进行数据传送,向单片机提供包括秒、分、时、日、月、年等在内的实时时间信息,并可对月末日期、闰年天数自动进行调整;还拥有用于主电源和备份电源的双电源引脚,在主电源关闭的情况下,也能保持时钟的连续运行。另外,它还能提供31字节的用于高速数据暂存的RAM。有了这些特点,DS1302已在许多单片机系统中得到应用。 图4 DS1302引脚排列图Fig 4 The DS1302 pin arrangement diagramDS1302的引脚排列如图4所示,各引脚的功能见表2。表2 DS1302功能表Table 2 The DS1302function table引脚功能X1,X232768HZ晶振引脚端RST复位端I/O数据输入/输出端SCLK串行时终端GND地VCC2,VCC1主电源与后备电源引脚端DS1302时钟芯片内主要包括移位寄存器、控制逻辑电路、振荡器、实时时钟电路以及用于高速暂存的31字节RAM。DS1302与单片机系统的数据传送依靠RST,I/O,SCLK三根端线即可完成。其工作过程可概括为:首先系统RST引脚驱动至高电平,然后在作用于SCLK时钟脉冲的作用下,通过I/O引脚向DS1302输入地址/命令字节,随后再在SCLK时钟脉冲的配合下,从I/O引脚写入或读出相应的数据字节【7】。因此,其与单片机之间的数据传送是十分容易实现的。DS1302与单片机电路相连如图5所示。图5 DS1302与单片机接口图Fig 5 DS1302and MCU interface diagram3.2.2 LCD显示电路液晶显示模块具有体积小、功耗低、显示内容丰富等特点,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了。 1602B可以显示2行16个字符,有8位数据总线D0-D7,和RS、R/W、EN三个控制端口,工作电压为5V,并且带有字符对比度调节和背光【8】。该模块也可以只用D4-D7作为四位数据分两次传送。这样的话可以节省MCU的I/O口资源。各引脚的功能见表3。表3 LCD引脚功能图Table3 The LCD pin function diagram编号符号引脚说明编号符号引脚说明1VSS电源地9D2双向数据口2VDD电源正极10D3双向数据口3VL对比度调节11D4双向数据口4RS数据/命令选择12D5双向数据口5R/W读/写选择13D6双向数据口6E模块使能端14D7双向数据口7D0双向数据口15BLK背光源地8D1双向数据口16BLA背光源正极 从该模块的正面看,引脚排列从右向左为:15脚、16脚,然后才是114脚。VDD:电源正极,4.55.5V,通常使用5V电压;VL:LCD对比度调节端,电压调节范围为05V。接正电源时对比度最弱,接地电源时对比度最高,但对比度过高时会产生“鬼影”,因此通常使用一个10K的电位器来调整对比度,或者直接串接一个电阻到地;RS:MCU写入数据或者指令选择端。MCU要写入指令时,使RS为低电平;MCU要写入数据时,使RS为高电平【9】;R/W:读写控制端。R/W为高电平时,读取数据;R/W为低电平时,写入数据;E:LCD模块使能信号控制端。写数据时,需要下降沿触发模块。D0D7:8位数据总线,三态双向。如果MCU的I/O口资源紧张的话,该模块也可以只使用4位数据线D4D7接口传送数据。本充电器就是采用4位数据传送方式;BLA: LED背光正极。需要背光时,BLA串接一个限流电阻接VDD,BLK接地,实测该模块的背光电流为50mA左右;BLK: LED背光地端。它与单片机的连接如图6所示。 图6 LCD与单片机接口Fig 6 LCD and MCU interface3.2.3 语音录放电路系统要求能够有闹钟、语音播报、按键报时等功能。由单片语音录放芯片来做比较方便简单。ISD2500芯片,可以录放时间60秒。可以满足本设计的要求,性能良好所以选用【10】。ISD2500和1400语音电路一样,具有抗断电、音质好,使用方便等优点。它的最大特点在于片内E2PROM容量为480K(1400系列为128K),所以录放时间长;有10个地址输入端(1400系列仅为8个),寻址能力可达1024位;最多能分600段;设有OVF(溢出)端,便于多个器件级联。其封装如图7所示。系统要求能够有闹钟、语音播报、按键报时等功能。由单片语音录放芯片来做比较方便简单。ISD2500芯片,可以录放时间60秒。可以满足本设计的要求,但是ISD2500芯片的价格比较昂贵,在现有的条件下还不能实现。所以只作简单介绍以便做相关扩展应用,本设计只用简单的语音模块。图7 ISD封装图Fig 7 The ISD package diagram3.2.4 电源电路电源电路包括变压器、桥式整流器、电容和稳压器。通过变压器变压,使得220V电压变为12 V,在通过桥式整流,电容的滤波作用,稳压器的稳压作用,可输出5V的稳定电压【11】。如图8所示。图8 系统电源电路Fig 8 System power circuit在系统中要用到2个电源:单片机电源与DS1302时钟芯片电源所以有2路电源VCC和VCC1。 3.2.5 相关控制电路(1) 按键电路按键电路如图9所示,按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。图9 按键电路图Fig 9 Key circuit diagramP1.0口:表示功能移位键,按键选择要调整的时十位、时个位、分十位或分个位。 P1.1口:表示数字“+”键,按一下则对应的数字加1。 P1.2口:表示数字“-”键,按一下则对应的数字减1。 P1.3口:表示时间表的切换,程序默认为日常时间表,当按下该开关,使输入为低电平时,表示当前执行的是考试时间表。再按键,使按键抬起,输入维高电平时,表示当前执行的是日常作息时间表。(2) 复位电路 AT89S51单片机的复位是由外部的复位电路来实现的。复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号【12】。上电复位:上电复位电路是种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。图 10 复位电路Fig 10 Reset circuit如图 10所示,上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。3.2.6 温度测量电路(1)DS18B20的特性DS18B20 “一线总线”数字化温度传感器是DAAS最新单线数字温度传感器,同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-55+125,在-10+85范围内,精度为0.5。DS1822的精度较差为2。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,与前一代产品不同,新的产品支持3V5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。DS18B20可以程序设定912位的分辨率,精度为0.5。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色!DS1822与DS18B20软件兼容,是DS18B20的简化版本。省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为2,适用于对性能要求不高,成本控制严格的应用,是经济型产品。继“一线总线”的早期产品后,DS18B20开辟了温度传感器技术的新概念。DS18B20使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统【13】。(2)封装图及其引脚说明DS18B20的引脚封装图如图11所示。图11 DS18B20引脚封装图Fig 11 The DS18B20pin package diagram表4所示为引脚说明。表4 DS18B20引脚说明Table 4 the pin of DS18B20 Instruction引脚号符号引脚说明1GND接地2DQ单线运用的数据输入/输出引脚3VDD可选VDD引脚(3)温度测量DS18B20通过门开通期间内低温度系数振荡器经历的时钟周期个数计数来测量温度,而门开通期由高温度系数振荡器决定。计数器予置对应于-55的基数,如果在门开通期结束前计数器达到零,那么温度寄存器它也被予置到-55的数值将增量,指示温度高于-55。同时计数器用斜率累加器电路所决定的值进行予置。为了对遵循抛物线规律的振荡器温度特性进行补偿,这种电路是必需的。时钟再次使计数器计值至它达到零。如果门开通时间仍未结束,那么此过程再次重复。斜率累加器用于补偿振荡器温度特性的非线性,以产生高分辩率的温度测量。通过改变温度每升高一度,计数器必须经历的计数个数来实行补偿。因此,为了获得所需的分辩率,计数器的数值以及在给定温度处每一摄氏度的计数个数斜率累加器的值二者都必须知道。此计算在DS18B20内部完成以提供0.5的分辩率。温度读数以16位、符号扩展的二进制补码读数形式提供。数据在单线接口上串行发送,DS18B20可以以0.5的增量值,在0.5至+125的范围内测量温度。对于应用华氏温度的场合,必须使用查找表或变换系数。(4)单总线系统硬件接法单线总线是一种具有一个总线主机和一个或若干个从机从属器件的系统,DS18B20起从机的作用。根据定义,单线总线只有一根线,这一点是重要的,即线上的第一个器件能在适当的时间驱动。该总线为了做到这一点,第一个连接到单线总线上的器件必须具有漏极开路或三态输出。DS18B20的单线接口(I/O引脚是漏极开路的)。多站总线由单线总线和多个与之相连的从属器件组成。单线总线要求近似等于5k的上拉电阻。单线总线的空闲状态是高电平。不管任何原因,如果执行需要被挂起,那么若要重新恢复执行,总线必须保持在空闲状态。如果不满足这一点,且总线保持在低电平时间大于480us,那么总线上所有器件均被复位。存在脉冲使总线主机知道DS18B20在总线上,并已准备好工作。4 数字钟的软件设计4.1 系统软件设计内容本设计的软件程序包括主程序、中断子程序、闹钟设定子程序、时钟显示子程序以及延时子程序等。在整个系统中,在单片机的30H、31H和32H中存储当前时间的小时、分钟和秒。用LCD显示当前的时间,必须用到分字和合字,因此在33H、34H、35H、36H、37H和38H中存储当前时间的时十位、时个位、分十位、分个位、秒十位和秒个位,方便显示【14】。本设计有由四个轻触按键组成的小键盘,这些按键可以任意改变当前的状态。按功能移位键一次,表示当前要校对小时的十位;按第二次,表示当前校对的是小时的个位;按第三次,则表示校对的是分钟的十位;第四次,表示的校对的是分钟的个位。按下数字“+” 键和数字“-”键可在当前校对的数字上相应加上1或者减去1。系统软件采用C语言编写。时钟的最小计时单位是秒,但使用定时器的方式1,最大的定时时间也只能达到131ms。我们可把定时器的定时时间定为50ms。这样,计数溢出20次即可得到时钟的最小计时单位:秒。而计数20次可以用软件实现。秒计时是采用中断方式进行溢出次数的累积,计满20次,即得到秒计时。从秒到分,从分到时是通过软件累加并进行比较的方法来实现的。要求每满1秒,则“秒”单元中的内容加1;“秒”单元满60,则“分”单元中的内容加1;“分”单元满60,则“时”单元中的内容加1;“时”单元满24,则将时、分、秒的内容全部清零。实时时钟程序设计步骤:(1)选择工作方式,计算初值;(2)采用中断方式进行溢出次数累计;(3)从秒分时的计时是通过累加和数值比较实现的;(4)时钟显示缓冲区:时钟时间在方位数码管上进行显示,为此在内部RAM中要设置显示缓冲区,共6个地址单元。显示缓冲区从左到右依次存放时、分、秒数值;(5)主程序:主要进行定时器/计数器的初始化编程【15】,然后反复调用显示子程序的方法等待中断的到来,流程如图4-1所示;(6)中断服务程序:进行计时操作;(7)加1子程序:用于完成对时、分、秒的加操作,中断服务程序在秒、分、时加1时共三次调用加1子程序,包括:合字、加1并进行进制调整、分字。4.2 主程序主程序主要由main()组成通过对相关子程序的调用,实现了对时间的设置与修改、闹钟的设置与修改、LCD显示等主要功能。相关的调整是靠对功能键的判断来实现的。如对set键的判断,对up键的判断。主程序流程框图如图12所示。主要程 图12 主程序MAIN流程框图Fig 12 MAIN main program flow diagram 序段如下:void main(void) /d_to_b();/ds1302_write_time(); /对DS1302写数据 initTimer(); TR0=1; ET0=1; EA=1; LCD_init(); LCD_write_string(0,0,Wellcome to xnkd); LCD_write_string(0,1,123456789-mysy); while(1) if(sethour=timereg4)&(setmin=timereg5)&!fspk&timereg6=0) fspk=1; if(!set) /功能键判断.if(fset) if(!up) /调用1键子程序 if(!down) /调用1键子程序if(!enter)4.3 时钟设置子程序时钟的修改首先要按功能键并停止时间的输出显示【16】,否则系统继续刷新时间则无法修改,所以时间是不输出到LCD的。修改的部分以修改的为准,没有修改的通过中断保护起来。等修改成功后继续显示。主要流程图如图13所示,小时设置程序段如下:if(keycou=5) /设置小时LCD_write_string(0,0,Hour:); /将现在时间保存LCD_set_xy(5,0); /对小时重新设置LCD_write_char(0,timereg4/10+0x30); /设置完成后显示修改后的小时部分LCD_write_char(0,timereg4%10+0x30); 图13 时钟设置功能子程序流程框图Fig 12 Clock set function subprogram flow chart在时间修改功能中要用到1个数字加减的问题,把它做成1个子程序,流程如图14所示。通过判断功能键的状态也就是记录值来确定【17】。主功能键SET是采用循环的方式来实现的,当标识为相应的值时执行相应的操作。if(keycou=5)/小时加一if(timereg423) timereg4+;else timereg4=23;LCD_set_xy(5,0);LCD_write_char(0,timereg4/10+0x30);LCD_write_char(0,timereg4%10+0x30);图14 加1键修改子程序流程框图Fig 14 1key to modify the subprogram flow chart图15 时钟修改中断服务子程序流程框图Fig 15 Clock interrupt service subprogram flow chart modifications4.4 中断子程序MCS-51系列单片机有5个中断源,中断分为2个中断优先级,即高优先级和低优先级,每个中断源的优先级都可以由软件来设定【18】。中断地址如表5所示。程序中的中断流程框图如图15所示。表5 中断地址表、Table5 Interrupt address table五个中断源入口地址外部中断0(/INT0)0003HT0溢出中断000BH外部中断1(/INT1)0013HT1溢出中断001BH串口中断0023H/*/*Function: 外部中断1中断服务子程序*parameter:*Return:*Modify:/*/void Interrupt1 (void) interrupt 2Int1Flag = 1;/*/*Function: 定时器0中断服务子程序*parameter:*Return:*Modify:/*/void InterruptTime0(void) interrupt 1 TH0 = 0x06; /8msTL0 = 0xed;Time0Count+;/*/*Function: 定时器1中断服务子程序*parameter:*Return:*Modify:4.5 LCD显示子程序LCD显示子程序可对DS1302的时间进行设置和读取DS1302内部的时间、连续的读写操作、RAM的应用、充电部分的应用、写保护、抗干扰等可以实现上述功能。在编写中应注意的是进制的转换,下面是BCD码到十进制数的转换函数。/*/* 函数名:BCD_to_INT();/* 参 数:无/* 功 能:用于将时间BCD码转换为十进制码/*/ void BCD_to_INT() uchar i; for(i=0;i7;i+) bcd_int(timercuri); 4.5 ISD2500语音播报软件程序2500系列最多可分为600段,只要在分段录/放操作前(不少于300纳秒),给地址A0-A9赋值,录音及放音功能均从设定的起始地址开始,录音结束由停止键操作决定,芯片内部自动在该段的结束位置插入结束标志(EOM);而放音芯片遇到EOM标志即自动停止放音。2500系列地址空间是这样分配的:地址0-599作为分段用(见表6),地址600-767来使用,地址768-1023为工作模式选择。本设计主要通过单片机对ISD2560的控制实现指定地址入口的录音和循环播放。程序要实现下面的过程:开始”键按下后,即系统上电后,系统初始化,然后判断开始键是否按下,如表6 ISD2500 地址空间分配Table6 ISD2500 address space allocation十进制二进制信息时间(秒)A9A8A7A6A5A4A3A2A1A0256025752590000000000000005000001100105.06.257.50100000110010010.012.5015.00250001111101025.031.2537.503000010010110030.037.5045.00400011001000040.050.0060.00500011111010050.062.5075.00599100101011159.974.8489.85“果按下则单片机控制PD,P/R引脚低电平,并指向录音地址,启动录音过程。调用录音函数,录音函数为:/*录音函数*/Void record(void) CE = 0; /片选有效 PD = 0; /非节电模式 PR = 0 ; /录音当CE=0 时芯片使能输入引脚,使能所有的的录音操作。当PD=0 时使芯片开始工作,而进入非节电模式。当PR=0 时开始录音,录音时,由地址线提供起始地址,直到录音持续到CE或PD变高,或自动溢出。在预先设定的时间内,(小于60s)结束录音,松开“开始”键单片机控制P/R引脚回到高电平,即完成一段语音的录制。之后打开外部中断0,指定放音地址,启动放音程序,其放音函数为:/*放音函数*/ Void playback(void) CE = 0; / 片选有效 PD = 0; / 非节电模式 PR = 1; / 放音当CE=0 时芯片使能输入引脚,使能所有的的放音操作。当PD=0 时使芯片开始工作,而进入非节电模式。当 PR=1时为高电平,这时选择放音,这时由地址输入提供起始地址,放音持续到EOM位标志。5 调试与功能说明5.1 硬件调试在实际使用中,我们发现DS1302的工作情况不够稳定,主要表现在实时时间的传送有时会出现误差,有时甚至整个芯片停止工作。我们对DS1302的工作电路进行了分析,其与单片机系统的连接如图16所示。从图中可以看出,DS1302的外部电路十分简单,惟一外接的元件是32768Hz的晶振。通过实验我们发现:当外接晶振电路振荡时,DS1302计时正确;当外接晶振电路停振时,DS1302计时停止。因此,可能是32768Hz晶振是造成 DS1302工作不稳定的主要原因。图16 DS1302与单片机系统的连接图Fig 16 DS1302 and SCM system connection diagramDS1302时钟的产生基于外接的晶体振荡器,振荡器的频率为32768Hz。该晶振通过引脚X1、X2直接连接至DS1302,即DS1302是依靠外部晶振与其内部的电容配合来产生时钟脉冲的。由于DS1302在芯片本身已经集成了6pF的电容,所以,为了获得稳定可靠的时钟,必须选用具有6pF负载电容的晶振。然而,许多人在选用晶振时仅仅注意了晶振的额定频率值,而忽视了晶振的负载电容大小,甚至连许多经销商也不能提供所售晶振的负载电容。所以即使在使用中选用了符合32768Hz的晶振,但如果该晶振的负载电容与DS1302提供的6pF不一致时,就会影响晶振的起振或导致振荡频率的偏移,出现问题。利用辅助电容实现负载匹配的方法来解决当所选的晶振负载电容不是6pF时,可以采用增加辅助电容的方法提高或降低DS1302振荡器的电容性负载,使之与晶体所需的电容值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论