基于单片机控制的电子万年历.docx

上传人:b****6 文档编号:8486998 上传时间:2023-01-31 格式:DOCX 页数:40 大小:644.01KB
下载 相关 举报
基于单片机控制的电子万年历.docx_第1页
第1页 / 共40页
基于单片机控制的电子万年历.docx_第2页
第2页 / 共40页
基于单片机控制的电子万年历.docx_第3页
第3页 / 共40页
基于单片机控制的电子万年历.docx_第4页
第4页 / 共40页
基于单片机控制的电子万年历.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

基于单片机控制的电子万年历.docx

《基于单片机控制的电子万年历.docx》由会员分享,可在线阅读,更多相关《基于单片机控制的电子万年历.docx(40页珍藏版)》请在冰豆网上搜索。

基于单片机控制的电子万年历.docx

基于单片机控制的电子万年历

前言

随着社会与科技的快速发展,人们的生活水平得到了提高,生活节奏得到了加快,人们对时间的要求也越来越高,精准数字计时的消费需求也是越来越多。

因此,新产品、新技术层出不穷,不断创新,不断发展,越来越多的高科技产品的产生来适应人们的需求,这使电子技术的发展更是日新月异。

以前人们是利用观察太阳来看时间,接着摆钟的出现使人们对时间有了更进一步的了解,现在人们是用电子钟来记录时间,在这漫漫的发展过程中,人类不断地研究,不断地创新......

二十一世纪是科技与创新的新时代,用来计时的电子产品也越来越多,其中最具代表性最受欢迎的的计时产品就是电子万年历,它不仅具有一般计时产品的功能,还具有闹铃、报警等创新功能。

目前它已经不再仅仅局限于以书本的形式出现。

而是以电脑软件或者电子产品的形式出现的万年历被称为电子万年历。

它与传统书本形式的万年历相比,不仅方便快捷,简单直观,还有很卓越的功能,所以电子万年历得到了越来越广泛的应用,采用电子时钟作为时间显示已经成为一种时尚。

它是近代世界钟表业界的第三次革命。

第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。

第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。

第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求,给消费者带来了很大的方便!

所以电子万年历就是钟表计时业界跨跃性的一朵奇葩。

目前市场上的电子时钟种类繁多,但大多数都只是只针对时间显示,功能单一不能满足人们日常生活需求,所以现在不能仅局限于这种电子钟。

我国生产的电子万年历有很多种,总上来说以研究多功能电子万年历为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。

商家生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子万年历的设计,使其更加的具有市场。

对于使用单片机来实现时钟的控制,时间的显示于一体,方便快捷准确。

省电而又安全。

对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。

该电路采用AT89C52(可用51系列单片机替换)单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。

综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,更能满足人们的需求,这使电子钟具有很广阔的市场前景。

 

一.设计要求

本文主要提出了一种基于AT89C52单片机的万年历设计方案,此设计方案是以AT89C52单片机作为主控核心,74HC573锁存器、74LS译码器、非门、或门、按键、LED显示等模块组成硬件系统。

此设计主要采用软件和硬件结合的方法,控制LED七段数码管输出,分别用来显示年、月、日、时、分、秒,并且在硬件系统中设有独立按键和LED显示器,能显示丰富的信息,根据使用者的需要可以随时对时间进行校准、选择时间等。

其可以实现以下几个基本功能:

(1)可显示公历年、月、日和时、分、秒

(2)走时准确,可调整公历年、月、日和时、分、秒。

(3)采用市话通过电源适配器供电,当市电停电时,不但万年历所有数据不丢失,且万年历照常运行(有后备电池供电,可供数年)

(4)万年历设置运行到2030年。

二.总体设计

2.1单片机芯片的选择方案

方案一:

采用传统的AT89C51芯片作为硬件核心,它主要是采用FlashROM,它内部具有4KBROM存储空间,能够在3V的超低压工作,而且能够与MCS-51系列单片机完全兼容,此单片机算术运算功能强,软件编程灵活、自由度大,虽在电路设计中时由于不具备ISP在线编程技术,但是价格便宜,使用广泛,可操作性强。

