毕业设计单片机STC89C52、DS1302、LCD12864、红外遥控红外遥控时钟万年历(仿真+论文)

摘要

本文介绍了一款能够实现可以遥控设置时间,日期,闹钟的电子万年历,该设计模型可以解决壁挂式电子万年历的时间,日期,闹钟调整不方便的问题。系统主要由STC89C52单片机控制模块,电源模块,DS1302时间生成模块,红外遥控模块,LCD12864显示模块组成。由电源模块提供保证整个系统的运行所城电压;由时间生成模块生成的时间日期通过单片机模块一系列处理后,通过液晶模块实时显示输出年,月,日,时,分,秒和星期等信息。配合红外遥控模块对时间日期的调整,使得该系统操作简单方便,非常实用。

关键词:万年历、单片机STC89C52、DS1302、LCD12864、红外遥控

目  录

前言

1、系统总体设计

1.1单片机主控系统设计方案…………………………3

1.2 时钟系统设计方案………………………….. ..4

1.3 按键控制系统设计方案………………………….4

1.4 显示模块选择…………………………………5

1.5 系统设计原理框图……………………………..6

2、红外遥控万年历硬件设计

2.1 单片机最小系统设计……………………………7

2.1.1  STC89C52具有下列主要性能………………….9

2.2  DS1302时钟模块设计………………………….12

2.3 红外编解码模块设计…………………………..14

2.4 LCD显示模块设计……………………………..16

3、红外遥控万年历软件设计

3.1 主程序设计………………………………….17

3.2 时钟模块DS1302驱动设计……………………….19

3.3 阴历程序设计………………………………..20

3.4 红外信号接收解码驱动设计……………………..21

3.5 红外信号发射程序的设计……………………….23

3.6 时间调整子程序设计………………………… .24

4、系统调试

4.1 软件调试……………………………………25

4.2 硬件调试……………………………………26

总结

参考文献

致谢

  

课题的背景

万年历在古代被称为太阳历。为了缅怀编撰者的丰功伟绩,于是将这部历法命名成“万年历”。在现代科技的 发展下,以单片机微型应用主导的新型技术浪潮高速发展。单片机体积小,质量轻,能耗低,集成度高功能多,抗 外界干扰的能力强以及使用起来方便快捷等优点,在信息数字化、智能化等方面具有非常宽广的用途。近几年全世 界的单片机年生产总产量已经达到了10多亿片,是微处理器年生产总量的五倍以上。使用最少的芯片来实现更多更 强大的功能,这将是未来电子产品的发展方向。

在基于单片机的万年历作为毕业设计的课题,是因为单片机具有很好的开放性和可塑性, 在经过了对单片机的 性能进行观察了解,而且我们还对于单片机它 的扩展应用进行了延伸。

该毕业设计的主要内容是通过单片机理论进行遥控的万年历。当程序开始执行后,LCM11854 显示即当时间、年月日、周 末、方位、环境温度等。设置4个操作按钮:key01,设置键;key02,跳出键;key03,上调键;key04,下调键。 本设计的主要容:

1、知晓单片机的技术发展现状,了解万年历的工作原理;

2、通过对芯片的合理选择以及元器件的配对,来确定电子系统的电流回路还有就是电路的原理图,主要是针对于每个接口的电路;

3、熟练掌握对于单片机的使用以及 C语言编写程序的规则,设计出能够适应功能的操作模块。 

目标实现:让STC88C32的单片机红外遥控的万年历能够实现5个功能:

1、显示出时间的功能;

2、时间的校准功能;

3、闹钟报警提示的功能和闹钟打开还有关闭的功能;

4 、具有整点报时的功能;

5、具有可以直接用红外遥控器进行操作的功能。

1、系统总体设计

1.1单片机主控系统设计方案

单片机也被叫做微型控制器,是用一个大的集成电路为主,组合而成的微型计算机。

