毕业设计论文-基于51单片机的电子万年历与温度检测报警系统内容摘要:

更新到 3: 00: 00, 10月的最后一个星期日凌晨 1: 59: 59会直接更新到 1: 00: 00;为 0时,时间信息正常更新,此位可读写,不受复位操作影响。 寄存器 C字节内容如下。 MSB LSB IRQF PF AF UF 0 0 0 0 IQRF:中断申请标志位。 为 1时, /IRQ引脚为低,产生中断申请。 当 PF、PIE为 1时或者 AF、 ATE为 1或者 UF、 UIE为 1时,此位为 1,否则置 0. PF:中期中断标志位。 为 1时,它是只读位,和 PIE位状态无关,由复位操作或者寄存器 C操作清除。 AF:闹钟中断标志位。 为 1时,表示当前时间和闹钟设定时间一至,由复位操作或读寄存器 C操作清除。 UF:数据更新结束中断标志位。 每个更新周期后此位都会置 1,当 UIE位位置 1时, UF若为 1就会引起 IRQF置 1,将驱动 /IRQ引脚为低电平 ,申请中断。 此位由复位操作或读寄存器 C操作清除。 寄存器 D字节的内容如下。 MSB LSB 0 0 0 0 0 0 0 0 VRT; RAM和时间有效位。 用于指示和 VBAT引脚连接的电池状态。 此位不可写,也不受操作为影响,正常情况下读取时总去为 1,如果出现读取为 0的情况,则表示电池耗尽,时间数据和 RAM中的数据就会出现问题。 芯片 DS12CR887的 113字节普通 RAM空间为非易失性 RAM空间 , 他不专门用于某些特别功能 , 而是可以在未处理器程序中作为非易失性内存空间使用。 如 write_ds(0x0a,0x20)。 write_ds(0x0b,0x26)。 分别表示向 A,B寄存器发送0X20,0X26命令。 0X20表示 RAM中时钟、日历和闹钟信息都可以访问;启动振荡器使能中断和 SQW输出都禁止。 0X26表示更新传输功能正常进行;阻止周期性中断输出;开闹钟中断使能;选择二进制格式; 24小时格式;关闭夏令时使能。 Read_ds(0x0c)意义为读取 C寄存 器的地址。 芯片 DS12CR887的 113字节普通 RAM空间为非易失性 RAM空间,他不专门用于某些特别功能,而是可以在未处理器程序中作为非易失性内存空间使用。 通过软件编程将 读到的信息显示到 1602液晶中,显示世纪,年,月,日,星期,小时,分,秒。 通过设置按键可以进行时间调节,在调节时间时时钟暂时停止走,再通过功能键回到正常工作状态中,并且具有闹钟设定功能,但在设定闹钟时期内部时间仍然在走。 当时,分,秒,相符时通过蜂宁器进行报警,再设置按键关闭闹钟。 实现随意控制闹钟的开启和关闭。 2. 数字温度传感器模 块 数字温度传感器选用 DS18B20,采用单总线通信协议。 DS18B20 主要特性有: 适应电压范围更宽,电压范围: ~ ,在寄生电源方式下可由数据线供电。 独特的单线接口方式, DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。 DS18B20支持多点组网功能,多个 DS18B20 可以并联在唯一的三线上,实现组网多点测温 DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。 温范围- 55℃~+ 125℃,在 10~ +85℃时精度为 ℃。 可编程的分辨率为 9~ 12位,对应的可分辨温度分别为 ℃、 ℃、℃和 ℃,可实现高精度测温。 在 9 位分辨率时最多在 内把温度转换为数字, 12 位分辨率时最多在 750ms 内把温度值转换为数字,速度更快。 测量结果直接输出数字温度信号,以 一线总线 串行传送给 CPU,同时可传送 CRC 校验码,具有极强的抗干扰纠错能力。 负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。 DS1820 的操作指令分为 ROM 操作命令和存储器操作命令: ( 1)、 ROM 操作命令及其含义 Skip ROM 指令代码( CCh):此命令执行后的存储器操作将针对在线的所有 DS1820。 Alarm Search 指令代码( ECh):当温度值高于 TH或低于 TL中的数值时,此命令可以读出报警的 DS1820。 ( 2)、存储器操作指令代码及其含义 Read Scratchpad 指令代码( BEh):读取温度寄存器的温度值。 Copy Scratchpad 指令代码( 48h):将温度寄存器的数值拷贝到 EERAM中,保证温度值不丢失。 Convert T 指令代码( 44h):启动在线 DS1280做温度 A/D 转换。 Recall E2 指令代码( B8h):将 EERAM 中的数值拷贝到温度寄存器中。 温度测量步骤如下: (1).Read ROM( 33 h),每次对 DS1820 进行操作之前都要对它进行初始化,主要目的在于确定传感器已经连接到单总线上。 (2).Search ROM( F0h),这条指令使处理器用排除的方法去辨别总线上的DS1820。 (3).Match ROM( 55h),只有准确的符合 64 位 ROM 序列的 DS1820才能响应其后的指令,当然,单点测温时 可以使用 Skip ROM( CCh)指令来跳过这一步。 (4).Convert T( 44h),发完指令后应查询总线上的电平,当电平位高时温度转换完成。 (5).Read Scratchpad( BEh),将读指令发出后,就可从总线上读得表示温度的 2 字节二进制数 由于采用单总线数据传输方式, DS18B20的数据 I/O均由同一条线完成,因此,对读写的操作时序要求严格。 为了保证 DS18B20的严格 I/O 时序。 需要做较精确的延时。 它的各种时序如下图所示: DS18B20 初始化时序 图 6 DS18B20 温度传感器 DS18B20 采用 +5V 电源供电 2. 液晶显示模块 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式 LCD,本设计采用 16列 *2行的字符型 LCD1602带背光的液 晶显示屏。 各引脚接口说明如表 11所示 : 编号 符号 引脚说明 编号 符号 引脚说明 1 VSS 电源地 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VL 液晶显示偏压 11 D4 数据 4 RS 数据 /命令选择 12 D5 数据 5 R/W 读 /写选择 13 D6 数据 6 E 使能信号 14 D7 数据 7 D0 数据 15 BLA 背光源正极 8 D1 数据 16 BLK 背光源负极 引脚接口说明: 第 1脚: VSS为地电源。 第 2脚: VDD接 5V正电源。 第 3脚: VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个 10K的电位器调整对比度。 第 4脚: RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第 5脚: R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。 当RS和 R/W共同为低电平时可以写入指令或者显示地址,当 RS为低电平 R/W为高电平时可以读忙信号,当 RS为高电平 R/W为低电平时可以写入数据。 第 6脚: E端为使能端,当 E端由高电平跳变成低电平时,液晶模块执行命令。 第 7~ 14脚: D0~ D7为 8位双向数据线。 第 15脚:背光源正极。 第 16脚:背光源负极。 1602LCD的指令说明及时序: 1602液晶模块内部的控制器共有 11条控制指令,如表 12所示: 序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 1 清显示 0 0 0 0 0 0 0 0 0 1 2 光标返回 0 0 0 0 0 0 0 0 1 * 3 置输入模式 0 0 0 0 0 0 0 1 I/D S 4 显示开 /关控制 0 0 0 0 0 0 1 D C B 5 光标或字符移位 0 0 0 0 0 1 S/C R/L * * 6 置功能 0 0 0 0 1 DL N F * * 7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址 8 置数据存贮器地址 0 0 1 显示数据存贮器地址 9 读忙标志或地址 0 1 BF 计数器地址 10 写数到 CGRAM或DDRAM) 1 0 要写的数据内容 11 从 CGRAM或 DDRAM读数 1 1 读出的数据内容 字符控制命令说明: 1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。 (说明: 1为高电平、 0为低电平) 指令 1:清显示,指令码 01H,光标复位到地址 00H位置。 指令 2:光标复位,光标返回到地址 00H。 指令 3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。 高电平表示有效,低电平则无效。 指令 4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。 指令 5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时 移动光标。 指令 6:功能设置命令 DL:高电平时为 4位总线,低电平时为 8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示 5x7的点阵字符,高电平时显示 5x10的点阵字符。 指令 7:字符发生器 RAM地址设置。 指令 8: DDRAM地址设置。 指令 9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令 10:写数据。 指令 11:读数据。 基本操作时序表 , 读写操作时序如图所示: 图 7 读操作时序 图 8 写操作时序 图 9 液晶部分电路连接图 2. 蜂鸣器电路模块( 2 个) 图 10 温度报警 图 11 闹钟报警 蜂鸣器用 CS9013三极管驱动,蜂鸣器用 5V 的无源蜂鸣器,并接一个发光二极管作为指示灯,同时在发光二极管前串接个限流电阻 ,数据端口分别接P1^0, P1^1(由单片机的 P1^0, P1^1直接输出驱动)。 设置两个报警时为了防止闹钟和温度报警发生重叠,影响判断。 2. USB 和外部电源供电电路 图 12 电源部分电路 如图可接插 USB 口,从而获取电源,也可外部供给 +5V 电源。 此电路图最大优点就是可以连接多个 VCC 和 GND,方便电路连接。 有发光二极管做电源指示灯,方便操作。 2. 3 系统电路图设计 2. 系统原理框图和原理图 图 8 系统原理框图 下面是系统硬件 电路连线图(原理图) STC89C52 单 片 机 温度传感器进行温度采集,经过 A/D 转换( DS18B20 内部完成此操作),送入单片机存储,通过定时器 0 进行定时读取。 通过对实时时钟的读写操 作,将读取到时间信息显示到1602 液晶上,通过按键可对时间和闹钟进行调节,为方便调节考虑,在调节时间不读取温度值。 调节完成后再读取温度值。 蜂宁器报警,在温度达到相应设定的温度值和闹钟时间到时,触发蜂宁器发出响声,进行报警。 再通过相应按键进行消除报警声。 (设置两个报警时为了防止两个报警发生重叠) 键盘扫描,按键进行时间调节,闹钟设定闹钟设定,关闭蜂宁器报警声。 液晶显示,开机时显示wele have a nice day 字样,过几秒钟后显示时间和温度值, 三、软件测试与分析 3. 1 系统软件流程图 初始化,写地址、数据,读地址。 将相应地址和数据写入控制寄存器 A、 B 中 读取秒闹钟,分闹钟,时闹钟寄存器到相应的存储变量中( readalarm()函数),调用 writeds()函数将时分秒闹钟的地址和数据写入此函数中。 读取 C 控制寄存器的地址 读取年,月,日,星期,时,分,秒寄存器的相应地址 当 flag,flag1 标志位允许时,通过调用时分秒,年月日显示函数将相应信息显示到 液晶确定的位置上去。 开始 3. DS18B20 程序流程图 初始化 DS18B20 检测 DS18B20 序列号(单个挂接不需要) YES NO 发送跳过读 ROM 的操作 启动温度转换 稍微延时,给硬件一点反应时间 YES NO 主机发出复位脉冲以检测从机是否有应答 主机再次发出复位脉冲以检测从机是否有应答 开始 发送跳过读 ROM 的操作 读取温度。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。