多功能万年历毕业设计.docx

上传人:b****8 文档编号:9494877 上传时间:2023-02-04 格式:DOCX 页数:75 大小:51.93KB
下载 相关 举报
多功能万年历毕业设计.docx_第1页
第1页 / 共75页
多功能万年历毕业设计.docx_第2页
第2页 / 共75页
多功能万年历毕业设计.docx_第3页
第3页 / 共75页
多功能万年历毕业设计.docx_第4页
第4页 / 共75页
多功能万年历毕业设计.docx_第5页
第5页 / 共75页
点击查看更多>>
下载资源
资源描述

多功能万年历毕业设计.docx

《多功能万年历毕业设计.docx》由会员分享,可在线阅读,更多相关《多功能万年历毕业设计.docx(75页珍藏版)》请在冰豆网上搜索。

多功能万年历毕业设计.docx

多功能万年历毕业设计

多功能万年历的设计

摘要:

本设计采用了以广泛使用的单片机技术为核心,软硬件结合,使硬件部分大为简化,提高了系统稳定性,并采用LCD显示电路、键盘电路,使人机交互简便易行,此外还结合音乐闹铃电路、温度采集电路和供电电路。

本方案设计出的万年历可以显示日期、时间、温度、农历,并且设置了音乐闹铃功能。

该万年历可以应用于一般的生活和工作中,也可以通过改装,提高性能,增添新功能,从而给人们的生活和工作带来方便。

关键词:

万年历;AT89S52;LCD1602;时钟日历芯片DS1302;音乐闹钟

TheMulti-functionalCalendarDesign

na

Abstract:

Thisdesignhasadoptedbytheextensiveuseofsinglechipmicrocomputerasthecore.Hardwareandsoftwarecombinationmakethehardwarepartsgreatlysimplifiedandimprovethestabilityofthesystem.TheuseofLCDdisplaycircuit,keyboardcircuitmakestheinformationexchangesimple.Inaddition,thedesigniscombinedwithmusicalarmcircuit,temperatureacquisitioncircuitandpowersupplycircuit.Itcanshowacalendardate,time,temperature,thelunarandsetupmusicalarmfunction.Ononehangthecalendarcanbeappliedtogenerallifeandwork,ontheotherhang,itcanimproveperformancebymodificationtoaddnewfunctions,sothatitcanbringmoreconveniencetopeople'slifeandwork.

Keywords:

calendar;AT89S52;LCD1602;clockcalendarchipDS1302;musicalarmclock.

引言

电子万年历是实现对年、月、日、时、分、秒数字显示的计时装置,广泛用于个人、家庭、车站、码头、办公室、银行大厅等场所,成为人们日常生活中的必需品。

数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。

钟表的数字化给人们生产生活带来了极大的方便,在此基础上完成的电子万年历精度高,功能易于扩展,可扩展成为诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动启闭路灯等电路。

因此,研究电子万年历及扩大其应用有着非常现实的意义。

1系统功能与方案论证

1.1系统功能

·LCD显示年、月、日、时、分、秒、星期、温度、农历等信息

·手动调整年、月、日、时、分、星期、温度上限、闹铃时间

·温度报警

·闹铃播放音乐

·日历时间掉电保护

·公历与农历自动关联

·闹铃可选择关闭、每天循环或只响应一次三种模式

·可选用USB、直流12V或5V电源或交流9V电源对电路进行供电

1.2系统基本方案选择和论证

由于现在市面上的电子万年历的种类比较多,因此到底选择什么样的方案在设计中是至关重要的。

正确地选择方案就可以使产品更加人性化,并且可以减小开发的难度,缩短开发的周期,降低产品的成本等等,因此就会被人们普遍接受,并且能够更快地将产品推向市场实现其自身的价值。

1.2.1单片机芯片的选择方案和论证

方案一:

  采用89C51芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,在烧写程序时需要专门的下载器。

方案二:

  采用AT89S52,片内ROM全都采用FlashROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能时,烧写程序方面,再加上本系统程序较大,需要较大的存储空间,因此选择采用AT89S52作为主控制系统。

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

方案一:

采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。

但所需数码管太多,布线和焊接困难极易出错,因此不采用LED数码管作为显示。

方案二:

  采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。

方案三:

采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量字符,显示多样,清晰可见,但是价格贵,需要的接口线多,本设计所需显示的内容较多。

所以在此设计中采用LCD1602液晶显示屏。

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

方案一:

  直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。

采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大,所以不采用此方案。

方案二:

  采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,31×8位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。

1.2.4温度传感器的选择方案与论证