因为单片机具备比较优秀的性能,所以在社会得到了广泛的应用,并且已经深入到了各个方面。单片机应用在控制领域 中,具有下面几个特点:

单片机体积小,质量轻,能耗低,集成度高功能多,抗外界干扰的能力强以及使用起来方便快捷等优点,在数字、 智能化方面有广泛的用途。

最主要是可以利用C 语言的开发,具有非常好的人机交互环境。绝大多部分的单片机都是提供基于C 语言的开 发系统,并且提供非常多的函数供其使用,这使得产品的研发周期、程序代码的可读取性、可移植性能都大大提   升。

1.2时钟系统设计方案

方案一: 不使用计算机芯片,而是采取利用单片机的定时计数器来进行时钟系统的设计。

对于这种方法的使用原理则是根据单片机的的定时器的功能来生成固定的时间显示。举个例子:当我们采用AT79C34单片机的定时器进行时间显示的工作方式的时候  ,我们假设每次间隔时间是60ms的时候就会产生出一个终止的指令,假如我们都循环20次,也就是每间隔1s的时间就会产生一个周期.那么我们在每间隔一个周期的时候就加一,所以对应的结果就是在1分钟的时候是产生了60个周期,1小 时就是60×60等于3600,一天就是24×3600=86400。

这个方式的优点是可以节省部分外围芯片,但是这个办法只适合用于一些对于要求不是很精确,而且不长期的场合。

方案二: 并行接口时钟的芯片 DS12887

它的特点是采用单片机的系统进行并连接到总线(3总线)延伸的接口电路中,万年历采取这样的接口方式来连接电路会有程序编程方便,运行速度快的特点。

可是相比较于59C33的单片机来讲,对于低位的地址线是需要通过锁存器来进行传输的,还需要用到地址译码器,并且口芯片的体积比较大。

方案三: 串行接口时钟芯片DS1302

优点:这种方式采用了比较简单的三线制来串行接口并且与单片机进行连接,使用起来方便快捷,接口简单,而且与微 型计算机的连线比较少等优点,在单片机系统中,特别是手持的设备中得到了非常大的应用。

因次,我选择了串行时钟芯片DS1302。

1.3 按键控制系统设计方案

对时间,日期进行切换而且还要能够显示出来,我们对时间和日期要进行精确的调节和校准,我们对闹钟进行设置的时候,我们的操作系统就要能够产生出激励电流,那么这个过程中就需要使用按键进行设计了。

按键的设计一般会有两种方法:

方法一:我们采取使用独立式的键盘。独立式的按键键盘是特别采用I/O线进行组合而成的单个电路。 设置比较简单,而且软件程序的编写也比较简单。如下图所示:

 

图1.3.1 独立键盘原理图

方案二:  矩阵式的键盘,缺点是占用IO口太多。  如下图:

图1.3.2 矩阵键盘原理图

按照需求,该系统创造性的舍弃了这2个方案,而是采取红外遥控器为系统的按钮,红外遥控器可以在不被地点 限制的方式进行万年历的改变 和功能设置,来实现挂墙式万年历的操作起来不怎么方便的缺点,最大限度的给人带 来方便。红外

1.4 显示模块选择

方案一: LED数码管显示

特点:数码管显示出来的经常用的就是采取CD3611和78LS128来达到数码转换的功能, 数码的显示分为两种,一个是动态的显示 另外一个班是静态的显示,静态的显示具有锁定存储的功能,这样的话就能够使得数据的显示变的非常非常的清楚,但是资源造成了浪费。截止目前来 说单片机的数码管普遍是采用动态的显示,因为编程比较简单,但是只能显示出数字,不能显示出来中文。

方案二: LCD1602

特点:能够显示英文和数字。 

 方案三: LCD130724

LCD130724现在是现代化单片机研究领域中的经典模块。能够方便的显示文字和 数字。

因此我选择LCD130244作为显示模块。

1.5 系统设计原理框图

图2.2 系统原理图

2、硬件设计

