简易数字钟的制作.docx

上传人:b****5 文档编号:7858308 上传时间:2023-01-26 格式:DOCX 页数:11 大小:210.75KB
下载 相关 举报
简易数字钟的制作.docx_第1页
第1页 / 共11页
简易数字钟的制作.docx_第2页
第2页 / 共11页
简易数字钟的制作.docx_第3页
第3页 / 共11页
简易数字钟的制作.docx_第4页
第4页 / 共11页
简易数字钟的制作.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

简易数字钟的制作.docx

《简易数字钟的制作.docx》由会员分享,可在线阅读,更多相关《简易数字钟的制作.docx(11页珍藏版)》请在冰豆网上搜索。

简易数字钟的制作.docx

简易数字钟的制作

 

简易数字钟的设计

 

完成人:

 

2011-12-26

 

【摘要】数字钟在我们的日常生活中随处可见,应用非常广泛。

本文就是设计一款多功能数字钟,以AT89C52单片机为核心,配备有液晶显示模块,时钟芯片DS1302等功能模块,数字钟采用24小时制显示秒、分、时,并且显示年月日以及星期,具有整点报时以及闹铃设定的功能,完成了全部的基本要求和发挥部分的要求。

本文主要从硬件设计和软件编程两个方面叙述,硬件电路设计由中央处理单元电路、时钟电路、人机接口电路、执行电路等几部分组成。

软件由C语言编程,通过KEIL软件仿真,主要包括主程序、键盘扫描程序、时间设置子程序等软件模块。

 

关键词:

AT89C52液晶显示时钟芯片整点报时

 

一、方案比较与论证

方案一:

利用FPGA+液晶显示器+语音芯片

这种方法实现比较难,如果嵌入IP核或NOISLL可能会简单些但是学习FPGA的一种很好途径,此方案成本高,实现较难,故这里不选择该方案。

方案二:

利用ARM+语音芯片

这种方法容易实现,而且ARM本身有实时时钟,不需外加时钟芯片,而且ARM芯片功能较强大,但成本太高,不现实,故不选择此方案。

方案三:

利用51单片机+DS1302+液晶显示

这种方案成本较低,并且容易实现,程序较简单完成,且效果不错,故采用此方案。

二、设计要求

1、单片机控制日历时钟芯片实现年份、月份、日期、星期、时间信息的获取;

2、在LCD上对年份、月份、日期、星期、时间信息进行显示;

3、可以对年份、月份、日期、星期、时间进行修改;

4、具有掉电后时间信息不丢失的功能;

5、具有整点报时功能;

6、具有闹铃功能。

三、硬件设计

3.1、系统组成:

本设计的硬件框图如下:

3.2各部分工作原理及芯片资料:

3.2.1、液晶部分:

①液晶1602主要技术参数:

16*2个字符;

芯片工作电压:

4.5V-5.5V

工作电流:

2.0mA(5V)

模块最佳工作电压:

5.0V

②引脚功能说明:

编号

符号

引脚说明

编号

符号

引脚说明

1

Vss

电源地

9

D2

数据口

2

Vdd

电源正极

10

D3

数据口

3

VO

液晶显示对比度调节端

11

D4

数据口

4

RS

数据、命令选择(H/L)

12

D5

数据口

5

R/

读写选择端

13

D6

数据口

6

E

使能信号

14

D7

数据口

7

D0

数据口

15

BLA

背光电源正极

8

D1

数据口

16

BLK

背光电源负极

③基本操作时序:

读状态输入:

RS=L,R/W=H,E=H输出:

D0-D7=状态字

读数据输入:

RS=H,R/W=H,E=H输出:

写指令输入:

RS=L,R/W=L,D0-D7=指令码,E=高脉冲输出:

D0-D7=数据

写数据输入:

RS=H,R/W=L,D0-D7=数据,E=高脉冲输出:

④状态字说明:

STA7

D7

STA6

D6

STA5

D5

STA4

D4

STA3

D3

STA2

D2

STA1

D1

STA0

D0

