实时日历和时钟显示单片机毕业设计_第1页
实时日历和时钟显示单片机毕业设计_第2页
实时日历和时钟显示单片机毕业设计_第3页
实时日历和时钟显示单片机毕业设计_第4页
实时日历和时钟显示单片机毕业设计_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

1、广东xx大学2012届毕业设计 广东科贸职业学院 2012 届学生毕业论文/设计题 目: _姓 名: _系 别: _专 业: _班 级: _指导老师: _ _ _ _ _ 日 期: _独 创 性 声 明 本人声明所呈交的毕业论文(设计)是本人在指导教师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文(设计)中不包含其他人已经发表或撰写过的研究成果,也不包含为获得广东科贸职业学院或其他教育机构的证书而使用过的材料。与我一同工作的同志对本论文(设计)所做的任何贡献均已在论文中作了明确的说明并表示谢意。论文(设计)作者签名: 签字日期: 年 月 日摘要本设计是

2、基于51系列的单片机进行的实时日历和时钟显示设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。实时日历和时钟显示的设计过程在硬件与软件方面进行同步设计。硬件部分主要由at89s52单片机,led显示电路,以及调时按键电路等组成,系统通过led显示数据,所以具有人性化的操作和直观的显示效果。软件方面主要包括时钟程序、键盘程序,显示程序等。本系统以单片机的汇编语言进行软件设计,为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了,以便更简单地实现调整时间及日期显示功能。所有程序编写完成后,在wav

3、e软件中进行调试,确定没有问题后,在proteus软件中嵌入单片机内进行仿真。关键词:at89s52; ds1302; led51目 录1.前 言12.设计方案论证22.1功能要求22.2方案确定22.2.1单片机芯片的选择方案和论证22.2.2显示模块选择方案和论证32.2.3时钟芯片的选择方案和论证32.2.4电路设计最终方案确定33.主控制器和外围器件43.1at89s52单片机43.2 ds1302时钟芯片43.2.1 ds1302芯片介绍43.2.2ds1302 的应用83.3数码管led83.4译码器74hc13893.5锁存器74ls24494.硬件设计104.1电路设计框图10

4、4.2系统概述104.3电源设计104.4单片机的复位电路114.5单片机系统的晶振电路114.6主电路设计125.软件设计135.1主程序设计135.2键盘子程序设计145.3日历时钟子程序设计165.4显示子程序设计186.系统调试186.1软件调试187.结论19致 谢21参考文献22附录23附录硬件电路图23附录主程序源代码24-1.前 言在日新月异的21世纪里,家用电子产品得到了迅速发展。许多家电设备都趋于人性化、智能化,这些电器设备大部分都含有cpu控制器或者是单片机。单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、

5、通讯设备、日常消费类产品和玩具等。并且已经深入到工业生产的各个环节以及人民生活的各个方面,如车间流水线控制、自动化系统等、智能型家用电器(冰箱、空调、彩电)等。用单片机来控制的小型家电产品具有便携实用,操作简单的特点。时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用

6、集成电路计时时,译码代替机械式传动,用led显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间

7、精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:ds1302,ds12887,x1203等都可以满足高精度的要求。本文设计的日历和时钟的显示广泛用于小型智能家用电子产品,如电子钟。利用单片机进行控制,实时时钟芯片ds1302进行记时,外加掉电存储电路和显示电路,可实现时间的调整和显示。电子钟既可广泛应用于家庭,也可应用于银行、邮电、宾馆、医院、学校、企业、商店等相关行业的大厅,以及单位会议室、门卫等场所。因而,此设计具有相当重要的现实意义和实用价值。2.设计方案论证2.1功能要求1、能显示年、月、日、时、分、秒、星期2、能对时间进行手动修正3、采用24小时制4、使用led显示时间参数

8、5、上电后,电子钟显示“2010年 1月 1日” “1时 1分 1秒 星期1”对时,分,秒,日,月,年高位为0时做消隐处理,只显示单个数字以增强其可读性。2.2方案确定2.2.1单片机芯片的选择方案和论证方案一: 采用89c51芯片作为硬件核心,采用flash rom,内部具有4kb rom 存储空间,能于3v的超低压工作,而且与mcs-51系列单片机完全兼容,但是运用于电路设计中时由于不具备isp在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。方案二:采用at89s52,片内rom全都采用flash rom;能

