电子毕业论文-电子万年历毕业设计_第1页
电子毕业论文-电子万年历毕业设计_第2页
电子毕业论文-电子万年历毕业设计_第3页
电子毕业论文-电子万年历毕业设计_第4页
电子毕业论文-电子万年历毕业设计_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

2013 届本科毕业设计(论文)绪 论随着电子技术的迅速发展,特别是随大规模集成电路出现,给人类生活带来了根本性的改变。尤其是单片机技术的应用产品已经走进了千家万户。电子万年历的出现给人们的生活带来了诸多方便。如今的万年历不仅仅是作为看时间来用,而是向着多元化、多功能的方向发展。例如,有温度的显示,附带有成型的风景画作为装饰物等等。当今信息科学技术日新月异,电子信息类专业知识更新尤为迅猛。想要成为具有国际竞争能力的高水平的信息技术人才,促进我国信息产业发展和国家信息化水平的提高,就必须全面的学习新知识,提高自己的综合实力。而本次设计就是一个综合性,具有创新、发展的课题。本设计采用 AT89S51 作为主控芯片,此芯片具有高功率、底损耗等优点,是理想的主控芯片。时钟芯片使用了美国 DALLAS 公司推出的与 MC146818 兼容,寄存器存取速度快,在主机掉电时可用来保存重要数据的实时时钟芯片DS12C887,采用 DS12C887 作为主要计时芯片,可作到计时准确。温度模块采用美国 DALLAS 公司生产的一线式数字温度传感器 DS18B20,芯片内有一个 64 位的 ROM,其中存有各个器件自身的序列号,作为器件独有的 ID 号码,DS18B20简化了测温器件,使用更加方便,可做到准确测量温度。目前市场上有 LCD 和LED 数码管显示两种,本设计选择成本较低的 8 段共阳 LED 数码管。设计中主要要解决的问题有三个:第一:如何用单片机控制时钟芯 DS12C887 正常工作。 设计中使用的时钟芯片是美国 DALLAS 公司推出的与 MC146818 兼容,寄存器存取速度快,在主机掉电时可用来保存重要数据的实时时钟芯片DS12C887,采用 DS12C887 作为主要计时芯片,可做到计时准确。对 DS12C887的控制,主要是对其的初始化和对其数据的读取。DS12C887 采用连续工作制,一般无需每次都初始化,即使系统复位也是如此。但初始化时,首先应禁止芯片内部的更新周期操作。所以,应先将 DS12C887 状态寄存器 B 中的 SET 位置 1,然后初始化。DS12C887 处于正常工作状态时,每秒即产生一个更新周期。在该周期内,微处理器不能读时标寄存器中的内容,否则将得不到确定数据。为了采样时标寄存器中的数据,采用两种避开在更新周期内访问时标寄存器的方法。第一种是利用更新周期结束发出的中断。第二种是利用寄存其 A 中的 UIP 位来指示芯片是否处于更新中期。第二:对温度传感器 DS18B20 的读取及控制。DS18B20 温度传感器是美国 DALLAS 半导体公司推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据要求通过简单的编程实现 912 位的数字值读数方式。DS18B20 温度转换的时间比较长,而且设定的分辨率越高,所需的温度转换时间就越长。因此在应用时要将分辨率和时间权衡考虑。2013 届本科毕业设计(论文)斜率累加器用于补偿和修正测温过程中的非线型性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直到温度寄存器值达到被测温度值。另外,由于 DS18B20 单线通讯功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对 DS18B20 的各种操作必须按协议进行。操作协议为:初始化 DS18B20(发复位脉冲)发 ROM 功能命令发存储器操作命令处理数据。第三:如何控制显示。显示电路采用 74LS164 来驱动数码管。74LS164 内部为八个 D 触发器,用以实现数据的串行移位。单片机以串行口方式 0(移位寄存器方式)输出数据,十六片 74LS164 作为十六个数码管的串并联换显示接口。74LS164 作为 TTL 单向八位移位寄存器,可实现串行输入,并行输出。在给出了八个脉冲后,最先进入 74LS164 的第一个字节数据到达了高位。再来一个脉冲,第一个脉冲就会从最高位移出,进入下一个 74LS164 的第一位,十六片 74LS164 首尾相串,而时钟端则接在一起。这样,当输入八个脉冲时从单片机 RXD 端输出的第一字节数据就进入了第一片 74LS164 中,而当第二个八个脉冲到来后,第一字节数就进入了第二片 74LS164,而随后的第二字节的数据则进入了第一片 74LS164。这样当第十六个八个脉冲完成后首次送出的数据被送到了最下面的 74LS164 中,其它数据依次出现在第十五至第一片 74LS164 中,实现了数据在 74LS164 中的串行输入、输出。本设计采用软件、硬件结合的方法,做出了理想的效果,实现了设计的目的。同时也是对所学课程的综合训练、应用。通过本次实验,充分提高了自己的综合能力。2013 届本科毕业设计(论文)第 1 章 电子万年历概况1.1 功能要求电子万年历能显示年,月,日,星期,时,分,秒和温度,同时有整点报时和闹钟功能。在周围设有发光二级管,增加视觉效果。1.2 方案论证按照系统设计功能的要求,初步设计系统由主控模块,时钟模块,显示模块,温度传感模块,键盘接口模块,彩灯模块组成。主控芯片使用 51 系列 AT89S51 单片机。时钟芯片使用了美国 DALLAS 公司推出的与 MC146818 兼容,寄存器存取速度快,在主机掉电时可用来保存重要数据的实时时钟芯片 DS12C887,采用 DS12C887 作为主要计时芯片,可作到计时准确。显示模块采用普通的共阳 LED 数码管。温度模块采用美国 DALLAS 公司生产的一线式数字温度传感器 DS18B20,芯片内有一个 64 位的 ROM,其中存有各个器件自身的序列号,作为器件独有的 ID 号码, DS18B20 简化了测温器件,使用更加方便,可做到准确测量温度。键输入采用查询法实现调整功能。彩灯采用普通的发光二极管组成。电路系统构成框图如图 1-1:2013 届本科毕业设计(论文)图 1-1 电路系统框图第 2 章 硬件电路设计2.1 系统硬件电路的设计系统的硬件电路主要由主控制器 AT89S51,时钟芯片 DS12C887,温度传感器 DS18B20,串口显示电路,键扫描电路以及彩灯电路组成。电子万年历电路设计原理图见附录一。2.2 芯片介绍2.2.1 AT89C51 性能介绍及其主要特性AT89S51 是美国 ATMEL 公司生产的低功耗,高性能 CMOS 8 位单片机,片内含 4K bytes 的可系统编程的 Flash 只读程序存储器。器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 8051 指令系统和引脚。它集成 Flash程序存储器即可在线编程(ISP)也可用传统方法进行编程及通用 8 为微处理器于单片芯片中,ATMEL 公司的功能强大,低价位 AT89S51 单片机可为你提供许多高性价比的应用场合,可灵活用于各个领域。主要特性如下:与 MCS-51 产品指令系统完全兼容4K 字节在线系统编程(ISP)Flash 闪速存储器1000 次擦写周期4.05.5V 的工作电压全静态工作模式: 0Hz33MHz三级程序加密锁128*8 字节内部 RAM32 可编程 I/O 线两个 16 位定时器/计数器5 个中断源 全双工串行 UART 通道低功耗的闲置和掉电模式中断可丛空闲模式唤醒系统看门狗(WDT)及双数据指针2013 届本科毕业设计(论文)掉电表示和快速编程特性灵活的在线系统编程(ISP 字节或页写模式) 1、管脚说明AT89C51 是 40 脚双列直插芯片。图 2-1 是其引脚图。其中:图 2-1 AT89C51 引脚图 VCC:供电电压。 GND:接地。 P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当P1 口的管脚第一次写 1 时,被定义为高阻输入。 P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。 P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4 个 TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH编程和校验时,P1 口作为第八位地址接收。 P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收输出4 个 TTL 门电流,当 P2 口被写“1” 时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P22013 届本科毕业设计(论文)口输出地址的高八位。在给出地址“1” 时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,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 外部输入)P3.5 T1(记时器 1 外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3 口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时, ALE 只有在执行 MOVX,MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器( 0000H-FFFFH),不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为 RESET;当/EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。2013 届本科毕业设计(论文)2、振荡器特性:XTAL1 和 XTAL2 分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2 应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。3、芯片擦除整个 PEROM 阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持 ALE 管脚处于低电 10ms 来完成。在芯片擦操作中,代码阵列全被写 “1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51 设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU 停止工作。但 RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存 RAM 的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。2.2.2 DS12C887 性能介绍1、器件及其性能介绍DS12C887 实时时钟芯片功能丰富,可以用来直接代替 IBM PC 上的时钟日历芯片 DS12887,同时,它的管脚也和 MC146818B、DS12887 相兼容。由于DS12C887 能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决子“千年 ”问题; DS12C887 中自带有锂电池,外部掉电时,其内部时间信息还能够保持 10 年之久;对于一天内的时间记录,有 12 小时制和 24 小时制两种模式。在 12 小时制模式中,用 AM 和 PM区分上午和下午;时间的表示方法也有两种,一种用二进制数表示,一种是用BCD 码表示; DS12C887 中带有 128 字节 RAM,其中有 11 字节 RAM 用来存储时间信息,4 字节 RAM 用来存储 DS12C887 的控制信息,称为控制寄存器, 113字节通用 RAM 供用户使用;此外用户还可对 DS12C887 进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。其主要性能如下:(1)具备完备的时钟,闹钟及到 2100 年的日历功能,可选择的 12 小时制或 24小时制计时,有 AM 和 PM、星期、夏令时间操作及闰年自动补偿的功能。(2)具有可编程选择的周期性中断方式和多频率输出的方波发生器功能。(3)DS122887 内部有 14 个时钟控制寄存器,包括 10 个时标寄存器,4 个状态寄存器和 114 字节作掉电保护用的低功耗 RAM。(4)由于该芯片具有多种周期中断速率及时钟中断功能,因此可以满足各种不同的待机要求,最长可达 24 小时,使用非常方便。2013 届本科毕业设计(论文)(5)时标可选择二进制或 BCD 码表示。(6)工作电压:+4.5+5.5v(7)工作电流:715mA(8)工作温度范围:0+70 度2、引脚功能DS12C887 的引脚排列如图 2-2 所示,各管脚的功能说明如下:图 2-2 DS12C887 的引脚排列图GND、 VCC:直流电源,其中 VCC 接+5V 输入,GND 接地,当 VCC 输入为+5V 时,用户可以访问 DS12C887 内 RAM 中的数据,并可对其进行读、写操作;当 VCC 的输入小于+4.25V 时,禁止用户对内部 RAM 进行读、写操作,此时用户不能正确获取芯片内的时间信息;当 VCC 的输入小于+3V 时, DS12C887 会自动将电源发换到内部自带的锂电池上,以保证内部的电路能够正常工作。(1) MOT:模式选择脚, DA12C887 有两种工作模式,即 Motorola 模式和Intel 模式,当 MOT 接 VCC 时,选用的工作模式是 Motorola 模式,当 MOT 接GND 时,选用的是 Intel 模式。本文主要讨论 Intel 模式。(2) SQWF:方波输出脚,当供电电压 VCC 大于 4.25V 时,SQW 脚可进行方波输出,此时用户可以通过对控制寄存器编程来得到 13 种方波信号的输出。(3) AD0AD7:复用地址数据总线,该总线采用时分复用技术,由 ALE 的下降沿锁存 8 位地址。在总线周期的前半部分,出现在 AD0AD7 上的是地址信息,可用以选通 DS12C887 内的 RAM,总线周期的后半部分出现在 AD0AD7上的数据信息。2013 届本科毕业设计(论文)(4) CS:地址选通输入脚,低电平有效,在进行读写操作时,CS 的上升沿将AD0AD7 上出现的地址信息锁存到 DS12C887 上,而下一个下降沿清除AD0AD7 上的地址信息,不论是否有效,DS12C887 都将执行该操作。 (5) DS/RD:数据选择或读输入脚,低电平有效,该引脚有两种工作模式,当MOT 接 VCC 时,选用 Motorola 工作模式,在这种工作模式中,每个总线周期的后一部分的 DS 为高电平,被称为数据选通。在读操作中,DS 的上升沿使DS12C887 将内部数据送往总线 AD0AD7 上,以供外部读取。在写操作中,DS的下降沿将使总线 AD0AD7 上的数据锁存在 DS12C887 中;当 MOT 接 GND时,选用 Intel 工作模式,在该模式中,该引脚是读允许输入脚,即 Read Enable。(6) R/W:读/写输入端,该管脚也有 2 种工作模式,当 MOT 接 VCC 时,R/W 工作在 Motorola 模式。此时,该引脚的作用是区分进行的是读操作还是写操作,当 R/W 为高电平时为读操作,R/W 为低电平时为写操作;当 MOT 接 GND时,该脚工作在 Intle 模式,此时该作为写允许输入,即 Write Enable。 CS:片选输入,低电平有效。(7) IRQ:中断请求输入,低电平有效,该脚有效对 DS12C887 内的时钟、日历和 RAM 中的内容没有任何影响,仅对内部的控制寄存器有影响,在典型的应用中,RESET 可以直接接 VCC,这样可以保证 DS12C887 在掉电时,其内部控制寄存器不受影响。(8) ALE:地址锁存信号端。(9) RESET:复位端,低电平复位。 。(10) NC:空脚。3、使用说明CPU 通过读 DS12887 的内部时标寄存器得到当前的时间和日历,也可通过选择二进制码或 BCD 码初始化的确 10 个时标寄存器。其中 114 字节的非易失性静态 RAM 可供用户使用,对于没有 RAM 的单片机应用系统,可在主机掉电时来保存一些重要的数据。DS12887 的 4 个状态寄存器用来控制和指出 DS12887 模块当前的工作状态,除数据更新周期外,程序可随时读写 4 个寄存器。下面介绍各寄存器的功能和作用。(1) DS12887 内部 RAM 各专用寄存器的功能表 2-1 是 DS12887 内部 RAM 和各专用寄存器分配表。其中,地址 00H03H的取值范围是 00H3BH(十进制 059) ;04H05H 单元按 12 小时制的取值范围是上午(AM)01H0CH(112) ,午(PM)81H8CH(8192) ,按 24 小时制的取值范围是 00H17H( 123) ;06H 单元的取值范围是 00H07H(07) ;07H单元的取值范围是 01H1FH(131) ;08H 单元的取值范围是 01H0CH(112) ;2013 届本科毕业设计(论文)09H 单元的取值范围是 00H63H(099 ) 。对 DS12887 内部 RAM 和各专用寄存器的访问可如下实现:若片选线地址 CS=#0C000H,则芯片内部 RAM 和寄存器的地址为#C000H#0C07FH。应指出,仅管 DS12887 的专用时标年寄存器只有一个,但通过软件编程可利用其内部的不掉电 RAM 区的一个字节实现年度的高两位显示。DS12887 可跨 2000 年的计时。表 2-1 DS12887 内部 RAM 和各专用寄存器分配表地址单元00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH用途秒 秒闹分 分闹时 时闹星期日 月 年 寄存器 A寄存器 B寄存器 C寄存器 D(2) 各寄存器的作用a. 寄存器 A寄存器 A 各位不受复位的影响,各位的格式见表 2-2。其中:表 2-2 寄存器 A 各位格式位 7 位 6 位 5 位 4 位 3 位 2 位 1 位 0 以 32768HZ 为时基速率输出UIP DV2 DV1 DV0 RS3 RS2 RS1 RS0 中断周期 SQWF 输出 0 0 0 0 无 无 0 0 0 1 390625ms 256HZ 0 0 1 0 7 8125ms 128HZ 0 0 1 1 0.12207ms 8192KHZ 0 1 0 0 0.244141ms 4096KHZ 0 1 0 1 0.488281ms 7048KHZ 0 1 1 0 0.976563ms 1024KHZ 0 1 1 1 1.953ms 512HZ 1 0 0 0 390625ms 25HZ 1 0 0 1 7.812125ms 128HZ 1 0 1 0 15.625ms 64HZ 1 0 1 1 31.25ms 32HZ 1 1 0 0 62.5ms 16HZ2013 届本科毕业设计(论文)位 7 位 6 位 5 位 4 位 3 位 2 位 1 位 0 以 32768HZ 为时基速率输出UIP DV2 DV1 DV0 RS3 RS2 RS1 RS0 中断周期 SQWF 输出 1 1 0 1 125ms 8HZ 1 1 1 0 250ms 4HZ 1 1 1 1 500ms 2HZUIP:更新周期标志位。该位为 1 时,表示芯片正处于或即将开始更新周期,此时不准读/写时标寄存器;该位为 0 时,表于至少在于 244us 后开始更新周期,此时,程序可以读芯片内时标寄存器,该位是只读位。DV0,DV1,DV2:芯片内部振荡器 RTC 控制位。当芯片解除复位状态,并将 010 写入 DV0,DV1,DV2 后,另一个更新周期将在 500ms 开始。因此,在程序初始化时可用这 3 位精确地使芯片在设定的时间开始工作。DS12887 固定使用 32768HZ 的内部晶体。所以,DV0=0 ,DV1=1 ,DV2=0 ,即只有 010 的一种组合选择即可启动 RTC。RS3,RS2 ,RS1 ,RS0:周期中断可编程方波输出速率选择位。对这些位进行不同的组合可以产生不同的输出,程序可以通过设置寄存器 B 的 SQWF 的 PIE位控制是否允许周期中断和方波输出。寄存器 A 输出速率选择见表 2-2。b. 寄存器 B寄存器 B 允许读/写,主要用于控制芯片的工状态。寄存器的控制字的格式见表 2-3。其中:SET:当该位为 0 时,芯片处于正常状态,每秒产生一个更新周期来更新时标寄存器;该位为 1 时,芯片停止工作,程序在此期间可初始化芯片的各个时标寄存器。如表 2-3:PLE,ALE,UIE :分别为周期中断,报警中断,更新周期结束中断允许位各位为 1 时,允许芯片发相应中断。SQWF:方波输出允许位。SQWF=1 ,按寄存器 A 输出速率选择位所确定的频率方波;SQWF=0 ,脚 SQWF 保持低电平。DM:时标寄存器用十进制 BCD 码表示或用二进制表示格式选择位。DM=0时,为十进制 BCD 码;DM=1 时,为二进制码。24/12:24/12 小时模式设置位。24/12=1 时,为 24 小时工作模式;24/12=0时,为 12 小时工作模式。DSE:夏令时服务位。DSE=1 时,夏令时制设置有效,夏令时制结束可自动刷新恢复时间;DSE=0,无效。表 2-3 寄存器的控制格式2013 届本科毕业设计(论文)位 7 位 6 位 5 位 4 位 3 位 2 位 1 位 0 寄存器SET PIE ALE UIE SQWF DM 24/12 DSE 寄存器 BIRQF PF AF UF 0 0 0 0 寄存器 CVRF 0 0 0 0 0 0 0 寄存器 Dc. 寄存器 C该寄存器的特点是程序访问该寄存器后,该寄存器的内容将自动清 0。从而使 IRQF 标志位变为高电平,否则芯片将无法向 CPU 申请下一次中断。寄存器 C的控制字的格式见表 2-3。IRQF:中断申请标志位。该位的逻辑表达式为:IRQF=PF*PIE+AF*ALE+UF*UIE。当 IRQF 位变为 1 时,引脚变为低电平引起中断申请。PF,AF,UF:P 这 3 位分别为周期中断,报警中断更新周期结束中断标志位。只要满足各中断的条件,相应的中断标志位将置 1。位 3位 0:未定义的保留位,读出值始终为 0。d. 寄存器 D寄存器 D 为只读寄存器。其控制字的格式见表 2-3,其中:VRT:芯片,内部 RAM 与寄存器内容有效标志位,该位为 1 时,指芯片内容 RAM 和寄存器,内容有效。读写寄存器后,该位将自动置 1。BIT6BIT0:保留位,读出的数值始终为 0。(3)DS12887 的中断和更新周期DS12887 处于正常工作状态时,每秒产生一个更新周期。芯片处于更新周期的标志是寄存器 A 中的 UIP 位为 1。在更新周期内芯片内部时标寄存器中的数据处于更新阶段。故在该周期内,微处理器不能读时标寄存器中的内容,否则将得不到确定数据。更新周期的基本功能主要是刷新各个时标寄存器中的内容,同时秒时标寄存器内容加 1,并检查其它时标寄存器内容是否溢出,如有溢出则相应进位日,月,年。更新周期的另一个功能是检查 3 个时,分,秒报警时节标寄存器的内容是否与对应时标寄存器的内容相符。如果报警时标寄存器的内容为C0HFFH 之间的数据,则为不关心状态。为了采样时标寄存器中的数据,器件提供了两种避开在更新周期内访问时标寄存器的方法。第一种是利用更新周期结束发出的中断。可以编程且允许在每次更新周期结束后发生中断请求,提醒 CPU 将 E 998ms 左右的时间去获取有效的数据在中断之后的 998ms 时间内,程序可先将时标数据读到芯片内部的不掉电静态 RAM 中。因为芯片内部的静态 RAM 和状态寄存器是可随时读写的,在离开中断服务子程序前应消除寄存器 C 中的 IRQF 位。另一种方法是利用寄存器 A 中2013 届本科毕业设计(论文)的 UIP 位来指示芯片是否处于更新周期。在 UIP 由低变高 244us 后芯片将开始更新周期。所以,若检测到 UIP 位为低电平时,则利用 244us 的间隔时间去读取时标信息,如检测到 UIP 为 1,则可暂缓读数据,等到 UIP 位变成低电平后再去读数据。4、MCS51 与 DS12887 的接口设计(1)DS12887 的初始化DS12887 采用连续工作制,一般无需每次都初始化,即使是系统复位时也如此。但初始化时,首先应禁止芯片内部的更新周期操作。所以应先将 DS12887 状态寄存器 B 中的 SET 位置 1,然后初始化 00H09H 时标参数和状态寄存器 A,此后再通过读状态寄存器 C 清除寄存器 C 中的周期中断标志位 PF,报警中断标志位 AF 更新周期结束中断标志位 UF,通过读寄存器 D 中的 VRT 位后将自动置1,最后,将状态寄存器 B 中的 SET 位置 0,芯片开始计时工作。(2) 闹钟单元的使用方法DS12887 共有 3 个闹钟单元,分别为时,分,秒闹钟单元。在其中写入闹钟时间值并且在时钟中断允许的情况下,每天到该时该就会产生中断申请信号。但这种方式每天只提供一次中断信号。另一种方式是在闹钟单元中写入“不关心码”:在时闹钟单元写入 C0HFFH 之间的数据,可每小时产生一次中断;在时,分闹钟单元写入 C0HFFH 之间的数据,可每分钟产生一次中断;而时,分,秒闹钟单元全部写入 FFH,则每秒产生一次中断。但这种方式也只能在整点,整分或每秒产生一次中断。若控制系统要求的定时间隔不是整数时,应该通过软件来调整实现。2.2.3 DS18B20 单线数字温度计1、DS18B20 性能特性(1)独特的单线接口方式:DS18B20 与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。(2)在使用中不需要任何外围元件。(3)可用数据线供电,电压范围:+3.0+5.5 V。(4)测温范围:-55 +125 。固有测温分辨率为 0.5 。(5)通过编程可实现 912 位的数字读数方式。(6)用户可自设定非易失性的报警上下限值。(7)支持多点组网功能,多个 DS18B20 可以并联在惟一的三线上,实现多点测温。2013 届本科毕业设计(论文)(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。2、DS18B20 的内部结构DS18B20 采用 3 脚 PR35 封装或 8 脚 SOIC 封装,其内部结构框图如图 2-3所示。图 2-3 DS18B20 内部结构框图(1) 64 b 闪速 ROM 的结构如下:开始 8 位是产品类型的编号,接着是每个器件的惟一的序号,共有 48 位,最后 8 位是前 56 位的 CRC 校验码,这也是多个 DS18B20 可以采用一线进行通信的原因。(2) 非易市失性温度报警触发器 TH 和 TL,可通过软件写入用户报警上下限。(3) 高速暂存存储器DS18B20 温度传感器的内部存储器包括一个高速暂存 RAM 和一个非易失性的可电擦除的 E2RAM。后者用于存储 TH,TL 值。数据先写入 RAM,经校验后再传给 E2RAM。而配置寄存器为高速暂存器中的第 5 个字节,他的内容用于2013 届本科毕业设计(论文)确定温度值的数字转换分辨率,DS18B20 工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如下: 低 5 位一直都是 1,TM 是测试模式位,用于设置 DS18B20 在工作模式还是在测试模式。在 DS18B20 出厂时该位被设置为 0,用户不要去改动,R1 和 R0 决定温度转换的精度位数,即是来设置分辨率,如表 2-4 所示(DS18B20 出厂时被设置为 12 位) 。由表 2-4 可见,设定的分辨率越高,所需要的温度数据转换时间就越长。因此在实际应用中要在分辨率和转换时间权衡考虑。表 2-4 R1 和 R0 模式表R1 R0 分辨率 温度最大转换时间0 0 9 位 93.750 1 10 位 187.51 0 11 位 275.001 1 12 位 750.00高速暂存存储器除了配置寄存器外,还有其他 8 个字节组成,其分配如下所示。其中温度信息(第 1,2 字节) 、TH 和 TL 值第 3,4 字节、第 68 字节未用,表现为全逻辑 1;第 9 字节读出的是前面所有 8 个字节的 CRC 码,可用来保证通信正确。当 DS18B20 接收到温度转换命令后,开始启动转换。转换完成后的温度值就以 16 位带符号扩展的二进制补码形式存储在高速暂存存储器的第 1,2 字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.062 5 /LSB 形式表示。对应的温度计算:当符号位 S=0 时,直接将二进制位转换为十进制;当 S=1时,先将补码变换为原码,再计算十进制值。表 2-5 是对应的一部分温度值。表 2-5 DS18B20 温度与测的值对应表温度 二进制表示 十六进制表示2013 届本科毕业设计(论文)+125 0000 0111 1101 0000 07D0H+85 0000 0101 0101 0000 0550H+25.0625 0000 0001 1001 0001 0191H+10.125 0000 0000 1010 0010 00A2H+0.5 0000 0000 0000 1000 0008H0 0000 0000 0000 0000 0000H-0.5 1111 1111 1111 1000 FFF8H-10.125 1111 1111 0101 1110 FF5EH-25.0625 1111 1110 0110 1111 FE6FH-55 1111 1100 1001 0000 FC90HDS18B20 完成温度转换后,就把测得的温度值与 TH,TL 作比较,若 TTH或 TTL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应,因此可用多只 DS18B20 同时测量温度并进行告警搜索。(4) CRC 的产生在 64 b ROM 的最高有效字节中存储有循环冗余校验码(CRC) 。主机根据ROM 的前 56 位来计算 CRC 值,并和存入 DS18B20 中的 CRC 值做比较,以判断主机收到的 ROM 数据是否正确。3、DS18B20 的测温原理DS18B20 的测温原理如图 2-4 所示,图中低温度系数晶振的振荡频率受温度的影响很小1 ,用于产生固定频率的脉冲信号送给减法计数器 1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器 2 的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20 就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 所对应的基数分别置入减法计数器 1和温度寄存器中,减法计数器 1 和温度寄存器被预置在-55 所对应的一个基数值。减法计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器 1 的预置值减到 0 时温度寄存器的值将加 1,减法计数器 1 的预置将重新被装入,减法计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器 2 计数到 0 时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图 2-4 中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,2013 届本科毕业设计(论文)直至温度寄存器值达到被测温度值,这就是 DS18B20 的测温原理。图 2-4 DS18B20 内部测温电路框图另外,由于 DS18B20 单线通信功能是分时完成的,有严格的时隙概念,因此读写时序很重要。系统对 DS18B20 的各种操作必须按协议进行。操作协议为:初始化 DS18B20(发复位脉冲)发 ROM 功能命令 发存储器操作命令处理数据。4、DS18B20 与单片机的典型接口设计以 MCS51 单片机为例,图 2-5 中采用寄生电源供电方式, P1.1 口接单线总线为保证在有效的 DS18B20 时钟周期内提供足够的电流,可用一个 MOSFET 管和 89C51 的 P1.0 来完成对总线的上拉。当 DS18B20 处于写存储器操作和温度A/D 变换操作时,总线上必须有强的上拉,上拉开启时间最大为 10 s。采用寄生电源供电方式是 VDD 和 GND 端均接地。由于单线制只有一根线,因此发送接收口必须是三态的。主机控制 DS18B20 完成温度转换必须经过 3 个步骤:初始化、ROM 操作指令、存储器操作指令。假设单片机系统所用的晶振频率为 12 MHz,根据 DS18B20 的初始化时序、写时序和读时序,分别编写 3 个子程序:INIT 为初始化子程序,WRITE 为写(命令或数据)子程序,READ 为读数据子程序,所有的数据读写均由最低位开始,实际在实验中不用这种方式,只要在数据线上加一个上拉电阻 4.7 k,另外 2 个脚分别接电源和地。2013 届本科毕业设计(论文)图 2-5 DS18B20 与微处理器的典型接口设计5、DS18B20 的精确延时问题虽然 DS18B20 有诸多优点,但使用起来并非易事,由于采用单总线数据传输方式,DS18B20 的数据 I/O 均由同一条线完成。因此,对读写的操作时序要求严格。为保证 DS18B20 的严格 I/O 时序,需要做较精确的延时。在 DS18B20 操作中,用到的延时有 15 us,90 us,270 us,40us 等。因这些延时均为 15 us 的整数倍,因此可编写一个 DELAY15(n)函数,源码如下: Void delay15(n)Unsigned char n: do -nop-( ):/01-nop-( ):/12n-while(n)只要用该函数进行大约 15 us 的延时即可。有了比较精确的延时保证,就可以对 DS18B20 进行读写操作、温度转换及显示等操作。2.2.4 显示电路的设计显示部分采用普通的共阳数码管显示,采用动态扫描,以减少硬件电路。考虑到一次扫描十六个数码管分三排同时扫描。第一排七个数码管分别表示十年、年、十月、月、十日、日和星期。第二排六个数码管分别为十时、时、十分、分、十秒和秒。第三排三个数码管分别表示百度、十度和度。显示时采用串行口输出段码,用十六片 74LS164 来驱动十六个数码管,这样扫描一次所需的时间极短。电路如图 2-6 所示。2013 届本科毕业设计(论文)图 2-6 显示电路图74LS164 内部为八个 D 触发器,用以实现数据的串行移位, 74LS164 特性见表 2-6。表 2-6 74LS164 特征表操作模式 输入 输出复位 MR A B Q0 Q1Q7L L Q0Q6H L L L Q0Q6H L H L Q0Q6H H L L Q0Q6移位H H H H Q0Q6单片机以串行口方式 0(移位寄存器方式)输出数据,十六片 74LS164 作为十六个数码管的串并联换显示接口。74LS164 作为 TTL 单向八位移位寄存器,可实现串行输入,并行输出。其中 A、B 为串行数据输入端。两个引脚按逻辑 “5”运算规律输入信号,共一个输入信号时可并接,共同作为输入脚。CP 为时钟输入端可连接到行口的 TXD 端。每一个时钟信号的上升沿加到 CP 端时移位寄存器移一位。八个时钟脉冲过后,八位二进制数全部移入 74LS164 中。MR 脚为复位端,当该脚为低电位时移位寄存器各位复 0;只有当它为高电平时,时钟脉冲才起作用。Q 1Q8 并行输出端分别接数码管的 ha 各段对应的引脚上。在给出了八个脉冲后,最先进入 74LS164 的第一个字节数据到达了高位。再来一个脉冲,第一个脉冲就会从最高位移出,进入下一个 74LS164 的第一位,十六片 74LS164 首尾相串,而时钟端则接在一起。这样,当输入八个脉冲时从单片机 RXD 端输出的第一字节数据就进入了第一片 74LS164 中,而当第二个八个脉冲到来后,第一字节数就进入了第二片 74LS164,而随后的第二字节的数据则进入了第一片 74LS164。这样当第十六个八个脉冲完成后首次送出的数据被送到了最下面的 164 中,其它数据依次出现在第十五至第一片 74LS164 中,实现了数据在 74LS164 中的串行输入、输出。在方式 0 状态下,串行口为同步移位寄存器方式,其波特率是固定的,为fosc/12。数据由 RXD(P3.0)端输入或输出。同步移位脉冲由 TXD(P3.1)端输出。发送、接受数据时低位在先。所以根据硬件原理图,在编写程序时,查共阳数码管的段码的二进制数据应该将正常的共阳数码管 09 的二进制按位反序排列,如原来的二进制为 11000000(C0H),要改为 00000011(03H),就能使数码管正常显示。2013 届本科毕业设计(论文)2.2.5 键盘接口的设计由于键盘只有五个按键,只需用普通按钮接 10k 上拉电阻,用查询法完成读键功能。五个按键同电阻串联,一端接与单片机 I/O 上,一端接地。当一按键按下时相应 I/O 变为底电平,单片机检测到低电平便做出相应的调整。电路如图2-7 所示。图 2-7 键盘接口电路2.2.6 彩灯电路考虑到单片 I/O 接口有限,彩灯电路采用三个 I/O 口控制。发光二极管每三个一组,每一组中的第一个、第二个、第三个的阴极分别在一起,然后分别接三个 I/O 口,阳极全部接在电源上。这样不仅达到彩灯的效果,同时节省了单片机I/O 口。彩灯电路如图 2-8 所示。图 2-8 彩灯电路当 P2.0 口置 0 时,第一组灯 LED11、LED12LED1n 亮;当 P2.1 口置 0 时,第二组灯 LED21、LED22LED2n 亮;当 P2.2 口置 0 时,第三组灯2013 届本科毕业设计(论文)LED11、LED12LED1n 亮。这样让三个口轮流置 0 或随其他顺序置 0 都可实现彩灯功能。第 3 章 软件系统设计3.1 主程序设计主程序主要是对各种数据的初始化,包括对 DS12C887 以及 DS18B20 的数据初始化。主程序流程图如图 3-1 所示。2013 届本科毕业设计(论文)图 3-1 主程序流程图3.2 阳历程序设计因为使用时钟芯片 DS12887,阳历程序只需从 DS12887 各寄存器中读出年,月,日,时,分,秒等数据,再进行处理,然后调用显示即可。在首次对DS12887 进行操作之前必须对它进行初始化,然后 DS12887 中读出数据,再经处理后送给显示缓冲单元。阳历程序流程图见图 3-2。3.3 读出温度子程序设计读出温度子程序的主要功能是读出 RAM 中的 9 字节,在读出时需进行 CRC校验,校验有错时不进行温度数据的改写。其程序流程图见图 3-3。2013 届本科毕业设计(论文)图 3-2 阳历程序流程图 图 3-3 温度子程序流程图3.4 显示子程序设计显示程序主要是对显示缓存接收的数据进行处理,然后通过串行口输出、显示。显示子程序流程图如图 3-4 所示。图 3-4 显示子程序流程图3.5 时间调整子程序设计2013 届本科毕业设计(论文)图 3-5 时间调整子程序流程图调整时间用 5 个调整按钮,1 个作为选通控制用,另外 4 个作为加,减,左移,右移使用,分别定义为控制按钮,加按钮,减按钮,左移按钮,右

温馨提示

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

评论

0/150

提交评论