基于51单片机的多功能电子钟设计(毕业论文).doc_第1页
基于51单片机的多功能电子钟设计(毕业论文).doc_第2页
基于51单片机的多功能电子钟设计(毕业论文).doc_第3页
基于51单片机的多功能电子钟设计(毕业论文).doc_第4页
基于51单片机的多功能电子钟设计(毕业论文).doc_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

基于51单片机的多功能电子钟设计 毕 业 设 计 中文题目 基于51单片机的多功能电子钟设计英文题目 design of multi-functionclock based on 51 mcu系 别:电子与电气工程系年级专业:07级电气工程及其自动化姓 名:阮志聪学 号:20070621236指导教师:刘 阳职 称:讲 师2011年 5月 24日毕业设计(论文)诚信声明书本人郑重声明:在毕业设计(论文)工作中严格遵守学校有关规定,恪守学术规范;我所提交的毕业设计(论文)是本人在刘阳指导教师的指导下独立研究、撰写的成果,设计(论文)中所引用他人的文字、研究成果,均已在设计(论文)中加以说明;在本人的毕业设计(论文)中未剽窃、抄袭他人的学术观点、思想和成果,未篡改实验数据。本设计(论文)和资料若有不实之处,本人愿承担一切相关责任。学生签名: 年 月 日基于51单片机的多功能电子钟设计基于51单片机的多功能电子钟设计【摘要】数字电子时钟是人们日常生活中不可或缺的必需品。本文以stc89c52为核心控制芯片,ds12887为时钟芯片,ds18b20为温度传感器,通过液晶显示器lcd1602实时显示时间及温度,通过按键设置年月日和星期以及定时闹钟,定时闹钟时间到自动发出警报。本设计的+5v电源采用lm1117电压转换元件,将电源适配器转换得到的12v电压直接变成5v电压供系统使用。程序的下载则是通过普中科技公司自制的pz-isp软件完成。经过测试,系统可以正常完成预定的功能。【关键词】电子时钟;单片机;ds12887;ds18b20; design of multi-function clock based on 51 mcu【abstract】digital electronicclock isan integral, necessary partof daily life.in this paper, stc89c52 chip is used as the core control chip, ds12887chip is used as the clock chip, ds18b20 chip is used as the temperature sensor and lcd1602 was used to diaplay time and temperature。 you can set year, month and time alarm clock through the four buttons.when the real time reach to the time clock,the system will warn automatically. the +5v power of the system is supplied by lm1117 voltage conversion device. the 12v voltage get from power adapter was transformed directly into 5v voltage for the system. the download of the process is accomplished through the pz-isp software made by puzhong technology company. after testing, the system can complete the scheduled function normally.【key words】electronic clock;mcu;ds12887;ds18b20目 录第一章 绪论11.1电子时钟的研究背景11.2电子时钟的国内外研究现状1第二章 总体方案42.1 系统的设计思路42.2 系统硬件描述42.3 系统软件描述42.4 设计流程和预期成果5第三章 硬件设计63.1 硬件芯片介绍63.1.1 单片机stc89c5263.1.2 实时时钟芯片ds12887103.1.3 温度传感器ds18b20143.1.4 液晶显示屏lcd1602183.2 系统硬件架构203.2.1 单片机最小系统213.2.2 时钟模块233.2.3 温度传感器模块243.2.4 液晶显示模块253.2.5 按键模块263.2.6 蜂鸣器报警模块27第四章 软件设计294.1 软件设计总体说明294.2 主程序软件实现294.2.1主程序流程图294.2.2主程序代码304.3 ds18b20模块软件实现324.3.1 ds18b20模块子程序流程图324.3.2 ds18b20模块子程序代码324.4 lcd1602模块软件实现354.4.1 lcd1602液晶显示模块子程序流程图354.4.2 lcd1602液晶显示模块子程序代码364.5 ds12887模块软件实现394.5.1 ds12887模块子程序流程图394.5.2 ds12887模块子程序代码404.6 报警模块软件实现514.6.1 报警模块子程序流程图514.6.2 报警模块子程序代码52第五章 系统调试565.1 最小系统的调试565.2 液晶显示模块和蜂鸣器报警模块的调试565.3 整体调试565.4 实物图56第六章 总结58致 谢59参考文献60附录a 电路原理图61附录b 程序头文件62第一章 绪论1.1电子时钟的研究背景20世纪末,电子技术得到了极速的发展,毫无疑问,在其推动下,现代电子产品以及各种高科技产品几乎渗透到了社会的各个领域,这有力地推动了社会生产力的发展和社会信息化程度以及综合科技水平的提高,但产品更新换代的频率也越来越快。随着科技的发展社会的进步和全球化竞争的日益激烈,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。多功能电子钟不管在性能还是在样式亦或是用途上都发生了重大的变化,许多电子钟都已具备电子闹钟、电子秒表、温度检测等功能。同时单片机在多功能数字钟中的应用已是非常普遍的1。多功能电子时钟除了具有时钟的功能外还可以包含对环境温度检测的功能。温度是一种最基本的环境参数。在各个行业生产及日常生活中,对温度的测量及控制始终占据着非常重要的地位。目前,典型的温度检测控制系统由模拟式温度传感器、a/d转换电路和各种单片机组成。由于模拟式温度传感器输出的模拟信号必须经过a/d转换环节转换为数字信号后才能与单片机等微处理器接口进行读写的操作,所以硬件电路会比较复杂,成本较高。而以ds18b20为代表的新型单线总线数字式温度传感器集温度测量和a/d转换于一体,这类传感器可以直接输出数字量,同时与单片机接口电路结构非常简单,可以广泛用于距离远、节点分布多的场合,具有较强推广应用价值。2 数字电子时钟是采用数字电路实现对时,分,秒数字显示的装置,广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可或缺的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,数字时钟的精度远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。例如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动启闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电器的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字时钟及扩大其应用,有着非常现实的意义。1.2电子时钟的国内外研究现状数字电子时钟,自从它发明的那天起,就成为人类的朋友,给人们的生活、学习、工作、娱乐带来极大的方便。但随着时间的推移,科学技术的不断发展,生活节奏越来越快,竞争日益激烈,人们对时间计量的精度要求越来越高,应用越来越广。可以说时间的准确已成为各行各业安全运行的基础,如果时间出现误差而不能及时校正,会造成一系列严重的后果和经济损失3 。 电子时钟的设计方法有多种,可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟,还可以利用对单片机编程来实现电子钟。其中,利用单片机实现的电子时钟具有硬件结构简单、编程灵活、便于功能扩展等特点。由单片机作为数字钟的核心控制器,可以通过它的时钟信号实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行定时、校时功能。输出设备显示器可以用液晶显示技术或者数码管显示技术4。温度是一种最基本的环境参数,日常生活和工农业生产中经常要检测温度。传统的方式是采用热电偶或热电阻,但是由于模拟温度传感器输出为模拟信号,必须经过a/d 转换环节获得数字信号后才能与单片机等微处理器接口,使得硬件电路结构复杂,制作成本较高。近年来,美国dallas 公司生产的dsl8b20 为代表的新型单总线数字式温度传感器以其突出优点广泛使用于仓储管理、工农业生产制造、气象观测、科学研究以及日常生活中。dsl8b20 集温度测量和a/d 转换于一体,直接输出数字量,传输距离远,可以很方便地实现多点测量,硬件电路结构简单,与单片机接口几乎不需要外围元件5。 智能温度传感器(亦称数字温度传感器)是上世纪90年代中期问世的。此类传感器是微电子技术、计算机技术和自动测试技术的结晶。目前,国际上已开发出多种智能温度传感器。智能温度传感器内部一般包含温度传感器、a/d转换器、信号处理器、存储器(或寄存器)和接口电路。有的产品还带多路选择器、中央控制器、随机存取存储器和只读存储器。智能温度传感器能实时更新并输出温度数据,适配于各种微控制器也就是通常所说的单片机(mcu),并且可通过软件来实现显示功能,其智能化取决于软件和硬件的综合开发水平,二者缺一不可。目前,新型温度传感器正从模拟式向数字式、集成化向智能化及网络化的方向发展6。21世纪后,智能温度传感器毫无疑问正朝着高精度、多功能、总线标准化、高可靠性及高安全性等高科技的方向迅速发展,开发虚拟传感器和网络传感器、研制更先进的单片测温系统已是刻不容缓7。在日常生活和自动控制系统中,我们时常会遇到对时间和温度实时监控的需求。这就给具有多种功能的时钟提供了市场,也有了市场开发的前景。本文给出了一种基于单片机实现带温度检测的电子时钟的设计方法和实现过程。第二章 总体方案2.1 系统的设计思路本次设计完成电子时钟年、月、日、时、分、秒的显示及环境温度测量等功能的基础上完成定时闹钟的功能。由于ds12887时钟芯片内含一个锂电池,所以断电情况可以运行十年以上不丢失数据,重新上电后不用校正时钟。硬件电路包括单片机最小系统电路、ds12887实时时钟芯片电路模块、lcd1602液晶显示模块、按键模块、ds18b20温度传感器模块、蜂鸣器报警电路模块;软件部分主要通过c程序的编程实现对时钟芯片进行时间数据的读和写,然后通过液晶显示程序将时间显示出来,通过按键操作实现功能的转换和屏幕的切换。设计中结合硬件、软件的分步调试,达到要求的控制效果。2.2 系统硬件描述基于单片机系统的电子时钟基本结构框图如图2-1所示:图2-1 系统基本结构框图该系统所需要的器件包括单片机stc89c52芯片一块,实时时钟芯片ds12887一块,温度传感器ds18b20一块,液晶显示屏lcd1602一块,双4输入与门芯片74ls21一块,蜂鸣器一个,12mhz的晶振一个,排针排线若干组,电容电阻若干,导线若干,发光二级管一个,三极管一个,按钮5个。2.3 系统软件描述系统程序实现三部分功能:时钟部分实现年、月、日、时、分、秒、星期显示和设置、闹钟功能;温度测量部分实现环境温度测量及显示;键盘部分主要为时钟和闹钟设置;功能整体程序流程框图如图2-2所示。图2-2 功能整体流程框图2.4 设计流程和预期成果该设计的主要流程如下:首先阅读大量参考文献,进行设计方案的确定,然后在protel 99se上进行原理图的绘制和修改,在电气检查无误的情况下,购买所需要的元器件(元器件应考虑裕量)。接着把元器件焊接到各个功能电路的模块上,并结合程序进行调试。最后将各个功能的电路程序组合起来,然后再进行总体调试直到成功。本设计能达到以下结果: 1)显示年、月、日、星期等日历相关信息。通过按键设置年月日和星期,以及定时闹钟。 2)掉电后时钟芯片正常运行,重新上电后不用校正时钟。 3)定时时间到达时,蜂鸣器报警;手动按任意键报警停止;如无人工按键,报警在1.5min后停止。 4)实时温度显示。第三章 硬件设计3.1 硬件芯片介绍3.1.1 单片机stc89c52(一)stc89c52功能特点8stc89c52是一种带8k字节闪烁可编程可擦除只读存储器的低电压,高性能comos8的微处理器,俗称单片机。该器件采用atmel搞密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。表3-1给出了其主要功能。表3-1 stc89c52主要功能主要功能特性兼容mcs51指令系统8k可反复擦写flash rom32个双向i/o口256x8bit内部ram3个16位可编程定时/计数器中断时钟频率0-24mhz2个串行中断可编程uart串行通道2个外部中断源共6个中断源2个读写中断口线3级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能(二)stc89c52各管脚介绍stc89c52各管脚如图3-1所示。图3-1 stc89c52管脚图(1)主电源引脚(2根)vcc(pin40):电源输入,接5v电源gnd(pin20):接地线(2)外接晶振引脚(2根)xtal0(pin18):片内振荡电路的输入端xtal1(pin19):片内振荡电路的输出端(3)控制引脚(4根)rst/vpp(pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ale/prog(pin30):地址锁存允许信号psen(pin29):外部存储器读选通信号ea/vpp(pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。(4)可编程输入/输出引脚(32根)stc89c52单片机有4组8位的可编程i/o口,分别位p0、p1、p2、p3口,每个口有8位(8根引脚),共32根。po口(pin39pin32):名称为p0.0p0.7。p0口是一个8位漏极开路的双向i/o口。作为输出口,每位能驱动8个ttl逻辑电平(晶体管-晶体管逻辑电平)。p1口(pin1pin8):名称为p1.0p1.7。p1 口是一个具有内部上拉电阻的8 位双向i/o 口,p1 输出缓冲器能驱动4 个 ttl 逻辑电平。对p1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。此外,p1.0和p1.2分别作定时器/计数器2的外部计数输入(p1.0/t2)和时器/计数器2 的触发输入(p1.1/t2ex),具体如下所示。 在flash编程和校验时,p1口接收低8位地址字节。p1引脚第二功能p1.0 :t2(定时器/计数器t2的外部计数输入),时钟输出p1.1 :t2ex(定时器/计数器t2的捕捉/重载触发信号和方向控制)p1.5: mosi(在线系统编程时用到)p1.6 :miso(在线系统编程时用到)p1.7 :sck(在线系统编程时用到)p2口(pin21pin28):名称为p2.0p2.7。p2 口是一个具有内部上拉电阻的8 位双向i/o 口,p2 输出缓冲器能驱动4 个 ttl 逻辑电平。对p2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行movx dptr)时,p2 口送出高八位地址。在这种应用中,p2 口使用很强的内部上拉发送1。在使用 8位地址(如movx ri)访问外部数据存储器时,p2口输出p2锁存器的内容。在flash编程和校验时,p2口也接收高8位地址字节和一些控制信号。p3口(pin10pin17):8位准双向i/o口线,名称为p3.0p3.7。p3 口是一个具有内部上拉电阻的8 位双向i/o 口,p2 输出缓冲器能驱动4 个 ttl 逻辑电平。对p3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。 p3口亦作为stc89c52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,p3口也接收一些控制信号。端口引脚 第二功能p3.0 rxd(串行输入口)p3.1 txd(串行输出口)p3.2 into(外中断0)p3.3 int1(外中断1)p3.4 to(定时/计数器0)p3.5 t1(定时/计数器1)p3.6 wr(外部数据存储器写选通)p3.7 rd(外部数据存储器读选通)此外,p3口还接收一些用于flash闪存编程和程序校验的控制信号。rst复位输入。当振荡器工作时,rst引脚出现两个机器周期以上高电平将是单片机复位。ale/prog当访问外部程序存储器或数据存储器时,ale(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ale仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ale脉冲。对flash存储器编程期间,该引脚还用于输入编程脉冲(prog)。如有必要,可通过对特殊功能寄存器(sfr)区中的8eh单元的d0位置位,可禁止ale操作。该位置位后,只有一条movx和movc指令才能将ale激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ale禁止位无效。psen程序储存允许(psen)输出是外部程序存储器的读选通信号,当stc89c52由外部程序存储器取指令(或数据)时,每个机器周期两次psen有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次psen信号。ea/vpp外部访问允许,欲使cpu仅访问外部程序存储器(地址为0000h-ffffh),ea端必须保持低电平(接地)。需注意的是:如果加密位lb1被编程,复位时内部会锁存ea端状态。如ea端为高电平(接vcc端),cpu则执行内部程序存储器的指令。flash存储器编程时,该引脚加上+12v的编程允许电源vpp,当然这必须是该器件是使用12v编程电压vpp。3.1.2 实时时钟芯片ds12887 (一)ds12887功能特点9 10ds12887是美国达拉斯半导体公司推出的时钟芯片,此芯片是基于cmos技术的,把时钟芯片所需的晶振和外部锂电池相关电路集于芯片内部,这无疑大大简化了外围电路,同时它与目前ibm at计算机常用的时钟芯片mc146818b和ds1287芯片引脚兼容,可直接进行对等交换。其主要功能如下: (1)内含一个锂电池,断电可以运行十年,并且不会丢失数据,时间功能正常运行。 (2)可计时至2100年前的秒、分、时、星期、日、月、年等日历信息并带有闰年补偿功能。 (3)可通过编程选择bcd码或者二进制数表示日历和定时闹钟。 (4)可通过编程选择12小时或24小时制,12小时时钟模式带有pm和am提示,此外还有有夏令时功能。 (5)可选择motorola和intel总线时序。 (6)内部共有128个ram单元,这在常用的实时时钟中属于较大的。其中14个字节作为时钟和控制寄存器,114字节为通用ram,所有aram单元数据都具有掉电保护功能。 (7)可编程并选择的方波信号输出 (8)中断信号输出(irq)和总线兼容,定时闹钟中断、周期性中断、时钟更新周期结束中断可分别由软件屏蔽,也可分别进行测试。(9)三种可供选择的中断方式 -时间性中断 -周期性中断-时钟更新结束中断(二)ds12887的原理及管脚说明图3-2显示了ds12887管脚排列图。下面说明管脚功能: 图3-2 ds12887管脚图gnd:电源地vcc:直流电源+5v电压。若外部提供的vcc电源小于4.25v,读写会即刻被禁止,但芯片内部的计时仍在继续,重新通上+5v电源后,通过编程即可显示当前时间;若外部提供的vcc电源小于3v,电源方式切换为内部锂电池提供,同样可以保持芯片内部计时仍然继续。 mot(模式选择):接vcc(+5v)时,芯片在motorola时序下工作,接gnd(地)时,芯片在intel时序下工作。 sqw(方波信号):通过15个分频器抽头中的13个提供方波输出。 ad0ad7(双向地址/数据复用线):数据和控制指令都通过此8个引脚来于单片机等控制器传输。as(地址选通输入):地址锁存引脚。 ds(数据选通或读输入):该引脚有两种操作模式,视该芯片是出于motorola模式或者intel模式,当使用motorola时序时,ds是一正脉冲,出现在总线周期的后段,称为数据选通;若为intel时序,ds称作(rd),rd与典型存贮器的允许信号(oe)的定义相同。 r/w(读/写输入):r/w管脚同样也有两种操作模式。此引脚的两种模式与ds相似。 cs(片选输入):在访问ds12887的总线周期内,片选信号必须保持为低。 irq(中断申请输入):低电平有效,可作微处理的中断输入。没有中断条件满足时,irq处于高阻态。irq线是漏极开路输入,要求外接上拉电阻。 reset(复位输出):若要保证ds12887有效复位,必须让该脚保持低电平时间大于200ms,。(三)ds12887的内部功能(1) 地址分配图 ds12887的存储器分配图如图3-3所示,其中00h-09h为时钟信息和闹钟信息寄存器,0ah-0dh为四个控制寄存器图3-3 ds12887存储器分配图(2) 控制寄存器 寄存器a 表3-2 ds12887寄存器auip:更新位。若uip为1,实时时钟的更新转换发生的很快,而当uip为0,更新转换至少在244s内不会发生。 dv0,dv1,dv2:用于晶振和复位分频链的开启。表3-3 ds12887周期中断率和方波频率 rs3,rs2,rs1,rs0:频率选择位,通过这四个位用户可以: a 用pie位允许中断; b 用sqwe位允许sqaw输出; c 二者同时允许并用相同的频率; d 二者都不允许寄存器b 表3-4 ds12887寄存器bset:此位为0,时间更新正常进行,每秒计数走时一次,当此位为1,时间更新被禁止,程序可对芯片进行初始化的操作和编程。 pie:周期中断允许位,pie为1,则允许以选定的频率拉低irq管脚,pie为0,则禁止中断。 aie:定时闹钟中断允许位,aie为1,允许中断,否则禁止中断。uie:更新结束中断允许位,aie为1,允许中断,否则禁止中断。 sqwe:方波允许位,置1选定频率方波从sqw脚输出;为0-时,sqw脚为低。 dm:数据模式位,dm为1表明为十进制数据,而0表明是bcd码的数据。 24/12:小时格式位,1表明24小时制,而0表明12小时制。 dse:夏令时允许位,当dse置1时允许两个特殊的更新,在四月份的第一星期日,时间从1:59:59am时改变为3:00:00am;在十月的最后一个星期日的1:59:59am时改变为1:00:00am。当dse位为0,这种特殊修正不发生。寄存器c 表3-5 ds12887寄存器cirqf:中断申请标志位。当下列表达式中一个或多个为真时,置1。 pf=pie=1;af=aie=1;uf=uie=1; 即:irqf=pfpie+afaie+ufuie 只要irqf为1,irq管脚输出低 ,程序读寄存器c以后或reset管脚为低后,所有标志位清零。 af:定闹中断标志位,只读,af为1表明现在时间与定闹时间匹配。 vf:更新周期结束标志位。vf为1表明更新周期结束。 bit0bit3:未用状态位,读出总为0,不能写入。寄存器d 表3-6 ds12887寄存器dvrt:内部锂电池状态位,平时应总读出1,如出现0,表明内部锂电池耗尽。 bit0bit6:未用状态位,读出总为0,不能写入。3.1.3 温度传感器ds18b20(一)ds18b20功能特点ds18b20具有超小体积和超低硬件开销,精度高,抗干扰能力强等优点。具有全数字温度转换及输出,单总线数据通信,最高12 位分辨率,检测温度范围大的特征,是开发温度相关产品的很好的选择。其主要功能如下:(1)独特的单线接口仅需一个端口引脚进行通讯(2)简单的多点分布应用(3)无需外部器件(4)可通过数据线供电(5)零待机功耗(6)测温范围-55+125,以0.5递增。华氏器件-67+2570f,以0.90f 递增(7)温度以9 位数字量读出(8)温度数字量转换时间200ms(典型值)(9)用户可定义的非易失性温度报警设置(10)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件(11)应用包括温度控制、工业系统、消费品、温度计或任何热感测系统(二)ds18b20内部工作原理 ds18b20内部结构主要由四部分组成:64位光刻rom 、温度传感器、非挥发的温度报警触发器th和tl、配置寄存器。如图3-4所示。图3-4 ds18b20原理图ds18b20引脚定义:(1) dq为数字信号输入/输出端(2) gnd为电源地(3) vdd为外接供电电源输入端(在寄生电源接线方式时接地) 图3-5 ds18b20引脚图图3-6给出了ds18b20测温原理:ds1820用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器被预置到对应于-55的一个值。如果计数器在门周期结束前到达0,则温度寄存器(同样被预置到-55)的值增加,表明所测温度大于-55。同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到0,如果门周期仍未结束,将重复这一过程。斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨力。这是通过改变计数器对温度每增加一度所需计数的的值来实现的。因此,要想获得所需的分辨力,必须同时知道在给定温度下计数器的值和每一度的计数值。ds1820 内部对此计算的结果可提供0.5的分辨力。温度以16bit 带符号位扩展的二进制补码形式读出。数据通过单线接口以串行方式传输。ds1820 测温范围-55+125,以0.5递增。如用于华氏温度,必须要用一个转换因子查找表。图3-6 ds18b20测温原理图 ds18b20与单片机的硬件连接有两种方法:一是vdd接外部电源,gnd接地i/o与单片机的i/o线相接;二是用寄生电源供电,此时vdd和gnd接地,i/o接单片机i/o。无论是那种供电方式,i/o线都要接4.7k左右的上拉电阻。图3-7中,ds18b20采用寄生电源方式,其vdd和gnd均接地,而图3-8中,ds18b20采用外接电源方式,其vdd端用3-5.5v电源供电。本设计采用3-8所示接线,即外接电源工作方式11。 图3-7 ds18b20接寄生电源图 图3-8 ds18b20外接电源图3.1.4 液晶显示屏lcd1602 (一)lcd1602特点说明12 13液晶显示模块由于具有低功耗、寿命长、体积小、显示内容丰富、价格低、接口控制方便等优点,因此在各类电子产品中被极广泛地推广和应用。字符型液晶显示模块是一类专门用于显示字母、数字、符号等点阵式液晶显示模块。本系统设计采用字符型液屏显示模块lcd1602 作为显示器件,这样不仅简化了系统的硬件设计,而且极大地提高了系统的可靠性。字符型液晶显示模块lcd1602是单片机应用设计中最常用的信息显示器件。lcd1602 可以显示两行,每行16 个字符,采用5v 电源供电,外围电路配置简单,价格便宜,具有很高的性价比14。(二)lcd1602功能介绍 lcd1602各引脚功能如表3-7所示。表3-7 lcd1602管脚功能表(1)基本操作时序:lcd1602 读写操作时序总体上来说是比较简单的,掌握其有两种方法:一种是直接看时序图,另外一种方法是直接记忆和总结读写时电平高低和变化。很显然第二种更简单、直接,下面就列出典型读写的时序要求,以方便编写程序。读状态-输入:rs=l,r/w=h,e=h 输出:d0-d7=状态字写指令-输入:rs=l,r/w=l,d0-d7=指令码,e=高脉冲 输出:无读数据-输入:rs=h,r/w=h,e=h 输出:d0-d7=数据写数据-输入:rs=h,r/w=l,d0-d7=数据,e=高脉冲 输出:无(2)状态字说明: 表3-8 状态字表对控制器每次进行读写操作之前,都必须进行读写检测,确保sta7为0(3)指令说明: 表3-9 显示模式设置表表3-10 显示开/关及背光灯设置表(4)数据控制控制器内部有一个数据地址指针,用户可通过它们来访问内部的全部80字节ram(5)数据指针设置 表3-11 数据指针设置表(6)其他设置 表3-12 其他设置指令表(三)lcd1602初始化过程(1)延时15ms(2)写指令38h(不检测忙信号)(3)延时5ms(4) 写指令38h(不检测忙信号)(5)写指令5ms(6) 写指令38h(不检测忙信号)(7)之后每次写指令、读/写数据操作之前均需检测忙信号(8)写指令38h:显示模式设置(9)写指令08h:显示关闭(10) 写指令01h:显示清屏幕(11) 写指令06h:显示光标移动设置(12) 写指令0ch:显示及光标设置3.2 系统硬件架构本设计以模块化的方式来进行硬件电路的设计和调试。单片机的模块化就是把系统分成各个具有独立功能又可以互相衔接的简单模块,将复杂难懂的指令、语法、编程及其电路分解,使设计简单化15。本设计的电路模块可以分为单片机最小系统模块,时钟模块,温度传感器模块,液晶显示模块,按键模块,蜂鸣器报警模块。3.2.1 单片机最小系统本设计的单片机最小系统主要包括stc89c52芯片,晶振电路和复位电路。(一)晶振电路 最小系统晶振电路如图3-9所示。 图3-9 晶振电路图stc89c52内部有一个用于构成振荡器的高增益反相放大器,引脚xtal0和xtal1分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式的时钟电路如图3-9所示,在xtal0和xtal1引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在1.212mhz之间选择,电容值在530pf之间选择,电容值的大小可对频率起微调的作用。单片机晶振两个电容的作用:这两个电容叫晶振的负载电容,分别接在晶振的两个脚上和对地的电容,一般在几十pf。它会影响到晶振的谐振频率和输出幅度。晶振的负载电容=(cd*cg)/(cd+cg)+cic+c式中cd,cg为分别接在晶振的两个脚上和对地的电容,cic(集成电路内部电容)+c(pcb上电容)经验值为3至5pf。(二)复位电路 最小系统复位电路如图3-10所示。 图3-10 复位电路图无论使用哪种类型的单片机,总要涉及到单片机复位电路的设计而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的16。复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经过一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。单片机复位电路参数的选定须在振荡稳定后保证复位高电平持续时间大于2个机器周期。单片机复位电路主要有四种类型:微分型复位电路;积分型复位电路;比较器型复位电路;看门狗型复位电路17。(三)最小系统整体图最小系统整体电路如图3-11所示。图3-11 最小系统电路图3.2.2 时钟模块本设计中的ds12887芯片ad0-ad7引脚与stc89c52芯片的p2口相连接。mot引脚接地,为intel总线时序方式。因此r/w和ds引脚也为对应intel的操作模式。时钟模块电路如图3-12所示。 图3-12 时钟模块电路图3.2.3 温度传感器模块温度传感器ds18b20的接法很简单,它的dq引脚与stc89c52芯片的p1.7引脚相连接。这里只用到一个温度传感器,若要使用多个则只需将所有的ds18b20的i/o口接在一起即可,在具体操作时,通过读取每个芯片的内部序列号来识别18。温度传感器模块电路如图3-13所示。图3-13 温度传感器模块3.2.4 液晶显示模块液晶lcd1602的d0-d7引脚与stc89c52芯片的p2口相接,而控制引脚rs,r/w,cs则分别接p1.6,p1.5,p1.4。引脚3接一个1k的电位器来调整对比度,从而达到合适的背光灯对比度。液晶显示模块电路如图3-14所示。图3-14 液晶显示模块3.2.5 按键模块74ls21芯片为两组 4 输入与门(正逻辑)。本设计中的四个按键分别接到74ls21芯片的1a,1b,1c,1d,即4输入与门的4个输入。而74ls21的输出1y则接到stc89c52芯片的p3.2(int0)引脚,由于该引脚为低电平有效,当警报发生时按下四个按键中任意一个都会使输出1y变为低电平,则芯片发生中断,报警停止。同时,四个按键key1-key4也接到stc89c52芯片的p1.0-p1.3起到调节时间日期等功能。四个按键中s1为切换键,s2为设定键,s3为上调键,s4下调键。按键模块电路如图3-15所示。 图3-15 按键模块3.2.6 蜂鸣器报警模块蜂鸣器报警模块的作用:当定时闹钟时间到时,蜂鸣器发出预设的声音,而发光二极管则会随着音乐闪烁。本模块采用pnp三极管为蜂鸣器放大电流,基极通过4.7k电阻与单片机stc89c52的闲置引脚p3.5相连接,集电极直接接地,发射极接发光二极管和蜂鸣器。 报警模块电路如图3-16所示。图3-16 报警模块第四章 软件设计4.1 软件设计总体说明本系统的程序采用c语言编写,为了便于修改和调试,系统软件采用模块化设计,程序的编写编译在wave6000软件中完成。首先对stc89c52、ds12887、lcd1602、ds18b20进行初始化,日历和温度信息通过lcd1602显示出来,当当前时间与设定的闹钟时间相同后,lcd1602上显示的时间停止,但,实际上芯片内部的时间仍然在走。时钟芯片向单片机发出中断请求,单片机通过报警模块进行警报,此时,若按下四个按键中的任意一个,报警停止,lcd1602显示的时间继续精确显示。20系统中有四个按键,即:设置键s1、切换键s2、上调键s3、下调键s4。(1)按下s1键,系统进入设置状态,再按下s2键可在除了温度外的项目,如年、月、日、时、分、秒、星期、闹钟上停留,此时再按下上调键s3即可进行加一操作,按下下调键s4即可进行减一的操作。(2)同时按下s1键和s2键会将当前的时间恢复到程序中设定的默认时间。(3)同时按下s3键和s4键可对闹钟进行开启和关闭的操作。4.2 主程序软件实现4.2.1主程序流程图图4-1 主程序流程图4.2.2主程序代码void main()lcd_init(); /lcd初始化start_calendar (); /日历开启initial_irq (); /中断开启enable_set = f; /设置禁止while(1)if ( enable_play_song ) /铃声使能play_song(); /播放铃声enable_play_song = f; /禁止铃声update_display_data (); /更新显示数据display_calender_and_temp (); /显示日历及温度if (enable_set) /设置使能delay (100); /延时100msupdate_set_display (cur_set_pos); /更新设置的信息display_calender_and_temp (); /显示日历及温度信息delay (100); /延时100msdate_timetime_sign_pos = :; /时间的时和分之间显示:continue; /继续循环delay (200); /延时200msflash_time_sign ();

温馨提示

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

评论

0/150

提交评论