9、以3v的超底压工作;同时也与mcs-51系列单片机完全该芯片内部存储器为8kb rom 存储空间,同样具有89c51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。所以选择采用at89s52作为主控制系统.2.2.2显示模块选择方案和论证方案一:采用led液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用led液晶显示屏。方案二:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适

10、合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。方案三:采用led数码管动态扫描,led数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。所以采用了led数码管作为显示。2.2.3时钟芯片的选择方案和论证方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。方案二:采用ds1302时钟芯片实现时钟,ds1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,

11、位的ram做为数据暂存区,工作电压2.5v5.5v范围内,2.5v时耗电小于300na.2.2.4电路设计最终方案确定综上各方案所述,对此次作品的方案选定: 以单片机at89s52为主控制器,时间数据是通过时钟芯片ds1302来读取,并通过led数码管显示出来,并用键盘来完成对当前时间的调整。3.主控制器和外围器件3.1at89s52单片机at89s52是一种低功耗、高性能cmos 8位微控制器,使用 atmel 公司高密度非易失性存储器技术制造,与工业80c51产品指令和引脚完全兼容。并具有以下标准功能: 8k字节flash,256字节ram,32 位i/o 口线,看门狗定时器,2 个数据指

12、针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,at89s52 可降至0hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,cpu停止工作,允许ram、定时器/计数器、串口、中断继续工作。掉电保护方式下,ram内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。3.2 ds1302时钟芯片3.2.1 ds1302芯片介绍低功耗时钟芯片ds1302可以对年、月、日、时、分、秒进行计时,且具有闰年补偿等多种功能。ds1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录。这

13、种记录对长时间的连续测控系统结果的分析以及对异常数据出现的原因的查找有重要意义。采用ds1302作为记录测控系统中的数据记录,其软硬件设计简单,时间记录准确,既避免了连续记录的大工作量,又避免了定时记录的盲目性,给连续长时间的测量、控制系统的正常运行及检查都来了很大的方便,可广泛应用于长时间连续的测控系统中。在测量控制系统中,特别是长时间无人职守的测控系统中,经常需要记录某些具有特殊意义的数据及其出现的时间。记录及分析这些特殊意义的数据,对测控系统的性能分析及正常运行具有重要的意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此只能记录数据而无法准确记录其出现的时间;若采用单

14、片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且某些测控系统可能不允许。而在系统中采用ds1302则能很好地解决这个问题。 ds1302的性能特性实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;用于高速数据暂存的318位ram;最少引脚的串行i/o;2.55.5v 电压工作范围;2.5v时耗电小于300na;用于时钟或ram数据读/写的单字节或多字节(脉冲方式)数据传送方式;简单的3线接口;可选的慢速充电(至vcc1)的能力。ds1302时钟芯片包括实时时钟/日历和31字节的静态ram。它经过一个简单的串行接口与微处理器通信

15、。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用24h或带am(上午)/pm(下午)的12h格式。采用三线接口与cpu进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或ram数据。ds1302有主电源/后备电源双电源引脚:vcc1 在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份;vcc2在双电源系统中提供主电源,在这种运用方式中,vcc1 连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。ds1302由vcc1或vcc2中较大者供电。当vcc2大于vcc1+0.2v时,

16、vcc2给ds1302供电;当vcc2小于vcc1时,ds1302由vcc1供电。ds1302数据操作原理ds1302在任何数据传送时必须先初始化,把rst脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在sclk的上升沿被输入。无论是读周期还是写周期,开始8位指定40个寄存器中哪个被访问到。在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字节数。图3-1 ds1302管脚图如果在传送过程中置rst为低电平,则会终止本次数据传送,并且i/o引脚变为高阻

