电子万年历毕业设计开题报告

时间:2024.4.20

毕业设计开题报告(理工类)

电子万年历毕业设计开题报告

电子万年历毕业设计开题报告


第二篇:电子万年历毕业论文


摘要

在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响。我们必须对时间有一个度量,因此产生了钟表。钟表的发展是非常迅速的,从刚开始的机械式钟表到现在普遍用到的数字式钟表,即使现在钟表千奇百怪,但是它们都只是完成一种功能——计时,只是工作原理不同而已,在人们的使用过程中,逐渐发现了钟表的功能太单一,没有更大程度上的满足人们的需求。因此在这里,我想能不能把一些辅助功能加入钟表中去。在此设计中所设计的钟表具有钟表的功能。

本系统采用了以广泛使用的单片机技术为核心,软硬件结合,使硬件部分大为简化,提高了系统稳定性,并采用LCD显示电路、键盘电路,本方案设计出的万年历可以显示日期时间、农历,设置闹铃功能。

In busy job of the present age and life, time has very close something to do with all of us , everyone all accepts the time effect. we must have a magnanimity to time , have produced clock and watch therefore. Development of clock and watch is very prompt , use clock and watch to the digital from just originally mechanical dyadic clock and watch to now commonly, even if now clock and watch is exceedingly strange, they accomplish but one kind of time function of function all only , are only operating principle diversity, in the process of people's usage, the function having discovered clock and watch gradually is very unitary, need not having the satisfied people on bigger degree. Want to be able to I put some auxiliary function in going to in clock and watch therefore in here. Function designing that middle what be designed that clock and watch has average clock and watch's .

And the monolithic machine technology that this system has adopt to use broad usage has been that core , soft hardware combine , the hardware part has facilitated a messenger extremely , has raised system stability, adopt LCD demonstrates circuit , keyboard circuit , The perpetual calendar that the scheme designs out can demonstrate date time , unar calendar , set up the noisy bell function.

关键字:AT89C52、字符液晶显示模块、DS1302

1

目 录

摘 要????????????????????????????????????????2 关键字?????????????????????????????????????????2

第一章 概 述??????????????????????????????????????4

1.1 课题的背景研究意义?????????????????????????????????4

1.2 本课题实现的功能及要求???????????????????????????????4

1.3 方案论证??????????????????????????????????????4

1.4 章节安排??????????????????????????????????????4

第二章 系统硬件设计

2.3 其余应用电路的介绍?????????????????????????????????8

第三章 软件设计

3.1 软件设计总述???????????????????????????????????13

3.2 程序模块介绍???????????????????????????????????13

第四章 调试和总结

4.1 硬件调试?????????????????????????????????????20

4.2 软件调试?????????????????????????????????????20

4.3 联调???????????????????????????????????????21 参考文献

附录三 参考文献???????????????????????????????????36

第一章 概述

1.1 课题的背景、研究意义 随着电子技术的迅速发展,时间的流逝,从观察太阳、摆钟到现在的电子钟, 人类不断研究、不断 创新。现市场的电子钟具有低功耗的实时时钟电路,它们可以对年、月、日、周日、时、分、秒进行计时,还具有润年补偿等功能,且使用寿命长、误差小、使用方便。电子万年历的出现给人们的生活带来的诸多方便。目前,国际上的电子万年历正从模拟式向数字式、由集成化向智能化的方向飞速发展。

综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电

子仪器仪表的发展趋势,具有广阔的市场前景。

1.2实现的功能及要求

(1)基本要求

①具有年、月、日、星期、时、分、秒等功能;

②具备年、月、日、星期、时、分、秒校准功能 。

③校准时具有闪烁功能。

( 2 ) 创新要求

① 具有上、下课响铃功能;

1.3 方案论证

显示模块选择方案和论证:

2

方案一:采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。但这里显示位数多,所要求的数码管多,成本更高。

方案二:采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,虽价格昂贵,但接口线多,所以在此设计中采用LCD液晶显示屏。

时钟芯片的选择方案和论证:

方案一:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,结构简单。所以采用DS1302时钟芯片。 方案二:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、 时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。且算法复杂,所以不采用此方案。

经论证本次设计采用采用AT89S52作为主控制系统; DS1302提供时钟; 采用LCD液晶作为显示。

1.4章节安排

第一章概述

第二章系统硬件设计

第三章系统软件设计

第二章 系统硬件设计

2.1硬件的设计总框图

电子万年历毕业论文

本次设计的基于单片机控制的电子万年历,其具有年、月、日、星期、时、分、秒的显示等功能;具有时间与阴、阳历能够自动关联;可以设置闹铃的功能。其具体实现过程就是由主控制发送信息给DS1302时钟芯片再由时钟芯片反馈给单片机,再由主控制器传送给LCD显示信息。并且可以在键盘设置模块输入修改时间,设置闹铃等信息,当键盘设置时间、日期时,单片机主控制根据输入信息,通过串口通信传送给DS1302时钟芯片,DS1302芯片读取当前新信息产生反馈传送给单片机,然后单片机根据控制最后输送显示信息到LCD模块上显示。

2.2主控制器AT89C52介绍

1.AT89C52功能介绍

AT89C52是8字节FLASH闪速存储器,256字竹内部RAM , 32个I/O口线,3个16 位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89c52可降至OHz的静态逻辑操作,并支持两种软件可选的节电上作模式。空闲方式停止CPU 的工作,但允许RAM,定时/计数器.串行通信口及中断系统继续工作。掉电方式保存RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位.

2.功能引脚说明:

3

Vcc:电源电压

GND:地

