收藏 分享(赏)

简易万年历的设计.doc

上传人:无敌 文档编号:669440 上传时间:2018-04-17 格式:DOC 页数:44 大小:3.58MB
下载 相关 举报
简易万年历的设计.doc_第1页
第1页 / 共44页
简易万年历的设计.doc_第2页
第2页 / 共44页
简易万年历的设计.doc_第3页
第3页 / 共44页
简易万年历的设计.doc_第4页
第4页 / 共44页
简易万年历的设计.doc_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、漳州师范学院简易万年历的设计姓 名: 学 号: 系 别: 物理与电子信息工程系 专 业: 电子信息科学与技术 年 级: 10 级 指导教师: 白炳良 2013 年 6 月 目录1. 设计任务 .51.1 设计任务 .51.2 设计要求 .62.设计方案 .62.1 设计思路 .62.2 方案比较与论证 .62.2.1 数码管显示模块 .62.2.2 温度传感器的选择 .62.2.3 时钟计时的选择 .72.3 系统结构框图 .73.各功能模块设计 .83.1 显示模块原理 .83.2 参数计算 .93.3 独立式按键模块 .93.4 时钟模块 .103.4.1 DS1302 特性介绍 .103

2、.4.2 DS1302 引脚介绍 .103.4.3 DS1302 有关日历、时间的寄存器 .103.4.4 DS1302 控制字介绍 .113.4.5 DS1302 单字节读写时序介绍 .113.4.6 DS1302 操作指令介绍 .123.4.7 DS1302 与单片机接口电路 .133.5 温测模块 .133.5.1 单总线介绍 .133.5.2 DS18B20 特性介绍 .133.5.3 DS18B20 管脚介绍 .143.5.4 DS18B20 内部结构 .143.5.5 DS18B20 温度转化示例 .143.5.6 DS18B20 时序介绍 .153.5.7 DS18B20 操作步

3、骤 .163.5.8 DS18B20 与单片机的接口电路 .173.6 总系统原理图 .174.软件设计 .184.1 I/O 口分配 .184.2 按键扫描 .185.流程图 .195.1 主程序流程图 .195.2 WORK0 模块流程图 .195.3 WORK1 模块流程图 .205.4 WORK2 模块流程图 .205.5 获取温度子程序流程图 .215.6 按键扫描 .225.7 中断服务子程序 .225.8 显示方式 1.225.9 初始化 DS1302 子程序流图 .235.10 温显模块子程序流图 .245.11 读取时间模块子程序流图 .246.程序代码 .256.1 主程序

4、部分 .256.2 包含文件部分 .336.3 包含文件部分 .357.调试要点 .437.1 硬件调试 .437.2 软件调试 .437.3 结果分析及设计工作总结 .438.参考文献及附件 .438.1 参考文献 .438.2 元器件清单 .448.3 PCB 版图 .448.4 实物图 正面 .458.5 实物图 背面 .45摘要:单片机就是微控制器,是面向应用对象设计、突出控制功能的芯片。单片机接上晶振、复位电路和相应的接口电路,装载软件后就可以构成单片机应用系统。将它嵌入到形形色色的应用系统中,就构成了众多产品、设备的智能化核心。本设计就是应用单片机强大的控制功能制作而成的电子万年历

5、,该电子万年历包括两大功能:可显示年、月、日、时、分;实时监测环境温度(具有超低温的报警功能,且报警的上下限值可由用户自定义设置),。关键字:单片机,DS18B20,DS1302 ,共阳数码管 . 1. 设计任务1.1 设计任务利用单片机、时钟芯片 DS1302、温度传感器 DS18B20、数码管等实现日期、时间、温度的显示,即一个简单的万年历。1.2 设计要求1. 通过 DS1302 计时,时间可调并在数码管上显示出来。2. 通过 DS18B20 检测当前环境温度,精读为 0.5。3. 具有超温报警功能2.设计方案2.1 设计思路本设计由 DS18B20 作为温度检测的核心,检测一次当前温度