2.1 单片机最小系统设计

2.1.1 STC89C52具备的主要性能是以

下几个:

·100MB的Flash储存仪器

·全静态的工作频率:0Hz~36MHz

·3级程序的存储器

·138×9的字节RAM

·具有64条可以进行编程的I/O线

·3个32位定时器

·可编程串行通道

·片时钟振荡器

2.1.2 STC79C54的引脚与功能

STC79C54单片机的管脚分布如下图所示

图4-2 STC89C52的管脚

2.1.3 晶振电路

图2 晶振电路

在晶振电路中,B1、B2接口作为晶振产生的负电容接口,应该分别连接在晶振的2个引脚上还有就是接地电容上,在电回路中采取了  40PF。 晶振产生引脚的部位通常对我们来说就是一个非常简单的反相器,而反相器就是一个具有很大的增益效果放大器,这样可以便于起振的使用。

2.1.4 复位电路

图3 复位电路

单片机的复位电路具有电动复位以及手动复位这2种方法。电动复位通过接通电源以后,电路系统就会自动复位。手动复位是要在通电源的前提下,并且要在单片机进行运行的时候,才能通过按键的开关来进行单片机进行复位。这里采用的则是手动复位。

2.2 DS1406时钟模块设计

2.2.DS1406芯片介绍

功率损耗低的芯片DS1406能够对时间进行计时,还可以能够补偿等一些功能。

(1)DS1406的性能特性

·它可以对年,月,日,时分秒等时间进行计数,也可以对星期等与带闰年补偿的年份进行计数;

·具备了38×64位的RAM来进行数据缓存,确保运行流畅;

·具有至少6个I/O的引脚就可以和mcu进行相连接;

·有非常宽的电压工作范围 4.3 – 6.5 V;

·低电压的时候产生功耗非常的低;

·具有单字节或者多字节脉冲的方式进行两种数据的读写和传送;

(2) DS1302管脚图

图2.2.1 DS1302管脚图

假如信号在传送的过程当中把rst作为一个低电压,那么系统就会自动结束本次数据的传送,并且在I/O引脚改变成高阻态的时候。系统进行运行的时候,在VCC >=4.0V之前,rst的引脚则一定要能够保持在低电压。在cskl变为低电压的时间段,就可以把  str改变成高电压。

DS1406的管脚图如图5-2所示,结构图如图5-6所示,表5-3是表达各个引脚的功能。

图3.5.2 DS1302部结构图

表2-2-1 DS1302引脚功能表

引脚号

引脚名称

功能

1

VCC2

主电源

2,3

X1,X2

振荡源,外接32768HZ晶振

4

GND

地线

5

RST

复位/片选线

6

I/O

串行数据输入/输出端(双向)

7

SCLK

串行数据输入端

8

VCC1

后备电源

DS1406的控制字如图4-5所示。控制字节的最高的有效位数必须是1;要是它是逻辑为0的时候,我们那么就不可 以把数据读取进DS1406内。位7假如为0,则表示存取日历时钟数据;为1表示存取RAM数据。位5~1(A4~A0)指示  操作单元的地址。最低的有效位数假如是0,那么就要读写操作;为1表示进行读操作。控制字节总是会从最低的位  数开始,输入/输出。

图2.2.3 控制字节的含义

DS1406的数据读写时序如下图:

图2.2.4 数据读写程序

DS1406总共具有十二个寄存器,在这其中有7个寄存器和日历、时钟有关联,在日历中存在的数据假如为bvd形 式的时候,它的日历以及时间寄存器还有控制的字见表4-9,这里面奇数是读取操作,偶数则为写操作。

表2.2.3 DS1302的日历、时钟寄存器与其控制字

寄存器

命令字

取值

各位容

写操作

读操作

7

6

5

4

3

2

1

0

秒寄存器

80H

81H

00-59

CH

10SEC

SEC

分钟寄存器

82H

83H

00-59

0

10MIN

MIN