P0:P0口是一组8位漏极开路型双向1/O 口,也即地址/数据总线复用口。作为输出口用时.每

位能吸收电流的方式驱动8个TTL 逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。

在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部 上拉电阻。

在FLASH由编程时,P0口接收指令字节,而在程序校验时,输出指令字 节,校验时,要求外接

上拉电阻。

P1口:PI 是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流

4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作 输入口使用时,因为内部存在上拉电阻某个引脚被外部信号拉低时会输出一个电流IIL

与AT89C51不同之处是,Pl.0 和P1.1还可分别作为定时/计数器2 的外部计数输入(Pl.0/T2 )和

输入(P1.1/T2EX) ,

FLASH编程和程序校验期间,Pl接收低8位地址。

PI.O 和PI.l 的第二功能:

P2 是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)

4个TTL逻辑电路。对端口P2写“l",通过内部的上拉电阻把端口拉到高电平,此时可作输入口, 作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(llt )。

在访问外部程序存储器或16位地址的外部数据存储器,P2送出高8 位地址数据。在访问8位地址的外部数据存储器、如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。

FLASH编程或校验时,P2亦接收高位地址和一些控制信号。

P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL) .

P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如下表所示:

P3.0 RXD(串行输入口〕

P3.1 TXD(串行输出口〕

P3.2 INTO(外中断0〕

P3.3 INTO(外中断l)

P3.4 TO (定时/计数器0 )

P3.5 Tl (定时/计数器l )

P3.6 WR(外部数据存储器写选通)

P3.7 RD(外部数据存储器读选通)

此外,P3口还接收一些用于FLASH闪速存储器编程和程序校验的控制信号。

RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的

低8位字节.一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位.可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活,此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。

PSEN:程序储存允许PSEN输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取

指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000H-FFFFH ) , EA端必须保

4

持低电平(接地).需注怠的是:如果加密位LBI被编程,复位时内部会锁存EA端状态。

3.最小系统

单片机最小系统包括时钟电路、电源和复位电路等,是单片机工作的基本要求。单片机控制整个系统的工作,一方面读取日历时钟芯片中的日期等数据,检测是否需要设置,并处理相应的按键。另一方面,控制显示器的工作,将各种数据送到液晶显示器去显示。

(1) 时钟电路

80C52型单片机内有一增益反相放大器,振荡频率取决于石英晶体的振荡频率。范围可取1。

2—12MHZ,C01、C02主要起频率微调和稳定作用。

(2) 复位电路

单片机在开关机时都需要复位,以便中央处理器CPU及其他功能部件都RC构成处于一个确定

的初始状态,并从这个状态开始工作。80C51的RST引脚是复位信号的输入端。复位信号高电平有效,持续时间需要24个时钟周期以上。

RC构成微分电路,在接电瞬间,产生一个微分脉冲,其宽度若大于2个机器周期,80C51型

单片机将复位。为保证微分脉冲宽度足够大,RC时间常数应大于2个机器周期。一般取10uF电容、8.2K欧姆电阻。

4.振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

2.3其余电路介绍

2.3.1显示电路

液晶显示器的接口有两种:一种是总线式接口电路方式;另一种是非总线接口电路方式。总线式接口方式是把液晶显示器看做外部的数据存储器,访问液晶显示器就像访问数据存储器的一个单元一样,采用这种方式能充分发挥单片机的总线读写功能,便于升级和扩展。而非总线方式是直接利用IO口进行读写,较灵活,不便于升级。这里采用总线式接口方式。接口时要注意显示器的功能信号E是高电平有效,所以要取反。这里使用的液晶显示器为LCD1602为字符点阵式液晶显示器。可以显示16×2个字符,而要显示日期字符有23个,可以满足要求。

1、LCD模块接口引脚功能

液晶显示模块具有体积小、功耗低、显示内容丰富、超薄轻巧等优点,在袖珍式仪表和低功耗应用系统中得到广泛的应用。目前字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件。这里向大家介绍一款LCD1602液晶显示模块,它可以显示两行,每行16个字符,采用单+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。

2. 硬件电路

DS1302的4、5、6的三个管脚是其控制位。其7、8、9、10、11、12、13、14管脚是总线接口。1管脚是电源地。2管脚是电源接口。

3、LCD1602与AT89c52的接口

AT89c52的P1口直接与液晶模块的数据总线D0~D7相连;P2 口的0,1,2脚分别与液晶模块的RS、RW、E脚相连。滑动变 阻器用于调整液晶显示的亮度。

液晶显示器的接口有两种:一种是总线式接口电路方式;另一种是非总线接口电路方式。总线式接口方式是把液晶显示器看做外部的数据存储器,访问液晶显示器就像访问数据存储器的一个单元一样, 5

采用这种方式能充分发挥单片机的总线读写功能,便于升级和扩展。而非总线方式是直接利用IO口进行读写,较灵活,不便于升级。这里采用总线式接口方式。接口时要注意显示器的功能信号E是高电平有效,所以要取反。这里使用的液晶显示器为LCD1602为字符点阵式液晶显示器。可以显示16×2个字符,而要显示日期字符有23个,可以满足要求。

2.3.2时钟电路

DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc>2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端。 下图为DS1302的引脚功能图:

(一)引脚功能(如图 6)

电子万年历毕业论文

VCC1.VCC2:电源引脚 。

其中VCC2接主电源 .VCC1接备用电源。

GND:接地。输出数据。

X1、X2:32.768kHz。晶振引脚。

RST为复位端,高电平时允许I/O端进行数据传输,低电平则禁止数据传送且使I/O端呈高阻状态;I/O为串行数据输入、输出端,所有输入、输出数据的传送顺序均以最低位LSB打头,最高位MSB结束;SCLK为同步时钟脉冲端,其上升沿将I/O端数据按位写入DS1302,下降沿使DS1302按位输出数据至I/O端;VCC2、VCC1为主电源和备份电源端,当主电源VCC2大于备份电源VCC1+0.2V时,由VCC2对芯片供电,否则,由VCC1对芯片供电。工作电压范围为2.5~5.5 V,工作电源和备份电源双引脚输入,功耗很低,当工作电压为2.5 V时正常工作,所需电流不超过300 nA。另外,如果选择了涓流充电功能,在正常情况下,主电源还可对备份电源进行慢速充电,有效延长了备份电源的使用寿命,保证了系统时间的连续可靠运行。

内部有振荡器。若采用外部振荡信号时。32768Hz的信号从 X1脚输入.x2脚悬空。 CE:片选端,高电平有效 ,在有些早期资料中该引脚标成爪ST,实际功能一样。CE端接通控制逻辑,当其为‘0”时 ,IO引脚变为高阻截状态,所有的数据传送中止,当其为‘1’时,允许数据传送。CE由‘0’至‘1’时。SCIX必须为“0”。

DS1302的内部主要由移位寄存器、指令和控制逻辑、振荡分频电路、实时时钟以及RAM组成。每次操作时,必须首先把CE置为高电平。再把提供地址和命令信息的8位装入移位寄存器。数据在SCLK的上升沿串行输入。无论是读周期还是写周期发生,也无论传送方式是单字节还是多字节,开始8位将指定内部何处被进行访问。在开始 8个时钟周期把含有地址信息的命令字装入移位寄存器之后。紧随其后的时钟在读操作时输出数据.

6

2.3.3串口电路

DS1302与微处理器的接口电路如下图所示。该微处理器采用宏晶科技推出AT89C51单片机作为主

控芯片,该产品具有片内资源丰富、超强抗干扰、高抗静电、超低功耗、宽电压、不怕电源抖动、在系统可编程、加密性强、无法解密、可降低单片机时钟对外部电磁辐射等特点,其良好的性能保证了各个器件的协调可靠工作及控制要求。在电路中单片机的P1.7控制DS1302的复位输入端,P1.4与数据输入/输出引脚相连,P1.3用来作为 DS1302的输入时钟SCLK控制端。由于单片机复位时,所有单片机的端口均为高电平,如果直接用单片机的某一口线同DS1302的RST相连,则影响了系统加电时对DS1302的初始化,从而造成 DS1302计时的不稳定。因此,本主电源(5 V)接 VCC2,备份电池采用可充电镉镍电池(3.6 V)接 VCC1,可启用内部涓流充电器在主电压正常时向电池充电,以延长电池使用时间。备份电池也可用1微法以上的超容量电容代替,但需要注意的是备份电池电压应略低于主电源工作电压。

2.3.4键盘设置电路

1. 键盘接口介绍

(1) 独立式键盘

独立式键盘是指直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,当

某个键闭合时,相应的I/O口线变为低电平,当CPU查询到为低电平的I/O口线时,就可

以判别出与其对应的键处于释放状态。

(2) 行列式键盘

将I/O口线的一部分作为行线,另一部分作为行线,按键设置在行线的交叉点上。CPU

通过其电平的高低来判别键是否被按下。但每根线上接有4个按键,任何键按下都有可能使

其电平变低,到底是哪个键按下呢?这是采用了“时分复用”的方法,即在一个查询周期里

把时间分为4个间隔,每个时间间隔对应一个键,在哪个时间间隔查到低电平,则代表是与

之相对应的键被按下。时间间隔的划分是通过列线P1.4~P1.7来实现的。

依次使列线P1.4~P1.7中的一根输出为低电平,则只有与之对应的键按下时,才能使

行线为低电平,此时其他列线都输出高电平,与它们对应的键按下,不能使行线电平变低,

所以就实现了行线的时分复用。

由于行列式键盘的按键数量比较多,为了使程序简洁,一般在键处理程序中,给予每个

键一个键号,由从列线I/O口输出的数据和从行线I/O口读入的数据得到按键的键号,然后

由该键号通过散转表进入各按键的服务程序。

2.设置电路介绍

设置电路的功能主要是把时间和日期设置到当前的时间,可以在系统运行中进行。用4个独立式

按键完成,分别接到单片机P1口的高4位。第1个按钮表示是否进行设置,按下时表示设置,并且每按一次,在显示器上分别在年、月、日等日期时间上跳转,表示对相应的项进行更改;第2个按钮按下表示对第1个按钮选中的项进行加1操作;第3个按钮按下表示进行减1操作;第4个按钮按下表示停止设置。只有在第1个按钮按时才可进行加减操作。其电路如图3所示。其中电容的作用是消除按键的抖动,也可用双稳态触发器去除按键时的抖动,同时为了提高可靠性,硬件去抖动的同时,还可以用软件去抖动的方法。

7

第三章 系统软件设计

3.1软件设计总述

系统软件设计主要包括主程序设计、日期数据采集子模块程序设计、按键处理子模块程序设计和显示子模块程序设计等。主程序主要完成器件的初始化,并判断有无按键按下,并根据判断的结果调用相应的子模块程序;日期数据采集子模块程序完成相应的数据采集、处理和保存 ,按键处理子模块程序完成日期的设置,而显示子模块程序只要把上述子模块储存的数据送去显示即可。

程序流程图

8

3.2程序模块介绍

3.2.1显示模块

1.LCD1602的指令

2. 液晶程序

电子万年历毕业论文

4.子程序流程图

3.2.2

1.编程思想

DS1302所进行的一切工作必须先由 CPU向 DS1302发送命令字节,命令字节格式如图 3所示。各位定义如下:命令字节的最高位 7必须为 “1”,否则禁止对 DS1302进行操作。第 6位是时 钟/日历或 RAM 选择位,如它为 “1,,可对 内部 RAM读写,如它为“0”可对时钟/日历操作。此处所谓 日历型数据即数据格式为压缩型 BCD码,且数值必须在它的定义域内;例如,“月份”的定义域 为 1~12,“秒”的定义域为 0~59等等。所谓RAM 型数据 即指一般 16进制数据。位 5至位 1为 DS1302内部寄存器地址。DS1302有单字节和多 字节两种读、写方式。所谓单字节读、写方式即每 次只能从

电子万年历毕业论文

9

DS1302中读、写 1字节数据。所谓多字节读、写方式则每次可从 DS1302中连续读、写若干字节数据。当位 5至位 1各位均为“1”时,DSI302为多字节读、写方式。最低位 0为“0”表示写操作,否则为读操作。命令字节的传输都是从最低位开始。

电子万年历毕业论文

DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表。DS1302所有的时间数据都放到数据寄存器中:

2. 读,写时序

DS1302采用串行方式与微控制器通讯。在片选信号RST变为高电平后,可向芯片发送指令及读取数据。DS1302的命令字的传输从最低位开始。当对 DS1302进行写数据时,首先发写控制指令,在控制指令字输入后的下一个 SCLK时钟的上升沿,数据被写入 DS1302,数据输入从低位即位 0开始。当对 DS1302进行读数据时,首先发读控制指令,在紧跟 8位的控制指令字后的下一个 SCLK脉冲的下降沿读出 DS1302的数据,读出数据时从低位 0位至高位 7。注意在 SCLK为高电平期问,不能读 I/0线,此期间 l/O端为高阻状态。因此,在程序设计时应保证在 SCLK上升沿之前读 I/O线,即可正确读出时钟数据。

DS1302的读,写时序如网所示。输入数据时.在 SCLK上升沿 .砌 输入的数据位被有效接受输出数据时,在SCLK下降沿时砌 输出数据位。要注意的是.在读 DS1302时.当8位命令字写入后紧跟着的第一个下降沿芯片即开始输出数据。

3.时钟子程序设计

实时时钟软件首先应将Et历信息初值——秒、分、时、日、月、星期、年等按序写入到 DS1302相关寄存器中,此后,时钟便以此初值为基准进行计时,只要主电源 VCC2和备份电源 VCC1尚有一个工作正常,则计时就不会终止。初始化El历信息程序分为三部分:

(1)发送“解除写保护”命令字 8EH 和内容

COH,以开放 DS1302写操作。

(2)发送“涓流充电”命令字 90H和内容 A7H,以开放 DS1302内部 充 电 电路。本 系统 选择DSI302内部充电电路为一只串联二极管和 8kn限流电阻,因此常规情况下,主电源 VCC2对备份电源 VCC1之最大充电电流为 Imax:(VDD一二极管压降)/限流电阻一(5--0.7)--8=0.538mA。

(3)发送“多字节写 日历型数据”或“单字节写日历型数据”命令字写入日历信息初值。上述第1、第2部分属于对 DS1302内部功能寄存器操作,因此必须以“单字节”方式进行发送;而第 3部分属于对 DS1302一般寄存器操作,故可以采用“多字节”方式发送,以便提高效率。同时, 在仪表工作过程中需要读取时间日历信息时,可根 据具体需要采用“多字节”方式或“单字节”方式。这里,无论采用“单字节”还是“多字节”方式,能否 可靠、准确地读出这些信息,其技术关键是和硬件密切相联的 DS1302读写驱动程序的设计。该驱动程序的功能是产生正确的同步时钟脉冲,并在同步时钟脉冲上升沿将数据按位写人 DS1302或在同步时钟脉冲的下降沿按位从 DS1302中读出日历型数据,从而完成 1字节数据的发送或接收。对于“多字节”方式,只需改变命令控制字和增加循环次数即可完成多字节的连续读写。

10

3.2.3键盘模块设计

1. 程序流程图

电子万年历毕业论文

2. 出现的问题

⑴键的消抖

理想的按键信号是方波形,是一个标准的负脉冲,但实际情况并非如此。按下和释放都需要经过一个过程才能达到稳定,这一过程是处于高低电平之间的一种不稳定状态,称为抖动。抖动持续时间的长短、频率的高低与按键的机械特性及人的操作有关,一般在5~10ms之间。这就有可能造成CPU对一次按键过程做多次处理。为了避免这种情况的发生,应采取措施消除抖动。消除抖动的方法有两种,一种是采取硬件来实现,如用滤波器电路、双稳态电路等。

⑵一键一操作 一键一操作的原理就是当按键按下再弹起时才会有数据传送给主控制器,所以在程序中要有指令,否则会引起误操作,从而成为一键几操作的现象。

11

第四章 调试

系统调试包括硬件调试和软件调试。硬件调试的任务是排除系统的硬件电路故障,包括设计性错误和工艺性故障。软件调试是利用开发工具进行在线仿真调试,处发现和解决程序错误外,也可以发现硬件故障。

4.1硬件调试

单片机应用系统的硬件调试和软件调试十分不开的,许多硬件故障时在调试软件时发现的,但通常是先排除系统中明显的硬件故障后,在和软件结合起来调试。

(1) 常见的硬件故障

①逻辑错误。样机硬件的逻辑错误是由于设计错误或加工过程中的工艺性错误所造成的,包括

错线、开路和短路等几种,其中短路是最常见的故障。当某一元件虚焊或短路时电路都无法调试成功。

②元器件失效。元器件失效的原因有两个方面:一是器件本身已经损坏或性能不符合要求;二

是由于组装错误造成的元器件失效,如电解电容、二极管的极性错误或集成块安装方向错误等。

③可靠性差。引起系统不可靠的因素很多,如接插件接触不良会造成系统时好时坏,内部和外

部的干扰、电源纹波系数过大或器件负载过大等造成逻辑电平不稳定,另外走线和布局不合理等会引起系统的可靠性差。

④电源故障。若样机中存在电源故障,则加点后将造成器件损坏。电源故障包括电压值不符合

设计要求、电源引出线和插座不对应、电源功率不足和负载能力差等。

(2) 硬件调试方法

①联机调试。通过脱机调试可排除一些明显的硬件故障,有些硬件故障需要通过联机调试才能

发现和排除。通电后,执行读写指令,对用户样机的存储器、I/O端口进行读写和逻辑检查等操作,用示波器等设备观察波形(如输出波形、读/写控制信号、地址数据波形和有关控制电平),通过波形的观察分析,发现和排除故障。

②脱机调试。脱机调试实在样机加电之前,先用万用表等工具,根据硬件电气原理图和装配图,仔细检查样机线路的正确性,并核对元器件的型号、规格和安装是否符合要求。

特别注意电源的走线,防止电源之间的短路和极性错误,重点检查系统的总线或其他信号线之

间是否存在相互的短路。

样机所用的电源,事先必须单独调试后才能加到系统中。在不差芯片的情况下,加电检查各插件上引脚的电位是否正常,仔细测量各点电位是否正常,尤其应注意单片机插座上的各点电位是否正常。

4.2软件调试

软件调试方法与选用的软件结构和程序设计技术有关。如果采用模块设计技术,则逐个模块调好以后,再进行系统程序总调试。

对于模块结构程序,要对子程序逐个进行调试。调试子程序是,一定要符合入口条件和出口条件,调试手段可采用单步运行方式和断点运行方式,通过检查用户系统CPU的现场、RAM的内容和I/O口的状态,检测程序执行结果是符合设计要求。通过检测可以发现程序中的死循环错误、机器码错误和转移地址的错误,同时也可以发现用户系统中的硬件故障,软件算法和硬件设计错误,在调试过程中不断调整用户系统的软件和硬件,完成每个程序模块的调试。

每个程序模块通过后,可以联合各功能模块进行整体程序综合调试。在这一阶段如果发生故障,可以分析子程序在运行时是否破坏现场、缓冲单元是否发生冲突、零位的建立和清除在设计上是否失误、堆栈区域是否溢出或输入设备的状态是否正常等。若用户系统是在开发系统的监控程序下运行,还要考虑用户缓冲单元是否和监控程序的工作单元发生冲突。

12

单步运行只能验证程序正确与否,而不能确定定时精度、CPU的实时响应等问题,所以单步和断点调试后,还应进行连续调试。除了观察稳定性之外,还要观察用户系统的操作是否符合原始设计要求,以及安排的用户操作是够合理等,必要时还要做适当修正。

DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位

MSB(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;D6=0,指定时钟数据,D6=1,指定RAM数据;D5~D1指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入), D0=1,指定读操作(输出)。

在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。若进行单字节传送,8位命令字节传送结束之后,在下2个SCLK周期的上升沿输入数据字节,或在下8个SCLK周期的下降沿输出数据字节。

DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,在此方式下可一次性读、写所有的RAM的31个字节。

要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F以上)。虽然DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。可以用老式电脑主板上的3.6V充电电池。如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。100 μF就可以保证1小时的正常走时。DS1302在第一次加电后,必须进行初始化操作。初始化后就可以按正常方法调整时间。

4.3联调

联调是指让用户系统的软件在其硬件上实际运行,进行软、硬件联合调试,从中发现硬件故障或软、硬件设计错误。这是对用户系统检验的重要一关。

联调主要解决以下问题:

①软、硬件能否按预定要求配合工作,如果不能,那么问题出在哪里?如何解决?

②系统运行中是否有潜在的设计是难以预料的错误,如硬件延时过长造成工作时序不符合要求、布线不合理造成有信号串扰等;

③系统的动态性能指标(包括精度、速度参数)是否满足设计要求。

系统联调时,首先采用单步、断点、连续运行方式调试与硬件相关的各程序段既可以检验这些用户程序段的正确性,又可以在各功能独立的情况下,检验软、硬件的配合情况。然后,将软、硬件按系统工作要求进行综合运行,采用全速断点、连续运行方式进行总调试,以解决在系统总体运行的情况下软、硬件的协调与提高系统动态性能。在具体操作中,用户系统在开发系统环境下,先借用仿真器的CPU、存储器等资源进行工作。若发现问题,按上述软、硬件调试方法准确定位错误,分析错误原因,找出解决办法。用户系统调试完后,将用户程序固化到用户系统的程序存储器中,再借用仿真器CPU使用户系统运行。若无问题,则用户系统插上单片机即可正确工作(注意,不要忘记用户系统时钟、复位电路的调试)。

13

第五章 心得体会 在此次毕业设计中,收获颇多。如果说我们以前学的都是一些理论知识和分散的知识,那么在这次毕业设计中则是系统的把大学里所学的连贯的灵活运用起来。从最简单的电阻电容的识别和个电阻阻值的选择,以及各种电子元器件的识别、使用及其检测,到电烙铁的正确使用以及焊接的要求及注意点、PCB板的布局及其制作了解,都有了更详细和更专业的学习和实践。

这次的毕业设计对我来说无疑是一次较好的动手锻炼机会,因此从一开始就抱着一种较认真的态度,无论是从了解电子万年历背景、意义、及其实现原理,还是后来的焊接对我来说都是一种提高。

附录(一) 系统程序

EQU P2.0 ;定义地址

RW EQU P2.1

E EQU P2.2

CMD EQU 27H

DAT EQU 26H

FLAG BIT 00H

XSFLAG BIT 01H ;

COUNT EQU 28H

Char1 EQU 30H

Char2 EQU 40H

T_RST Bit P2.3 ;实时时钟复位线引脚

T_CLK Bit P2.4 ;实时时钟时钟线引脚

T_IO Bit P2.5 ;实时时钟数据线引脚

SECOND EQU 50H

MINUTE EQU 51H

HOUR EQU 52H

DAY EQU 53H

MONTH EQU 54H

WEEK EQU 55H

YEARL EQU 56H

14

ORG 0000H

AJMP START

org 000bh

ljmp inter0

ORG 0100H

START:MOV SP,#60H ;主程序

MOV TMOD,#01H

MOV TH0,#9EH ;置定时器初值(定时100ms) MOV TL0,#58H

SETB TR0 ;启动定时器0

setb ea

setb et0

CLR FLAG

CLR XSFLAG

MOV COUNT,#1

MOV R0,#16 ;把ROM的内容转入ram MOV R1,#ChAR1

MOV DPTR,#TAB1

S1: CLR A

MOVC A,@A+DPTR

MOV @R1,A

inc dptr

inc r1

djnz r0,s1

MOV R0,#16

MOV R1,#Char2

MOV DPTR,#TAB2

S2: CLR A

MOVC A,@A+DPTR

MOV @R1,A

INC DPTR

INC R1

DJNZ R0,S2

LCALL LCD_INIT ;液晶初始化

LCALL LCD_R_BF

MOV CMD,#38H

LCALL LCD_W_C

MOV CMD,#0CH LCALL LCD_W_C MOV CMD,#06H LCALL LCD_W_C

MOV CMD,#01H

LCALL LCD_W_C

15

CLR T_RST ;DS1302初始化

CLR T_CLK

MOV SECOND,#00H ;初始时间设为12:00:00

MOV MINUTE,#00H

MOV HOUR,#12H

MOV DAY,#01H ;初始日期设为08年1月1日第一周 MOV MONTH,#01H

MOV WEEK,#01H

MOV YEARL,#08H

LCALL SETDS1302

MOV 24H,37H

MOV 25H,36H

WAIT1:

LCALL DELAY_1MS

DJNZ R0,WAIT1

MOV R1,#16

MOV CMD,#80H

LCALL LCD_W_C

MOV R0,#Char1

WLOOP1: CLR A

MOV A,@R0

MOV DAT,A

LCALL LCD_R_BF

LCALL LCD_W_D

INC R0

DJNZ R1,WLOOP1

MOV CMD,#0C0H

LCALL LCD_W_C

MOV R2,#16

MOV R0,#Char2

WLOOP2: CLR A

MOV A,@R0

MOV DAT,A

LCALL LCD_R_BF

LCALL LCD_W_D

INC R0

DJNZ R2,WLOOP2

LCALL PANJIAN

LJMP WAIT1

LCD_INIT: MOV R0,#3

;液晶初始显示 ;液晶子程序 16

INIT_LOOP:MOV CMD,#38H LCALL LCD_W_C MOV R1,#15 DELAY_15MS:

LCALL DELAY_1MS DJNZ R1,DELAY_15MS DJNZ R0,INIT_LOOP RET

LCD_R_BF:

MOV P1,#0FFH CLR RS

SETB RW

CLR E

NOP

SETB E

JB P1.7 ,LCD_R_BF RET

LCD_W_C:MOV P1,CMD CLR RS

CLR RW

CLR E

ACALL LCD_R_BF SETB P2.2

RET

LCD_W_D:MOV P1,DAT SETB RS

CLR RW

CLR E

ACALL LCD_R_BF SETB E

RET

DELAY_1MS: MOV 22H, R1 MOV 23H, R0 MOV R0,#50 DLOOP1:MOV R1,#100 DJNZ R1,$

DJNZ R0,DLOOP1 MOV R0,23H MOV R1 ,22H

;延时1MS程序 17

RET

inter0: PUSH 00H ;保护R0 R1 PUSH 01H

CLR TR0

MOV TH0,#0CFH ;中断100MS MOV TL0,#2CH

JB FLAG,INTFLAG

;显示程序

LCALL GET1302

LCALL datapro

LJMP INTREND

INTFLAG:

CPL XSFLAG

MOV A,COUNT

CJNE A,#1,INT1

JB XSFLAG ,INT00

MOV 4AH,24H

MOV 49H,25H

LJMP INTREND

INT00: MOV 4AH,#20H

MOV 49H,#20H

LJMP INTREND

INT1: CJNE A,#2,INT2

JB XSFLAG,INT11

MOV 47H,24H

MOV 46H,25H

LJMP INTREND

INT11: MOV 47H,#20H

MOV 46H,#20H

LJMP INTREND

INT2: CJNE A,#3,INT3

JB XSFLAG,INT22

MOV 3DH,24H

MOV 3CH,25H

LJMP INTREND

INT22: MOV 3DH,#20H

MOV 3CH,#20H

LJMP INTREND

18

INT3: CJNE A,#4,INT4 JB XSFLAG,INT33 MOV 3AH,24H MOV 39H,25H

LJMP INTREND INT33: MOV 3AH,#20H MOV 39H,#20H LJMP INTREND

INT4: CJNE A,#5,INT5 JB XSFLAG,INT44 MOV 37H,24H

MOV 36H,25H

LJMP INTREND INT44: MOV 37H,#20H MOV 36H,#20H LJMP INTREND

INT5: CJNE A,#6,INTREND JB XSFLAG,INT55 MOV 4FH,24H

LJMP INTREND INT55: MOV 4FH,#20H

INTREND:SETB TR0

POP 01H

POP 00H

RETI

;设置DS1302初始时间,并启动计时 SETDS1302:

CLR T_RST nop

CLR T_CLK nop

SETB T_RST nop

MOV B,#8EH LCALL INPUTBYTE MOV B,#00H LCALL INPUTBYTE SETB T_CLK nop

CLR T_RST

;写控制命令字 ;写保护关闭 19

MOV R0,#SECOND ;内存中的时间首地址 MOV R1,#80H ;DS1302中的时间首地址 MOV R7,#7 ;字节数

SETLOOP:

CLR T_RST

nop

CLR T_CLK

nop

SETB T_RST

nop

MOV B,R1

LCALL INPUTBYTE

MOV A,@R0

MOV B,A

LCALL INPUTBYTE

INC R0

INC R1

INC R1

SETB T_CLK

nop

CLR T_RST

nop

DJNZ R7,SETLOOP

CLR T_RST

nop

CLR T_CLK

nop

SETB T_RST

nop

MOV B,#8EH

LCALL INPUTBYTE

MOV B,#80H

LCALL INPUTBYTE

SETB T_CLK

nop

CLR T_RST

nop

RET

;从DS1302读取时间

GET1302:

;写命令字 ;设置时间 ;开写保护 20

MOV R0,#SECOND

MOV R1,#81H ;DS1302中读时间的首地址 MOV R7,#7

GETLOOP:

CLR T_RST

nop

CLR T_CLK

nop

SETB T_RST

nop

MOV B,R1

LCALL INPUTBYTE

LCALL OUTPUTBYTE

MOV @R0,A

INC R0

INC R1

INC R1

SETB T_CLK

nop

CLR T_RST

nop

DJNZ R7,GETLOOP

RET

INPUTBYTE:

MOV R4,#8

INPUTLOOP:

MOV A,B

RRC A

MOV B,A

MOV T_IO,C

SETB T_CLK

NOP

;NOP

;NOP

CLR T_CLK

DJNZ R4,INPUTLOOP

RET

OUTPUTBYTE:

clr a

clr c

MOV R4,#8

OUTPUTLOOP:

;写命令字 ;读时间 ;将从DS1302中读取的时间从内存中保存 ;修改地址指针 21

NOP

;NOP

MOV C,T_IO

RRC A

SETB T_CLK

NOP

;NOP

;NOP

CLR T_CLK

DJNZ R4,OUTPUTLOOP

RET

datapro: ;DS1302时间在液晶上显示 mov dptr,#tab3

MOV A,50h

ANL A,#0FH

MOVC A ,@A+dptr

MOV 4DH,A MOV A,50H SWAP A ANL A,#0FH

MOVC A,@A+DPTR

MOV 4CH,A

MOV A,51H

ANL A,#0FH

MOVC A ,@a+dptr

MOV 4AH,A

MOV A,51H

SWAP A

ANL A,#0FH

MOVC A ,@a+dptr

MOV 49H,A

MOV R0,4AH

MOV A,52H

ANL A,#0FH

MOVC A ,@a+dptr MOV 47H,A MOV A,52H SWAP A

ANL A,#0FH

MOVC A ,@a+dptr

22

MOV 46H,A

MOV A,53H ANL A,#0FH

MOVC A ,@a+dptr MOV 3DH,A MOV A,53H SWAP A ANL A,#0FH

MOVC A ,@a+dptr MOV 3CH,A

MOV A,54H ANL A,#0FH

MOVC A ,@a+dptr MOV 3AH,A MOV A,54H SWAP A ANL A,#0FH

MOVC A ,@a+dptr MOV 39H,A

MOV A,56H ANL A,#0FH

MOVC A ,@a+dptr MOV 37H,A MOV A,56H SWAP A ANL A,#0FH

MOVC A ,@a+dptr MOV 36H,A

MOV A,55H ANL A,#0FH

MOVC A ,@a+dptr MOV 4FH,A RET

PANJIAN:MOV R0,#SECOND JB P3.0,PAN1 LCALL DEL1

23

JB P3.0,PAN1 JNB P3.0,$

MOV A,COUNT CJNE A,#1,BINT1 MOV 4AH,24H MOV 49H,25H MOV 24H,47H MOV 25H,46H LJMP BIS

BINT1: CJNE A,#2,BINT2 MOV 47H,24H MOV 46H,25H MOV 24H,3DH MOV 25H,3CH LJMP BIS

BINT2: CJNE A,#3,BINT3 MOV 3DH,24H MOV 3CH,25H MOV 24H,3AH MOV 39H,25H LJMP BIS

BINT3: CJNE A,#4,BINT4 MOV 3AH,24H MOV 39H,25H MOV 24H,37H MOV 25H,36H LJMP BIS

BINT4: CJNE A,#5,BINT5 MOV 37H,24H MOV 36H,25H MOV 47H,24H LJMP BIS

BINT5: CJNE A,#6,BIS MOV 4FH,24H

BIS : INC COUNT MOV A,COUNT CJNE A,#7,PAN0 MOV COUNT,#1 PAN0: SETB FLAG SJMP PAN3 PAN1: JB P3.1,PAN2 LCALL DEL1 JB P3.1,PAN2

24

JNB P3.1,$ SETB FLAG MOV A,COUNT ADD A,#SECOND MOV R0,A MOV A,@R0 INC A

DA A

MOV @R0,A LCALL datapro

MOV A,COUNT CJNE A,#1,PINT1 MOV 24H,4AH MOV 25H,49H LCALL PAN3 PINT1: CJNE A,#2,PINT2 MOV 24H,47H MOV 25H,46H LCALL PAN3 PINT2: CJNE A,#3,PINT3 MOV 24H,3DH MOV 25H,3CH LCALL PAN3 PINT3: CJNE A,#4,PINT4 MOV 24H,3AH MOV 25H,39H LCALL PAN3 PINT4: CJNE A,#5,PINT5 MOV 24H,37H MOV 25H,36H LCALL PAN3 PINT5: CJNE A,#6,PAN3 MOV 24H,4FH LCALL PAN3 PAN2: JB P3.2,PAN3 LCALL DEL1 JB P3.2,PAN3 JNB P3.2,$ CLR FLAG

MOV COUNT,#0 LCALL SETDS1302 PAN3: RET

DEL1: PUSH 00H PUSH 01H

25

MOV R0,#50

LOOP1:MOV R1,#10

DJNZ R1,$

DJNZ R0,LOOP1

POP 01H

POP 00H

RET

TAB1:DB 44H,41H,54H,45H,20H,20H,20H,20H,5FH,20H,20H,5FH,20H,20H,20H,57H TAB2:DB 54H,49H,4DH,45H,20H,20H,20H,20H,5FH,20H,20H,5FH,20H,20H,20H,20H TAB3:DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H

END

附录(三) 参考文献

1.杨子文 , 单片机原理及应用, 西安电子科技大学出版社

2.王法能 , 单片机原理及应用, 北京科学出版社

3.余梦尝 , 数字电路技术基础, 高等教育出版社

4.王效华 , 单片机原理与应用, 北京交通大学出版社

5.李维諟 , 液晶显示器件应用技术, 北京邮电学院出版社

26

更多相关推荐:
电子万年历设计开题报告

毕业设计论文开题报告学生姓名专业设计论文题目指导教师20xx年3月16日学号电子信息工程基于单片机的万年历设计毕业设计论文开题报告毕业设计论文开题报告毕业设计论文开题报告毕业设计论文开题报告毕业设计论文开题报告...

电子万年历开题报告

毕业设计论文开题报告系别高职部专业电气技术学生姓名王瑜指导教师李杰20xx年6月4日电子万年历设计开题报告填写要求1开题报告作为毕业设计论文答辩委员会对学生答辩资格审查的依据材料之一应在指导教师指导下由学生在毕...

万年历 开题报告

xxxxx毕业论文设计开题报告题目基于89S51万年历设计学院信息工程学院年级xxx级专业电子信息工程姓名xxxx学号xxxxxxxx指导教师xxxx教务处制表20xx年12月10日注1表格不够可加附页2审核小...

基于单片机的万年历毕业设计开题报告

毕业设计论文开题报告题目基于单片机控制的电子万年历的设计学生姓名叶庆学号08820xx40系别信息工程系专业自动化届别20xx届指导教师李军华填表日期20xx年5月20日

(多功能电子万年历开题报告)

西北民族大学毕业论文设计开题报告论文设计名称多功能电子万年历论文设计起止时间月日姓名丁永亮学号学院电气工程学院专业班级09自动化2班指导教师王涛说明1本报告必须由承担毕业论文设计课程任务的学生在正式开始做论文设...

单片机万年历开题报告

XX大学本科生毕业设计论文开题报告

多功能万年历开题报告

单片机多功能万年历制作选题依据及研究意义随着科技的快速发展时间的流逝从观太阳摆钟到现在电子钟电子万年历已是一种非常广泛日常计时工具对现代社会越来越流行它可以对年月日周日时分秒进行计时还具有闰年补偿等多种功能而且...

电子万年历的设计 开题报告

科学技术学院毕业设计论文开题报告题目电子万年历的设计学科部信息学科部专业电子信息工程班级081电子学号7012345678姓名陈指导教师胡安保填表日期20xx年11月27日一选题的依据及意义单片机应用技术迅速发...

开题报告万年历

四川科技职业学院毕业设计论文四川科技职业学院毕业设计论文开题报告授人以渔能力为本四川科技职业学院毕业设计论文授人以渔能力为本

基于单片机的万年历的设计与制作开题报告

xx学院本科生毕业论文设计开题报告20xx届学生姓名院部专业指导教师签名教研室主任签名20xx年12月本表一式四份本人指导教师院部各一份一份同毕业论文一起装订第1页第2页第3页

基于时钟芯片DS1302万年历系统的设计开题报告

毕业设计论文开题报告学生姓名专业设计论文题目指导教师学号电子科学与技术基于芯片DS1302万年历系统的设计20xx年3月24日开题报告填写要求1开题报告含文献综述作为毕业设计论文答辩委员会对学生答辩资格审查的依...

52单片机的万年历的设计开题报告

XXX大学毕业设计论文开题报告题目基于52单片机电子万年历设计院系部机械与电子工程系专业及班级姓名指导教师日期20xx315XXX大学毕业设计论文开题报告23456

电子万年历开题报告(26篇)