万年历设计论文38912.doc

上传人:小小飞 文档编号:3905410 上传时间:2019-10-10 格式:DOC 页数:33 大小:1.12MB
返回 下载 相关 举报
万年历设计论文38912.doc_第1页
第1页 / 共33页
万年历设计论文38912.doc_第2页
第2页 / 共33页
万年历设计论文38912.doc_第3页
第3页 / 共33页
万年历设计论文38912.doc_第4页
第4页 / 共33页
万年历设计论文38912.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《万年历设计论文38912.doc》由会员分享,可在线阅读,更多相关《万年历设计论文38912.doc(33页珍藏版)》请在三一文库上搜索。

1、 目录摘要1关键词1Abstract1Key words1引言21设计要求与选材及方案论证 21.1设计要求21.2 系统基本方案选择 21.2.1单片机芯片的选择方案21.2.2 显示模块选择方案和论证21.2.3 时钟芯片的选择方案21.2.4 温度传感器的选择方案22 系统的硬件设计与实现32.1 电路设计框图32.2 系统硬件概述32.3 主要单元电路的设计32.3.1单片机主控制模块的设计42.3.2时钟电路模块的设计 42.3.3温度采集模块设计 52.4 电路原理及说明 52.5显示模块的设计 63系统的软件设计 73.1程序流程框图 73.2 子程序的设计 74 指标测84.1

2、测试仪器 84.2硬件测试 84.3软件测试 84.测试结果分析与结论84.4.2 测试结论95作品总结9参考文献10附录一:系统电路图11附录二:系统程序清单12致谢词30基于单片机的万年历设计 摘要:单片机应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。单片机是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片

3、机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。本文通过对一个基于单片机的能实现万年历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。系统由主控制器AT89C51、时钟电路DS1302、显示电路、按键电路、和复位电路等部分构成,能实现时钟日历显示的功能,能进行时、分、秒的显示。关键词: 农历查询、 万年历、时钟电路、 时钟芯片DS1302、LED动态扫描、 单片机STC89C52RC;Based on SCM calendar designmajoring in The physics department elect

4、ronic information science and technology Abstract:SCM application technology develop rapidly, looking around us now in all spheres of life, from missiles, navigation equipment, to the various instruments on the aircraft control from a computer network communications and data transmission, industrial

5、 automation to real-time process control and data processing, and our lives extensive use of the smart card, electronic pets, which is inseparable from the microcontroller. Monolithic single-chip is the set of CPU, RAM, ROM, the timing, number and variety of interface integrated microcontrollers. It

6、s small size, low cost, high performance, which are widely used in smart industries, and industrial automation. And 51 Series SCM is the most typical and the most representative one. The graduation design Through the study, and thereby achieve the study, design, development hardware and software cap

7、abilities. Based on a microcontroller based on the will to achieve calendar of a multi-functional electronic clock design,Thereby achieve studying and understanding the relevant directives SCM in all aspects of the application. By main control AT89C51、clock circuit DS1302、display circuit、keystroke c

8、ircuit and restore circuit componented, to achieve clock calendar display function can be carried out, hours seconds of the show and real-time temperature display. Key words: The lunar inquiry, calendar, clock circuit, clocking chip DS1302, dynamic scanning and single-chip microcomputer LED STC89C52

9、RC; 引言随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。单片机以体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。而电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。因为它的有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。数字显示的日历钟已经越来越流行,特别是

10、适合在家庭居室、办公室、大厅、会议室、车站和广场等使用,壁挂式LED数码管显示的日历钟逐渐受到人们的欢迎。LED数字显示的日历钟显示清晰直观、走时准确、可以进行夜视,并且还可以扩展出多种功能。 所以,电子万年历无论作为比赛题目还是练习题目都是很有价值1 设计要求与选材及方案论证1.1设计要求:()基本要求 具有年、月、日、星期、时、分、秒等功能; 时间与阴、阳历能够自动关联; 具有温度计功能; 具备年、月、日、星期、时、分、秒校准功能;( 2 ) 创新要求 具有上、下课响铃功能; 具有防御报警功能;1.2 系统基本方案选择和论证1.2.1单片机芯片的选择:采用STC89C51芯片作为硬件核心,