小时

寄存器

84H

85H

01-12或

00-23

12/

24

0

10

AP

HR

HR

日期

寄存器

86H

87H

01-28,29,

30,31

0

0

10DATE

DATE

月份寄存器

88H

89H

01-12

0

0

0

IOM

MONTH

周日寄存器

8AH

8BH

01-07

0

0

0

0

0

DAY

年份寄存器

8CH

8DH

00-99

10YEAR

YEAR

时钟暂停:当它是1的时候,DS1406就会停止振荡,进入低耗能的存储模式。通常在对DS1406进行读写的操作时 候,则会停止振荡。当它为0时,时钟将开始启动。

AM-PM采用12-24[小]时 的方式:在这个方式下,位6是AM/PM位,该位是高电压时就会表现为PM,低电压时候表 现成AM,在二十四[小]时的模式下,位6是第2个十二[小]时位(18~24h)。

2.2.2 DS1302的应用

如果芯片是采用的时钟芯片DS1406使用的是串行的数据传输模式,这种模式可以在发生掉电时候充分的保障电  源并且提供可以用于编程所需要的充电功能,当然也能够充当关闭充电的相关功能,这个芯片使用的是343851Hz的  晶振芯片。假如断电的时间是相对短的比如几小时或几天,我们能够使用漏电较小的普通的电容来替代  一百μF就可以确保一个H的正常走时[9]。DS1406在通过首次的加电后,就应该要进行初始化的相关操作。初始化程 序之后就能够采用正常方式去对时间和闹铃做一个相关的调整。DS1406的时钟电路如图3-7所示。

图2-2 DS1302时钟电路

2.3 红外编解码模块设计

图2.3.1 HS0038 红外接收电路

2.3.1 概述

一体化的接收头(HS0038)接收遥控器时可以产生遥控编码脉冲,并且可以使得对遥控信号的一个放大、检波、  整形、以及解调出遥控的编码脉冲。遥控编码的脉冲也就是一组串行的二进制编码,假如使用的只是一个普通的红外线遥控系统,那么这个串行码就会输入到相对应的单片机内,并且还可以通过里面的处理器对遥控指令进行成功的解码,然后再执行想对应的遥控这方面的一个功能。

2.3.2 SMOO38引脚功能

表2.3.1 HS0038引脚功能

引脚

符号

功能说明

1

OUT

输出一组串行二进制码遥控编码脉冲

2

VSS

接电源(+5V)

3

GND

接地

2.3.3 二进制码的解调

图13 二进制码的解调过程

红外线接收头在接收到遥控的信号是首先要进行解调,这里面的解调过程就像图13所表示的一样, 系统要能够在接收到调 制信号的第一时间内就能够立马产生高电平的输出,如若不然就会使得低电平进行输出,这个过程是进行调制的一个相逆的过程。HS0038是一 个体化集成的红外线接收的一个器件,直接就能够输出解调之后的一个高低电平信号。

2.3.4 红外信号的调制和发射

红外线信号的调制以及发射市通过单片机里面最小系统、矩阵编码键盘以及红外线信号发射相关的电路组合成 的。单片机里面的最小系统在上面的内容介绍中已经有阐述过,这里就不再进行阐述了。

2.3.5 红外发射电路

图15 红外发射电路

像上面图所表示的,通过单片机调制以后的编码信号是经过单片机的P3.2口进行输出,然后通过红外先发射二 极管D2来进行发射出去的。

2.7.2 遥控器键盘编码电路

如果单片机可以检测到有按键被按下的时候,就会发射与这个按键相对应的2进制编码的一个信号,按键以及2 进制编码信号的相关关系可以通过表6表示。                                                              2进制的信号(像图C和D所表示)的调制过程(如图E所示)是通过单片机来完成的,它使用POL编码(像图v所表   示)。 单片机在使用编码成功之后的2进制信号来调制频率,把频率调制成38000hz 的间断脉冲串,这样就好比是用了2进制的信号编码×频率是24000Hz的脉冲信号来得到间断脉冲。