17、态。上电运行时,在vcc =2.5v之前,rst脚必须保持低电平。只有在sclk为低电平时,才能将rst置为高电平。ds1302的管脚图如图3-1所示,表3-2为各引脚的功能。引脚号引脚名称功能1vcc2主电源2,3x1,x2振荡源,外接32768hz晶振4gnd地线5rst复位/片选线6i/o串行数据输入/输出端(双向)7sclk串行时钟输入端8vcc1后备电源表3-2 ds1302引脚功能表ds1302的控制字如图3-3所示。控制字节的最高有效位(位7)必须是逻辑1;如果它为逻辑0,则不能把数据写入到ds1302中。位6如果为0,则表示存取日历时钟数据;为1表示存取ram数据。位51(a4

18、a0)指示操作单元的地址。最低有效位(位0)如为0,表示要进行写操作;为1表示进行读操作。控制字节总是从最低位开始输入/输出。图3-3 控制字节的含义为了提高对32个地址的寻址能力(地址/命令位15逻辑1),可以把时钟/日历或ram寄存器规定为多字节(burst)方式。位6规定时钟或ram,而位0规定读或写。在时钟/日历寄存器中的地址931或ram寄存器中的地址31不能存储数据。在多字节方式中,读或写从地址0的位0开始。必须按数据传送的次序写最先的8个寄存器。但是,当以多字节方式写ram时,为了传送数据不必写所有31字节。不管是否写了全部31字节,所写的每一字节都将传送至ram。数据读写程序如

19、图3-4所示。sclkkrsti/o571357210246046r/ca2a3a0a1r/wa41datai/obytedatai/obyte图3-4数据读写程序ds1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为bcd码形式,其日历、时间寄存器及其控制字见表3-5,其中奇数为读操作,偶数为写操作。寄存器命令码数据范围寄存器中各位的内容名称地址写读76543210秒00h80h81h0059ch秒数据分01h82h83h00590分数据时02h84h85h0112或002312/24010/ap时数据日03h86h87h0128,2930,3100日数据月04h88

20、h89h0112000月数据星期05h9ah8bh010700000星期数据年06h8ch8dh0099年数据多字节读写behbfh表3-5 片内时钟数据寄存器3.2.2ds1302 的应用实时时钟芯片ds1302采用串行数据传输,可为掉电保护电源提供可编程的充电功能,也可以关闭充电功能,芯片采用32768hz晶振。要特别说明的是,备用电源bt1可以用电池或超级电容(10万f以上)。虽然ds1302在主电源掉电后耗电很小,但如果要长时间保证时钟正常,最好选用小型充电电池。如果断电时间较短(几小时或几天),可以用漏电较小的普通电解电容代替(100f就可以保证1小时的正常走时)。ds1302在第一

21、次加电后,需进行初始化操作。初始化后就可以按正常方法调整时间。ds1302的时钟电路如图3-6所示。图3-6 ds1302时钟电路3.3数码管ledled显示器由若干个发光二极管组成,当发光二极管导通时,相应的一个笔画或一个点就发光。控制相应的管导通,就能显示出对应字符。各段led显示器需要由驱动电路驱动。在七段led显示器中,通常将各段发光二极管的阴极或阳极连在一起作为公共端。将各段发光二极管连在一起的叫共阳极显示器,用低电平驱动;将阴极连在一起的叫共阴极显示器,用高电平驱动。静态显示就是每一个显示器各笔画段都要独占具有一个锁存功能的输出口线,cpu把要显示的字形代码送到输出口上,就可以使显

22、示器上显示所需的数字或符号,此后,即使cpu不在去访问它,因为各笔画段借口具有锁存功能,显示的内容也不会消失。动态显示是指显示器显示某一字符时,相应段的发光二极管恒定地导通或截止。静态显示有并行输出和串行输出两种方式。在本系统中数码管使用共阴极接法而且是用动态显示。3.4译码器74hc13874hc138译码器是通过3条线来达到控制8条线的状态,就是通过3条控制线a0、a1、a2不同的高低电平组合来控制y0y7的输出状态,其中4和5为使能地端,与8引脚共同接地,当接高电平时y0到y7输出高电平。6号脚为使能端,为高电平时有效。74hc138封装如图3-7。当需要级联时只需要改变使能端信号引脚即