11、采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容。适合且较好的满足该题目的应用,有较好的性价比。1.2.2 显示模块选择方案和论证:方案一: 采用12864液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,有较好的效果。.方案二: 采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示.1.2.3时钟芯片的选择方案和论证:方案一: 直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时

12、、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。方案二: 采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA.2.4温度传感器的选择采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。1.3 电路设计

13、最终方案决定综上各方案所述,对此次作品的方案选定: 采用STC89S52作为主控制系统; DS1302提供时钟;数字式温度传感器;12864液晶为显示。具体元件如下:名称型号数量 单片机STC89SC511 液晶显示器JHD12864F1 电阻10k(1/4w)5电阻1k5电阻200欧姆5电阻4.7k5 电阻4.7k5 电位器10k1 电容10u/16V1 电容30p4 三极管90131 轻触按键小(尺寸66mm5.5)4 蜂鸣器5 V1 晶振11.0592M(小体积)1 底座8脚1 底座40脚1 发光二极管 红1 发光二极管绿1 时钟芯片DS13021 纽扣电池及底座3V(大)1 液晶插槽2

14、0孔1 单排针3排120 杜邦线及杜邦头1股40 电路板AOA512系统的硬件设计与实现2.1 电路设计框图LED数码管动态扫描显示模块AT89S52主控制模 块键盘模块 DS1302时钟模块温度采集模块2.2 系统硬件概述本电路是由STC89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31*

15、8的用于临时性存放数据的RAM寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20构成;显示不烦采用12864液晶显示。 2.3 主要单元电路的设计2.3.1单片机主控制模块的设计STC89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部

16、晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端. 电路图见附录。 主控制系统 2.3.2时钟电路模块的设计图-2示出DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.KHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启

17、动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。中有在SCLK 为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端。电路图见附录。 DS18B20温度采集 2.3.3温度采集模块设计见附录:采用数字式温度传感器DS18B20,它是数字式温度传感

18、器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用0.7与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。电路图见附录。 2.3.4 电路原理及说明(1) 时钟芯片DS1302的工作原理: DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图4所示。图5为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作

19、位,进行读操作时,该位为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指示操作单

20、元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出 RAM RD 1 A4 A3 A2 A1 A0 / CK /WR 表-1 DS1302的控制字格式(3) 数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如下图-4所示 图-4 DS1302读/写时序图(4) DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD

21、码形式,其日历、时间寄存器及其控制字见表-2。 表-2 DS1302的日历、时间寄存器 此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 2.3.5显示模块的设计如图5所示,采用动态扫描显示,由个数码

22、管,3-8译码器74LS138接1K限流电阻,再接8550三极管接到共阳数码管的CoM端作为选通位码,每位选择相应的列。74ls47接240限流电阻,再接共行的LED数码管的断码。3、系统的软件设计3.1程序流程框图开始初始化读、写日期、时间和温度分离日期时间温度显示值显示子程序农历自动更新子程序日期、时间修改子程序闰月子程返回定时闹铃子程序 图-A 主程序流程图 图-B计算阳历程序流程图图A 图B3.2 程序见附录(二)。4 测试与分析4.1 测试仪器序号名称型号1PC机LXB-HF769A2双路直流稳压电源CA17303D3V8通用单片机仿真器V8/L4数字万用表DT92085ISP在线编

23、程器4.硬件测试电子万年历的电路系统较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺被带有包皮的导线,则会对电路造成短路现象。在本成电子万年历的设计调试中遇到了很多的问题。回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:()LED数码管的断码错乱,原因出于没有认真看清a、b 、c等引脚信息。解决:重新排列74LS47的输出端,相应接入LED数码管,即可解决出现在的断码或乱码。( 2)对万年历修改时间或日期时,有时LED数码管被屏蔽掉,造成不亮现象。解决:根据仪器的测试,发现电路的