STA0-STA6

当前地址指针的数据

STA7

读/写操作使能

1-禁止;0-允许

注意:

原则上每次对控制器进行读/写操作之前,都必须进行读/写检测,确保STA7为0.实际上,由于单片机的操作速度慢于液晶控制器的反应速度,因此可以不进行读/写检测,或只进行简短时延即可。

⑤液晶模块程序:

见软件设计部分

3.2.2复位电路:

本电路采用的是手动复位,电路如下图所示:

3.2.3时钟芯片DS1302

①DS1302简介:

DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。

实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。

工作电压宽达2.5~5.5V。

采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。

DS1302的外部引脚分配如图1所示及内部结构如图2所示。

DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。

②各引脚的功能为:

Vcc1:

主电源;Vcc2:

备份电源。

当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2

SCLK:

串行时钟,输入,控制数据的输入与输出;

I/O:

三线接口时的双向数据线;

CE:

输入信号,在读、写数据期间,必须为高。

该引脚有两个功能:

第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。

③读写时序说明:

DS1302是SPI总线驱动方式。

它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。

要想与DS1302通信,首先要先了解DS1302的控制字。

DS1302的控制字如下图。

7

6

5

4

3

2

1

0

1

RAM

A4

A3

A2

A1

A0

RD

CK

WR

控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。

位6:

如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;

位5至位1(A4~A0):

指示操作单元的地址;

位0(最低有效位):

如为0,表示要进行写操作,为1表示进行读操作。

控制字总是从最低位开始输出。

在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。

同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。

④芯片与单片机连接图:

电路原理图如下图,DS1302与单片机的连接也仅需要3条线:

CE引脚、SCLK串行时钟引脚、I/O串行数据引脚,Vcc2为备用电源,外接32.768kHz晶振,为芯片提供计时脉冲。

⑤驱动程序:

见软件设计部分

3.2.4蜂鸣电路:

蜂鸣器电路主要实现的是整点报时和闹铃的功能,电路连接如下:

3.2.5按键电路:

本设计采用的是独立按键方式,分别由单片机的P3.0,P3.1,P3.2,P3.3控

制,P3.0控制加,P3.1控制减,P3.2控制修改时间等信息,P3.3控制闹铃的

定。

单片机通过扫描键盘,读取信息,完成相应的动作。

相关程序见软件部分。

3.2.6稳压电源电路

①本电源采用桥式全波整流、大电容滤波、三端稳压器件7805稳压的方法,产生给单片机、液晶、DS1302等供电的+5V电压,输出的纹波较小,供电较稳定。

稳压电源电路图下图所示:

②7805相关资料

78**系列是三端正电源稳压电路,它的封装形式为TO-220,它有一系列固定的电压输出,应用非常的广泛。

每种类型由于内部电流的限制,以及过热保护和安全工作区的保护,使它基本上不会损坏。

如果能提供足够的散热片,它们就能够提供大于1.5A的输出电流。

虽然是按照固定电压值来设计的,但是当接入适当的外部器件后,就能够获得各种不同的电压和电流。

7805特点:

最大输出电流为1.5A;

输出电压为5V;

热过载保护;

短路保护;

输出晶体管安全工作区保护;

7805引脚图

四、软件设计

4.1软件设计内容

本设计的软件包括主程序、时钟显示子程序、键盘扫描程序、闹铃子程序、整点报时子程序等等,另外由于电路中有独立按键,因此还设计了防抖动程序来防止干扰。

4.2软件流程图

4.2.1主程序:

voidmain()//主函数

{

init();

Initial();//初始化DS1302

while

(1)

{

keyscan();

}

}

4.2.2时钟初始化:

voidInitial(void)

{

Write1302(WRITE_PROTECT,0X00);//禁止写保护

Write1302(WRITE_SECOND,0x56);//秒位初始化

Write1302(WRITE_MINUTE,0x59);//分钟初始化

Write1302(WRITE_HOUR,0x23);//小时初始化

Write1302(WRITE_day,0x31);//tian位初始化

Write1302(WRITE_month,0x12);//yue初始化

Write1302(WRITE_year,0x11);//nian初始化

Write1302(WRITE_week,0x06);

Write1302(WRITE_PROTECT,0x80);//允许写保护

}