方案一:

  使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。

此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。

方案二:

采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。

另外,数字式温度传感器还具有测量精度高、测量范围广等优点。

1.3电路设计最终方案决定

综上各方案所述,对此次作品的方案选定:

采用AT89S52作为主控制系统;DS1302实现时钟;数字式温度传感器;LCD1602字符液晶显示屏作为显示。

2系统的硬件设计与实现

2.1电路设计框图

 

图1系统框图

2.2系统硬件概述

本设计以AT89S52单片机为核心,构成单片机控制电路,结合DS1302时钟芯片显示公历的年、月、日、星期、时、分、秒和农历的月、日,同时完成对它们的自动调整和掉电保护,全部信息用液晶显示器显示出来。

键盘输入由四个按键来实现,用这四个按键可以对日期、时间、星期、温度报警上限进行调整,并可以对闹铃的开关和闹铃的时间进行设置。

闹铃功能通过蜂鸣器来实现。

温度的采集通过DS18B20来实现。

电源电路可选用直流12V或5V电源9V交流电源输入,再经过稳压集成块输出+5V电压,可稳定工作。

系统框图如图1所示,其软硬件设计简单,时间记录准确,可广泛应用于长时间连续显示的系统中。

2.3各系统电路及工作原理

本设计分为单片机控制电路、DS1302时钟电路、DS18B20温度采集电路、1602显示电路、键盘输入电路、闹铃电路、电源电路几个模块。

充分利用硬件电路的可靠性、稳定性和芯片的方便性,使整体电路简单可行。

2.3.1AT89S52单片机最小系统设计

AT89S52是一种低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元。

(1)AT89S52的引脚及功能

AT89S52单片机的引脚说明如图2所示。

图2AT89S52的引脚

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高,即是要接上拉电阻。

P1、P2、P3口都是内部提供上拉电阻的8位双向I/O口,能接收输出4TTL门电流。

当各自管脚写入1后,内部上拉为高,都可用作输入。

在FLASH编程和校验时,P1口作为第八位地址接收;P2口接收高八位地址信号和控制信号。

P3口可作为AT89S52的一些特殊功能口。

RST是复位信号引脚。

/EA/VPP是程序存储器的读选通信号端。

当/EA保持低电平时,对ROM的读操作限定在外部程序存储器;当/EA端保持高电平时,对ROM的读操作从内部程序存储器开始。

XTAL1(19脚)是反向振荡放大器的输入及内部时钟工作电路的输入端。

XTAL2(18脚)是来自反向振荡器的输出端[1]。

(2)AT89S52单片机最小系统

单片机的最小系统如图3所示,电路中轻触按键、C3和R9组成单片机的复位电路,连接到单片机的第9脚,它是施密特触发输入,当振荡器起振后,单片机上电瞬间,RC电路充电,RST引脚端出现正脉冲,RST高电平单片机保持复位状态。

此时,ALE、/PSEN、P0、P1、P2、P3口都输出高电平,RST变成低电平后,进入工作状态。

当需要手动复位时,按下轻触按键,RST为高电平,单片机进入复位状态,松开按键后,进入工作状态。

18、19脚之间接一个石英晶体及两个电容,构成稳定的自激振荡器,振荡信号是单片机工作的基本节拍。

图3单片机最小系统

2.3.2时钟电路模块的设计

(1)DS1302芯片介绍

日历时钟芯片DS1302是一种串行接口的实时时钟,芯片内部具有可编程日历时钟和31个字节的静态RAM,日历时钟可自动进行闰年补偿,计时准确,接口简单,使用方便,工作电压范围宽(2.5~5.5V),功耗低,芯片自身还有对备份电池进行涓流充电的功能。

DS1302采用8脚DIP封装,其引脚排列如图4所示

图4DS1302引脚图

VCC1和VCC2分别是主电源和后备电源引脚,DS1302由VCC1或VCC2中较大者供电。

X1,X2为振荡源引脚,需外接32.768KHZ晶振。

(2)DS1302的应用

DS1302与单片机之间采用3线串行通信方式。

串行时钟信号SCLK接到单片机的P1.0引脚;数据输入/输出信号I/O接到单片机的P1.1引脚;复位/或通信允许信号RST接到单片机的P1.2引脚,RST=1允许通信,RST=0禁止通信。

单片机AT89S52作为主机通过控制SCLK、I/O和RST信号实现两芯片间的数据传送。

DS1302时钟电路如图5所示。

图5DS1302时钟电路

2.3.3温度采集电路的设计