24、驱动能力不足,最后在DS1302时钟芯片的/CS、SCLK、RET端接入5.1K的上拉电阻后,电路的驱动能力才能满足,即可解决不亮现象。4.软件测试电子成年历是多功能的数字型,可以看当前日期(阴、阳历),时间,还有温度的仪器。电子成年历功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中主要遇到的问题如下:1烧入程序后,LED数码管显示闪动,而且亮度不均匀。解决:首先对调用的延时进行逐渐修改,可以解决显示闪动问题。其次,由于本作品使作动态扫描方式显示的数字,动态扫描很快,人的肉眼是无

25、法看出,但是调用的显示程序时,如果不在反回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示的后面加了屏蔽子令,最后解决了此问题。2修改时间、日期时没有农历没有自动对应上。解决:把不相关的程序暂时屏蔽,地农历的子程序独立调试,发现在调用农历自动更新时,对十进制和十六进制处理不好,所以会造成错乱。最后把相应的十进制进行修改,使得可以与十六进制对应,最后解决了此问题. 3加入温度的程序后,进行修改时间、日期时相应的数码管位没有按要求闪动。 解决:由于DS18B20是串行通信数据,只用一个口线传输,在处理采集的模拟信号时需要一定的时间,当把万年历的程序相接入时,会对延时有很大的影响。所以在调用温度子

26、程序时,先关闭定时器1中断允许,在温度子程序反回时再打开定时器1中断允许。最终解决了此问题。4.4测试结果分析与结论4.4.1 测试结果分析(1)在测试中遇到发光二极管、LED数码管为不显示时,首先使用试测仪对电路进行测试,观察是否存在漏焊,虚焊,或者元件损坏.(2)LED 数码管显示不正常,还有亮度不够,首先使用试测仪对电路进行测试,观察电路是否存在短路现象。查看烧写的程序是否正确无误,对程序进行认真修改。 (3).DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位MSB(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;D6=0,指定时

27、钟数据,D6=1,指定RAM 数据;D5D1 指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入), D0=1,指定读操作(输出)。在DS1302 的时钟日历或RAM 进行数据传送时,DS1302 必须首先发送命令字节。若进行单字节传送,8 位命令字节传送结束之后,在下2 个SCLK 周期的上升沿输入数据字节,或在下8 个SCLK 周期的下降沿输出数据字节。DS1302 与RAM 相关的寄存器分为两类:一类是单个RAM 单元,共31 个,每个单元组态为一个8 位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM 寄存器,在此方

28、式下可一次性读、写所有的RAM 的31 个字节。要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F 以上)。虽然DS1302 在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。可以用老式电脑主板上的3.6V 充电电池。如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。100 F 就可以保证1 小时的正常走时。DS1302 在第一次加电后,必须进行初始化操作。初始化后就可以按正常方法调整时间。4.4.2 测试结论经过多次的反复测试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力.同时在软件的编程方面得

29、到更到的提高,对编程能力得到加强.同时对所学的知识得到很大的提高与巩固5 作品总结在整个设计过程中,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识。较好的完成了作品。达到了预期的目的,在最初的设计中相互学习、相互讨论、研究。完了最初的设想。在电路焊接时虽然没什么大问题,但从中也知道了焊接在整个作品中的重要性,电路工程量大,不能心急,一个个慢慢来不能急于求成。反而达到事半功倍的效果。对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,理清了思路,反而得心应手。在此次设计中,知道了做凡事要有一颗平常的心,不要

30、想着走捷径,一步一脚印。也练就了我们的耐心,做什么事都在有耐心。此次比赛中学到了很多很多东西,这是最重要的。总之,毕业设计是我的能力得到了全方位的提高。 参考文献:【1】.张伟.Protel 99SE实用教程应用与绘制电路图M.北京:人民邮电出版社2008.5【2】.江志红.51单片机技术与应用系统开发案例精选M;【3】.周润景.基于PROTEUS的51单片机设计与仿真M;【4】.王守中.51单片机开发入门与典型实例M;【5】.张齐.朱宁西.单片机系统设计与开发CP;【6】.郭天祥 51单片机C语言教程M. 北京:电子工业出版社2009.1【7】.天津锐志单片机开发网G【8】.维纳电子DS18

