基于单片机的电子万年历的设计—毕业设计论文.doc_第1页
基于单片机的电子万年历的设计—毕业设计论文.doc_第2页
基于单片机的电子万年历的设计—毕业设计论文.doc_第3页
基于单片机的电子万年历的设计—毕业设计论文.doc_第4页
基于单片机的电子万年历的设计—毕业设计论文.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计说明书(论文) 设计(论文)题目: _ 基于单片机的万年历系统设计 专 业: 班 级: 学 号: 姓 名: 指导教师: 信息职业技术学院毕业设计(论文)任务书 学 生 姓 名 学号 01 班级 应电 08-2 专业 应用电子技术 设计(或论文)题目 电子万年历的设计 指导教师姓名 职 称 工作单位及所从事专业 联系方式 备 注 讲师 学院 21 设计(论文)内容: 利用单片机控制和高性能时钟芯片设计一电子万年历。要求该系统具有如下特点和功能: 1.可显示公历及农历年、月、日和时、分、秒; 2.走时准确,可调整公历年、月、日和时、分、秒; 3.采用市电通过电源适配器供电,当市电停电时,不但万年历所有数据不丢失,且万年历照常运行 (有后备电池供电,可供数年) ; 4.万年历设置运行到 2099年。 进度安排: 要有较为详细的时间安排(时间具体到周) ; 第 24 周:查找资料,选择参考方案; 第 56 周:确定方案; 第 78 周:查找资料,进行单元电路的设计; 第 910 周:整机电路整机与分析; 第 1112 周:整理报告,定稿; 第 1314 周:制作 ppt,准备答辩; 第 15周:答辩。 主要参考文献、资料(写清楚参考文献名称、作者、出版单位): 1 王新颖.单片机原理及应用.北京:北京大学出版社,2008 2 陈忠平.单片机基础与最小系统实践.北京:北京航空航天大学出版社,2006 6 沈庆阳.8051 单片机实践与应用.北京:清华大学出版社,2003 4 侯玉宝.基于 proteus的 51系列单片机设计与仿真.北京:电子工业出版社,2008 5 何立民.单片机应用技术选编.北京:北京航空航天出版社,2006 6 杨振江.流行单片机实用子程序及应用实例.西安:西安电子科技大学出版社,2007 7 王明顺.可涓流充电的串行实时时钟芯片 ds1302.北京:电子工业出版社,2009 8 刘和平.单片机原理及接口程序设计.北京:北京航天航空大学出版社,2008 审 批 意 见 教研室负责人: 年 月 日 备注:任务书由指导教师填写,一式二份。其中学生一份,指导教师一份。 i 目 录 摘 要 1 第 1 章 绪论 2 第 2 章 设计方案 3 2.1 系统基本方案选择和论证 3 2.1.1 单片机的选择 .3 2.1.2 显示模块的选择 .3 2.1.3 键盘模块的选择 .3 2.1.4 时钟芯片的选择 .4 2.1.5 温度传感器的选择 .4 2.2 电路设计最终方案决定 5 第 3 章 硬件设计 6 3.1 at89c52单片机 .6 3.1.1 at89c52的信号引脚 .8 3.2 ds1302时钟模块 .10 3.2.1 内部结构及引脚 11 3.2.2 工作原理 12 3.2.3 寄存器和控制命令 12 3.3 ds18b20温度采集模块 14 3.3.1 内部结构及引脚 15 3.3.2 测温原理 15 3.3.3 工作过程及时序 16 3.4 键盘模块 .20 3.5 lcd显示模块 21 ii 第 4 章 软件设计 .23 4.1 温度采集软件 .23 4.2 阳历软件设计 .24 4.3 阴历软件设计 .26 4.4 lcd显示系统 29 4.5 按键系统 .30 4.6 系统主流程图 .31 第 5 章 系统调试 .32 5.1 调试过程 .32 5.2 仿真结果 .33 总 结 .34 参考文献 .35 附录 1 整机电路图 36 附录 2 元件明细表 37 附录 3 系统主程序 38 第 1 页 共 40 页 摘 要 电子万年历能显示:年、月、日、时、分、秒及星期信息,并具有可调整日期和 时间功能。选用的是单片机 at89c52来实现电子万年历的功能。 该电子万年历主要由单片机、lcd 显示电路、ds18b20 温度采集模块、ds1302 时钟 电路模块组成。系统以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通 过软件编程来实现,电路简单明了,系统稳定性高,同时该系统还具有功耗小、成本 低的特点,具有很强的实用性。由于该系统所用元器件较少,单片机所被占用的 i/o 口不多,因此系统具有较强的可扩展性。软件程序均采用 c语言编写,便于移植与升 级。报告详细介绍了整个系统的硬件组成结构、工作原理和系统的软件程序设计。 关键词 万年历;at89c52;ds1302;ds18b20 第 2 页 共 40 页 第 1 章 绪论 随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字 计时的消费需求也是越来越多。 二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表 业界的第三次革命。第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟 表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。 第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表 的走时月差从分级缩小到秒级。第三次革命就是单片机数码计时技术的应用(电子万 年历) ,使计时产品的走时日差从分级缩小到 1/600万秒,从原有传统指针计时的方式 发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星 期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电 子万年历的出现带来了钟表计时业界跨跃性的进步。 本文介绍了基于 at89c52单片机设计的电子万年历。 首先介绍单片机的发展与其在中低端领域中的优势以及课题的开发意义,接着介 绍了 at89c52单片机的硬件结构,并在此基础上实现了万年历基本电路的设计,然后 使用单片机 c语言进行万年历程序的设计,程序采用模块化结构,使得逻辑关系简单 明了,维护方便。 第 3 页 共 40 页 第 2 章 设计方案 2.1 系统基本方案选择和论证 2.1.1 单片机的选择 方案一:采用传统的 at89c52作为电机的控制核心。单片机算术运算功能强,软 件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且由于其功耗低、 体积小、技术成熟和成本低等优点,使其在各个领域应用广泛。 方案二:采用 ftc10f04单片机,还带有非易失性 flash程序存储器。它是一种高 性能、低功耗的 8位 cmos微处理芯片,市场应用最多。其主要特点如下:8kb flash rom,可以擦除 1000次以上,数据保存 10年。 方案比较:由于本系统对 cpu运算速度要求很高,需要执行很复杂的运算,方案 一成本比较低,适合做设计,方案二运算速度高,性能好,所以两种方案都有可取之 处。选用方案一作为主方案,方案二作为备用方案。 2.1.2 显示模块的选择 方案一:使用传统的 led数码管显示。 数码管具有:低能耗、低损耗、低压、寿 命长、耐老化、防晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护, 同时其精度比较高,称重轻,精确可靠,操作简单。数码管采用 bcd编码显示数字, 程序编译容易,资源占用较少。但显示不够直观,太过单调,电 源 设 计 复 杂 。 方案二:使用液晶显示屏显示时间数字。 液晶显示屏(lcd)具有轻薄短小、低 耗电量、无辐射危险,平面直角显示以及影象稳定不闪烁等优势,可视面积大,画面 效果好,分辨率高,抗干扰能力强等特点。 方案比较:led 数码管虽然操作简单,实用性高,但显示太过单调。而本设计显示 内容量大,采用 lcd液晶显示画面效果好,直观明了,故选用方案二。 2.1.3 键盘模块的选择 在对日期和时间进行控制,对日期和时间进行调节校准过程中,系统需要产生激 励电流,因此需要用按键。 第 4 页 共 40 页 方案一:使用独立式键盘。独立式键盘是指直接用 i/o口线构成的单个按键电路。 独立式按键电路配置灵活,软件结构简单。 方案二:使用矩阵式键盘。矩阵式键盘是由行线和列线组成,按键位于行、列的 交叉点上,行线、列线分别连接到按键开关的两端。其特点是简单且不增加成本,这 种键盘适合按键数量较多的场合。 方案比较:因为本设计键盘部分简单需要的按键少,故采用独立式按键选择方案 二。 2.1.4 时钟芯片的选择 方案一: 直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、 分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差 较大。 方案二: 采用 ds1302时钟芯片实现时钟,ds1302 芯片是一种高性能的时钟芯片,可自动对 秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的 ram做 为数据暂存区,工作电压 2.5v5.5v 范围内,2.5v 时耗电小于 300na. 方案比较:虽然采用单片机定时计数器提供秒信号可实现功能且减少芯片的使用, 但误差较大,而 ds1302时钟芯片是一种高性能芯片,精度高还具有闰年补偿功能,所 以采用方案二。 2.1.5 温度传感器的选择 方案一: 使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏 电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行 a/d转换。 此设计方案需用 a/d转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严 格线性的,会产生较大的测量误差。 方案二: 采用数字式温度传感器 ds18b20,此类传感器为数字式传感器而且仅需要一条数据 线进行数据传输,易于与单片机连接,可以去除 a/d模块,降低硬件成本,简化系统 电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。 第 5 页 共 40 页 方案比较:选用 ds18b20数字式温度传感器,与单片机连接简单,成本低,还具有 测量精度高、测量范围广等优点。而热敏电阻作为传感器,成本高,误差大。所以选 用方案二。 2.2 电路设计最终方案决定 综上各方案所述,对此次作品的方案选定: at89c52单片机,内部自带有 6kb的 flash存储器及 256kb ram单元,不需另外扩展 eeprom及静态 ram,可以在线下载程 序,易于日后的升级。ds1302 时钟日历芯片,稳定性高误差小。数字式温度传感器 ds18b20,测量准确,误差小范围广。lcd 液晶显示,显示清晰直观明了。 第 6 页 共 40 页 第 3 章 硬件设计 该系统硬件设计总体思想是以单片机为控制系统,接受感应信息并进行处理后, 将控制指令传出,对各个系统进行对应操作。硬件设计总体框图如图 3-1所示。 at89c52 主控模块 键盘模块 ds18b20 温 度采集模块 lcd 显示模块 ds1302 时钟模块 图 3-1 硬件设计框图 主控模块:根据输入信息进行处理,并将控制数据传出。 显示模块:显示相关的内容。 时钟模块:提供时钟数据。 温度采集模块:感应和提供温度。 键盘模块:对系统进行操作。 3.1 at89c52 单片机 单片机实质上是一个芯片。它具有结构简单、控制功能强、可靠性高、体积小、 价格低等优点,单片机技术作为计算机技术的一个重要分支,广泛的应用于工业控制、 智能化仪器仪表、家用电器、电子玩具等各个领域。 atmel公司生产的 at89c52单片机采用高性能的静态 80c51设计,并采用先进工 艺制造,还带有非易失性 flash程序存储器。它是一种高性能、低功耗的 8位 cmos微 处理芯片,市场应用最多。其主要特点如下:8kb flash rom,可以擦除 1000次以上, 数据保存 10年。技术特点有:256 字节内部 ram;电源控制模式;时钟可停止和恢复; 空闲/掉电模式;6 个中断源;4 个中断优先级;4 个 8位 i/o口;全双工增强型 tuar;3 个 16位定时/计数器:t0、t1(标准 80c51)和增加的 t2(捕获和比较) ;全静 态工作方式:024mhz;at89c52 单片机的基本结构请参见图 3-2,各部分情况介绍如 下: 第 7 页 共 40 页 中央处理器(cpu):中央处理器是单片机的核心,完成运算和控制功能。 at89c52的 cpu能处理 8位二进制数或代码。 内部数据存储器(内部 ram):at89c52 芯片中共有 256个 ram单元,但其中后 128单元被专用寄存器占用,能作为寄存器供用户使用的只是前 128单元,用于存放可 读写的数据。因此通常所说的内部数据存储器就是指前 128单元,简称内部 ram。 内部程序存储器(内部 rom):at89c52 共有 8kb掩膜 rom,用于存放程序、原始 数据或表格,因此称之为程序存储器,简称内部 rom。 定时器/计数器:at89c52 共有 2个 16位的定时器/计数器,以实现定时或计数功 能,并以其定时或计数结果对计算机进行控制。 cpu 时钟电路 rom 定时/计数器ram 中断系统并行接口 串行接口 p3 txdx p rxd int0 int1p2p1p0 t1 图 3-2 at89c52单片机结构框图 并行 i/o口:at89c52 共有四个 8位的 i/o口(p0、p1、p2、p3) ,以实现数据的 并行输入输出。 串行口:at89c52 单片机有一个全双工的串行口,以实现单片机和其它设备之间的 串行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为 同步移位器使用。 中断控制系统:at89c52 单片机的中断功能较强,以满足控制应用的需要。 at89c52共有 5个中断源,即外中断 2个,定时/计数中断 2个,串行中断 1个。全部 中断分为高级和低级共二个优先级别。 t0 第 8 页 共 40 页 时钟电路:at89c52 芯片的内部有时钟电路,但石英晶体和微调电容需外接。时钟 电路为单片机产生时钟脉冲序列。系统允许的晶振频率一般为 6mhz和 12mhz。 从上述内容可以看出,at89c52 虽然是一个单片机芯片,但作为计算机应该具有的 基本部件它都包括,因此实际上它已是一个简单的微型计算机系统了。 3.1.1 at89c52 的信号引脚 at89c52是标准的 40引脚双列直插式集成电路芯片,引脚排列请参见图 3-2。 信号引脚介绍 p0.0p0.7:低八位地址/数据总线分时复用。 p1.0p1.7:只能做一般 i/o口。 p2.0p2.7:高八位地址总线。 p3.0p3.7:8 位双向口线。 ale:地址锁存控制信号。 在系统扩展时,ale 用于控制把 p0口输出的低 8位地址锁存器锁存起来,以实现 低位地址和数据的隔离。此外由于 ale是以晶振六分之一的固定频率输出的正脉冲, 因此可作为外部时钟或外部定时脉冲使用。 :外部程序存储器读选通信号。在读外部 rom时 有效(低电平) ,以psen psen 实现外部 rom单元的读操作。 :访问程序存储控制信号。当 信号为低电平时,对 rom的读操作限定在外aea 部程序存储器;而当 信号为高电平时,则对 rom的读操作是从内部程序存储器开始,a 并可延至外部程序存储器。 rst:复位信号。当输入的复位信号延续 2个机器周期以上高电平即为有效,用以 完成单片机的复位初始化操作。 xtal1和 xtal2:外接晶体引线端。当使用芯片内部时钟时,此二引线端用于外接 石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。 vss:地线。 vcc:+5v 电源。 以上是 at89c52单片机芯片 40条引脚的定义及简单功能说明。 第 9 页 共 40 页 p1.01 p1.12 p1.23 p1.34 p1.45 p1.56 p1.67 p1.78 rst/vpd9 rxd p3.010 txd p3.111 int0 p3.212 int1 p3.313 t0 p3.414 t1 p3.515 wr p3.616 rd p3.717 xtal218 xtal119 vss20 21 p2.1 22 p2.2 23 p2.3 24 p2.4 25 p2.5 26 p2.6 27 p2.7 28 psen 29 ale/prog 30 ea/vpp 31 p0.7 32 p0.6 33 p0.5 34 p0.4 35 p0.3 36 p0.2 37 p0.1 38 p0.0 39 vcc 40 图 3-3 at89c52引脚图 信号引脚的第二功能 由于工艺及标准化等原因,芯片的引脚数目是有限制的。例如 at89c52系列把芯 片引脚数目限定为 40条,但单片机为实现其功能所需要的信号数目却远远超过此数, 因此就出现了需要与可能的矛盾。如何解决这个矛盾,兼职是唯一可行的办法,即给 一些信号引脚赋以双重功能。如果把前述的信号定义为引脚第一功能的话,则根据需 要再定义的信号就是它的第二功能。下面介绍一些信号引脚的第二功能。 p3口线的第二功能: p3的 8条口线都定义有第二功能,详见表 3-1。 eprom存储器程序固化所需要的信号: 有内部 eprom的单片机芯片,为写入程序需提供专门的编程脉冲和编程电源,这 些信号也是由信号引脚以第二功能的形式提供的,即: 编程脉冲:30 脚(ale/prog) 编程电压(25v):31 脚( /vpp)ea 备用电源引入: 由于万年历在运行过程中需要电源,而在运行过程中有可能出现突发情况,所以 引入备用电源。at89c52 单片机的备用电源也是以第二功能的方式由 9脚(rst/vpd) 引入的。当电源发生故障电压降低到下限值时,备用电源经此端向内部 ram提供电压, 以保护内部 ram中的信息不丢失。 第 10 页 共 40 页 表 3-1 p3口各引脚与第二功能表 以上把 at89c52单片机的全部信号,分别以第一功能和第二功能的形式列出。各 种型号的芯片,其引脚的第一功能信号是相同的,所不同的只在引脚的第二功能信号。 对于 9、30 和 31三个引脚,由于第一功能信号与第二功能信号是单片机在不同工 作方式下的信号,因此不会发生使用上的矛盾。但是 p3口的情况却有所不同,它的第 二功能信号都是单片机的重要控制信号。因此在实际使用时,都是先按需要选用第二 功能信号,剩下的才以第一功能的身份作数据位的输入输出使用。 3.2 ds1302 时钟模块 ds1302是 dallas半导体公司推出的时钟芯片,内含一个实时时钟/日历和 31字节 静态 ram,可以通过串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、 日、星期、月、年的信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过 am/pm标志位决定采用 24或 12小时时间格式。ds1302 与单片机之间能简单地采用同 步串行的方式进行通信,仅需三根 i/o线:复位(rst)、i/o 数据线、串行时钟 (sclk)。时钟/ram 的读/写数据以一字节或多达 31字节的字符组方式通信。ds1302 工作时功耗很低,保持数据和时钟信息时,功耗小于 1mw。 此外, ds1302 还 有 年 份 寄 存 器 、 控 制 寄 存 器 、 充 电 寄 存 器 、 时 钟 突 发 寄 存 器 及 与 ram 相 关 的 寄 存 器 等 。 时 钟 突 发 寄 存 器 可 一 次 性 顺 序 读 写 除 充 电 寄 存 器 外 的 所 有 寄 存 器 内 容 。 引脚 第二功能 第二功能信号名称 p3.0 rxd 串行数据接收 p3.1 txd 串行数据发送 p3.2 0int外部中断 0申请 p3.3 1外部中断 1申请 p3.4 t0 定时器/计数器 0的外部输入 p3.5 t1 定时器/计数器 1的外部输入 p3.6 wr外部 ram写选通 p3.7 d外部 ram读选通 第 11 页 共 40 页 3.2.1 内部结构及引脚 电 源 控 制 输入移位 寄存器 振荡器与 分频器实时时钟 命令与控制 逻辑 31*8ram vcc1 vcc2 gnd i/o sclk rst x1 x2 图 3-4 ds1302内部结构图 图 3-5 ds1302引脚排列 ds1302 的 引 脚 排 列 , 其 中 vcc1 为 后 备 电 源 , vcc2 为 主 电 源 。 在 主 电 源 关 闭 的 情 况 下 , 也 能 保 持 时 钟 的 连 续 运 行 。 ds1302 由 vcc1 或 vcc2 两 者 中 的 较 大 者 供 电 。 当 vcc2 大 于 vcc1 0.2v 时 , vcc2 给 ds1302 供 电 。 当 vcc2 小 于 vcc1 时 , ds1302 由 vcc1 供 电 。 x1 和 x2 是 振 荡 源 , 外 接 32.768khz 晶 振 。 rst 是 复 位 /片 选 线 , 通 过 把 rst 输 入 驱 动 置 高 电 平 来 启 动 所 有 的 数 据 传 送 。 rst 输 入 有 两 种 功 能 : 首 先 , rst 接 通 控 制 逻 辑 , 允 许 地 址 /命 令 序 列 送 入 移 位 寄 存 器 ; 其 次 , rst 提 供 终 止 单 字 节 或 多 字 节 数 据 的 传 送 手 段 。 当 rst 为 高 电 平 时 , 所 有 的 数 据 传 送 被 初 始 化 , 允 许 对 ds1302 进 行 操 作 。 如 果 在 传 送 过 程 中 rst 置 为 低 电 平 , 则 会 终 止 此 次 数 据 传 送 , i/o 引 脚 变 为 高 阻 态 。 上 电 运 行 时 , 在 vcc2.0v 之 前 , rst 必 第 12 页 共 40 页 须 保 持 低 电 平 。 只 有 在 sclk 为 低 电 平 时 , 才 能 将 rst 置 为 高 电 平 。 i/o 为 串 行 数 据 输 入 输 出 端 ( 双 向 ) 。 sclk 为 时 钟 输 入 端 。 3.2.2 工作原理 ds1302工作时为了对任何数据传送进行初始化,需要将复位脚(rst)置为高电平 且将 8位地址和命令信息装入移位寄存器。数据在时钟(sclk)的上升沿串行输入, 前 8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出 数据,写操作时输出数据。时钟脉冲的个数在单字节方式下为 8+8(8 位地址+8 位数据) ,在多字节方式下为 8加最多可达 248的数据。 3.2.3 寄存器和控制命令 对 ds1302的操作就是对其内部寄存器的操作,ds1302 内部共有 12个寄存器,其 中有 7个寄存器与日历、时钟相关,存放的数据位为 bcd码形式。此外,ds1302 还有 年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与 ram相关的寄存器等。 时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。日历、时间寄存器及 控制字如表 3-2所示: 表 3-2 日历、时钟寄存器与控制字对照表 7 6 5 4 3 2 1 0寄存器名称 1 ram/ck a4 a3 a2 a1 a0 rd/w 秒寄存器 1 0 0 0 0 0 0 分寄存器 1 0 0 0 0 0 1 小时寄存器 1 0 0 0 0 1 0 日寄存器 1 0 0 0 0 1 1 月寄存器 1 0 0 0 1 0 0 星期寄存器 1 0 0 0 1 0 1 年寄存器 1 0 0 0 1 1 0 写保护寄存器 1 0 0 0 1 1 1 慢充电寄存器 1 0 0 1 0 0 0 时钟突发寄存器 1 0 1 1 1 1 1 最后一位 rd/w,为“0”时表示进行写操作,为“1”时表示读操作。 ds1302内部寄存器列表如表 3-3所示: 第 13 页 共 40 页 表 3-3:ds1302 内部主要寄存器分布表 命令字 各位内容 寄存器名称 写 读 取值范围 7 6 5 4 3 2 1 0 秒寄存器 80h 81h 00-59 ch 10sec sec 分寄存器 82h 83h 00-59 0 10min min 小时寄存器 84h 85h 01-12或 00-23 12/24 0 a hr hr 日期寄存器 86h 87h 01- 28,29,30,3 1 0 0 10date date 月份寄存器 88h 89h 01-12 0 0 0 10m month 周寄存器 8ah 8bh 01-07 0 0 0 0 0 day 年份寄存器 8ch 8dh 00-99 10year year ds1302内部的 ram分为两类,一类是单个 ram单元,共 31个,每个单元为一个 8 位的字节,其命令控制字为 cohfdh,其中奇数为读操作,偶数为写操作;再一类为突 发方式下的 ram,此方式下可一次性读写所有的 ram的 31个字节,命令控制字为 feh(写)、ffh(读)。 我们现在已经知道了控制寄存器和 ram的逻辑地址,接着就需要知道如何通过外 部接口来访问这些资源。单片机是通过简单的同步串行通讯与 ds1302通讯的,每次通 讯都必须由单片机发起,无论是读还是写操作,单片机都必须先向 ds1302写入一个命 令帧,这个帧的格式如表 3-2所示,最高位 bit7固定为 1,bit6 决定操作是针对 ram 还是时钟寄存器,接着的 5个 bit是 ram或时钟寄存器在 ds1302的内部地址,最后一 个 bit表示这次操作是读操作抑或是写操作。 物理上,ds1302 的通讯接口由 3个口线组成,即*rst,sclk,i/o。其中*rst 从 低电平变成高电平启动一次数据传输过程,sclk 是时钟线,i/o 是数据线。具体的读 写时序参考图 3-5,但是请注意,无论是哪种同步通讯类型的串行接口,都是对时钟信 号敏感的,而且一般数据写入有效是在上升沿,读出有效是在下降沿(ds1302 正是如 此的,但是在芯片手册里没有明确说明),如果不是特别确定,则把程序设计成这样: 平时 sclk保持低电平,在时钟变动前设置数据,在时钟变动后读取数据,即数据操作 总是在 sclk保持为低电平的时候,相邻的操作之间间隔有一个上升沿和一个下降沿。 第 14 页 共 40 页 *rst i/o 图 3-6 ds1302的命令字结构 sclk为 0写入的数据sclk 为 1sclk为 0读出的数据 图 3-7 ds1302时钟模块 3.3 ds18b20 温度采集模块 ds18b20是美国 dallas半导体公司继 ds1820之后最新推出的一种改进型智能温度 传感器。与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过 简单的编程实现 912 位的数字值读数方式。可以分别在 93.75 ms和 750 ms内完成 9位和 12位的数字量,并且从 ds18b20读出的信息或写入 ds18b20的信息仅需要一根 口线读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的 ds18b20供电, 而无需额外电源。因而使用 ds18b20可使系统结构更趋简单,可靠性更高。他在测温 精度、转换时间、传输距离、分辨率等方面较 ds1820有了很大的改进,给用户带来了 更方便的使用和更令人满意的效果。 sclk 第 15 页 共 40 页 3.3.1 内部结构及引脚 高速缓存储 存器 8 位 crc 生成 器 储存器和控制器 温度灵敏器件 低温触发器 tl 高温触发器 th 64 位 rom 和单 线接 口 电 源 检 测 配置寄存器 图 3-8 ds18b20内部结构图 vcc dq gnd 图 3-9 ds18b20引脚排列 3.3.2 测温原理 ds18b20的测温原理如图 3-9所示,图中低温度系数晶振的振荡频率受温度的影响 很小,用于产生固定频率的脉冲信号送给减法计数器 1,高温度系数晶振随温度变化其 震荡频率明显改变,所产生的信号作为减法计数器 2的脉冲输入,图中还隐含着计数 门,当计数门打开时,ds18b20 就对低温度系数振荡器产生的时钟脉冲后进行计数,进 而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先 将-55所对应的基数分别置入减法计数器 1和温度寄存器中,减法计数器 1和温度寄 存器被预置在-55所对应的一个基数值。减法计数器 1对低温度系数晶振产生的脉冲 信号进行减法计数,当减法计数器 1的预置值减到 0时温度寄存器的值将加 1,减法计 数器 1的预置将重新被装入,减法计数器 1重新开始对低温度系数晶振产生的脉冲信 号进行计数,如此循环直到减法计数器 2计数到 0时,停止温度寄存器值的累加,此 时温度寄存器中的数值即为所测温度。图 3-9中的斜率累加器用于补偿和修正测温过 程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上 述过程,直至温度寄存器值达到被测温度值,这就是 ds18b20的测温原理。 第 16 页 共 40 页 预置 低温度系数 振荡器 高温度系数 振荡器 减法计数器 2 斜率累加器 减法计数器 1 =0 =0 比较器 预置 温度寄存器 lsb 置 1/清零 +1 停止 图 3-10 ds18b20的测温原理框图 3.3.3 工作过程及时序 ds18b20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计 数器 1提供一频率稳定的计数脉冲。 高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器 2提供一个 频率随温度变化的计数脉冲。 初始时,温度寄存器被预置成-55,每当计数器 1从预置数开始减计数到 0时, 温度寄存器中寄存的温度值就增加 1,这个过程重复进行,直到计数器 2计数到 0时 便停止。 初始时,计数器 1预置的是与-55相对应的一个预置值。以后计数器 1每一个循 环的预置数都由斜率累加器提供。为了补偿振荡器温度特性的非线性性,斜率累加器 提供的预置数也随温度相应变化。计数器 1的预置数也就是在给定温度处使温度寄存 器寄存值增加 1计数器所需要的计数个数。 ds18b20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。在计 数器 2停止计数后,比较器将计数器 1中的计数剩余值转换为温度值后与 0.25进行 比较,若低于 0.25,温度寄存器的最低位就置 0;若高于 0.25,最低位就置 1; 若高于 0.75时,温度寄存器的最低位就进位然后置 0。这样,经过比较后所得的温 度寄存器的值就是最终读取的温度值了,其最后位代表 0.5,四舍五入最大量化误差 为1/2lsb,即 0.25。 第 17 页 共 40 页 温度寄存器中的温度值以 9位数据格式表示,最高位为符号位,其余 8位以二进 制补码形式表示温度值。测温结束时,这 9位数据转存到暂存存储器的前两个字节中, 符号位占用第一字节,8 位温度数据占据第二字节。 ds18b20测量温度时使用特有的温度测量技术。ds18b20 内部的低温度系数振荡器 能产生稳定的频率信号;同样的,高温度系数振荡器则将被测温度转换成频率信号。 当计数门打开时,ds18b20 进行计数,计数门开通时间由高温度系数振荡器决定。芯片 内部还有斜率累加器,可对频率的非线性度加以补偿。测量结果存入温度寄存器中。 一般情况下的温度值应该为 9位,但因符号位扩展成高 8位,所以最后以 16位补码形 式读出。 ds18b20工作过程一般遵循以下协议:初始化rom 操作命令存储器操作命 令处理数据。 1.初始化 单总线上的所有处理均从初始化序列开始。初始化序列包括总线主机发出一复位 脉冲,接着由从属器件送出存在脉冲。存在脉冲让总线控制器知道 ds18b20 在总线上 且已准备好操作。 2.rom操作命令 一旦总线主机检测到从属器件的存在,它便可以发出器件 rom操作命令之一。所 有 rom操作命令均为 8位长。这些命令列表如下: read rom(读 rom)33h 此命令允许总线主机读 ds18b20的 8位产品系列编码,唯一的 48位序列号,以及 8位的 crc。此命令只能在总线上仅有一个 ds18b20的情况下可以使用。如果总线上存 在多于一个的从属器件,那么当所有从片企图同时发送时将发生数据冲突的现象(漏 极开路会产生线与的结果) 。 match rom( 符合 rom)55h 此命令后继以 64位的 rom数据序列,允许总线主机对多点总线上特定的 ds18b20 寻址。只有与 64位 rom序列严格相符的 ds18b20才能对后继的存贮器操作命令作出响 应。所有与 64位 rom序列不符的从片将等待复位脉冲。此命令在总线上有单个或多个 器件的情况下均可使用。 skip rom( 跳过 rom )cch 第 18 页 共 40 页 在单点总线系统中,此命令通过允许总线主机不提供 64位 rom编码而访问存储器 操作来节省时间。如果在总线上存在多于一个的从属器件而且在 skip rom命令之后发 出读命令,那么由于多个从片同时发送数据,会在总线上发生数据冲突(漏极开路下 拉会产生线与的效果) 。 search rom( 搜索 rom)f0h 当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知道其 64 位 rom编码。搜索 rom命令允许总线控制器用排除法识别总线上的所有从机的 64位编 码。 alarm search(告警搜索)ech 此命令的流程与搜索 rom命令相同。但是,仅在最近一次温度测量出现告警的情 况下,ds18b20 才对此命令作出响应。告警的条件定义为温度高于 th 或低于 tl。只要 ds18b20一上电,告警条件就保持在设置状态,直到另一次温度测量显示出非告警值或 者改变 th或 tl的设置,使得测量值再一次位于允许的范围之内。贮存在 eeprom内的 触发器值用于告警。 3.存储器操作命令 write scratchpad(写暂存存储器)4eh 这个命令向 ds18b20的暂存器中写入数据,开始位置在地址 2。接下来写入的两个 字节将被存到暂存器中的地址位置 2和 3。可以在任何时刻发出复位命令来中止写入。 read scratchpad(读暂存存储器)beh 这个命令读取暂存器的内容。读取将从字节 0开始,一直进行下去,直到第 9(字 节 8,crc)字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令 来中止读取。 copy scratchpad(复制暂存存储器)48h 这条命令把暂存器的内容拷贝到 ds18b20的 e2存储器里,即把温度报警触发字节 存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而 ds18b20又正在忙于把暂存器拷贝到 e2存储器,ds18b20 就会输出一个“0” ,如果拷 贝结束的话,ds18b20 则输出“1” 。如果使用寄生电源,总线控制器必须在这条命令 发出后立即起动强上拉并最少保持 10ms。 convert t(温度变换)44h 第 19 页 共 40 页 这条命令启动一次温度转换而无需其他数据。温度转换命令被执行,而后 ds18b20 保持等待状态。如果总线控制器在这条命令之后跟着发出读时间隙,而 ds18b20又忙 于做时间转换的话,ds18b20 将在总线上输出“0” ,若温度转换完成,则输出“1” 。如 果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持 500ms。 recall e2(重新调整 e2)b8h 这条命令把贮存在 e2中温度触发器的值重新调至暂存存储器。这种重新调出的操 作在对 ds18b20上电时也自动发生,因此只要器件一上电,暂存存储器内就有了有效 的数据。在这条命令发出之后,对于所发出的第一个读数据时间片,器件会输出温度 转换忙的标识:“0”=忙, “1”=准备就绪。 read power supply(读电源)b4h 对于在此命令发送至 ds18b20之后所发出的第一读数据的时间片,器件都会给出 其电源方式的信号:“0”=寄生电源供电, “1”=外部电源供电。 4.处理数据 ds18b20的高速暂存存储器由 9个字节组成。当温度转换命令发布后,经转换所得 的温度值以二字节补码形式存放在高速暂存存储器的第 0和第 1个字节。单片机可通 过单线接口读到该数据,读取时低位在前,高位在后。 表 3-4 ds18b20温度数据表 温度 二进制 十六进制 +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 0008h 0.0 0000 0000 0000 0000 0000h -0.5 1111 1111 1111 1000 fff8h -10.125 1111 1111 0101 1110 ff5eh -25.0625 1111 1110 0110 fe6fh 第 20 页 共 40 页 1111 -55 1111 1100 1001 0000 fc90h 上表是 ds18b20温度采集转化后得到的 12位数据,存储在 ds18b20的两个 8比特 的 ram中,二进制中的前面 5位是符号位,如果测得的温度大于或等于 0,这 5位为 0,只要将测到的数值乘于 0.0625即可得到实际温度;如果温度小于 0,这 5位为 1, 测到的数值需要取反加 1再乘于 0.0625即可得到实际温度。 温度转换计算方法举例: 例如当 ds18b20采集到+125的实际温度后,输出为 07d0h,则: 实际温度=07d0h0.0625=20000.0625=1250c。 例如当 ds18b20采集到-55的实际温度后,输出为 fc90h,则应先将 11位数据位 取反加 1得 370h(符号位不变,也不作为计算) ,则: 实际温度=370h0.0625=8800.0625=550c。 图 3-11 ds18b20温度采集模块 3.4 键盘模块 按照键盘与 cpu的连接方式可以分为查询按键和矩阵式键盘。由于程序操作简单, 只需 4个按键,所以选有查询式按键。查询式按键是各按键相互独立,每个按键占用 一根 i/o口线,每根 i/o口线上的按键工作状态不会影响其他 i/o口线上按键的工作 状态。查询式按键电路配置灵活,软件结构简单,但每个按键必须占用一根 i/o口线, 在按键数量较多时,i/o 口线浪费较大,且电路结构显得繁杂。故这种形式适用于按键 数量较少的场合。 第 21 页 共 40 页 此设计因为需要的按键少。决定选用 4个按钮的小键盘,四个按钮的功能分别为: up键,具有向上和加 1的功能。down 键,具有向下和减 1的功能。clear 键,具有清 除返回的功能。function 键具有运行进入的功能。它们与单片机的 p0口相连,依次接 p0.0,p0.1,p0.2,p0.3。 图 3-12 键盘模块 3.5 lcd 显示模块 就时钟而言,通常可采用液晶显示或数码管显示。由于一般的段式液晶屏,需要 专门的驱动电路,而且可视性相对较差,对于具有驱动电路和微处理器接口的液晶显 示模块(字符或点阵) ,一般多采用并行接口,对微处理器的接口要求较高,占用资源 多。因此,本设计采用 lgm12641bs1r显示。lgm12641bs1r 的指令可带一个、两个参数, 或无参数。若指令中含有参数,则每条指令执行时均须先送入参数,再送入指令代码。 由于状态位作用不一样,因此执行不同指令必须检测不同状态位。其引脚功能如下: vcc:电源。 gnd:接地。 db0db7:数据线。 :复位信号。rst e:数据读写操作控制位,e 线向 lcd模块发送一个脉冲,lcd 模块与单片机之间 将进行一次数据交换。 第 22 页 共 40 页 r/w:读写控制线,r/w=0:写操作,r/w=1:读操作。 di:显示指令控制端。 vo:液晶显示器驱动电源。 vout:lcd 驱动负电压。 cs1:右半屏选屏信号。 cs2:左半屏选屏信号。 图 3-13 lcd显示模块 第 23 页 共 40 页 第 4 章 软件设计 本系统的软件采用 c语言编写,主要由时钟系统,温度采集系统,控制系统和显 示系统组成。单片机向时钟芯片和测温元件发出命令使其完成读或写操作,将读出的 信息转为 bcd码,最后送入显示系统实现功能。软件系统框图如下: 控制系统 显示系统 时钟系统 温度采集系统 图 4-1 软件系统框图 4.1 温度采集软件 因为 ds18b20温度传感器在测温时是通过累加来 记录温度的,为了温度传感器正常稳定的运行,需要 加延时子程序。程序如下: void sensor_delay(uchar count) while(count-); / count表示延时参数,值越大,延时时间越长 单总线上的所有处理都要从初始化开始。初始化 序 图 4-2 温度采集流程图 列包括总线主机发出一复位脉冲,接着由从属器件送出 存在脉冲。存在脉冲让总线控制器知道 ds18b20 在总线上且已准备好操作。初始化程 序如下: uchar sensor_initial(void) 初始化模块 ds18b20取得温度值 存入储存器 处理温度值,换成 bcd码 显示温度 第 24 页 共 40 页 uchar i = 0; dq = 1; / dq复位 sensor_delay(8); / 稍做延时 dq = 0; / 单片机将 dq拉低 sensor_delay(80); / 精确延时,大于 480us dq = 1; / 拉高总线 sensor_delay(14); / 稍做延时后 i = dq; / 若 x=0则初始化成功,若 x=1则初始化失 败 sensor_delay(20); return (i); 一旦总线主机检测到从属器件的存在,它便可以发出器件 rom操作命令之一,所 有 rom操作命令均为 8位长。rom 操作命令:read t(读区温度寄存器)beh,skip rom( 跳过 rom )cch,convert t(温度变换)44h。 sensor_write_byte( 0xcc ); / 跳过读序号列号的操作 sensor_write

温馨提示

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

评论

0/150

提交评论