1927_基于单片机的万年历设计
1927_基于单片机的万年历设计,基于,单片机,万年历,设计
黄河科技学院本 科 毕 业 设 计 (论文) 任 务 书工 学院 机械 系 机械设计制造及其自动化 专业 08 级 1 班学 号 080105038 学生 赵子雨 指 导 教 师 蔡 超 峰 毕业设计(论文)题目基于单片机的万年历设计 毕业设计(论文)工作内容与基本要求(目标、任务、途径、方法,应掌握的原始资料(数据) 、参考资料(文献)以及设计技术要求、注意事项等) (纸张不够可加页)一、设计技术要求、原始资料(数据) 、参考资料(文献)万年历是一种应用非常广泛的计时工具,数字显示的日历时钟因其一目了然的特点已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用,为人们提供实时信息。本课题要求基于单片机设计硬件电路,实现日期(包含公历和农历)的显示、调整和查询。该课题可以使学生运用所学知识进行综合强化训练,为其走向工作岗位奠定良好基础。本课题需要掌握基于单片机的软、硬件电路设计能力,并了解时钟芯片 DS 1302 的使用方法。二、设计目标与任务1. 查阅文献资料 12 种以上,外文资料不少于两种。写出 3000 字以上文献综述,单独装订成册;2. 翻译外文科技资料,不少于 3000 汉字,单独装订成册;3. 完成开题报告,填写开题报告表;4. 完成系统的软、硬件电路设计,功能正常;5. 编写摘要,英中文完全对照,中文不少于 300 字;6. 编写设计说明书,不少于 8000 字符。三、时间安排第 1 周第 3 周:完成文献综述、开题报告及英文资料翻译;第 4 周第 9 周:完成系统的软、硬件电路设计,功能正常;第 10 周第 11 周: 编写设计说明书,进一步修改完善毕业设计,准备并完成毕业答辩稿;第 12 周:毕业答辩。毕业设计(论文)时间: 2012 年 02 月 13 日至 2012 年 05 月 15 日计 划 答 辩 时 间: 2012 年 05 月 19 日专业(教研室)审批意见:审批人签名:黄河科技学院毕业设计(论文)开题报告表课题名称 基于单片机的万年历设计课题来源 教师拟订 课题类型 AX 指导教师 蔡超峰学生姓名 赵子雨 专 业 机械设计制造及其自动化 学 号 080105038开题报告内容:(调研资料的准备,设计的目的、要求、思路与预期成果;任务完成的阶段内容及时间安排;完成设计(论文)所具备的条件因素等。 )调研资料的准备:1、初步了解万年历的组成和工作原理;2、查阅并参阅万年历设计手册等各种书籍、资料;3、通过实习、查阅和收集资料,具备了设计基于单片机的万年历设计的思路。设计目的、要求、思路与预期成果:电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且时钟芯片 DS1302 的使用寿命长,误差小。本次设计主控模块用 STC12C5A60S2、时钟电路用时钟芯片 DS1302、显示模块用 12864 液晶显示、温度检测采用 DS18B20 温度传感器、键盘接口电路使用普通按键加上拉电阻完成;软件利用 KEIL C51 语言编程实现单片机程序控制。单片机通过读取时钟芯片 DS1302 获取时间数据和读取 DS18B20 采集的温度信号获取温度信息,然后再把时间数据和温度数据进行处理后送给 12864液晶模块,显示阳历年、月、日、时、秒、闹钟、星期、温度等。预期结果为万年历。任务完成的阶段内容及时间安排:第 1 周第 2 周:了解相关原理和数据手册,完成开题报告;第 3 周第 4 周:完成文献翻译,文献综述,初步拟定总体设计方案;第 5 周第 9 周:设计硬件原理图电路图,编写软件流程图和程序代码; 第 10 周第 11 周:调试系统,撰写设计说明书;第 12 周:撰写论文,准备答辩。完成论文所具备的条件因素:拥有电路元器件、计算机、单片机开发装置及相关的文献资料。指导教师签名: 日期: (可加页)课题类型:(1)A工程设计;B技术开发;C软件工程;D理论研究;(2)X真实课题;Y模拟课题;Z虚拟课题要求(1) 、 (2)均要填,如 AY、BX 等。黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 I 页基于单片机的万年历设计摘 要电子万年历是一种用万年历时钟芯片实现年、月、日、时、分、秒计时,并通过单片机处理后送给显示芯片显示的装置,与机械式时钟相比具有更高的准确性和直观性,且具有更长的使用寿命。本课题是设计一个基于单片机和时钟芯片的电子万年历,由硬件电路和软件组成。硬件由主控电路、时钟电路、温度采集电路、显示电路、键盘接口 5 个模块组成。主控电路采用单片机芯片 STC12C5A60S2、时钟电路采用时钟芯片 DS1302、显示电路采用 KNY12864 液晶显示、温度采集电路采用 DS18B20 温度传感器、键盘接口电路使用普通按键加上拉电阻完成;软件利用 KEIL C51 语言编程实现单片机程序控制。单片机通过读取时钟芯片 DS1302 获取时间数据和读取 DS18B20采集的温度信号获取温度信息,然后再把时间数据和温度数据进行处理后送给 12864液晶模块,显示阳历年、月、日、时、分、秒、闹钟、星期、温度等。关键词:单片机,DS1302,液晶显示黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 II 页Author:Zhao ZiyuTutor:Cai ChaofengBased on SCM calendar designAbstractE-calendar clock is a device which can be calendar year, month, day, hour, minute, seconds for time, and sent to the graphics chip shown through microcontroller. Compared with the mechanical clock, e-calendar clock has a higher accuracy and Intuitive, and has a longer life. Digital Calendar is an application of SCM system, made of compatible hardware and software. Hardware has five modules including the control circuit, clock circuit, the temperature acquisition circuit, display circuit, keyboard interface. Main control module has STC12C5A60S2 microcontroller, the clock circuit with clock chip DS1302, LCD display module with 12864, the temperature detected by DS18B20 temperature sensor, the keyboard interface circuit using the common keys with pull-up resistor; software uses programming language KEIL C51 to achieve MCU process control. MCU get time by reading the data from DS1302 clock chip and read the temperature signal for DS18B20 collected temperature information, and then provide time data and temperature data to the 12,864 LCD module, displaying the Gregorian year, month, day, hour, seconds , Alarm clock, week, temperature and so on. Key words:MCU,DS1302,LCD Display黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 III 页目 录1 绪论 .12 系统设计方案 .22.1 方案选择和论证 .22.1.1 单片机芯片的选择方案和论证 .22.1.2 时钟芯片的选择方案和论证 .22.1.3 显示模块的选择方案和论证 .22.1.4 温度传感器的选择方案和论证 .32.2 系统最终方案 .33 系统的硬件和软件设计 .43.1 系统的硬件设计 .43.1.1 系统设计框图 .43.1.2 硬件概述 .43.1.3 单元电路的设计 .53.1.3.1 单片机主控模块设计 .53.1.3.2 时钟电路模块设计 .63.1.3.3 显示电路模块设计 .73.1.3.4 温度采集模块设计 .83.1.3.5 双电源供电电路设计 .93.1.3.6 RS-232 电路设计 .93.1.4 电路原理及说明 .103.2 系统软件设计 .124 仿真与调试 .134.1 调试仪器 .134.2 硬件测试 .134.3 软件测试 .144.4 测试结果分析 .14黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 IV 页结论 .15致谢 .16参考文献 .17附录 A 原理图 .18附录 B 程序清单 .19黄 河 科 技 学 院 毕 业 设 计 ( 文 献 综 述 ) 第 1 页文献综述1、课题研究背景万年历就是记录一定时间范围内的具体阳历与阴历的日期的年历,方便有需要的人查询使用。随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。电子万年历的出现带来了钟表计时业界跨跃性的进步。近年来,电子钟已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来了极大的方便。随着技术的发展,人们已不再满足于钟表原先简单的计时功能,希望出现一些新的功能,诸如日历的显示、闹钟的应用等,以带来更大的方便,而所有这些,又都是以数字化的电子时钟为基础的。因此,研究实用电子时钟及其扩展应用,有着非常现实的意义,具有很大的实用价值。由于数字集成电路技术的发展和采用了先进的石英技术,现代电子钟具有走时准确、性能稳定、制作简单等优点,弥补了传统钟表的许多不足之处。我们利用单片机技术设计制作的电子万年历,可以很方便的由软件编程进行功能的调整和改进,使其在能够准确显示年、月、日、时间、星期的同时,还能具有其他的功能。如设定闹钟、语单报时、阴阳历的转换、二十四节气的显示等,有一定的新颖性和实用性,同时体积小,携带方便,使用也更为方便,具有技术更新周期短、成本低、开放灵活等优点,具备一定的市场前景。以基于单片机的万年历作为设计课题,因为它具有很好的开放性和可发挥性,要求比较高,不仅考察了对单片机的掌握能力而且强调了对单片机的扩展的应用。另外液晶显示的万年历已经越来越流行,具有显示清晰直观、走时准确、可以进行夜视等功能,并且还可以扩展出其它多钟功能。所以,电子万年历作设计课题很有价值。单片机从 20 世纪 70 年代末出现后,以其卓越的性能,得到了广泛的应用,已经深入到各个领域。单片机芯片本身是按工业测控环境要求设计的,分为民用、工业品、军品,其中工业品和军品具有较强的适合恶劣环境的能力。由于单片机本身就是一个计算机系统,因此,只要在单片机的外围适当加一些必要的扩展电路及通黄 河 科 技 学 院 毕 业 设 计 ( 文 献 综 述 ) 第 2 页道接口,就可以构成各种应用系统,如控制系统、数据采集系统、自动控制系统、检测监视系统、智能仪表、功能模块等。单片机的应用领域十分广泛,自 20 世纪80 年代以来,单片机的应用已经深入到工业,农业、国防、科研、机关、教育、商业以及家电、生活、娱乐、玩具等各个领域中。单片机应该在检测、控制领域中,具有以下特点:(1)小巧灵活、成本化、易于产品化。 (2)可靠性好,适用范围广。由于数字集成电路技术的发展和采用了先进的石英技术,现代电子钟具有走时准确、性能稳定、制作简单等优点,弥补了传统钟表的许多不足之处。我们利用单片机技术设计制作的电子万年历,可以很方便的由软件编程进行功能的调整和改进,使其在能够准确显示年、月、日、时间、星期的同时,还能具有其他的功能。如设定闹钟、语单报时、阴阳历的转换、二十四节气的显示等,有一定的新颖性和实用性,同时体积小,携带方便,使用也更为方便,具有技术更新周期短、成本低、开放灵活等优点,具备一定的市场前景。这里要介绍的就是一款可满足使用者特殊要求,输出方式灵活、计时准确、性能稳定、维护方便的实用电子万年历。2 本课题研究目的及引入2.1 课题研究目的当今社会电子技术迅速的发展,特别是随大规模集成电路的出现,给人类生活带来了根本性的改变。尤其是单片机技术的应用产品已经走进了千家万户。电子万年历的出现给人们的生活带来了诸多方便。电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到了广泛应用。随着人们生活环境的不断改善和美化,在许多场合可以看到数字电子钟。在城市的主要营业场所、车站、码头等公共场所使用 LCD 数字电子钟已经成为一种时尚。但目前市场上各式各样的 LCD 数字电子钟大多数使用全硬件电路实现,电路结构复杂,功率损耗大等缺点。因此有必要对数字电子钟进行改进。2.2 本课题的引入本设计是能对时、分、秒以数字显示精确计时的装置,能广泛应用于个人家庭、车站、码头、办公室等公共场所。由于数字集成电路的发展和石英晶体振荡器的广黄 河 科 技 学 院 毕 业 设 计 ( 文 献 综 述 ) 第 3 页泛应用,使得数字钟的精度,远远超过老式钟表,钟数字化给人们生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动启闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,但是所有这些,都是以钟表数字化为基础。因此,研究万年历及扩大其应用,有着非常现实的意义。3 本课题国内外研究现状目前国内外面临的单片机应用技术,如同 60 年代面临晶体管技术,70 年代面临数字集成电路一样。单片机和可编程门阵列相结合,构成新一代电子应用技术是不可能回避的一项新型的工程应用技术。单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能 IC 卡,录像机,摄像机,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。科技越发达,智能化的东西就越多。学习单片机是社会发展的必然需求,也是大学期间的必修课。国内超大规模集成电路的出现,微处理器及其外围芯片有了迅速的发展。集成技术的最新发展之一是将 CPU 和外围芯片,如程序存储器、数据存储器、并行 I/O口、串行 I/O、定时/计数器、中断控制器及其他控制部件集成在一个芯片之中,制成单片计算机(Single-Chip Microcomputer) 。而近年来推出的一些高档单片机还包括有许多特殊功能单元,如 A/D、D/A 转换器、调制解调器、通信控制器、锁相环、DMA、浮点运算单元、PWM 控制输出单元、PWM 输出时的死区可编程控制功能等。我国生产的电子万年历有很多种,总体上来说以研究多功能电子万年历为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。商家生生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子万年历的设计,使其更加的具有市场。随着科技的快速发展,时间的流逝,自从观太阳,钟摆到电子钟,人类不断的创新记录。美国 DALLAS 公司推出的具有涓细电流充电能的低功耗实时时钟电路黄 河 科 技 学 院 毕 业 设 计 ( 文 献 综 述 ) 第 4 页DS1302 的使用寿命长,误差小,可以对于数字电子万年历采用直观的数值表示。4 本课题研究内容本次设计是基于单片机和时钟芯片的电子万年历,由硬件和软件组成。本次设计基于时钟芯片读取时间和日期,单片机获取时间后送给液晶显示,具有设计合理,功能完备,运行稳定、可靠的性能,且实现后具有读取方便、显示直观、功能多样、电路简洁等诸多优点。该设计的硬件部分由主控电路、时钟电路、温度采集电路、显示电路、键盘接口 5 个模块组成。主控模块采用 STC12C5A60S2 单片机作为核心,具有在线编程技术和大容量存储空间,方便下载和调试;时钟电路采用时钟芯片 DS1302,可自动计数且精度更高;显示模块采用 KNY12864 液晶显示,显示功能强大,外观优美;温度采集电路采用 DS18B20 温度传感器,仅需要一条数据线进行数据传输,易于与单片机连接,可以去除 A/D 模块,简化系统电路,且精度高; 键盘接口电路使用普通按键加上拉电阻完成。系统的软件部分利用 KEIL C51 语言编程实现单片机程序控制,可以线编译检查错误。单片机通过读取时钟芯片 DS1302 获取时间数据和读取DS18B20 采集的温度信号获取温度信息,然后再把时间数据和温度数据进行处理后送给 12864 液晶模块,显示阳历年、月、日、时、分、秒、闹钟、星期、温度等。黄 河 科 技 学 院 毕 业 设 计 ( 文 献 综 述 ) 第 5 页参考文献1 王法能 单片机原理及应用 科学出版社 20042 张毅刚 单片机原理及应用 高等教育出版社 20063 李宗吾.中国万年历.北京:中国科学技术出版社.2006:115-1914 夏墨英.中国天文年历.北京:科学出版社.1984:1256-25815 周慈航.单片机应用程序设计技术H.北京:北京航空航天大学出版社,19926 Anastasios Alexiadis,Ioannis Refanidis.Defining a Tasks Temporal Domain for Intelligent Calendar Applications7 余永权.ATMEL89 系列单片机原理及应用M.西安:电子工业出版社,1999.8 王毅平. MCS-51 单片机原理及应用H.北京:人民邮电出版社,19999 陈坚,李昕,黄樱 .CHEN Jian.LI Xin.HUAN Ying 51 单片机最小化应用系统的Proteus 仿真-电脑知识与技术.2008,2(18)10 陈正振 电子电路设计与制作 广西交通职业技术学院信息工程系 200711 窦振中 单片机外围器件实用手册存储器分册 北京航空航天大学出版社 200612 Joe Tullio,Elizabeth D.Mynatt.Use and Implications of a Shared,Forecasting Calendar.13 王威,刘佳,张志雄等.基于 Proteus 和 Keil 的单片机虚拟仿真平台的设计-上海电力学院学报.2009,25(6).14 闫小坤编 数字电路 吉林大学出版社 200415 朱定华,戴汝平.单片机微机原理与应用M.北京:北京交通大学出版社,2003.16 Ashraf Khalil,Kay Connelly.Improving Cell Phone Awareness by Using Calendar Information.17 51 单片机 C 语言应用开发技术大全 龙脉工作室 刘坤 宁戈 赵红波 张宪栋 人民邮电出版社 2008 年 9 月黄 河 科 技 学 院 毕 业 设 计 ( 文 献 综 述 ) 第 6 页 毕业设计文献综述院 ( 系 ) 名 称 工 学 院 机 械 系专 业 名 称 机 械 设 计 制 造 及 其 自 动 化学 生 姓 名 赵 子 雨指 导 教 师 蔡 超 峰2012 年 03 月 08 日黄河科技学院毕业设计(文献翻译)1特性 实时时钟计算年、月、日、时、分、秒、星 期,直到 2100 年,并有闰年调节功能 31 x 8位通用暂存 RAM 串行输入输出使管脚数最少 2.0V 至 5.5V 宽电压范围操作 在 2.0V 时工作电流小于 300nA 读写时钟或 RAM 数据时有单字节或多字节(脉冲串模式)数据传送方式 8管脚 DIP 封装或可选的 8 管脚表面安装 SO 封装 简单的 3 线接口 与 TTL 兼容 (V CC = 5V) 可选的工业温度范围:-40C 至 +85C 与 DS1202 兼容 美国保险商试验室(UL ) 认证 管脚定义黄河科技学院毕业设计(文献翻译)2订货信息型号 温度范围 管脚封装 顶端标志+ 表示无铅/符合 RoHS 标准的封装。 *顶端标识上的 N 表示工业温度范围器件,A 表示无铅器件。 UL 是美国保险商试验室的注册商标。详细描述 DS1302 涓流充电计时芯片包含一个实时时钟/日历和 31字节的静态RAM。通过简单的串行接口与微处理器通讯。这个实时时钟/日历提供年月日,时分秒信息。对于少于 31天的月份月末会自动调整,还有闰年校正。由于有一个 AM/PM 指示器,时钟可以工作在 12 小时制或者 24 小时制。 使用同步串行通讯简化了 DS1302 与微处理器的接口。与时钟/RAM 通讯只需要三根线: CE, I/O ( 数据线), and SCLK ( 串行时钟)。数据输出输入时钟/RAM 一次 1 字节或者在脉冲串中多达 31字节。DS1302 被设计工作在非常低的电能下,在低于 1W 时还能保持数据和时钟信息。DS1302 是 DS1202 的后继者。除了 DS1202 的基本计时功能以外,DS1302 有额外特点比如,双管脚主电源和备用电源,可编程涓流充电器 VCC1,还附加 7 字节的暂存器。操作 图 1 显示了串行计时器的主要元素:移位寄存器,控制逻辑,振荡器,实时时钟,还有RAM。 典型工作电路黄河科技学院毕业设计(文献翻译)3图 1 框图:典型工作性能 (VCC = 3.3V, TA = +25C,除非另外声明。) 黄河科技学院毕业设计(文献翻译)4管脚描述管脚 名称 功能1 VCC2 双供电配置中的主电源供应管脚,V CC1 连接到备用电源,在主电源失效时保持时间和日期数据。DS1302 工作于 VCC1 和 VCC2 中较大者。当 VCC2 比 VCC1 高 0.2V 时,VCC2 给 DS1302 供电.当 VCC1 比 V CC2 高时, VCC1 给DS1302 供电。2 X13 X2与标准的 32.768kHz 石英晶体相连 . 内部振荡器被设计与指定的 6pF 装载电容的晶体一起工作. 更多关于晶体选择和布局注意事项的信息请参考应用笔记 58 页:Dallas 实时时钟晶振注意事项. DS1302 也可以被外部的32.768kHz 振荡器驱动. 这种配置下, X1 与外部震荡信号连接,X2 悬浮.4 GND 电源地5 CE 输入.CE 信号在读写时必须保持高电平 .此管脚内部有一个 40k( 典型值)的下拉电阻连接到地. 注意:先前的数据手册修正把 CE 当作 RST. 管脚的功能没有改变.黄河科技学院毕业设计(文献翻译)56 I/O 输入/推挽输出.I/O 管脚是三线接口的双向数据管脚.此管脚内部有一个 40k(典型值 )的下拉电阻连接到地.7 SCLK 输入. SCLK 用来同步串行接口上的数据动作.此管脚内部有一个 40k(典型值)的下拉电阻连接到地.8 VCC1 低功率工作在单电源和电池工作系统和低功率备用电池.在使用涓流充电的系统中,这个管脚连接到可再充能量源. UL 认证在使用锂电池时确保避免反向充电电流 .振荡电路 DS1302 使用一个外部 32.768kHz 晶体.振荡电路工作时不需要任何外接的电阻或者电容表 1 详细指明了几个外部晶体的参数。图 1 显示了震荡电路的功能简图。如果使用指定规格的晶体,启动时间通常少于 1秒钟。 时钟精确度 时钟的精确度取决于晶振的精确度,以及振荡电路容性负载与晶振校正的容性负载之间匹配的精确度。另外温度改变引起的晶振频率漂移会使误差增加。外围电路噪音与震荡电路耦合可能导致时钟运行加快。 图 2 显示了一个典型的隔离晶体与振荡器噪音的印刷电路板布局详细信息请参考应用笔记 58页: Dallas 实时时钟的晶振注意事项。表 1 晶振详细说明 *晶振,布线和晶振输入管脚应该与射频产生信号隔离,更详细请参考应用笔记58页: Dallas 实时时钟的晶振注意事项。 图 2 典型晶振印刷电路板布局黄河科技学院毕业设计(文献翻译)6命令字 图 3显示的是命令字.命令字启动每一次数据传输。 MSB (位 7)必须是逻辑 1。 如果是 0, 则禁止对 DS1302 写入。 位 6 在逻辑 0时规定为时钟/日历数据,逻辑 1时为 RAM 数据。 位 1 至 位 5 表示了输入输出的指定寄存器。LSB (位 0) 在逻辑 0时为写操作(输出),逻辑 1时为读操作(输入) 。命令字以 LSB (位 0)开始总是输入。 图 3. 地址/命令 字CE 与时钟控制 所有数据传输开始驱动 CE 输入高.CE 输入实现两个功能。第一 , CE 开启允许对地址/ 命令序列的移位寄存器进行读写的控制逻辑。 第二 CE 信号为单字节和多字节 CE 数据传输提供了终止的方法。 一个时钟周期是一系列的上升沿伴随下降沿.要输入数据在时钟的上升沿数据必须有效,而且在下降沿要输出数据位。如果 CE 输入为低电平,则所有数据传输终止, 并且 I/O 口成高阻抗状态。图 4 显示了数据传输。 在上电时, CE 必须为逻辑 0 直到 VCC 大于 2.0V。同样, SCLK 必须为逻辑 0 当 CE 变成逻辑 1状态。 数据输入 输入写命令字的 8个 SCLK 周期后 ,接下来的 8个 SCLK 周期的上升沿数据字节被输入,如不慎发生,多余的 SCLK 周期将被忽略,数据输入以位 0黄河科技学院毕业设计(文献翻译)7开始。 数据输出 输入读命令字的 8个 SCLK 周期后, 随后的 8个 SCLK 周期的下降沿,一个数据字节被输出。注意第一个数据位的传送发生在命令字节被写完后的第一个下降沿。只要 CE 保持高电平,若不慎发生,多余的 SCLK 周期会重新发送数据字节。 此操作允许连续不断的脉冲串模式读取能力。并且, I/O 管脚在 SCLK 的每个上升沿被置为三态。数据输出从位 0开始。 脉冲串模式 通过寻址 31(十进制)存储单元(地址 /命令位 1到位 5为逻辑 1),脉冲串模式可以指定时钟/ 日历或者 RAM 寄存器.如前所述,位 6指定时钟或者RAM,位 0指定读写。时钟/日历寄存器的存储单元 9至 31和 RAM 寄存器的存储单元 31无数据存储能力。脉冲串模式下的读写从地址 0的位 0开始。 在脉冲串模式下写时钟寄存器时,前 8个寄存器必须按顺序写要发送的数据。然而, 在脉冲串模式下写 RAM 时,不必写入要发送数据的所有 31个字节。不管是否所有 31个字节都被写入,每个写入字节都会被发送到 RAM。 时钟/日历 读取适当的寄存器字节可以得到时间和日历信息。表 3 说明了 RTC 寄存器。写入适当的寄存器字节可以设置或初始化时间和日历。时间和日历寄存器的内容是二进制编码的十进制(BCD )格式的。 周中的天寄存器在午夜 12点增加。周中的天相应的值可以由用户定义,但是必须是连续的( 例如,如果 1代表周日,那么 2代表周一,等等。).非法的时间和日期输入导致未定义操作。 当读写时钟和日期寄存器时,第二(用户)缓存用来防止内部寄存器更新时出错。读时钟和日期寄存器时, 在 CE 上升沿用户缓存与内部寄存器同步 。 每当秒寄存器被写入,递减计数电路被复位。 写传输发生在 CE 的下降沿。为了避免翻转问题, 一旦递减计数电路复位, 剩下的时间和日期寄存器必须在一秒内被写入。 DS1302 可以工作在 12 小时制和 24 小时制两种模式下。小时寄存器的位 7 定义为小时模式选择位。为高时是 12 小时制,12 小时制模式下,位 5 是上午/下午黄河科技学院毕业设计(文献翻译)8位且高电平是下午。24 小时制模式下,位 5 是第二 10-小时位 (20 点23 点)。一旦 12/24 改变,小时数据必须被重新初始化。 时钟暂停标志 秒寄存器的位 7 被定义为时钟暂停标志。 当此为置 1 时,时钟振荡器暂停,DS1302 进入漏电流小于 100nA 的低功耗备用模式。 当此为置 0 时,时钟开始.初始加电状态未定义。 写保护位 控制寄存器的位 7 是写保护位,前 7 位(位 0 至位 6)被强制为 0 且读取时总是读 0。 在任何对时钟或 RAM的写操作以前,位 7 必须为 0.当为高时,写保护位禁止任何寄存器的写操作。 初始加电状态未定义。 因此,在试图写器件之前应该清除 WP 位。 涓流充电寄存器 此寄存器控制 DS1302 的涓流充电特性。图 5的简化结构图显示了涓流充电器的基本元件。 涓流充电选择( TCS) 位(位 4 到 位 7)控制涓流充电器的选择.为了防止意外使能 ,只有 1010 的模式才能使涓流充电器使能。 所有其他模式都会禁止涓流充电器。 DS1302 加电时涓流充电器是禁止的。 二极管选择(DS)位 (位 2和位 3) 选择 VCC2 和 VCC1之间连了一个还是两个二极管。 如果 DS 是 01,一个二极管,10 就是 2个二极管。 如果 DS 是 00或者 11,不管 TCS,涓流充电器被禁止。RS 位(位 0 和位 1)选择连在 VCC2 和 VCC1之间的电阻。 表 2显示了 RS 和 DS 选择电阻和二极管。表 2 涓流充电电阻和二极管选择电阻和二极管的选择是由用户根据电池或超级电容充电所需的最大电流决定黄河科技学院毕业设计(文献翻译)9的。最大充电电流可以向下面的例子所示那样计算出来。 假设 5V系统供电电源加在 VCC2 ,一个超级电容连在 VCC1。 同时假设涓流充电器被使能且 VCC2与 VCC有一个二极管和电阻 R1。最大电流 IMAX 如下式计算: IMAX= (5.0V 二极管压降) / R1 (5.0V 0.7V) / 2k 2.2mA 超级电容充电时,V CC2与 VCC1 之间压降增加,因此充电电流增加。 时钟/日历脉冲串模式 时钟/日历命令字节指定脉冲串模式操作. 此模式下, 前八个时钟/日历寄存器必须从地址 0的位 0开始连续读写(见表 3) 如果当指定为写时钟/日历脉冲串模式是、时写保护位置高, 八个时钟/ 日历寄存器(包括控制寄存器)都不会发生数据传输. 脉冲串模式下涓流充电器是不可读写的. 在时钟脉冲串读取的开始, 当前时间被传送至另外的存储器集合. 当时钟继续运行时,会从这些第二寄存器读回时间信息.这就消除了万一读取时主寄存器更新重新读取寄存器的必要. RAM 静态 RAM 在 RAM 地址空间内是以 31 x 8字节连续编址的. RAM 脉冲串模式 RAM 命令字节定义了脉冲串模式操作.此模式下 , 31RAM 寄存器可以从地址0的位 0开始连续读写(见表 3). 寄存器摘要 表 3显示了寄存器数据格式摘要. 晶振选择 一个 32.768kHz 晶振可以通过管脚 2和 3(X1 ,X2)直接连接到 DS1302. 选择所使用的晶振需要一个指定的 6pF 负载电容. 关于晶振选择和晶振布局注意事项的详细信息请参考应用笔记 58页: Dallas 实时时钟的晶振注意事项. 黄河科技学院毕业设计(文献翻译)10图 4 数据传输摘要表 3 寄存器地址/定义RTC时钟脉冲串黄河科技学院毕业设计(文献翻译)11RAMRAM 脉冲串图 5 可编程涓流充电器绝对最大额定值 任何管脚与地之间的电压范围.-0.5V- +7.0V 工作温度范围,商用级.0C - +70C 工作温度范围,工业级(IND) -40C - +85C 存储温度范围-55C - +125C 焊接温度(导线,10 秒钟) .260C 焊接温度(表面安装)见 IPC/JEDEC J-STD-020 黄河科技学院毕业设计(文献翻译)12超出绝对最大额定值表中列出的应力会使器件产生永久损坏.这些只是额定值,不包括处于或者超出说明书的工作区间所指明的状态的功能性操作. 长期处于绝对最大额定值会影响器件的可靠性.推荐直流工作条件 (TA = 0C - +70C 或 TA = -40C - +85C.) (注 1)直流电气特性 (TA = 0C - +70C 或 TA = -40C - +85C.) (注 1) 电容 (TA = +25C)黄河科技学院毕业设计(文献翻译)13交流电气特性 (TA = 0C - +70C 或 TA = -40C -+85C.) (注 1) 注 1: -40C 的限制是设计所保证,并未进行生产测试. 注 2: 所有电压以地为参考点 . 注 3: ICC1T 和 ICC2T 由 I/O 开, CE 和 SCLK 为 0 指定. 注 4: ICC1A 和 ICC2A 由 I/O 开, CE 高指定, SCLK = 2MHz 当 VCC = 5V; SCLK = 500kHz, VCC = 2.0V. 注 5: CE, SCLK, I/O 都有 40k 下拉电阻接到地. 注 6: VIH = 2.0V 或 VIL = 0.8V 时测定, 10ns 最大上升下降时间. 注 7: VOH = 2.4V 或 VOL = 0.4V 时测定. 注 8: 负载电容 = 50pF. 注 9: ICC1S 和 ICC2S 由 CE, I/O, SCLK 开指定 . 注 10: VCC = VCC2 ,当 VCC2 VCC1 + 0.2V; VCC = VCC1, 当 VCC1 VCC2. 注 11: VCC2 = 0V. 黄河科技学院毕业设计(文献翻译)14注 12: VCC1 = 0V. 注 13: 典型值为 +25C时. 图 6 时序图:读数据传输图 7 时序图:写数据传输芯片信息 晶体管数量:11,500热性能信息封装信息修正历史黄河科技学院毕业设计(文献翻译)15 毕业设计文献翻译院 ( 系 ) 名 称 工 学 院 机 械 系专 业 名 称 机 械 设 计 制 造 及 其 自 动 化学 生 姓 名 赵 子 雨指 导 教 师 蔡 超 峰2012 年 03 月 08 日单位代码 0 2 学 号 080105038 分 类 号 TH6 密 级 毕 业 设 计 说 明 书基于单片机的万年历设计院 ( 系 ) 名 称 工 学 院 机 械 系专 业 名 称 机 械 设 计 制 造 及 其 自 动 化学 生 姓 名 赵 子 雨 指 导 教 师 蔡 超 峰2012 年 5 月 15 日 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 1 页1 绪论万年历就是记录一定时间范围内的具体阳历与阴历的日期的年历,方便有需要的人查询使用。随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。电子万年历的出现带来了钟表计时业界跨跃性的进步。近年来,电子钟已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来了极大的方便。随着技术的发展,人们已不再满足于钟表原先简单的计时功能,希望出现一些新的功能,诸如日历的显示、闹钟的应用等,以带来更大的方便,而所有这些,又都是以数字化的电子时钟为基础的。因此,研究实用电子时钟及其扩展应用,有着非常现实的意义,具有很大的实用价值。由于数字集成电路技术的发展和采用了先进的石英技术,现代电子钟具有走时准确、性能稳定、制作简单等优点,弥补了传统钟表的许多不足之处。我们利用单片机技术设计制作的电子万年历,可以很方便的由软件编程进行功能的调整和改进,使其在能够准确显示年、月、日、时间、星期的同时,还能具有其他的功能。如设定闹钟、语单报时、阴阳历的转换、二十四节气的显示等,有一定的新颖性和实用性,同时体积小,携带方便,使用也更为方便,具有技术更新周期短、成本低、开放灵活等优点,具备一定的市场前景。以基于单片机的万年历作为设计课题,因为它具有很好的开放性和可发挥性,要求比较高,不仅考察了对单片机的掌握能力而且强调了对单片机的扩展的应用。另外液晶显示的万年历已经越来越流行,具有显示清晰直观、走时准确、可以进行夜视等功能,并且还可以扩展出其它多钟功能。所以,电子万年历作设计课题很有价值。 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 2 页2 系统设计方案2.1 方案选择和论证2.1.1 单片机芯片的选择方案和论证方案一: 采用 89C51 芯片作为硬件核心,采用 Flash ROM,内部具有 4KB ROM 存储空间,能于 3V 的超低压工作,而且与 MCS-51 系列单片机完全兼容,但是运用于电路设计中时由于不具备 ISP 在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。方案三:采用 STC12C5A60S2 单片机,定时器与传统 8051 完全兼容,是标准的5V 工作电压,内部程序存储器为 60K 存储空间,不需要外扩存储器。同样具有 89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。STC12C5A60S2 的灌电流是 20mA,驱动能力超强,驱动大电流时不容易烧坏。相比之下,STC12C5A60S2 单片机具有在线编程可擦除技术和大容量存储空间,利于设计及调试,所以选择采用 STC12C5A60S2 单片机作为主控制系统。2.1.2 时钟芯片的选择方案和论证方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。方案二:采用 DS1302 时钟芯片来实现时钟,DS1302 芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的 RAM 做为数据暂存区,工作电压 2.5V5.5V 范围内,2.5V 时耗电小于 300nA.相比单片机定时计数器,DS1302 芯片可自动计数且精度更高,所以选择采用 DS1302作为时钟芯片。2.1.3 显示模块的选择方案和论证方案一:采用 LED 数码管动态扫描 ,LED 数码管价格适中 ,对于显示数字最合适。 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 3 页采用动态扫描法与单片机连接时,虽然占用的单片机口线少,但电路中的线路相对多,电路过于庞大。方案二:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。方案三:采用 LCD 液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字、图形,显示多样,清晰可见, 虽然价格贵,但却免了一些线路的麻烦,外观优美,且可以显示内容多。相比方案一和方案二,方案三可显示大量内容,且线路简单,所以采用了 LCD液晶显示屏作为显示。2.1.4 温度传感器的选择方案和论证方案一:使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D 转换。 。此设计方案需用 A/D 转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。方案二:采用数字式温度传感器 DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除 A/D 模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。相比方案一,方案二不需要 A/D,可简化电路,精度更高,所以采用了 DS18B20作为温度传感器。2.2 系统最终方案综上各方案所述,对此次设计的方案选定: 采用 STC12C5A60S2 单片机作为主控制系统; DS1302 提供时钟;采用数字式温度传感器 DS18B20;LCD 液晶显示屏动态扫描作为显示。 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 4 页3 系统的硬件和软件设计3.1 系统的硬件设计3.1.1 系统设计框图S T C 1 2 C 5 A 6 0 S 2主 主 主 主 主L E D 主 主 主 主 主 主 主 主主 主 主 主 主D S 1 3 0 2 主 主 主 主主 主 主 主主 主 主 主 主 主图 3-1 系统框图3.1.2 硬件概述本电路是由 STC12C5A60S52 单片机为控制核心,具有在线编程功能,低功耗,能在 3V 超低压工作;时钟电路由 DS1302 提供,它是一种高性能、低功耗、带 RAM 的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为 2.5V5.5V。采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数据。DS1302 内部有一个 31*8 的用于临时性存放数据的 RAM 寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由 DS18B20 构成;显示部份由 LCD 液晶显示屏显示。 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 5 页3.1.3 单元电路的设计3.1.3.1 单片机主控模块设计单片机控制系统及其外围电路设计采用由 STC12C5A60S2 单片机为控制核心。STC12C5A60S2 单片机是宏晶科技生产的单时钟单片机,是高速、低功耗、超强抗干扰的新一代 8051 单片机,具有 60K 的可编程 Flash 存储器,指令代码完全兼容传统8051,但速度快 8-12 倍。片上 Flash 允许程序存储器在线编程,亦适于常规编程器。STC12C5A60S2 具有以下标准功能: 60K 字节 Flash,1280 字节 RAM,36/40/44 个 I/O口线,看门狗定时器,4 个 16 位定时器,片内晶振及时钟电路。(1)单片机控制系统复位电路如图 1 所示。SR20KC6uFV图 3-2 复位电路设计(2)本次设计单片机采用 DIP 封装,晶振为 12MHZ。其中 P3.0-P3.1 为 ISP 下载程序使用,其最小系统电路如图 3-3 所示。18 引脚和 19 引脚接时钟电路,XTAL1 接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2 接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第 9 引脚为复位输入端,接上电容,电阻及开关后形成电复位电路,20 引脚为接地端,40 引脚为电源端。 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 6 页CRY21MHzP0.735489VALENX_D/OSIKTWGUF图 3-3 单片机主控模块3.1.3.2 时钟电路模块设计时钟芯片采用 DS1302,晶振使用 32.768KHZ。DS1302 是 DALLAS 公司推出的涓流充电时钟芯片 内含有一个实时时钟 /日历和 31 字节静态 RAM 通过简单的串行接口与单片机进行通信 实时时钟/日历电路提供年、月、日、时、分、秒、星期的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过 AM/PM 指示决定采用 24 或12 小时格式。DS1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线: RES 复位、 I/O 数据线和 SCLK 串行时钟。时钟 RAM 的读写数据以一个字节或多达 31 个字节的字符组方式通信。DS1302 工作时功耗很低,保持数据和 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 7 页时钟信息时功率小于 1mW。图 3-4 显示出 DS1302 的引脚排列,其中 Vcc1 为后备电源,Vcc2 为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302 由 Vcc1或 Vcc2 两者中的较大者供电。当 Vcc2 大于 Vcc1+0.2V 时,Vcc2 给 DS1302 供电。当Vcc2 小于 Vcc1 时,DS1302 由 Vcc1 供电。X1 和 X2 是振荡源,外接 32.768 KHz 晶振。RST 是复位/片选线,通过把 RST 输入驱动置高电平来启动所有的数据传送。上电动行时,在 Vcc 大于等于 2.5V 之前,RST 必须保持低电平。在 SCLK 为低电平时,才能将 RST 置为高电平。 I/O 为串行数据输入端(双向) 。SCLK 始终是输入端。VC12Y3.68KHZBTXGND4RS5IOLU0图 3-4 时钟电路模块3.1.3.3 显示电路模块设计KNY12864M 是一种图形点阵液晶显示器,它主要由行驱动器、列驱动器及12864 全点阵液晶显示器组成。可完成图形显示,也可以显示 84 个(1616 点阵)汉字。与外部 CPU 接口可采用串行或并行方式控制。其显示分辨率为 12864,内置8192 个中文汉字(1616 点阵) 、128 个字符(168 点阵)及 64X256 点阵显示RAM(GDRAM) 。利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。其与单片机的接口电路如图 3-5 所示。 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 8 页VS1C2O3R4/W5E(LK)6DB079PNTUA图 3-5 显示电路模块3.1.3.4 温度采集模块设计温度采集采用 Dallas 半导体公司的数字化温度传感器 DS18B20,DS18B20 是单总线器件,线路简单,体积小的特点,具有 9-12 为可编程分辨率,精度为0.5。声音功能采用 5V 蜂鸣器作为声音报警器件,通过三极管进行放大输出特定声音。 QGI.图 3-6 温度采集模块 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 9 页3.1.3.5 双电源供电电路设计系统采用双电源,可以使用外接电源,也可直接使用 USB 5V 电源,由自锁开关切换输入。电源电路如图 3-7 所示。 R61KL8+C0uF2PO5VGND4AT3USB-W图 3-7 双电源模块3.1.3.6 RS-232 电路设计STC12C5A60S2 单片机具有在线编程可擦除技术,连接串口,通过电脑端的 STC-ISP 软件控制下载用户程序到 STC 单片机,即可实现程序的烧写。如图 3-8 所示即为RS-232 转换电路。 7IMXf图 3-8 RS-232 转换电路 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 10 页3.1.4 电路原理及说明(1)时钟芯片 DS1302 的工作原理DS1302 在每次进行读、写程序前都必须初始化,先把 SCLK 端置 “0”,接着把RST 端置“1 ”,最后才给予 SCLK 脉冲;读/写时序如下图 4 所示。图 5 为 DS1302 的控制字,此控制字的位 7 必须置 1,若为 0 则不能把对 DS1302 进行读写数据。对于位6,若对程序进行读/写时 RAM=1,对时间进行读 /写时,CK=0 。位 1 至位 5 指操作单元的地址。位 0 是读/写操作位,进行读操作时,该位为 1;该位为 0 则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。表 6 为 DS1302 的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为 1 时,时钟振荡器停止,DS1302 处于低功耗状态;当该位为 0 时,时钟开始运行。 “WP”是写保护位,在任何的对时钟和RAM 的写操作之前,WP 必须为 0。当“WP”为 1 时,写保护位防止对任一寄存器的写操作。(2)DS1302 的控制字节DS1302 的控制字如表-1 所示。控制字节的高有效位(位 7)必须是逻辑 1,如果它为 0,则不能把数据写入 DS1302 中,位 6 如果 0,则表示存取日历时钟数据,为 1表示存取 RAM 数据;位 5 至位 1 指示操作单元的地址;最低有效位(位 0)如为 0 表示要进行写操作,为 1 表示进行读操作,控制字节总是从最低位开始输出。表 3-1 DS1302 的控制字格式RAM RD1 /CK A4 A3 A2 A1 A0 /WR(3)数据输入输出(I/O)在控制指令字输入后的下一个 SCLK 时钟的上升沿时,数据被写入 DS1302,数据输入从低位即位 0 开始。同样,在紧跟 8 位的控制指令字后的下一个 SCLK 脉冲的下降沿读出 DS1302 的数据,读出数据时从低位 0 位到高位 7。如下图 3-9 所示 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 11 页图S C L KI / OREST R/W A 0A 1A 2 A 3 A 4R/C 1D 0D 1D 2单字节读S C L KI / OREST R/W A 0A 1A 2 A 3 A 4R/C 1D 0D 1D 2单字节写3-9 DS1302 读/写时序图(4)DS1302 的寄存器DS1302 有 12 个寄存器,其中有 7 个寄存器与日历、时钟相关,存放的数据位为BCD 码形式, 其日历、时间寄存器及其控制字见表 3-2。表 3-2 DS1302 的日历、时间寄存器写寄存器读寄存器Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit080H 81H CH 10 秒 秒82H 83H 10 分 分1084H 85H 12/24 0AM/PM时 时86H 87H 0 0 10 日 日88H 89H 0 0 0 10 月 月8AH 8BH 0 0 0 0 0 星期8CH 8DH 10 年 年8EH 8FH WP 0 0 0 0 0 0 0此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与 RAM 相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302 与 RAM 相关的寄存器分为两类:一类是单个 RAM 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 12 页单元,共 31 个,每个单元组态为一个 8 位的字节,其命令控制字为 C0HFDH ,其中奇数为读操作,偶数为写操作;另一类为突发方式下的 RAM 寄存器,此方式下可一次性读写所有的 RAM 的 31 个字节,命令控制字为 FEH(写)、FFH( 读)。 3.2 系统软件设计程序开始时先对系统初始化,并设置好各种中断。首先要给时钟芯片设置初值,时钟芯片便自行计数。此时检测是否有按键按下,按键是为了调整时钟。有按键按下则执行按键处理程序,没有按键按下则执行下一步的操作,即取时钟芯片中的时钟值,然后送显示。程序流程图如下。系统初始化1 2 8 6 4 初始化显示按键是否按下 按键处理程序取时钟 、 温度数据送 1 2 8 6 4 显示图 3-10 程序流程图Yesno 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 13 页4 仿真与调试4.1 调试仪器表 4-1 测试仪器表序 号 名 称1 PC 机2 ISP 在线编程器3 V8 通用单片机仿真器4 数字万用表4.2 硬件测试电子万年历的电路系统较大,对电路的要求比较高,尤其是焊接方面更是不可轻视,只要存在一处错误,就会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会对电路造成短路现象。在本次电子万年历的设计调试中遇到了很多的问题。如果认真小心,这些都是可以避免的,以下为主要的问题:(1)上电之后,温度传感器温度立刻升高,原因在于没有分清 DS18B20 的1、2、3 引脚,导致温度传感器短路,温度迅速升高。解决:按正确的引脚接法重新焊接 DS18B20,即可正常。(2)电源电路中的 USB 接口采用的是 B 型 USB,但购买元器件时采用的是 A 型USB,电路不可更改的情况下就变得不能正常供电。解决:采用重新打孔,将 B 型接口改装成 A 型接口,并用导线将电源线调整。(3)串口方向在画 PCB 过程中没有注意到方向,使得不能正常使用串口下载。解决:首先尝试用排针外接跳线连接到串口线上,方便简单,但是在使用过程中总是出现断线问题,使得下载变得很麻烦,后来改用打孔,用跳线将串口方向改过来,焊接在万年历板上,即可 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 14 页正常下载和调试。4.3 软件测试电子成年历是多功能的数字型万年历,可查看当前日期(阴、阳历) 、时间,还有温度的仪器。因其功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中主要遇到的问题如下:1烧入程序后,LCD 只亮不显示字符。解决:首先只写 LCD 程序,让其显示一个基本的静态字符,如果正常显示可显示屏正常。其次将静态量变为动态量,使其逐渐开始显示字符,解决了只显示空白的问题。2时间和温度不能自动对应。解决:把不相关的程序暂时屏蔽,地农历的子程序独立调试,发现在调用农历自动更新时,对十进制和十六进制处理不好,所以会造成错乱。最后把相应的十进制进行修改,使得可以与十六进制对应,最后解决了此问题.3加入农历的程序后,按键不能正常使用。解决:由于 DS18B20 是串行通信数据,只用一个口线传输,在处理采集的模拟信号时需要一定的时间,当把万年历的程序相接入时,会对延时有很大的影响。所以在调用温度子程序时,先关闭定时器 1 中断允许,在温度子程序反回时再打开定时器 1中断允许。最终解决了此问题。4.4 测试结果分析经过多次的反复测试与分析,加强对电路的原理及功能的熟悉感,同时提高了设计能力与及对电路的分析能力。同时在软件的编程方面得到更大的提高,编程能力得到加强,当然,对所学的知识得到很大的提高与巩固。 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 15 页结论至此,关于毕业设计的所有内容就介绍完了,进行这次毕业设计一切都是从头开始,从最简单的查资料、了解各个元件的功能起步,再确定设计方案、画流程图,编写程序到最后进行调试,在我的个人角度下,这次毕业设计可以说是成功完成。系统的硬件、软件设计合理,功能完备,运行稳定、可靠。实验结果表明此万年历实现后具有读取方便、显示直观、功能多样、电路简洁等诸多优点。在整个设计过程中,充分发挥了主观能动性,自主学习,学到了许多没学到的知识。程序编写中,由于思路不清晰,开始时遇到了许多问题,经过静下心来思考,并请教了同学,理清了思路,才完成了对程序的编写。但是由于时间和个人能力的原因,整个系统看起来还是显得非常的简单,只实现了一些基本的功能,还有许多不足之处和可以扩展的地方,例如实现闹钟报时等,这些有待以后来弥补,还望各位老师予以指正和修改。 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 16 页致谢经过这么长时间的设计,从选题、设计到现在的终稿完成;由于所设计的课题涉及到专业领域较广,要用到很多陌生的知识,在整个过程中,得到许多老师和同学们的帮助。在这两个月来的设计过程中我请教了系中的老师,特别是我的导师蔡超峰老师,他对我的毕业设计提供了很多条件,同时也有许多同学帮我收集了大量的资料,在设计上给予我很大的帮助,尤其是软件上。现在设计已结束,在这里一并向这些老师和同学们表示感谢。同时感谢关心我的和我关心的人。再次,我要感谢一直陪我走完大学四年求学之路的同宿舍的姐妹位,和其他在我学习和生活中帮助过我的人,谢谢他们平时对我无微不致的照顾和关心。我很兴能生活在这样一个充满活力的集体中,从他们的身上我学到了很多,看到了自己的不足,在不断的发现和改正错误中成长,同时他们给我的大学生活留下了许多美好的回忆,让我受益终生。鉴于本人水平有限,难免存在一些错误和漏洞,望各位老师、同学不吝赐教,在此再次向大家表示衷心的感谢。 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 17 页参考文献1 王法能 单片机原理及应用 科学出版社 20042 张毅刚 单片机原理及应用 高等教育出版社 20063 李宗吾.中国万年历 .北京:中国科学技术出版社.2006:115-1914 夏墨英.中国天文年历.北京:科学出版社.1984:1256-25815 周慈航.单片机应用程序设计技术H. 北京:北京航空航天大学出版社,19926 Anastasios Alexiadis,Ioannis Refanidis.Defining a Tasks Temporal Domain for Intelligent Calendar Applications7 余永权.ATMEL89 系列单片机原理及应用M. 西安:电子工业出版社,1999.8 王毅平. MCS-51 单片机原理及应用H.北京:人民邮电出版社, 19999 陈坚,李昕,黄樱.CHEN Jian.LI Xin.HUAN Ying 51 单片机最小化应用系统的Proteus 仿真-电脑知识与技术.2008,2(18)10 陈正振 电子电路设计与制作 广西交通职业技术学院信息工程系 200711 窦振中 单片机外围器件实用手册存储器分册 北京航空航天大学出版社 200612 Joe Tullio,Elizabeth D.Mynatt.Use and Implications of a Shared,Forecasting Calendar.13 王威,刘佳,张志雄等.基于 Proteus 和 Keil 的单片机虚拟仿真平台的设计-上海电力学院学报.2009,25(6).14 闫小坤编 数字电路 吉林大学出版社 200415 朱定华,戴汝平 .单片机微机原理与应用M.北京:北京交通大学出版社,2003.16 Ashraf Khalil,Kay Connelly.Improving Cell Phone Awareness by Using Calendar Information.17 51 单片机 C 语言应用开发技术大全 龙脉工作室 刘坤 宁戈 赵红波 张宪栋 人民邮电出版社 2008 年 9 月 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 18 页附录 A 原理图P0.732654189VCLE/ROGSNMIKTXDWUYHzF位uZBQ+-()f 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 19 页附录 B 程序清单#include #include #include #define uchar unsigned char#define uint unsigned intbit w = 0; /调时标志位 sbit ACC0 = ACC0;sbit ACC7 = ACC7;unsigned char YEAR,MONTH,DATE,WEEK,HR,MIN,SEC,SEC100;/DS1302 子程序sbit DS1302_CLK = P35; sbit DS1302_IO = P36; sbit DS1302_RST = P37; void DS1302InputByte(uchar d) uchar i;ACC = d;for(i=8; i0; i-)DS1302_IO = ACC0; DS1302_CLK = 1;DS1302_CLK = 0;ACC = ACC 1; uchar DS1302OutputByte(void) 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 20 页uchar i;for(i=8; i0; i-)ACC = ACC 1; ACC7 = DS1302_IO;DS1302_CLK = 1;DS1302_CLK = 0; return(ACC); void Write1302(uchar ucAddr, uchar ucDa)DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(ucAddr); / 地址,命令 DS1302InputByte(ucDa);/ 写 1Byte 数据DS1302_CLK = 1;DS1302_RST = 0; uchar Read1302(uchar ucAddr)/读取某地址的数据uchar ucData;DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(ucAddr); ucData = DS1302OutputByte(); DS1302_CLK = 1; 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 21 页DS1302_RST = 0;return(ucData);void init1302(void) /设置 1302 的初始时间 uchar cctt;cctt=Read1302(0x80);if(cctt&0x80)Write1302(0x8e,0x00);/允许写操作Write1302(0x8c,0x0b);/年Write1302(0x8a,0x01);/星期Write1302(0x88,0x06);/月Write1302(0x86,0x06);/日Write1302(0x84,0x00);/小时Write1302(0x82,0x00);/分钟Write1302(0x80,0x00);/秒Write1302(0x8e,0x80);/禁止写操作/*温度*/#define SKIP_ROM 0xF0#define CONVERT_T 0x44#define READ_SCRATCHPAD 0xBEsbit DQ = P24;/ds18B20 信号线定义uchar TPH;uchar TPL;void DelayT(int num)/延时函数 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 22 页while(num-);unsigned Init_DS18B20(void)/初始化 ds1820uint answer_flag; DQ = 0; /单片机将 DQ 拉低DelayT(480); DQ = 1; DelayT(15);answer_flag=DQ; DelayT(240);DelayT(180);return(answer_flag);uchar ReadBit(void)bit s;DQ=1;_nop_();DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();DQ=1;s=DQ;DelayT(60);return(s); 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 23 页uchar ReadByte(void)/读一个字节uchar i,j;uchar dat = 0;for (i=1;i1);return(dat);void WriteByte(uchar dat)/写一个字节uint i;bit n;for (i=1; i1;if(n)/写 1DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 24 页DQ=1;DelayT(60);else/写 0DQ=0;DelayT(90);DQ=1;_nop_();_nop_();_nop_();_nop_();void convert(void)/温度转换Init_DS18B20();if(Init_DS18B20()DelayT(100);WriteByte(SKIP_ROM);WriteByte(CONVERT_T);uint ReadTemp(void)/读取温度uint t=0;float tt=0;convert(); 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 25 页DelayT(100000);Init_DS18B20();if(Init_DS18B20()DelayT(100);WriteByte(0xcc);WriteByte(0xbe);TPL=ReadByte();TPH=ReadByte();t=TPH;t= 0x04 & HR = 0x06 & HR = 0x08 & HR = 0x13 & HR = 0x18 & HR = 0x22 & HR = 0x00 & HR 0x2)&(year%0x4=0)temp4+=1;if (temp4=temp3)temp4-=temp3;MONTHnth=0x1;MONTHnth_p=0x1; flag2=get_MONTHon_day(MONTHnth_p,table_aDATEr); flag_y=0; 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 42 页if(flag2=0)temp1=0x1d; else temp1=0x1e; temp2=year_codetable_aDATEr&0xf0;temp2=_cror_(temp2,4); while(temp4=temp1)temp4-=temp1;MONTHnth_p+=1;if(MONTHnth=temp2)flag_y=flag_y;if(flag_y=0)MONTHnth+=1;else MONTHnth+=1;flag2=get_MONTHon_day(MONTHnth_p,table_aDATEr);if(flag2=0)temp1=0x1d;else temp1=0x1e;day=temp4+1;else temp3-=temp4;if (year=0x0)year=0x63;c=1;else year-=1;table_aDATEr-=0x3;MONTHnth=0xc;temp2=year_codetable_aDATEr&0xf0;temp2=_cror_(temp2,4);if (temp2=0)MONTHnth_p=0xc; else MONTHnth_p=0xd; / 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 43 页flag_y=0;flag2=get_MONTHon_day(MONTHnth_p,table_aDATEr);if(flag2=0)temp1=0x1d;else temp1=0x1e;while(temp3temp1)temp3-=temp1;MONTHnth_p-=1;if(flag_y=0)MONTHnth-=1;if(MONTHnth=temp2)flag_y=flag_y;flag2=get_MONTHon_day(MONTHnth_p,table_aDATEr);if(flag2=0)temp1=0x1d;else temp1=0x1e;day=temp1-temp3+1;c_MONTHon=c; temp1=year/10;temp1=_crol_(temp1,4);temp2=year%10;year_MONTHon=temp1|temp2;temp1=MONTHnth/10;temp1=_crol_(temp1,4);temp2=MONTHnth%10;MONTHnth_MONTHon=temp1|temp2;temp1=day/10;temp1=_crol_(temp1,4);temp2=day%10;day_MONTHon=temp1|temp2; 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 44 页void nl()unsigned char yy1,yy2;Conversion(0,YEAR,MONTH,DATE);writecom(0x90);writestring(20);writedat(year_MONTHon/16+0);writedat(year_MONTHon%16+0);writedat(/);writedat(MONTHnth_MONTHon/16+0);writedat(MONTHnth_MONTHon%16+0);writedat(/);writedat(day_MONTHon/16+0);writedat(day_MONTHon%16+0);yy1=(year_MONTHon/16)*10+year_MONTHon%16;yy2=yy1%12;switch(yy2)case 0: writecom(0x87);writestring(龙);break;case 1: writecom(0x87);writestring(蛇);break;case 2: writecom(0x87);writestring(马);break;case 3: writecom(0x87);writestring(羊);break;case 4: writecom(0x87);writestring(猴); 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 45 页break;case 5: writecom(0x87);writestring(鸡);break;case 6: writecom(0x87);writestring(狗);break;case 7: writecom(0x87);writestring(猪);break;case 8: writecom(0x87);writestring(鼠);break;case 9: writecom(0x87);writestring(牛);break;case 10: writecom(0x87);writestring(虎);break;case 11: writecom(0x87);writestring(兔);break;/向 LCD 中填写 年 数据void writeyear(void)YEAR= Read1302(0x8d);writecom(0x80);writestring(20);writecom(0x81);writedat(YEAR/16)+0x30);writedat(YEAR%16+0x30);writecom(0x82);writestring(年); 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 46 页nl(); /向 LCD 中填写 月 数据void writemonth(void)MONTH = Read1302(0x89);writecom(0x83);if(MONTH/16 != 0)writedat(MONTH/16)+0x30); /十位消隐elsewritedat(0x20);/同上writedat(MONTH%16+0x30);writecom(0x84);writestring(月);nl();/星期处理并送入 LCM 的指定区域void writeweek(void)uchar sel;WEEK = Read1302(0x8b);sel = (Read1302(0x8b)%16; writecom(0x97);if(sel=7) writestring(日); /if(sel=6) writestring(六); /if(sel=5) writestring(五); /if(sel=4) writestring(四); /if(sel=3) writestring(三);/writedat(0xc8);LCM_WriteDatOrCom(1,0xfd); /此指令等于LCM_WriteString(三); 因为 三的内码失效。 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 47 页if(sel=2) writestring(二); /if(sel=1) writestring(一); /星期一writecom(0x95);writestring(星期);/向 LCM 中填写 日 数据void writedate(void)DATE = Read1302(0x87);writecom(0x85);if(DATE/16 != 0)writedat(DATE/16)+0x30); /十位消隐elsewritedat(0x20);/同上writedat(DATE%16+0x30);writecom(0x86);writestring(日);nl();/向 LCM 中填写 小时 数据void writehr(void)if(Read1302(0x85)!= HR)HR = Read1302(0x85);if (HR 0x07 & HR max) item=mini;if(item= 6 )e = 0;Set_time(e);/调整if(KEY_4 = 0 & w = 0) clrlcd();/清屏w=1; /进入调时while(KEY_4 = 0);/等待键松开 else if (KEY_1 = 0) DelayM(20);if(KEY_1 = 0 & w = 1)w = 0; e = 0;if(KEY_1 = 0 & w = 0)clrlcd();/清屏display(dis_char);while(KEY_1 = 0); clrlcd();/清屏days(); /节日显示 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 53 页updata (); /刷新数据writemin();/刷新 分nl();while(KEY_1 = 0);/等待键松开 else if (KEY_2 = 0 & w = 1)/ 加减调整 DelayM(20);if(KEY_2 = 0 & w = 1)Set_time(e);/调整while(KEY_2 = 0);/等待键松开else if (KEY_3 = 0 & w = 1)/ 加减调整 DelayM(20);if(KEY_3 = 0 & w = 1)Set_time(e);/调整while(KEY_3 = 0);/等待键松开main() uchar e=0;KEY_1 = 10;KEY_2 = 0;KEY_3 = 0;KEY_4 = 0;/初始键盘YEAR=0xff;MONTH=0xff;DATE=0xff;WEEK=0xff;HR=0xff;MIN=0xff;SEC=0xff; /各数据刷新beep = 0; 黄 河 科 技 学 院 毕 业 设 计 说 明 书 第 54 页DelayM(900);beep = 1;initlcd();/初始化液晶显示器clrlcd();/清屏display(dis_char);/显示欢迎字DelayM(8000); /显示等留 3 秒clrlcd();/清屏 init1302();Init_DS18B20();while(1)Keydone();(程序不在论文里给出来,太长了!)
收藏