31、B20温度传感器及DS1302时钟芯片的中文PDF资料DB【9】.ATMEL公司AT89S52单片机中文PDF资料S;【10】.长沙太阳人电子有限公司通用型1602液晶PDF资料S附录一:电路原理图附录二:程序清单#include #include #include ds1302.h#include ds18b20.h#include lcd12864.h /按键定义sbit KEY0 = P23; /设置sbit KEY3 = P24; /退出sbit KEY1 = P25; /减sbit KEY2 = P26; /加sbit LED1=P30;sbit LED2=P31;sbit LED3

32、=P32;unsigned char w = 0; /调时标志位/键盘函数所要用到的变量unsigned char key_operate = 0;/设置模式unsigned char timer =0;unsigned char key_flag;unsigned int counter=0;unsigned char Lcd_t = 0; /LCD刷新间隔unsigned char ss; /全局变量unsigned int v,getdata,getdataa;static unsigned char menu = 0; /定义静态小时更新用数据变量static unsigned cha

33、r keys = 0; /定义静态小时更新用数据变量static unsigned char timecount = 0; /定义静态软件计数器变量unsigned int flag = 0;/定义并初始化flagunsigned char DS = 10; /定义并初始化DSunsigned char DSS = 1; /定义并初始化DSSunsigned char flag1=0;unsigned char flag2=0;unsigned char flag3=0;unsigned char flag4=0;void lcd_dispwendu(void);/函数声明/*/void In

34、itTimer0(void)/产生10ms时间间隔 TMOD = (TMOD & 0XF0) | 0X01; /定时器0工作在模式1,16Bit定时器模式 TH0 = (65536 - 8000)/256; TL0 = (65536 - 8000)%256; TR0 =1; ET0 =1;/开启定时器和中断 EA = 1;/开始总中断void INIT_Clock(void) /初始化万年历 InitLCD(); /初始12864 ClearScreen(0);/清屏 SetStartLine(0);/显示开始行 Initial_DS1302();/初始化ds1302Init_DS18B20(

35、);/初始化ds18b20InitTimer0();/调转到10ms的定时器中断函数/*/void DelayMM(unsigned int a)/延时函数 1MS/次while( a- );/*-显示时间-*/void lcd_disptime(SYSTEMTIME *Time) unsigned char s1,s2,f1,f2,m1,m2; /定义时间映射局部变量(专用寄存器) if(Time-Second != ss)/判断是否需要更新ss = Time-Second; /更新数据 if(flag!=0)DS-;if(DSHour/10;s2=Time-Hour%10;f1=Time-

36、Minute/10;f2=Time-Minute%10;m1=Time-Second/10;m2=Time-Second%10; Displayen(2,2,0*8,s1); Displayen(2,2,1*8,s2); Displayen(2,2,2*8,11); /: Displayen(2,2,3*8,f1); Displayen(2,2,4*8,f2); Displayen(2,2,5*8,11); /: Displayen(2,2,6*8,m1); Displayen(2,2,7*8,m2);/*-显示日期-*/void lcd_dispdate(SYSTEMTIME *Time)

37、unsigned char n1,n2,n3,n4,n5,n6,n7,n8,n9; /定义局部变量 n1=Time-YearH/10; n2=Time-YearH%10; n3=Time-Year/10; n4=Time-Year%10; n5=Time-Month/10; n6=Time-Month%10; n7=Time-Day/10; n8=Time-Day%10; n9=Time-Week%10; Displayen(2,0,0*8,2); /2 Displayen(2,0,1*8,0); /0 Displayen(2,0,2*8,n3); Displayen(2,0,3*8,n4); Display (2,0,10*16,8); /年 Displayen(2,0,6*8,n5); Displayen(2,0,7*8,n6); Display (1,0,0*16,9); /月 Displayen(1,0,2*8,n7); Displayen(1,0,3*8,n8); Display (1,0,2*16,7); /日 Display (1,2,9*16,10 ); /星 Display (1,2,10*16,11); /期 Display (1,2,11*16,n9); /日/*-调整状态显示-*/void tiaozheng() switch (key_opera

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1