图c 二进制信号的调制

图d PPM编码格式

表5 按键功能与其与遥控编码的关系

按键编号

对应的遥控编码值

实现的功能

S1

0x01

用于选择设置的标志位

S2

0x02

确定所设定的值

S3

0x03

闹钟关闭和打开

S4

0x04

调节键 +

S5

0x05

调节键 –

.4 LCD显示模块设计

中文字库中的256X128 是一个可以将16 /32 位并行、一线或二线进行串行的连接方式,在这里面包括了一级、二级中文形成的点阵图形液晶显示模块;这个显示分辨率是采用256×128, 放置7856 个32*32 的简体中文, 还有5120 个30*15 ASCDJ 字符集.在通过简单、快捷的操作指令,那么就可以实现全中文人机交互 的图形界面。并且还可以能够显示出32×15 行64×64 点阵的汉字,这样可以使得图形能够成功的显示出来.

本设计中采用的LCD12864的各个功能引脚 如下:

2.4.1 LCD12864部结构图:

图2.4.1 LCD12864的逻辑电路图

2.4.1 LCD12864应和电路图:

图2.4.2 STC89C52与LCD12864液晶的接口电路

我们在通过电路原理图中每一个引脚和单片机的连接方法,就可以知道这个液晶模块的电路就像图中 4-11所表示出来的一样。我们把电压的V0接电位器然后再通过对比度进行控制,那么我们就可以采用调节电位器调整液晶亮度的操作;单片机它的读和写 都是采用通信号/BD、/CW 利用非门接液晶的读写就可以使信号RDB0~DB7分别接单片机的P1.1~P2.7口;复位端口RST连接接P2.4口,背光正电源LEDA接+5V;液晶驱动的电压CBD、负电源的LDEDKL连接到地。 

3、软件设计

3.1 主程序设计

主程序的功能:  使用802C512来作为一个核心,处理外转电路所传进来的一个信号,保障时钟数据的读取,储存和

显示这个和键盘之间的操作。

流程图如下所示:

3.2 时钟模块DS1302驱动设计

3.3 阴历程序设计

阴历程序的计算我们是要通过对阳历日期的天数的相关信息资料来进行演算的。如果我们采用的是通过计算阳历的天数从而来演算阴历日期,那么我们第一个就是要来为这个计算来设计一个专用的算法。演算方法是,用专用的算法通过计算阳历现在日期时候在这一年里面的天数来演算阴历的一个日期。在日常生活中我们都知道阳历的一个  月的天数不是三十天那就是三十一天当然了二月份是不算在这个里面的,每到闰年的二月份的天数一定是二十九天  的,平年的话二月份的天数就是二十八天的。在日常生活中我们都知道阴历的一年也是有十二个月又或者是十三个  月份的,这十三个月是包括了闰月在里面的,正常的一个月的天数是三十天又或者是二十九天。假如我们在计算的  过程中把这一个月的天数只有二十九天的月叫做小月,并且可以用1来表示,把这一个月的天数有三十天的月叫做大 月, 并且我们采用0这个数字对此进行标识,也就是意味着我们就能够采用16位二进制的这样的一个方法来进行标识在这一年的时间里面的十二个月的大小的一个关系。但是如果我们知道我们计算的这一年的月份里面是有一个闰月的,那么我们就一定需要把闰月的这个月份来作为这个算法里面的一个字节的高四位,这样子的假我们就能够用低四位用来标识这一个闰月的大小事实了,大月我  们就可把它表示为0,小月我们就可把它表示为1,这样我们就可以发现一个字节就可以包括了所有闰月的信息。在  设计过程中我们可以把阴历的传统春节和阳历元旦之间的相差的一个比值的具体天的一个数值也可以使用一个不同  的字节来对这个进行一个表示。这些我们一起可以使用四个字节就可以很简单的储存这一年里面的任何一天阳历和  阴历的对应关系的这些方面的一个分析的相关数据,就好像2004年的阴历和阳历相对应关系就像下面表4-1所示。   表3-3 2004年的阴历和阳历对应关系表