23、可,连接方法简单。图3-7 74hc138封装图3.5锁存器74ls24474ls244由2组、每组四路输入、输出构成。每组有一个控制端g,由控制端的高或低电平决定该组数据被接通还是断开。图3-8 74ls244引脚图4.硬件设计4.1电路设计框图at89s52主控制模块ds1302时钟模块led数码管动态扫描显示模块键盘模块复位电路时钟电路4.2系统概述本电路是由at89s52单片机为控制核心,具有在线编程功能,低功耗,能在3v超低压工作;时钟电路由ds1302提供,它是一种高性能、低功耗、带ram的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.

24、5v5.5v。采用三线接口与cpu进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或ram数据。ds1302内部有一个31*8的用于临时性存放数据的ram寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;显示部份由15个数码管,74hs138、74ls244构成。使用动态扫描显示方式对数字的显示。硬件的结构和可靠性直接影响着整个系统的可靠性,所以合理的安排电路能提高电子产品的性能。4.3电源设计在这里因设计分工和侧重点不同,电源模块用通用的5v变压器。4.4单片机的复位电路图4-2手动复位电路在系统运行的过程中,有时可能对系统需

25、要进行复位,为了避免对硬件系统经常加电和断电造成的损害,设计了手动的复位电路。如图4-2所示。这种电路的设计,在系统的运行过程中需要复位时,只需使开关闭合,在rst端就会出现一定时间的高电平信号,从而使单片机实现复位。4.5单片机系统的晶振电路单片机必须在时钟的驱动下才能进行工作。mcs-51系列单片机内部都有一个时钟振荡电路,只需外接晶振源,就能产生一定频率的时钟信号送到单片机的内部的各个单元,决定单片机的工作速度。图4-3就是内部时钟工作方式的电路图,这是一种常用的方式。这种方式是外界振荡源,本设计就采用这种外接晶振的方法。电路中的两个电容的作用有两个:一是帮助振荡器起振(c1 c2的值大

26、,起振的速度慢;反之,速度快。);二是对振荡器的频率起到微调的作用(c1 c2的值大,频率略有减少,反之,频率略有提高)。c1 c2的值采用30pf。图4-3单片机内部晶振电路连接图 4.6主电路设计主电路的功能是完成年、月、日、星期、时、分、秒之间的转换, 再送往led显示,并且接受键盘操作,对日期和时间进行校正。电路原理图如图4-4所示,显示部分用p0口做为输出数据接到led数码管a到h,并接74ls244做为各段的驱动(为了简化电路图在此用了8个上拉电阻代替74ls244)。用p3口的低3位接译码器的a0,a1,a2端,用p3.3,p3.4,p3.5分别接译码器的使能端,通过控制p3口来

27、控制led的动态扫描。单片机的18和19引脚接12mhz的晶振,并接两个22pf的电容同时接地,单片机复位端接一极性电容并连接到电源处,在极性电容的负极接一10k的电阻,并连接至地做为放电用。本设计用到四个独立式键盘分别接到p1口的低4位,用p1口的p1.4,p1.5,p1.6接日历时钟的使能端和时钟端及数据输入输出口,并在日历时钟上接一32.768khz的晶振,并接两个22pf的电容终端和地相连,各芯片的电源部分分别接到有开关式电源产生的5v电源上,芯片的接地端都接在公共地上,在这里接电源部分就不再一一详述。设计采用动态显示,轮流扫描各个led使之显示相应的数型码,当扫描频率大于人眼所能识别

28、的频率时就看不到闪烁现象。动态显示的亮度不如静态显示,但静态显示占用的i/o口资源较多,往往用移位寄存器74ls164等来扩充其i/o口不足的情况,当显示位数较多时,这样势必增加硬件开销,增大成本,不利于开阔市场。本设计的突出之处在于硬件电路简单,大大减少了硬件开销,这样又势必增加了软件开发的难度,但降低了成本有利于市场的开阔。图4-4电路原理图5.软件设计软件的设计是设计控制系统的应用程序。其任务是在整体设计和硬件设计的基础上,确定程序结构,分配内ram资源,划分功能模块,然后进行主程序和各模块程序的设计,最后连接起来成为一个完整应用程序,与硬件相结合完成相应功能。5.1主程序设计主程序才用