方案二:

采用FTC10F04单片机,还带有非易失性Flash程序存储器。

它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多。

其主要特点如下:

8KBFlashROM,可以擦除1000次以上,数据保存10年。

方案三:

采用AT89S52,片内ROM全都采用FlashROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。

2.2显示模块的选择方案

方案一:

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

方案二:

采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏。

方案三:

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

2.3键盘方案的选择

键盘用来控制单片机的运行设定。

是不可缺少的硬件设备之一,如果没有输入键盘,设计的再好的的单片机数字万年历都不会发挥其最大的价值。

所以键盘的选择也是十分重要的。

方案一:

采用单点试键盘,即一个I/O口连接一个按键,此种键盘控制方便但是对硬件资源十分浪费,不作为首要选择方案。

方法二:

点阵式行列键盘,此种键盘按键点数多可以随意的修改,对I/O的利用比较充分,但是需要配合软件的扫描来实现按键的输入,但是单片机工作快,每秒几万步,弥补了硬件方面的缺陷,可以作为备选方案。

方案三:

扩展芯片,8155是常用的扩展I/O接口的芯片可以用来进行单片机输入键盘的接口扩展,但是需要添加8155芯片,在使用单片机做时钟万年历方面,I/O接口使用不是十分多,再扩展另外的芯片算是一种浪费。

所以不作为备选方案。

2.4总体方案的确定

单片机选择价格便宜、简单耐用的C51系列的AT89C52(可以使用AT89C51代替)。

显示器选择红色七段数码管。

键盘选择行列式点阵键盘。

2.5程序工作流程图

 

 

图2-1程序工作流程图

三.硬件设计

3.1晶振

晶振是单片机工作的步伐,晶振的准确与否决定了单片机的计时准确,工作稳定。

本设计方法是用12MHz晶振并加两个30pF的电容进行校正,是比较准确的12MHz的频率。

晶振分别接单片机的18、19两个引脚。

其仿真见(图3-1)

图3-1晶振电路

3.2复位电路

单片机的复位分为上电复位和按键复位。

在单片机在进行正常工作的时候,由于软件、环境等问题给单片机带来的影响,造成单片机不能正常运行,所以要进行单片机的复位。

其复位电路见(图3-2)

图3-2复位电路

3.3行列式键盘电路

图3-3

图3-4

3.4数码管显示电路

图3-5数码显示电路

3.5动态动态扫描电路

3.5.174LS138位选电路

动态扫描电路选用了两个74LS138译码器作为位选开关最多可以控制16个七段数码管,此处只使用了14位。

图3-674LS138位选电路

 

3.5.274LS138简介

74LS138为3线-8线译码器,共有54LS138和74LS138两种线路结构型式。

(1)工作原理

①当一个选通端(E1)为高电平,另两个选通端((/E2))和/(E3))为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。

比如:

A2A1A0=110时,则Y6输出端输出低电平信号。

②利用E1、E2和E3可级联扩展成24线译码器;若外接一个反相器还可级联扩展成32线译码器。

③若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。

④可用在8086的译码电路中,扩展内存。

(2)引脚功能

A0~A2:

地址输入端

STA(E1):

选通端

/STB(/E2)、/STC(/E3):

选通端(低电平有效)

/Y0~/Y7:

输出端(低电平有效)

VCC:

电源正

GND:

A0~A2对应Y0——Y7;A0,A1,A2以二进制形式输入,然后转换成十进制,对应相应Y的序号输出低电平,其他均为高电平。

 

图7

 

(3)真值表

输入

输出

STA

/STB

/STC

A2

A1

A0

/Y0

/Y1

/Y2

/Y3

/Y4

/Y5

/Y6

/Y7

×

H

×

×

×

×

H

H

H

H

H

H

H

H

×

×

H

×

×

×

H

H

H

H

H

H

H

H

L

×

×

×

×

×

H

H

H

H

H

H

H

H

H

L

L

L

L

L

L

H

H

H

H

H

H

H

H

L

L

L

L

H

H

L

H