月份

1

2    3

4    5    6

7    8    9

10   11

12   闰2月

大小

大   大

大   小   大

小   大   小

大   小

大   小

二进制

1

0    0

0    1    0

1    0    1

0    1

0    1

天数

29

30   30

30   29   30

29   30   29

30   29

30

十六进制

4

2

5

2

21

我们知道2004这一年的传统的春节和元旦之间的天数相比是有二十一天的一个差值的,这个相差的时间天数差值的2004年的信息我们就可以用:22,44H,54H,21H这样的形式来具体的表现出来。 这个数据里面表示一十二个月的一个相对大小的信息数据的字节,第四位还有第七位我们是可以不进行采用的,但 是我们要明白在第一个字节上面我们要采用的十进制的一种算法,其余的字节上面我们就要采用十六进制的这样一种算法,两种算法不一致性我们要清楚的了解。在我们使用这个方法进行计算的时候,我们可以很清晰的得出一个 结果就是50年的阳历在和阴历之间的对应关系表里面一共我么也就要使用到二百个不一样的字节。

有了算法和数据以后,就可以设计软件了。第一个我们要依据就是现在阳历的一个日期,然后再进行推算得出  阳历是这一年里面的第几天。图五-三是计算阳历中不管还是特定的那一天在我们要计算的这一年里面是第几天的相 关的结构分析程序流程图。

图四-三 计算阳历天数结构分析相关程序流程图

计算出来现在的公历日期是这一年里面的第几天之后, 在得出结果之后再去减掉公历年里面的这一年的春节和元旦相对应的天数的差值,如果是能够进行相减的,那么我们就可以知道这个相减的结果就是阴历在这一年里面的总第多少天了。通过分析这个我们计算出来的数据资料就能够很准确的演算得到具体的现在的阴历日期;但是如果这个差值是不能够被减去,那么我们就可以表示这一年的阴历年为阳历年的前面的一年。在这样的情况书籍分析下面得知, 根据实际情况,现在的阴历日期会在阴历11月或者是12月,这个时候的过程里面传统春节以及元旦的相对日差去与 减前面我们得出的现在时间的公历日期在公历年为第几天的一个数据进行一个相减的处理,这个结果表明现在的阴 历日期距离春节的一个天数。通过方法得出的公历的一个天数就是这一年时间里面的第几天,我们要把这个相关的 数据放置在储存器H2和H3这两个里面。计算出天数之后,再计算的数据大于#YYH,就把#YYH储存在H2中,余值储存 在H3中。也可以说在用储存器H2和H3表示的天数信息中,H2充当主储存器,数据先储存在H2里面,如果储存满了就 再存H3里面。在这一个转换的程序里面,这里面所储存的数据是不可以被覆盖。

通过相对应的算法经过计算得出阳历总的天数以后,我们就可以使用这个通过算法计算出来的总的天数来演算阴历的日期。演算的一个简单的方法就是,先使用一个得出来的总的一个天数然后再用来减去春节和元旦之间的的天数的差值,如果计算的结果是1,就可以很清楚的知道这一天正正好好的是我们计算的这一年里面的春节(因为 我们知道传统的春节是元旦的后面的时间的,在通过计算传统的春节和元旦之间的日差时间里面,我们可以把元旦  看做是为0天,春节我们就可以表示为n天,然后日差就表示为n。而前面计算的阳历总天数就是这一天在我们计算的这一年里面的第多少天,如果是通过元旦为1才计算到的,这样的一种方法和计算春节和元旦日差做一个相对的比较,其数值就会 少一个1,因此就需要在原来的应该以0作为该天就是春节的依据的基础上面加上一个1,所以以1作为该天是春节的  标志) ;假如我们得到的一个计算的数字是比1小的,那么我们就可以知道这个阴历很有可能是阳历的前面一年了; 如果结果大于1,说明阳历和阴历为同一年。然后再通过查询表格里面得到信息就是这一年的阴历的闰年以及那几个 月是大小月的一些明确的信息,通过这样的方法我们也就能够演算出来这一天是阴历的那一天了。图四-四为演算的 相关依据得出总天数演算得到阴历日期的的结构分析相关程序流程图。

              