29、模块化设计,流程图如图5-1所示。从上面主程序看出,主程序的组成是通过分别调用各子程序组成总体系统功能,能很直观的看出主程序所要完成的功能,首先是初始化各模块,之后调用键盘完成时间的调整,调用日历子程序完成日历时钟的初始化和时间数据的读写,调用显示子程序显示数据,最后又转到键盘程序来回循环。初始化部分主要有初始化定时器部分和和一些寄存器、标志位、初始化时间等。对定时器t0初始化时,首先置初值,cpu开中断,定时器t0开中断,并且开始计数,而对定时器t1初始化时,首先置初值,定时器t1关中断,并且停止计数,只有收到命令时才能产生中断。开始初始化t0并开中断初始化t1并关中断寄存器初始化标志位初始

30、化初始化时间调键盘子程序调日历子程序调显示子程序结束寄存器的初始化主要是初始化执行程序时用到的部分ram空间,防止程序执行时带来混乱。标志位初始化是对时间调整时判断是调分还是调时等而专设的位标志,初始化过程中标志位全部置0,即开始时是处于显示状态,而不是调整状态,这一点在程序中相当明了。初始化时间是开机时显示的时间,并通过调用日历时钟的写程序来完成时间的置初值。图5-1程序流程图5.2键盘子程序设计多功能键盘程序的设计是本设计的难点,也是完成本设计的重点,当有键按下时,调用10ms延时程序,再判断是否有键按下无则返回,若有先调用显示程序再判断是否松开,否则再转到显示程序,这样避免了在按键松开之

31、前能正常显示。其中k1键功能最多,通过判断k1键按下的次数来判断是调时间还是定时,并对对应的位置闪烁。本键盘深度为7级,即连续按下k1键8次时则返回到原来界面。当判断键值为1时则为调秒状态,对应的秒低位闪烁,为2时为调分状态并分闪烁,为3时为调时状态并时闪烁,为4时为调日状态并日闪烁,为5时为调月状态并月闪烁,为6时为调年状态并年闪烁,为7时为调星期状态并星期闪烁。 k2为加1键,k3为减1键,k4为总返回键,即在调时见时不用只有按下k1键值为8才返回,而通过按下k4键即可返回。由于键盘流程图非常复杂,在此只表示秒,如图5-2所示,其余略。n开始 有键按下?延时10msk2按下?k3按下?k4

32、按下?k1按下?调显示k1为0?键值加1y调显示有键按下?键值清0标志位清0返回回 nnnynyn下页1yyy下页31键值为1?调显示秒闪烁秒标志位置1k2按下?k3按下?秒减1秒数据送ds1302秒加13ynyy键值为?n。图5-2 键盘子程序流程图5.3日历时钟子程序设计ds1302与cpu的连接需要三条线,即sclk(7)、i/o(6)、rst(5)。日历时钟ds1302的读写需要初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机启动写时序开始,如果要求单总线器件回送是低位在先。读写都是16位数据高8位是地址低8位是数据,在

33、读写时要严格遵从其读写时序,否则读写将会失效。当rst为高电平时,所有的数据传送被初始化,允许对ds1302进行操作。如果在传送过程中rst置为低电平,则会终止此次数据传送,i/o引脚变为高阻态。上电运行时,在vcc2.5v之前,rst必须保持低电平。只有在sclk为低电平时,才能将rst置为高电平,这一点我们要一定注意。当rst置为高电平时,在串行时钟的sclk的上升沿,ds1302从i/o端口读入一位数据,8个串行时钟脉冲就可以读入一字节的数据。在串行时钟的下降沿,ds1302向i/o端口输出一位数据,8个串行时钟脉冲就可以输出一字节的数据。显示子程序设计电子产品是否实用其中显示占了很重要