温度传感器DS18B20,是一种数字式的温度传感器,具有测量精度高,电路连接简单等特点,此类传感器仅需要一条数据线进行数据传输。

温度采集模块如图6所示。

图6温度采集模块

2.3.4LCD1602液晶显示模块设计

(1)1602字符型LCD简介

LCD液晶显示器是一种被动式的显示器,本身并不发光,而是利用液晶在电压作用下,能改变光线通过方向的特性而达到显示白底黑字或黑字白底的目的。

本设计采用16列×2行的字符型LCD1602带背光的液晶显示器。

LCD1602主要技术参数:

·显示容量:

16×2个字符

·工作电压:

4.5~5.5V

·工作电流:

2.0mA(5.0V)

它的引脚图如图8所示:

图81602引脚图

第3脚:

V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”。

第4脚:

RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器。

第5脚:

R/W为读写信号线,高电平是进行读操作,低电平时进行写操作。

当RS和RW同为低电平时可以写入指令或显示地址,当RS为低电平且RW为高电平是可以读忙信号,当RS为高RW为低电平时可以写入数据。

第6脚:

E端为使能端,当E端由高电平跳变为低电平时,液晶执行指令。

第15、16两脚为背光电源。

(2)指令说明

初始化设置

1)显示模式设置

表1显示模式指令表

2)显示开关及光标设置

表2显示开关及光标指令表

(3)LCD1602的应用电路

图9LCD1602显示模块

2.3.5电源电路

为了方便使用,本系统设计了双电源,既可选择交流9V供电,也可选用直流12V或5V供电。

本系统还设置了USB接口,可方便使用MP3或手机充电器对电路进行供电。

电源模块如图10所示。

采用直流或交流电源供电时,电路经过二极管IN4007半波整流和电容C3滤波后送入三端稳压管7805产生+5V的电压再经滤波后为电路进行供电。

采用直流+5V稳压电源时,须接上跳帽,这时三端稳压管7805不工作。

图10电源模块

2.3.6闹钟电路设计

本设计的闹钟电路直接采用PNP型三极管驱动蜂鸣器发声,当单片机的P1.7引脚送出低电平时,PNP型三极管饱和导通,蜂鸣器发声,为高电平时不发声,因此通过单片机产生不同频率的脉冲从P1.7引脚送出,蜂鸣器就会发出各种音调的声音。

闹钟电路如图11所示。

图11闹钟电路

2.3.7键盘输入电路

本系统设置了四个功能按键:

K1、K2、K3、K4,如图12所示。

·K1的功能:

按一下进入阴历显示界面,按两下进入模式选择界面,按三下,退出模式选择界面,回到主页面。

在闹铃响的时候,按一下可停止闹铃。

·K2的功能:

对时间、日历、闹铃时间、闹铃开关、温度报警等内容进行选择。

·K3的功能:

对相应的内容进行加一操作。

·K4的功能:

对相应的内容进行减一操作。

图12键盘输入电路

3软件设计

为了方便编写、调试和增加可读性,本设计的软件部分采用C语言进行编写。

本系统主要程序模块包括AT89S52主控程序、DS1302时间处理、环境温度采集、LCD1602显示、键盘扫描、音乐播放、公历转农历等几部分。

3.1主程序框图

图13主程序框图

3.2DS1302时间处理

DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据的读/写可以用单字节或多字节的突发模式进行。

所有的数据应在时钟的下降沿变化,而在时钟的上升沿,在芯片或与之相应的设备进行输入。

(1)命令字节

命令字节的格式如表3所示

表3DS1302的命令字节格式

D

D6

D5

D4

D3

D2

D1

D0

1

RAM

A4

A3

A2

A1

A0

RD

CK

WR

每次数据的传输都是有命令字节开始的,这里的最高有效位必须是1。

D6是RAM(为1)或时钟(为0)的标识位。

D1~D5定义片内寄存器的地址。

最低有效位(D0)定义了写操作(为0时)或读操作(为1时),命令字节的传输时钟从最低有效位开始。

(2)数据输入输出(I/O)

在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始,如下图-14所示。

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

如下图-15所示。

图14读出DS1302数据

图15写DS1302控制字

(3)日历、时钟寄存器及其控制字

DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表4所示,其中奇数为读操作,偶数为写操作。

表4DS1302的日历、时钟寄存器及其控制字

寄存器

命令字

取值

范围

各位内容

写操作

读操作

7

6

5

4

3

2

1

0

秒寄存器

80H

81H

00-59

CH

10SEC

SEC

分钟寄存器

82H

83H

00-59

0

10MIN

MIN

小时

寄存器

84H