6、所耗费的时间大约在 100ms750ms 之间,随着检测精度的增加,耗费时间在方位内逐渐增加,所以利用软件延时的方法来实现温检,并且具有超温和低温的报警功能,其温度报警的上下限值可根据用户喜好进行更改;时钟部分使用专用计时芯片 DS1302,可精确显示年、月、日、时、分、秒;2.2 方案比较与论证2.2.1 数码管显示模块方案一:单片机输出数据经译码芯片 CD4511 进行译码后直接驱动数码管,数码管公共端接 9012 三极管扩流,并通过单片机 I/O 口控制三极管的选通,实现动态显示。方案二:有单片机的 I/O 口直接驱动数码管的段码,数码管的公共端接 9012 三极管,通过灌电流的方式点亮

7、数码管,也需通过单片机 I/O 口控制三极管的选通,实现动态显示。由于所需 I/O 口由 AT98S52 可直接提供,无须因为 I/O 口不够而用 CD4511 来节省I/O 口,方案二又较方案一更容易实惠,所以,我选择方案二。2.2.2 温度传感器的选择方案一:采用热敏电阻作为检测温度的核心元件,由于热敏电阻会随温度变化而变化,进而其阻值发生变化,再经 555 振荡器变化的脉冲数传递给单片机进行处理。方案二:采用数字式的集成温度传感器 DS18B20 作为温度检测的核心元件,由其检测并直接输出数字温度信号给单片机进行处理。对于方案一,采用热敏电阻作为温度检测元件,有价格便宜,元件易购的优点,

8、但热敏电阻对温度的细微变化不太敏感,并且由于热敏电阻的 R-T 关系的非线性,其自身电阻对温度的变化存在较大误差,而且在人体所处环境温度变化过程中难以检测到小的温度变化。但作为本次设计虽已能满足基本要求,但为了更深入的学习,所以放弃该方案。对于方案二,由于数字式集成温度传感器 DS18B20 的高度集成化,大大降低了外接放大转化等电路的误差因数,温度误差变得很小,并且由于其检测温度的原理与热敏电阻检测的原理有着本质的不同,使得其温度分辨力极高。温度值在器件内部转化成数字量直接输出,简化了系统程序设计,又由于该温度传感器采用先进的单总线技术,与单片机的接口变得非常简洁,抗干扰能力强,虽然芯片原理

9、复杂,但是可以对时序的理解更深入一步,所以选择此方案。2.2.3 时钟计时的选择方案一:AT89S52 单片机内部带有定时/计数功能,此定时功能是通过对外部晶振的脉冲进行计数,从而达到计时功能,只要使用 11.0592的晶振就能实现零误差的计时,因此可以利用此功能实现计时,但因为只有单一的计时功能要实现“万年历”的功能需要较复杂的程序,而且如果单片机掉电无法继续进行计时,所以使用不便。方案二:DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗的实时时钟芯片,附加 31 字节静态 RAM,采用 SPI 三线接口与 CPU 进行通信,并可采用突发方式一次传送多个字节的时钟信号和 RA

10、M 数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与 31 天时可以自动调整,且具有闰年补偿功能。工作电压宽达 2.55.5V 。采用双电源供电(主电源和备用电源) ,可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。利用单片机强大的控制功能就可实现实时计时的功能,而且消耗的系统资源少,程序简单。综合上述两种方案,宜采用方案二实现实时计时功能。2.3 系统结构框图AT89S52 单片机在模式键、设置键的控制下,由 P0 口输出数据,通过 P2.0 、 P2.1、P2.2、P2.3 进行选通,用数码管显示信息。系统框图:图 2-3 系统总框图3.各功能模块设计 3.1