34、的地位,很多数人都渴求用视觉效果好,范围广,直观明了,led符合以上的要求,但相应的硬件设计相对复杂。rst置1开 始发送1位命令码命令码8位送完?写一位数据数据写完?rst置0(a)时钟写结 束开 始rst置1发送1位命令码命令码8位送完?读一位数据数据读完?rst置0结 束(b) 时钟读图5-3 日历时钟的写和读nyyyynnn5.4显示子程序设计本设计的显示部分具有消隐和闪烁功能,当时分秒等高位为0时显示消隐, 此时在读时间时更加明了,但低位不能显示消隐。闪烁功能也是本设计的一个难点,本设计采用8个位标志位,其中一个标志位通过用定时器0产生一个周期大约为每秒1.5次,使闪烁时效果达到最好

35、。此时定时器采用定时中断的工作方式,这样可以充分利用cpu资源。另外7个标志位是时分秒等的位标志位,当秒标志位置1时即秒开闪烁,与用中断产生的标志位相结合,即在一个周期内为0时此时消隐为1时开显示,这样就使在调时间时对应的位闪烁。6.系统调试单片机系统经过总体设计,完成了硬件和软件设计开发。通过软件和硬件相结合系统即可运行。但编制好的程序或焊接好的线路不能按预计的那样正常工作是常见的事,经常会出现一些硬件、软件上的错误,这是软件和硬件开发者经常遇见的,这就需要通过调试来发现错误并加以改正。调试可分为硬件调试和软件调试。本设计系统的已经在pc机上用模拟开发软件进行了检测和调试,并运行成功,最后进

36、行实物图的硬件组装与调试,这样就给开发者在提供了方便。6.1软件调试本设计是在proteus软件和wava6000软件相结合调试的,完全用仿真软件在pc机上对目标电路原理图和程序进行检测和调试。调试过程中单片机相应输入端由通用键盘和鼠标设定,运行状态、各寄存器状态、端口状态等都可以在指定的窗口区域显示出来,以确定程序运行有无错误。目标程序纠错:该阶段工作通常在目标程序编辑时就完成。一般来说,仿真软件能为用户输入的程序指令纠错,包括书写格式、标号未定义或多重定义、转移地址溢出等错误。整体程序调试:即把各子程序整体连起来进入到综合电路调试,看是否能实现预计的功能显示。在这阶段若发生故障,可以考虑各

37、子程序在运行时是否破坏现场,数据缓冲单元是否发生冲突,标志位的建立和清除在设计上是否失误,堆栈是否溢出,输入输出状态是否正常等。经过多次修改程序最后调试出来理想的效果,如图6-1所示图6-1 proteus仿真用软件模拟器调试不需任何在线仿真器,也不需要用户样机,直接就可以在pc机上开发和调试。调试和修改完毕后可以直接使用编程器将软件固化在目标系统rom中,然后投入运行。本设计特点突出,性价比高,适合于家庭挂历,有很高应用价值。7.结论硬件系统关系到所要设计的电子产品好怀,如系统抗干扰性等,所以要合理的安排尽量减少干扰提高性能。单片机是很容易受干扰的控制器,当采用外部晶振时,应尽量让其靠近单片

38、机减少对其干扰,防止程序乱飞现象。同时还可以采用隔离等方式减少干扰,硬件系统设计的好坏很大部分来源于经验,所以我们要有动手的好习惯。软件设计是核心部分,具有多样化,灵活性高,易移植等优点,要深深理会各指令的含义才能更加熟练应用,中断的合理利用可以减少cpu利用资源,具有执行效率高等优点,本设计用到定时器中断以减少对cpu的占用,更好的处理其他功能。软件的设计大部分采用模块化设计的方法以方便调试,并使其可读性大大增强,方便更改和移植。在这次设计中我学到了很多,也发现了自己的不足,也难免有错误之处,敬请提出!致 谢不知不觉,毕业设计结束了。我的毕业论文已整理完毕,电路调试进展良好。毕业设计的完成意