voidinit()

{

ucharnum;

lcden=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80);

write_com(0x80);

for(num=0;num<15;num++)

{

write_date(table[num]);

delay(5);

}

write_com(0x80+0x40);

for(num=0;num<12;num++)

{

write_date(table1[num]);

delay(5);

}

五、调试及结果

5.1结果报告:

本多功能数字钟最终完成了简易数字钟的所有基本要求和所有发挥部分的内容。

具体结果如下:

1、上电后,按下复位键,电路即开始工作;

2、按下S1,选择对分、时、月份、日期、年份的修改,而星期是随着年份、月份和日期的修改而做出相应的变化的,所以不需要再修改;S1与S2按键分别表示加和减;修改完成后即可进行数字钟的显示;

3、因为加了整点报时的功能,所以每到整点时,蜂鸣器电路就会工作,蜂鸣器响的次数就代表了现在是几点,完成整点报时的要求;

4、按下S4,即进入闹铃设置界面;通过按S4选择秒、分、时的设定,即设置闹铃时间,当闹铃时间到的时候,蜂鸣器电路工作,就开始闹铃;这时再按S1就可关闭闹铃;这样便完成了闹铃功能的要求。

5.2调试中遇到的问题以及解决方法:

1、首先是硬件方面,本设计的电路不是十分复杂,所以我们先在PROTEL中画出了原理图,做好了在板子上的走线布局。

但在实际过程中,遇到不少问题。

比如,电路焊完之后,接好线,可是液晶上总是不显示字,我们以为是单片机芯片坏了,可是换了几个还是不成功;后来我们觉得可能是液晶的焊接错了,可是用万用表查了好几遍电路,都是没问题的。

试了很多次之后,我们才发现,液晶的3脚接的是电位器,而3脚是液晶显示对比度调节端,所以它的大小关系到液晶是不是可以显示字。

单片机学习板上焊的是5K的,我们焊的是20K,用万用表测量阻值,大概15K,这样肯定不显示字。

所以我们调节了电位器,成功了。

还比如,在调试的过程中,液晶常会突然变暗,然后就像断电了似的,过了会就又被初始化了。

检查电路是没有问题的,后来我们分析,老师在上课的时候提到过,自己做的电源有可能存在带载能力不强的问题,而且我们的电路把所有的电源线都并到一个输出端,而且我们的板上还有三块没参与工作的芯片,但都练到电源线上了,所以需要供电,这就可能导致供电不足,所以液晶就无法正常工作。

所以我们把不需要的电源线都拆掉,而且从电源那块板上多引了一根线直接供给液晶。

这样,就再也没发生过这种情况。

硬件调试中还有其他很多的情况出现,在这里就不再过多赘述了。

2、下面是软件方面,本数字钟的设计核心部分还是软件部分及编程。

其中涉及到每个部分的编写:

主程序、时钟程序、液晶程序、键盘扫描、以及对日期之类的修改,整点报时、闹铃等,工作量的比较大的,而且,将程序下到芯片中工作的时候,发生了按键不起作用、加减不起作用、闹铃无法实现等方面的问题,说明编程有很多地方出错,这些错误经过一点点改进之后也都完成了。

 

六、心得与收获

首先,通过这学期对单片机的学习和最后这个作品的完成,我们对单片机有了更进一步的了解,比以前进步了很多,也从中学习到了不少知识。

做这个设计花费了我们很多的时间,主要还是因为平时基础没打牢,所以以后我们会不断锻炼自己的动手能力,努力将书本上的知识运用与实践,争取做的更好!

 

参考文献:

《51单片机C语言教程》郭天祥电子工业出版社

《单片机原理及应用》姜志海电子工业出版社

《电子设计从零开始》杨欣清华大学出版社

《C语言程序设计》谭浩强清华大学出版社

 

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1