H

H

H

H

H

H

L

L

L

H

L

H

H

L

H

H

H

H

H

H

L

L

L

H

H

H

H

H

L

H

H

H

H

H

L

L

H

L

L

H

H

H

H

L

H

H

H

H

L

L

H

L

H

H

H

H

H

H

L

H

H

H

L

L

H

H

L

H

H

H

H

H

H

L

H

H

L

L

H

H

H

H

H

H

H

H

H

H

L

表3-1

本设计用两块138组成14位译码器,用来位选信号,其中E1、E2、E3为片选信号线E1为高电平有效E2、E3为低电平有效,由其特性加一个非门连同A、B、C信号线可组成4信号线来控制位选。

3.5.374HC573锁存器数据电路

用74HC573逻辑锁存电路用来功率放大,用来数据传送。

图3-8锁存器数据电路

3.5.474HC573简介

74HC573包含八进制3态非反转透明锁存器,[span]是一种高性能硅门CMOS[span]器件。

[span]SL74HC573跟LS/AL573的管脚一样。

器件的输入是和标准CMOS输出兼容的,加上拉电阻他们能和LS/ALSTTL输出兼容。

(1)锁存器

输入是和标准CMOS输出兼容的;加上拉电阻,他们能和LS/ALSTTL输出兼容。

当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。

当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。

×\u36755X出能直接接到CMOS,NMOS和TTL接口上

×\u25805X作电压范围:

2.0V~6.0V

×\u20302X输入电流:

1.0uA

×CMOS器件的高噪声抵抗特性

·三态总线驱动输出

  ·置数全并行存取

  ·缓冲控制输入

  ·使能输入有改善抗扰度的滞后作用

(2)原理说明:

M54HC563/74HC563/M54HC573/74HC573的八个锁存器都是透明的D型锁存器,当使能(G)为高时,Q输出

  将随数据(D)输入而变。

当使能为低时,输出将锁存在已建立的数据电平上。

输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,

  新的数据也可以置入。

这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。

特别适用于缓冲寄存器,I/O通道,双向总线驱动器和工作寄存器。

数据锁存

当输入的数据消失时,在芯片的输出端,数据仍然保持;这个概念在并行数据扩展中经常使用到。

3.6单片机

本设计使用单片机的P0口作为数据输出口,P1口作为位选口,P2口作为键盘行列接口。

图3-9接口图

总体框架图如下:

图3-10总框架图

 

3.6.1AT89C52

AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。

简介

1、兼容MCS51指令系统

2、8kB可反复擦写(大于1000次)FlashROM;

3、32个双向I/O口;

4、256x8bit内部RAM;

5、3个16位可编程定时/计数器中断;

6、时钟频率0-24MHz;

7、2个串行中断,可编程UART串行通道;

8、2个外部中断源,共8个中断源;

9、2个读写中断口线,3级加密位;

10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;

11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。

图3-11AT89C52引脚

P0口:

P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。

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

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

在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

P1口:

P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。

作输入口使用时,因为内部存在上拉电阻,某个引脚被外部图3-12AT89C52元件

信号拉低时会输出一个电流(IIL)。

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

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

P2口:

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

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

在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。

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

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

P3口:

P3口是一组带有内部上拉电阻的8位双向I/O口。

P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。

此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。

P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。

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端必须保持低电平(接地)。

需注意的是:

如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。

Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。

XTAL1:

振荡器反相放大器及内部时钟发生器的输入端。

XTAL2:

振荡器反相放大器的输出端。

3.7基本工作原理

单片机进行初始化,然后进入循环显示程序,定时器中断产生之后相应定时器中断进行计数加一,当检测到按键按下之后进行键盘检测,并进行设定。

四.软件设计

4.1基本思路

利用单片机的定时器进行定时计数,当定时器中断产生之后进行50ms计数当满20次之后产生一个脉冲,向时钟进行加一计数,程序的主函数进行年月日时分秒的计算,闰年的判断时间的计数,按键的识别,时间的设定等。

4.2程序框图

 

 

 

 

图4-1程序框图