39、味着我的大学学习生活即将结束,从此我将进入一个新的人生旅途、开始一段崭新的生活工作。在此,我衷心地感谢所有在我做毕业设计期间帮助过我的人。 首先我要感谢林长青老师、滕弘虬老师大力帮助和支持。在整个设计过程当中,为我的毕业设计带来了很大方便。同时在我完成毕业设计的过程中提供了很多指导性的意见,使我受益匪浅。在此,我衷心感谢老师们给予我的帮助和教育。此外,还要衷心感谢其他所有对本课题的研究和论文撰写有过帮助的同学。最后,我要感谢我的母校广东科贸职业学院,在校期间,这里给我留下了美好的回忆。特别是在我即将踏上工作岗位的同时,毕业设计整个过程给了我这样一个锻炼的机会,使我加深了对以前知识的理解和巩固,

40、拓宽了知识面,也提高了我对所学知识的综合应用能力。祝愿母校的将来更美好!参考文献01何宏主编.单片机原理与接口技术.北京:国防工业出版社.2006.0702杨西明,朱骐主编.单片机编程与应用入门.北京:机械工业出版社.2004.0603先锋工作室编著.单片机程序设计实例.北京:清华大学出版社.2003.0104谢宜仁主编.单片机实用技术问答.北京:人民邮电出版社.2003.0205孙江宏,李良玉等编著.protel99电路设计与应用.北京:机械工业出版社.2004.0706房小翠,王金凤编著.单片机实用系统设计技术.北京:国防工业出版社.1999.0607秦曾煌主编.电工学(电子技术).北京:

41、高等教育出版社,200408何立民.单片机高级教程应用与设计.北京:北京航空航天大学出版社,200009刘国荣单片微型计算机技术.北京:机械工业出版社,199610王迎旭.单片机原理与应用.北京:机械工业出版社,200411于永权.atmel89系列单片机应用技术.北京:北京航空航天大学出版社,200112高峰.单片微型计算机原理与接口技术.北京:科学出版社,200313各种网络教程及其他附录附录硬件电路图附录主程序源代码zhuan bit 50h ;闪烁标志位辅助标志位zhuan1 bit 51h ;年开闪烁的标志位zhuan2 bit 52h ;月开闪烁的标志位zhuan3 bit 53h

42、 ;日开闪烁的标志位zhuan4 bit 54h ;时开闪烁的标志位zhuan5 bit 55h ;分开闪烁的标志位zhuan6 bit 56h ;秒开闪烁的标志位zhuan7 bit 57h ;星期开闪烁的标志位org 0000hljmp start ;开始并初始化org 000bh ;定时/计数t0中断ljmp zduan org 001bh ;定时/计数t1中断ljmp zduan2zduan:mov th0,#00h ;使zhuan由正到负周期大约为1.5即当开闪烁时 每秒大约闪烁1.5次环境mov tl0,#00hdjnz r7,zduan1 ;循环指令cpl zhuan ;闪烁标志

43、位求反mov r7,#3zduan1:reti ;中断返回zduan2:mov th1,#0fchmov tl1,#43hcpl p3.0reti org 0100hstart:mov sp,#70h ;设堆栈mov tmod,#11h ;t0,ti工作方式1mov th0,#00hmov tl0,#00hmov th1,#0fchmov tl1,#43hsetb ea ;开放cpusetb et0 ;开放t0中断setb tr0 ;启动t0工作clr zhuan1 ;初始化标志位clr zhuan2clr zhuan3clr zhuan4clr zhuan5clr zhuan6clr zhu

44、an7mov r7,#3mov 5fh,#00h ;初始化寄存器mov 30h,#01h ;时间赋初始值mov 31h,#01hmov 32h,#01hmov 33h,#01hmov 34h,#01hmov 35h,#01hmov 36h,#10hsetb p1.4 ;启动设置写保护寄存器mov a,#10001110b ;命令字节,07h寄存器写acall wbyte mov a,#00h ;允许写数据字节acall wbyteclr p1.4 ;rst=0,停止传送mov r0,#30h ;数据存放首地址mov r2,#8 ;写8个字节setb p1.4 ;启动连续写8个字节mov a,#