85H

1-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

时间处理子程序流程图如图16所示,程序见附录一。

图16时间处理程序框图

3.3环境温度采集

温度采集子程序流程图如图17所示,程序见附录一。

图17温度采集程序框图

3.4键盘扫描

键盘扫描子程序流程图如图18所示,按键功能说明详见键盘输入电路部分,程序则见附录一。

3.5音乐播放

对于单片机产生音乐,关键是控制频率的输出。

一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,本设计中利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。

程序和程序说明见附录一。

3.6公历转农历

本设计采用的是按年查表法来实现公历转换成农历,这样可最大限度地减少表格所占的程序空间。

这里采用了三个字节来表示一年的农历信息。

计算公历日对应的农历日期的方法:

先计算出公历日离当年元旦的天数,然后查表取得当年的春节日期计算出春节离元旦的天数,二者相减即可算出公历日离春节的天数,以后只要根据大小月和闰月信息,减一月天数调整一月农历月份,即可推算出公历日所对应的农历日期。

如公历日不到春节日期,农历年要比公历年小一年,农历大小月取前一年的信息,农历月从12月向前推算[2]。

公历转农历程序流程图如图19所示,程序见附录一。

图18键盘扫描框图

图19公历转农历程序流程图

结束语

本设计以AT89S52单片机为核心,利用软件编程,通过键盘控制、温度传感器、日历时钟芯片和LCD液晶显示基本达到预想效果。

本设计硬件系统相对简单,使用方便。

程序部分是本设计的一个难点,为了实现较多的功能,程序变得相当庞大,调试起来比较麻烦。

由于本人能力有限,程序还未能进一步优化,为了节约成本,系统未能实现更多的功能,如农历年、天干地支和星期自动关联等。

参考文献

[1]顾滨,赵伟军,王泰,鲍可进,李铁香.单片微计算机原理、开发及应用[M].北京:

高等教育出版社,2000.15-35.

[2]朱思荣.用51单片机实现公历与农历、星期的转换,1-2.

/4994b7d8ce2f0066f5332293.html

[3]DS18B20中文资料,1-22.

/fe0be6e8998fcc22bcd10d2e.html

[4]DS1302中文资料,1-8.

-.html

[5]1602的使用说明及C语言例程,1-5.

/086ce729915f804d2b16c1b5.html

[6]7805应用电路图.电子技术资料网站.

/88/131/138/2007/6044.html

[7]窦振中.单片机外围器件实用手册输出通道器件分册[M].北京:

北京航空航天大学出版社,2002.467-479.

[8]刘建清,鲁金,王春生.从零开始学单片机技术[M].北京:

国防工业出版社,2006.28-31.。

[9]徐爱钧.单片机原理实用教程-基于proteus虚拟仿真[M].北京:

电子工业出版社,1996.258-267.

[10]张齐,朱宁西.单片机应用系统设计技术—基于C51的protues仿真(第2版)[M].北京:

电子工业出版社,2009.260-269.

附录

附录A程序

/************使用LCD1602、DS1302时钟芯片、DS18B20温度传感器完成该万年历**************/

#include

#include"LM016L.h"

#include"DS1302.h"

#include"yinli.h"

#include"DS18B20.h"

#include"KeyScan.h"

#include"MODE.h"

#include"OPEN.h"

#include"SoundPlay.h"

#defineuintunsignedint//宏定义

#defineucharunsignedchar

voidopen();//上电显示

voidKeyScan();//键盘扫描

voidSetTime_Mode();//调时

voidSetDate_Mode();//调日期

voidSetYear_Week_Mode();//调年和星期

voidSetRing_Mode();//闹钟设置

voidSetTemp_Mode();//温度上限设置模式

voidInitialSound(void);//音乐初始化

voidGuangbiao_Flash();//光标闪烁

voidPlay(unsignedchar*Sound,unsignedcharSignature,unsignedOctachord,unsignedintSpeed);

/******************************日历主函数************************************/

voidmain()

{

init();

Warn_Ling_init();

Read_RTC();

open();//上电显示函数

write_com(0x01);//清屏

while

(1)

{

time_date();//时间处理

KeyScan();//键盘扫描

if(ring_time[1]==l_tmpdate[1]&&ring_time[2]==l_tmpdate[2]&&flag==0&&alarm!

=0)//判断是否到闹钟设置的时间,是的话执行相应动作

{

uchari;

if(alarm==1)

alarm=0;

write_com(0x01);

write_com(0x80+0x00);

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

{

wr

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

当前位置:首页 > 总结汇报 > 学习总结

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

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