图四-四 演算阴历日期的程序结构解析的相关流程图

3.4 红外信号接收解码驱动设计

红外线信号的接收主要是采用外部的中断[1]处理函数来操作的,中断函数里面的判断按键的相关编码,最后执 行相对应的按键操作,就像如果检测到键S1有被按下,就要执行调节时间的操作。

图十九 红外线发射程序的相关结构解析流程图

3.5 红外信号发射程序的设计

红外线发射的程序以及红外线的接收程序从相关解析过程我们能够很清晰的看到这是两个不一样的程序,红外线信号的发射和红外线信号的接收都是通过他们自己所拥有的单独的一个单片机来进行这些方面的操作的。 红外线信号的发射使用的是定时器[12],间隔26us就会中断一次,在主程序中等待按键被 按下,如果检测到有按键按下信息,就调整使用红外线发射函数,发送相关的二进制编码。 他的一个相关程序解析流程图可以从图二十很清楚的看出来。

图二十 红外线发射程序结构解析的相关流程图

3.6 时间调整子程序设计

时间调整我们需要使用五个不同的调整按钮,第一个十作为设置键、控制用, 第二个十我们是把它设置成一个推出的按键的, 第三个我们是把它设置成为一个闹铃的开关按键进行使用的,接下来的两个是对设置位的加,减操作。

 

图3-6 时间调整程序流程图

第四章 系统调试

这这样的一个系统的相关调试过程里面不仅仅含有软件的调试并且还包含了硬件方面的一个调试。硬件这一方面的调试主要的任务就是排除我们在焊接电路过程中可能出现的一些故障。软件这个方面的调试就是通过使用开发的工具然后进行在线系统性的仿真调试。调试的一般过程如下所示:

采用在系统上面调试的方法的这个操作模式正常的情况下是通过接通电然后通过运行的一个基本状态来对此进 行观察,主要是要去观察相关的数码管能不能够被成功的点亮等一些相关的信息。软件的调试过程第一个是各个模 块、第二个事故各个子程序分别进行调试,最后在前面过程调试成功后再进行系统性的联机调试。

4.1 软件调试

本设计我们使用了proteus软件进行了相关的仿真测试以及相关的验证,测试过程以及相关的结果如下: 第一步.我们需要在桌面上打开Proteus这个软件。

第二步.应该选择file菜单下面的 open design这个选项,在这个里面我们要找到我们要可能会用到的相关的一些元器件,选择完成后我们要在要用到的元器件上面单击右键选 中测试过程里面要使用到的相关元器件,再单击左键对这个元器件进行命名以及赋值,紧接着我们在编辑器的左边的一栏里面, 找到然后绘制并且设计我们需要的每一个相关的元器件,按照电路图连接后并保存。

第三步.将用KEIL这个程序吧需要用的编译使之格式变成为HEX这种格式的文件我们再把这样的文件下载到单片机里面:通过双击五十一单片机,并且一定需要在对话这一栏里面 把保存到这个里面的HEX的这个文件给点击开, 最后再采用单击的方法进行确定使得可以成功。                   

第四步.在所有的前期步骤完成之后我们就要单击页面左边下面的那个运行按钮,这样子我们就能够在这个软件里面开始进行仿真性的调试,一直到后面出现的实验成功的结果。

下面这一张图就是我们所用到的为软件进行测试的仿真性调试的窗口图:

4.2 硬件调试