45、0beh ;设多字节写命令字lcall wbytechushi:mov a,r0 ;取数据lcall wbyte ;写一个字节inc r0djnz r2,chushi ;循环写8个字节 ;主程序main:lcall jian ;调键盘子程序lcall rili ;调日历时钟程序lcall xian ;调显示程序sjmp main ;键盘程序jian:mov p1,#0ffh ;初始mov a,p1cpl ajnz ji1 ;判键按下ljmp jian4ji1:lcall delay ;调延时cpl ajnz ji2 ljmp jian4ji2:jnb p1.1,jian3 ;判k2键为0转jn

46、b p1.2,jian3 ;判k3键为0转jian0:mov p1,#0ffhjnb p1.3,jian3 ;判k4键为0转jnb p1.0,jian1 ;判k1键为0转ljmp jianxjian1:lcall delay ;调延时去抖动jb p1.0,jianx ;为1就是键抖动jian11:lcall xian ;调显示jnb p1.0,jian11 ;判键k1松开mov a,5fh add a,#1 ;寄存器加1mov 5fh,acjne a,#8,jianxljmp jian3jianx:mov a,5fhcjne a,# 1,jia1 ;比较转移指令a不等于#时,转移ljmp ti

47、aom ;转调秒子程序jia1:mov a,5fhcjne a,#2,jia2ljmp tiaof ;转调分子程序jia2:mov a,5fhcjne a,#3,jia3ljmp tiaos ;转调时子程序jia3:mov a,5fhcjne a,#4,jia4ljmp tiaor ;转调日子程序jia4:mov a,5fhcjne a,#5,jia5ljmp tiaoy ;转调月子程序jia5:mov a,5fhcjne a,#6,jia6ljmp tiaon ;转调年子程序jia6:ljmp tiaox ;转调星期子程序jian3:clr zhuan1 ;标志位清0clr zhuan2cl

48、r zhuan3clr zhuan4clr zhuan5clr zhuan6clr zhuan7mov 5fh,#00hjian2:lcall xian ;调显示子程序mov a,p1 cpl ajnz jian2jian4:ret;调秒tiaom:setb zhuan6 ;秒闪烁标志位置1lcall xianjnb p1.1,miaoz ;加转移jnb p1.2,miaoj ;减转移 ljmp jian0miaoz:lcall delay ;调延时去抖动jnb p1.1,miaoz1ljmp jian0miaoz1:lcall xianjnb p1.1,miaoz1 ;判键k2松开mov a

49、,30h ;取秒数据add a,#1 ;加1da a ;十进制调整指令mov 30h,a ;送回秒寄存器cjne a,#60h,miaoz2mov 30h,#00h ;秒值过60为0ljmp miaoz2miaoj:lcall delay;调延时去抖动jnb p1.2,miaoj1ljmp jian0miaoj1:lcall xianjnb p1.2,miaoj1 ;判键k3松开mov a,30h ;取秒数据mov b,#10hdiv ab ;a除以bmov 61h,b ;数据个位放到61hmov b,#10 mul ab ;a乘以badd a,61h ;不带进位加法dec a ;a减1mov

50、 b,#10 div ab swap aadd a,bmov 30h,acjne a,#96h,miaoz2mov 30h,#59hmiaoz2:mov a,30hanl a,#0fh ;分离低四位mov 40h,a ;存数据到寄存器mov a,30h swap a ;半字节交换anl a,#0fhmov 41h,a ;存数据到寄存器setb p1.4 ;启动设置写保护寄存器mov a,10001110b ;命令字节,寄存器07hacall wbytemov a,#00h ;允许写数据字节acall wbyteclr p1.4 ;停止传送setb p1.4 ;启动写mov a,#80h ;秒写命令字节lcall wbytemov a,30h ;写秒数据到ds1302lcall wbytelcall xian ljmp jian0ret;调分tiaof:clr zhuan6 ;清秒标志位setb zhuan5 ;置分标志位lcall xianjnb p1.1,fenz ;加转移jnb p1.2,fenj ;减转移ljmp jian0fenz:lcall delay ;调延时去抖动jnb p1.1,fenz1

温馨提示

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

评论

0/150

提交评论