11、显示模块原理由单片机(AT89S52)的引脚 P0 口输出温度、时间等数据信息,通过片选信号 P2.0 、P2.1、P2.2、P2.3 就可在相应的数码管进行显示。当位选信号 P2.0 为低电平时,P1 口送出数据也为低电平就点亮数码管,电流灌进单片机。多位 LED 显示,为了简化电路,降低成本,将所有位的段选线并联在一起,由一个 8 位 I/O 口控制。而共阳极公共端分别接一个9012,由相应的 I/O 口线控制 9012,实现各位数码管的分时选通。段选码,位选码每送入一次后延时 5MS,因人的视觉暂留时间为0.1S(100MS ) ,所以每位显示的时间不能超过 20MS,并保持延时一段时间

12、,以造成视觉暂留效果,给人看上去每个数码管总在亮。电路如(图 3-1)所示。由于采用的是共阳极数码管,所以要让段码点亮需把 I/O 口置 0,例如:段码 a 到 h 对应的 I/O 口是 P0.0 到 P0.7,则要让数码管显示 0 到9 对应的 16 进值如图 3-2 所示AT89S52键盘18B20DS1302晶振数码管蜂鸣器LED电源Q09012 Q19012 Q29012 Q39012abR0 470R1 470R2 470R3 470R4 470R5 470R6 470R7 470VCC VCC VCC VCCR84K7 R94K7 R10 4K7 R11 4K7P00P01P02P

13、03P04P05P06P07cdefghabcdefghabcdefghabcdefghCS0 CS1 CS2 CS3位位位位位位abfcgde dpa7 b6c4 d2e1 f9g10 dp5 com3com8shu1SM411006abfcgde dpa7 b6c4 d2e1 f9g10 dp5 com3com8shu2SM411006abfcgde dpa7 b6c4 d2e1 f9g10 dp5 com3com8shu3SM411006abfcgde dpa7 b6c4 d2e1 f9g10 dp5 com3com8shu4SM411006abcdefgh图 3-1 显示电路图 3-2

14、 码表3.2 参数计算由于 I/O 口高电平约等于 5V,使用灌电流的方式驱动数码管,故选用 PNP 型三极管 9012;数码管能正常工作的段电流为 3mA-10 mA,压降为 1.7V, 三极管发射极和集电极的压降为0.3V,因此 限流电阻的压降为 3.0V, 所以选用限流电阻的阻值 R=470 欧.3.3 独立式按键模块独立式按键是直接用 I/O 口线构成的单个按键电路,其特点是每个h g f e d c b a 16 进制0 1 1 0 0 0 0 0 0 0XC0H1 1 1 1 1 1 0 0 1 0XF9H2 1 0 1 0 0 1 0 0 0XA4H3 1 0 1 1 0 0 0

15、 0 0XB0H4 1 0 0 1 1 0 0 1 0X99H5 1 0 0 1 0 0 1 0 0X92H6 1 0 0 0 0 0 1 0 0X82H7 1 1 1 1 1 0 0 0 0XF8H8 1 0 0 0 0 0 0 0 0X80H9 1 0 0 1 0 0 0 0 0X90Hc 1 1 0 0 0 1 1 0 0XC6H- 1 0 1 1 1 1 1 1 0XBFHL 1 1 0 0 0 1 1 1 0XC7HH 1 0 0 0 1 0 0 1 0X89H501mAVR按键单独占用一根 I/O 口线,每个按键的工作不会影响其它 I/O 口线的状态。独立式按键的典型应用如(图 3

16、-3)所示。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根 I/O 口线,因此,在按键较多时,I/O 口线浪费较大,但本设计只用到四个按键,顾采用独立式按键电路。 K0K1K2K3P24P25P26P27位位位位图 3-3 独立式按键电路3.4 时钟模块DS1302 通过三根口线实现与单片机的通信,因 DS1302 功耗很小,即使电源掉电后通过 3V 的纽扣电池仍能维持 DS1302 精确走时。3.4.1 DS1302 特性介绍DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗的实时时钟芯片,附加 31 字节静态 RAM,采用 SPI 三线接口与 CPU 进行通信,