在硬件的产品设计的这一个过程里面,对所有我们需要用到的硬件的相关检测以及对所有我们需要用到软件的相关测试我们都应该要仔细的进行测试一定不能够把这方面忽略掉,因为在这个系统的仿真测试过程里面。我们设定的所有的测试的元件都是没有任何问题的,因此我们在做这个实际电路的相关产品设计的这个时间段里面,就必须要在可能出现的问题方面仔细反复的进行一个思考。在测试过程中我们第一个要做的就是要对相关的我们有使用到元件进行一些可能产生问题的一些方面的数据的检测,在完成了第一步的检测之后我们才能进行相关的调试。假如在我们设计的这个时间段里面我们是没有进行一些其他驱动的添加的,然而在进行仿真软件测试的过程中依 旧能够按照正常的算法进行计算价格,但是在实际过程中的具体硬件连接过程中,我们就应该要思考相关电路的驱 动能力是否可以满足。

在焊接成功的电路板件上面,我们应该对他的每一个元器件进行相关的检查。在正常情况下,集成的电路板都不 可能产生故障的。在这个设计的过程中建我们通过使用先焊接插槽的方法,这个样子可以保证一些元件在焊接的过  程中不会被烧坏。然后我们在焊接数码管的过程中时,第一个是要排线,再一个就是焊接防止线路出现混乱。元件  在选购时应该多贮备一些备选的元件,在元件的型号相对比较多的时候,我们的产品质量就没有办法得到一个强有  力的保障,也就无法防止出现采购到我们测试的元器件有一些地方也许是出现了一些损坏的,然后再加上我们的焊接是在万能板上面进行这些焊接操作的。也就会出现虚焊的可能性,并且有可能造成短路等一些不正常情况的产生。所以我们应该是所有的元件都已经完成了焊接操作并没有出现问题的时候对这些焊接的元件进行相关的检测,用以保障焊接不会出现问题。电路板焊接成功之后,就要把相对应的芯片插到对应的插槽中,再仔细检查一次,观察芯片能否很好的与插槽  进行良好的接触。

在调试的过程中我们要密切的观察其中一些元件是否可以正常运行,这方面检测的主要目的就是为了观察数码管能不能够在运行过程中正常显示。如果在调试过程中不应该点亮的字段反而被点亮了,那么我就是就要仔细检测是运行过程中是不是出现了短路这方面的故障;如果在调试过程中数码管没有显示出来,那么可能是位选端我们在焊接过程中没有焊接成功;如果在调试过程中显示亮度是不符合正常亮度的,那就要把驱动电路进行检查是不是出现了一些问题。

在调试过程中晶振这些方面的使用我们可以采用示波器去观察这方面的一个波形。假如在检测过程中有发现不能够看到21mhz的正弦波形的显示样子,就可以反映 出来这一段的电路是不符合正常形式的。

总  结

经过多次的反复测试与分析,掌握了硬件的设计与分析的能力, 学会看英文版的Datashee,同时在软件的编程方面得到更到的提高,对编程能力得到加强.对所学的知识得到很大的提高与巩固.

最终实现功能:

(1)能显示阳历年、月、日、星期、小时、分、秒。

(2)显示模块采用LCD液晶显示,要求能用红外遥控器调整时间。

(3)能显示阴历月、日,在显示阴历时间时能标明是否为闰年。

(4)具有定时报警功能,能够进行整点报时。

参考文献

[1]周兴华,等.手把手教你学单片机C程序设计,:航空航天大学,2007

[2] 侯玉宝,等.基于Proteus的51系列单片机设计与仿真,:电子工业,2008

[3] 义和,等.例说51单片机(C语言),:人民邮电,2008

[4]杜洋,等.愛上單片機(第2版),人民郵電,2011

作者:卧龙文化工作室

物联沃分享整理
物联沃-IOTWORD物联网 » 毕业设计单片机STC89C52、DS1302、LCD12864、红外遥控红外遥控时钟万年历(仿真+论文)

发表回复