4.3程序介绍

主程序man()

初始化函数init()

显示函数xianshi()

时间函数time()

闰年函数run()

延时函数yanshi()

键盘识别函数jianpanshibie()

键盘设定函数jianpansheding()

定时器中断程序timer0()

五.仿真及结果

Keil仿真及结果:

图5-1

图5-2

Proteus模拟

图5-3模拟图

键盘修改日期之后:

图5-4修改后模拟图

六.结束语

经过了两个星期的学习和工作,我终于完成了单片机时钟课程设计。

从开始接到论文要求到时钟的实现,再到论文文章的完成,每走一步对我来说都是新的尝试与挑战,这也是我在大学期间独立完成的最大的项目。

在这段时间里,我学到了很多知识也有很多感受,我开始了独立的学习和试验,查看相关的资料和书籍,让自己头脑中模糊的概念逐渐清晰,使自己非常稚嫩作品一步步完善起来,每一次改进都是我学习的收获,每一次试验的成功都会让我兴奋好一段时间。

当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。

我相信其中的酸甜苦辣最终都会化为甜美的甘泉。

这次论文的经历也会使我终身受益,我感受到做论文是要用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。

通过本次毕业设计,我在崔老师的精心指导和严格要求下,获得了丰富的理论知识,极大地提高了实践能力,单片机领域这对我今后进一步学习计算机方面的知识有极大的帮助。

在此,忠心感谢老师以及许多同学的指导和支持。

参考文献

[1]李建忠.单片机原理及应用.西安电子科技大学出版2006.02

[2]张俊谟.单片机中级教程.北京航空航天大学出版2006.03

[3]余发山.单片机原理及及应用技术.中国矿业大学出版社2003.12

[4]杨凌霄.微型计算机原理及应用.中国矿业大学出版社2004.08

[5]何立民.单片机应用技术选编.北京航空航天大学出版社2000.08

[6]万光毅.单片机实验与实践教程.北京航空航天大学出版社2005.01

[7]周航慈.单片机程序设计基础.北京航空航天大学出版社1991.11

[8]黄遵熹.单片机原理接口与应用.西北工业大学出版社1997.05

[9]杨振江,杜铁军,李群.流行单片机实用子程序及应用实例[M].西安:

西安电子科技大学出版社,2002

[10]求是科技编著,单片机典型模块设计实例导航,人民邮电出版社,2004

[11]赵亮,侯国锐编著,单片机C语言编程与实例,人民邮电出版社

附录一:

 

附录二:

//定义头文件

#include

//位移头文件

#include

#defineucharunsignedchar

#defineuintunsignedint

#definesjP0

#definewxP1

#definejpP2

//数据表

ucharcodeshu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//最后一个数为黑

//位选表

ucharcodeweixuan[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d};

//时间单个位选表

//ucharcodedanweixuan[]={nianqian,nianbai,nianshi,niange,yueshi,yuege,rishi,rige,shishi,shige,fenshi,fenge,miaoshi,miaoge};

//uintnian=2003;

ucharyanshijishu,anjian,shanshuoci,hh,ss,jianpanfanhui,home,lsjm,miao,weixuanjs,nianqian,nianbai,nianshi,niange,yueshi,yuege,rishi,rige,shishi,shige,fenshi,fenge,miaoshi,miaoge;

//初始化函数声明

voidinit();

//显示函数声明

voidxianshi(ucharnianqian,ucharnianbai,ucharnianshi,ucharniange,ucharyueshi,ucharyuege,ucharrishi,ucharrige,ucharshishi,ucharshige,ucharfenshi,ucharfenge,ucharmiaoshi,ucharmiaoge);

//延时函数声明

voidyanshi(uinta);

//时间函数声明

voidtime();

//闰年判断函数

charrun();

//按键识别程序声明

voidanjianshibie();

//键盘设定声明

voidanjiansheding();

//闪烁函数声明

voidshanshuo();

voidshanshuohuifui();

voidshanshuohei();

//主函数

voidmain()

{

init();//

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

当前位置:首页 > 解决方案 > 学习计划

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

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