17、并可采用突发方式一次传送多个字节的时钟信号和 RAM 数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与 31 天时可以自动调整,且具有闰年补偿功能。工作电压宽达 2.55.5V 。采用双电源供电(主电源和备用电源) ,可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。3.4.2 DS1302 引脚介绍各引脚的功能为:1、Vcc2:5V 电源。当 Vcc2Vcc1+0.2V 时,由 Vcc2 向 DS1302 供电,当 Vcc2 Vcc1 时,由 Vcc1 向 DS1302 供电。2 和 3、X1、X2 是外接晶振脚 (32.768KHZ 的晶振)4、地(GND)5、C

18、E/RST :复位脚6、I/O:数据输入输出口;7、SCLK :串行时钟,输入; 8、Vcc1:备用电池端;3.4.3 DS1302 有关日历、时间的寄存器 寄存器的说明如下:1、秒寄存器(81h、80h)的位 7 定义为时钟暂停标志(CH) 。当初始上电时该位置为 1,时钟振荡器停止,DS1302 处于低功耗状态;只有将秒寄存器的该位置改写为 0 时,时钟才能开始运行。2、小时寄存器(85h、84h)的位 7 用于定义 DS1302 是运行于 12 小时模式还是 24 小时模式。当为高时,选择 12 小时模式。在 12 小时模式时,位 5 是 ,当为 1 时,表示 PM。在 24 小时模式时

19、,位 5 是第二个 10小时位3、控制寄存器(8Fh 、8Eh )的位 7 是写保护位(WP) ,其它 7 位均置为0。在对任何的时钟和 RAM 的写操作之前,WP 位必须为 0。当 WP位为 1 时,写保护位防止对任一寄存器的写操作。也就是说在电路上电的初始态 WP 是 1,这时是不能改写上面任何一个时间寄存器的,只有首先将 WP 改写为 0,才能进行其它寄存器的写操作。 3.4.4 DS1302 控制字介绍位 7:必须是逻辑 1,如果它为 0,则不能把数据写入到 DS1302 中。位 6:如果为 0,则表示存取日历时钟数据,为 1 表示存取 RAM 数据;位 5 至位 1(A4A0):指示

20、操作单元的地址;位 0(最低有效位):为 0,表示要进行写操作,为 1 表示进行读操作。读数据:读数据时在紧跟 8 位的控制字指令后的下一个 SCLK 脉冲的下降沿,读出 DS1302 的数据,读出的数据是从最低位到最高位。写数据:控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK 时钟的上升沿时,数据被写入 DS1302,数据输入也是从最低位(0 位)开始。位 0(最低有效位):为 1 表示进行读操作。 如为0,表示要进行写操作,控制字后 SCLK 下降沿 读数据 SCLK 上升沿写数据。3.4.5 DS1302 单字节读写时序介绍DS1302 的数据读写是通过 I/O 串行进行

21、的。当进行一次读写操作时最少得读写两个字节,第一个字节是控制字节,就是一个命令,告诉DS1302 是读还是写操作,是对 RAM 还是对 CLOK 寄存器操作,以及操作的址。第二个字节就是要读或写的数据了。单字节写:在进行操作之前先得将 CE(也可说是 RST)置高电平,然后单片机将控制字的位 0 放到 I/O 上,当 I/O 的数据稳定后,将 SCLK置高电平,DS1302 检测到 SCLK 的上升沿后就将 I/O 上的数据读取,然后单片机将 SCLK 置为低电平,再将控制字的位 1 放到 I/O 上,如此反复,将一个字节控制字的 8 个位传给 DS1302。接下来就是传一个字节的数据给 DS1302,当传完数据后,单片机将 CE 置为低电平,操作结束。单字节读操作的一开始写控制字的过程和上面的单字节写操作是一样,但是单字节读操作在写控制字的最后一个位,SCLK 还在高电平时,DS1302 就将数据放到 I/O 上,单片机将 SCLK 置为低电平后数据锁存,单机机就可以读取 I/O 上的数据。如此反复,将一个字节的数据读入单片机。读与写操作的不同就在于,写操作是在 SCLK 低电平时单片机将数据放到 IO 上,当 SCLK 上升沿时,DS1302 读取。而读操作是在 SCLK

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 学术论文 > 大学论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报