单片机课程设计(论文)-电子万年历设计与实现.doc_第1页
单片机课程设计(论文)-电子万年历设计与实现.doc_第2页
单片机课程设计(论文)-电子万年历设计与实现.doc_第3页
单片机课程设计(论文)-电子万年历设计与实现.doc_第4页
单片机课程设计(论文)-电子万年历设计与实现.doc_第5页
免费预览已结束,剩余15页可下载查看

下载本文档

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

文档简介

电子万年历课程设计 电子万年历设计与实现摘 要:电子万年历的应用十分广泛,在硬件设计一节给出了详细的硬件电路图,并对各个模块功能与at89s52单片机的链接进行详细的说明。在软件设计一节给出了系统的程序控制流程,并对各个部分进行分析说明。最后,简要地介绍系统集成与测试的方法。本设计以at89s52单片机为核心,构成单片机控制电路,结合ds1302时钟芯片和24c02flash存储器,显示阳历年、月、日、星期、时、分、秒和阴历年、月、日,在显示阴历时间时,能标明是否闰月,同时完成对它们的自动调整和掉电保护,全部信息用液晶显示。人机接口由三个按键来实现,用这三个按键对时间、日期可调,并可对闹铃开关进行设置。软件控制程序实现所有的功能。整机电路使用+5v稳压电源,可稳定工作。系统框图如图所示,其软硬件设计简单,时间记录准确,可广泛应用于长时间连续显示的系统中。人机接口显示电路软件控制程序电源电路单片机控制电路 系统框图关键字:ds1302, at89s52单片机,lcd12864,万年历;目 录1 任务提出与方案论证31.1 设计要求31.2 系统基本方案选择与论证32 总体设计42.1 系统硬件设计与实现42.2 系统软件设计43 详细设计63.1硬件系统及模块设计 63.2软件模块设计15参考文献19 1 任务提出与方案论证1.1 设计要求:1.具有年、月、日、星期、时、分、秒等功能;2.具备年、月、日、星期、时、分、秒校准功能;3.具有定时闹钟功能;4.阴历与阳历的转换;1.2 系统基本方案选择与论证方案1基于at89s52单片机定时器产生时钟脉冲不使用时钟芯片,而直接用at89s52单片机来实现电子万年历设计。at89s52是一种带8k字节闪烁可编程可擦除只读存储器的低电压,高性能cmos 8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦写1000余次。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89s52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。若采用单片机计时,利用它的一个16位定时器/计数器每50ms产生一个中断信号,中断20次后产生一个秒信号,然后根据时间进制关系依次向分、时、日、星期、月、年进位。这样就实现了直接用单片机来实现电子万年历设计。用单片机来实现电子万年历设计,无须外接其他芯片,充分利用了单片机的资源。但是精度不够高,误差较大,掉电后丢失所有数据,软件编程较复杂。3.2 方案2基于ds1302产生时钟脉冲在以单片机为核心构成的装置中,经常需要一个实时的时钟和日历,以便对一些实时发生事件记录时给予时标,实时时钟芯片便可起到这一作用。过去多用并行接口的时钟芯片,如mc146818,ds12887等。它们已能完全满足单片机系统对实时时钟的要求,但是这些芯片与单片机接口复杂、占用地址, 数据总线接线多、芯片体积大占用空间多、近年来串行接口的各种芯片在单片机系统中应用愈来愈多,串行接口的实时时钟芯片也出现了不少,ds1302是一个综合性能较好且价格便宜的串行接口实时时钟芯片。利用单片机进行控制,采用ds1302作为实时时钟芯片,其三线接口sclk、i/o、/rst与单片机进行同步通信,外加掉电存储电路、显示电路、键盘电路,即构成一个基本的电子万年历系统,若还要添加其他功能,在这基础上外扩电路即可。由于在系统设计时,需要考虑以下几点因素:功耗低、精确度高、软件编程较简单,芯片的体积小、芯片成本低等,而ds1302芯片有上面所述的诸多优点,所以本设计采用方案2。2总体设计2.1 硬件系统设计与实现总体框图:at89s52控制模块液晶显示供电电路键盘扫描电路ds1302时钟电路温度传感电路2.2 程序框图主程序框图:cpu系统初始化定时器0初始化定时器1初始化串口初始化读写日期、时间信息分离日期时间信息显示子程序显示出的时间时间是否正确?农历及星期自动更新子程序日期、时间修改子程序返回3 详细设计3.1硬件电路设计(1).核心控制部件at89s52at89s52具有下列主要性能: 8kb可改编程序flash存储器(可经受1000次的写入/擦除周期) 全静态工作:0hz24mhz三级程序存储器保密1288字节内部ram32条可编程i/o线2个16位定时器/计数器6个中断源可编程串行通道片内时钟振荡器at89s52的引脚及功能: at89s52单片机的管脚说明如图所示: at89s52的管脚(1) 主要电源引脚 vcc 电源端 gnd 接地端(2) 外接晶体引脚xtal1和xtal2 xtal1 接外部晶体的一个引脚。在单片机内部,它是构成片内振荡器的反相放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,既把此信号直接接到内部时钟发生器的输入端。 xtal2 接外部晶体的另一个引脚。在单片机内部,它是上述振荡器的反相放大器的输出端。采用外部振荡器时,此引脚应悬浮不连接。(3) 控制或与其它电源复用引脚rst、ale/prog、/psen和/ea/vpp rst 复位输入端。 当振荡器运行时,在该引脚上出现两个机器周期的高电平将使单片机复位。 ale/prog 当访问外部存储器时,ale(地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ale端仍以不变的频率(此频率为振荡器频率的1/6)周期性地出现正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是:每当访问外部数据存储器时,将跳过一个ale脉冲。在对flash存储器编程期间,该引脚还用于输入编程脉冲(/prog)6。 /psen 程序存储允许(/psen)输出是外部程序存储器的读选通信号。当at89s52/lv52由外部程序存储器取指令(或常数)时,每个机器周期两次/psen有效(既输出2个脉冲)。但在此期间内,每当访问外部数据存储器时,这两次有效的/psen信号将不出现。/ea/vpp 外部访问允许端。要使cpu只访问外部程序存储器(地址为0000hffffh),则/ea端必须保持低电平(接到gnd端)。当/ea端保持高电平(接vss端)时,cpu则执行内部程序存储器中的程序。(4) 输入/输出引脚 p0.0 p0.7、p1.0p1.7、p2.0 p2.7 和p3.0p3.7 p0端口(p0.0 p0.7) p0是一个8位漏极开路型双向i/o端口。作为输出口用时,每位能以吸收电流的方式驱动8个ttl输入,对端口写1时,又可作高阻抗输入端用。p1端口(p1.0 p1.7) p1是一个带有内部上拉电阻的8位双向i/o端口。p1的输出缓冲器可驱动(吸收或输出电流方式)4个ttl输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。作输入口时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。 p2端口 (p2.0p2.7) p2是一个带有内部上拉电阻的8位双向i/o端口。p2的输出缓冲器可驱动(吸收或输出电流方式)4个ttl输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。p2作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。p3端口(p3.0p3.7) p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流,这是由于上拉的缘故。p3口也可作为at89s52的一些特殊功能,这些特殊功能见表4-17。表4-1 p3端口的特殊功能 端口引脚 兼 用 功 能 p3.0rxd (串行输入口) p3.1txd (串行输出口) p3.2/int0 (外部中断0) p3.3/int1 (外部中断1) p3.4t0 ( 定时器0的外部输入) p3.5t1 (定时器1的外部输入) p3.6/wr (外部数据存储器写选通) p3.7/rd (外部数据存储器读选通)(2).ds1302时钟电路 芯片介绍:低功耗时钟芯片ds1302可以对年、月、日、时、分、秒进行计时,且具有闰年补偿等多种功能。ds1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析以及对异常数据出现的原因的查找有重要意义。(1) ds1302的性能特性实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;用于高速数据暂存的318位ram;最少引脚的串行i/o;2.55.5v 电压工作范围;2.5v时耗电小于300na;用于时钟或ram数据读/写的单字节或多字节(脉冲方式)数据传送方式;简单的3线接口;可选的慢速充电(至vcc1)的能力。ds1302时钟芯片包括实时时钟/日历和31字节的静态ram。它经过一个简单的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用24h或带am(上午)/pm(下午)的12h格式。采用三线接口与cpu进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或ram数据。ds1302有主电源/后备电源双电源引脚:vcc1 在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份;vcc2在双电源系统中提供主电源,在这种运用方式中,vcc1 连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。ds1302由vcc1或vcc2中较大者供电。当vcc2大于vcc1+0.2v时,vcc2给ds1302供电;当vcc2小于vcc1时,ds1302由vcc1供电。(2) ds1302数据操作原理ds1302在任何数据传送时必须先初始化,把rst脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在sclk的上升沿被输入。无论是读周期还是写周期,开始8位指定40个寄存器中哪个被访问到。在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字节数。图4-3 ds1302管脚图如果在传送过程中置rst为低电平,则会终止本次数据传送,并且i/o引脚变为高阻态。上电运行时,在vcc =2.5v之前,rst脚必须保持低电平。只有在sclk为低电平时,才能将rst置为高电平。ds1302的管脚图如图4-3所示,内部结构图如图4-4所示,表4-2为各引脚的功能。图4-4 ds1302内部结构图表4-2 ds1302引脚功能表引脚号引脚名称功能1vcc2主电源2,3x1,x2振荡源,外接32768hz晶振4gnd地线5rst复位/片选线6i/o串行数据输入/输出端(双向)7sclk串行数据输入端8vcc1后备电源ds1302的控制字如图4-5所示。控制字节的最高有效位(位7)必须是逻辑1;如果它为逻辑0,则不能把数据写入到ds1302中。位6如果为0,则表示存取日历时钟数据;为1表示存取ram数据。位51(a4a0)指示操作单元的地址。最低有效位(位0)如为0,表示要进行写操作;为1表示进行读操作。控制字节总是从最低位开始输入/输出。7 6 5 4 3 2 1 01ram cka4a3a2a1a0ram k图4-5 控制字节的含义为了提高对32个地址的寻址能力(地址/命令位15逻辑1),可以把时钟/日历或ram寄存器规定为多字节(burst)方式。位6规定时钟或ram,而位0规定读或写。在时钟/日历寄存器中的地址931或ram寄存器中的地址31不能存储数据。在多字节方式中,读或写从地址0的位0开始。必须按数据传送的次序写最先的8个寄存器。但是,当以多字节方式写ram时,为了传送数据不必写所有31字节。不管是否写了全部31字节,所写的每一字节都将传送至ram。数据读写程序如图4-6所示。sclkkrsti/o571357210246046r/ca2a3a0a1r/wa41datai/obytedatai/obyte图4-6 数据读写程序ds1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为bcd码形式,其日历、时间寄存器及其控制字见表4-3,其中奇数为读操作,偶数为写操作表4-3 ds1302的日历、时钟寄存器及其控制字寄存器名命令字取值范围各位内容写操作读操作76543210秒寄存器80h81h00-59ch10secsec分钟寄存器82h83h00-59010minmin小时寄存器84h85h01- 12或00-2312/24010aphrhr日期寄存器86h87h01-28,29,30,310010datedate月份寄存器88h89h01-12000iommonth周日寄存器8ah8bh01-0700000day年份寄存器8ch8dh00-9910yearyear时钟暂停:秒寄存器的位7定义位时钟暂停位。当它为1时,ds1302停止振荡,进入低功耗的备份方式。通常在对ds1302进行写操作时(如进入时钟调整程序),停止振荡。当它为0时,时钟将开始启动。am-pm/12-24小时方式:小时寄存器的位7定义为12或24小时方式选择位。它为高电平时,选择12小时方式。在此方式下,位5是am/pm位,此位是高电平时表示pm,低电平表示am,在24小时方式下,位5为第二个10小时位(2023h)。(3)ds18b20温度传感电路 1、ds18b20的主要特性 1.1、适应电压范围更宽,电压范围:3.05.5v,在寄生电源方式下可由数 据线供电 1.2、独特的单线接口方式,ds18b20在与微处理器连接时仅需要一条口线即可实现微处理器与ds18b20的双向通讯 1.3、 ds18b20支持多点组网功能,多个ds18b20可以并联在唯一的三线上,实现组网多点测温 1.4、ds18b20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内 1.5、温范围55125,在-10+85时精度为0.5 1.6、可编程 的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温 1.7、在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快 1.8、测量结果直接输出数字温度信号,以一 线总线串行传送给cpu,同时可传送crc校验码,具有极强的抗干扰纠错能力 1.9、负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。 2、ds18b20的外形和内部结构ds18b20内部结构主要由四部分组成:64位光刻rom 、温度传感器、非挥发的温度报警触发器th和tl、配置寄存器。温度数据表如下:(4)键盘电路本设计共采用按键3个,分别与单片机的p1.1、p1.2、p1.3,p1.4口相连,分别对应光标移动,时间、日期调整,退出、闹铃开关键的功能。(5)液晶显示模块(lcd12864)带中文字库的128x64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ascii字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。引脚功能: 电路连接原理图:3.2系统软件设计(1).阳历程序设计:因为使用了时钟芯片ds1302,阳历程序只需从ds1302各寄存器中读出年、周、月、日、小时、分、秒等数据,再处理即可。在首次对ds1302进行操作之前,必须对它进行初始化,然后从ds1302中读出数据,再经过处理后,送给显示缓冲单元。阳历程序流程图见图所示。(2)时间调整程序:调整时间用三个调整按钮,一个作为移位、控制用,一个作为加用,一个作为退出调整和闹铃开关用。分别定义为控制按钮、加按钮、退出按钮。在调整时间过程中,要调整的位与别的位应该有区别,所以增加了闪烁功能,即调整的位一直在闪烁,直到调整下一位。闪烁原理就是,让要调整的一位每隔一定的时间熄灭一次,例如间隔时间为50ms。利用定时器计时,当达到50ms溢出时,就送给该位熄灭符,在下一次溢出时,再送正常显示的值,不断交替,直到调整该位结束。此时送正常显示值给该位,再进入下一位调整闪烁程序。时间调整程序流程图如图所示。控制键有效,进入年调整程序等待按键程序加键有效年加1控制键有效,进入月调整程序控制键有效,进入日调整程序控制键有效,进入星期调整程序控制键有效,进入时调整程序控制键有效,进入分调整程序等待按键程序加键有效月加1等待按键程序加键有效日加1等待按键程序加键有效星期加1等待按键程序加键有效小时加1等待按键程序加键有效分加1控制键有效,跳出时间调整程序,进入主循环程序(3)阴历日期程序:计算出阳历总天数后,就可以根据它来推算阴历日期。推算方法是,先用总天数减去春节和元旦的日差,如果结果为1,则该天正好是春节(因为春节在元旦之后,在计

温馨提示

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

最新文档

评论

0/150

提交评论