MCS-51单片机的数字钟设计_第1页
MCS-51单片机的数字钟设计_第2页
MCS-51单片机的数字钟设计_第3页
MCS-51单片机的数字钟设计_第4页
MCS-51单片机的数字钟设计_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业 毕 业 设 计(论 文)题 目:基于MCS-51单片机的数字钟设计系 别:电子与信息工程系专 业: 电子信息工程 班 级: 电子0204班 学生姓名: 导师姓名:_ 起止时间: 3.21 至 6.10 年6月5日 TOC o 1-3 h z u 摘要该课题研究用经济的手段使人们能方便地得知当前的年历时间,以及安全生产累计天数,提高生产人员的警惕性,达到减少事故的目的。本文简要介绍了LED显示的发展状况和其所特有的优势,简述了该系统中一些重要芯片的基本工作原理,着重论述

2、了硬件线路各个模块的设计思想和软件关键部分的实现方法。数码管与单片机的接口采用动态显示技术,利用了RTC芯片的系统自带电池功能来实现断电时保存一些重要数据,以便来电时正确显示信息的功能。模块化的设计和调试方法在整个课题研究过程中至关重要,事实上在任何设计中也同样关键和有效。关键字 LED显示 RTC芯片 动态AbstractThis topic tries to attain the purpose of reducing troubles by making it easier for workers to know real time and the total days during w

3、hich instruments are in gear by cost-effective means.This paper gives a general description of development situation of LED display and advantages of LED products as display .It also introduces the basic functions of some relative vital chips briefly and emphasizes in clarifying the design of relati

4、vely independent modules. Solutions of the key parts are also introduced with particular description. Dynamic display interface between LED display and MCU are used .It also can save some important data at the moment of power-off by making use of RTC chips system self-contained battery in order to m

5、ake sure accurate information are present whenever power-on.Modularized design and debug are most important in the whole course of the topic research. In fact, it is as well as vital and effective in any other design course.Keywords logic clock RTC Chip Dynamic 引言随着生活水平的提高,人们越来越追求人性化的事物,传统的时钟已不能满足人们

6、的需求。现代的数字钟不仅需要数字电路技术而且需要模拟电路技术和单片机技术,增加了数字钟的功能。其电路可以由实时时钟模块、环境温度检测模块、人机接口模块、报警模块等部分组成。利用软件编程尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,充分发挥软件编程的优点,减小因元器件精度不够引起的误差,但是数字钟还是可以改进和提高如选用更精密的元器件。但与机械式时钟相比已经具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成

7、电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。1绪论1.1 集成电路在此次设计中我们将用到集成电路。集成电路是一种微型电子器件,采用一定的工艺将包含三极管、二极管、电阻、电容等元件及其相互连线的整个电路,集中制造在一个或几个很小的半导体晶片或介质基片上,再经引线和封装,成

8、为具有所需功能的微型结构。每片芯片(半导体晶片或介质基片)集成的元件数叫做集成度,小规模集成电路的集成度是1100,中规模集成电路的集成度是1001000,大规模集成电路的集成度是100010万,超大规模集成电路的集成度是10万100万,极大规模集成电路的集成度大于100万。 集成电路具有体积小、引出线和焊接点少、寿命长、成本低、可靠性高、性能好等优点,广泛应用于电子计算机、通讯设备、导弹、雷达、人造卫星和各种遥控、遥测设备中。主要技术的背景1.2.1 发展历史集成电路是信息产业和高新技术的核心,是推动国民经济和社会信息化的关键技术。集成电路的产业规模和技术水平已成为国家综合国力的一个重要标志

9、。 集成电路是随着计算机技术的发展而不断进步,1946年2月15日世界上第一台通用电子数字计算机使用了18000个电子管,1500个继电器以及其他器件,安装在面积为9*15平方米的室内。在20世纪50年代中期第二代电子计算机问世,它是以晶体管代替了电子管,此时第一个集成电路诞生了,它包括一个晶体管、两个电阻和一个电阻、电容的组合.后来集成电路工艺日趋完善,大部分电路元件都已经以集成电路的形式出现,甚至在约1平方厘米的芯片上,就可以集成上百万个电子元件。在1967年和1977年,分别出现了大规模集成电路和超大规模集成电路,不断的完善和改进计算机的性能与规模。 但我国集成电路相对于世界先进水平存在

10、一定的差距,所以有发展本国集成电路的需要。1.2.2 现状现在我国集成电路产业已经经过30多年的发展现已形成了近百家的产业规模,其中具备一定设计规模的单位有20多家,其中北京华大、大唐、深圳华威和无锡矽科四家设计公司的销售额超过了1亿元。 2000年,我国集成电路总产量为58.80亿块,销售额近200亿元,产量和销售额分别比1999年增长50.3%和75%。并且集成电路芯片目前主要采用56英寸硅片、0.81微米技术 ,大部分设计公司的技术水平在0.80.5微米之间,最高设计水平可达0.35微米。不少设计公司可以设计上万门的集成电路产品,而北京华大和深圳华威最高可设计80万门的电路。目前国内的通

11、信芯片行业取得了突破性进展,例如南京东南大学射频与光电集成电路研究所设计的第一批芯片已成功通过测试,其中的3个芯片还达到世界先进水平,填补了我国高速CMOS集成电路设计的技术空白,在此基础上开发出的实用产品可以打入光纤通信接口设备市场。多家外国著名公司也纷纷在中国建立起集成电路设计公司。1.2.3 发展趋势中国发展集成电路的主要目标为:达到大规模生产150mm和0.8微米的技术水平;200mm和0.5微米的制造技术的产业化;提高集成电路的设计能力以满足市场需求;跟踪0.30.4微米和先进封装技术的研发;开发200mm的硅片制造技术并在国内开始生产等。未来10年是我国微电子产业发展的关键时期。重

12、点要推进超大规模集成电路和新技术的产业化。我国集成电路市场潜力巨大, 是因为近年来因特网持续爆炸式增长、移动通信终端设备市场的迅猛发展,以及数码相机、手持电脑等电子产品市场的兴旺,尤其是移动通信业的高速发展成为推动半导体产业新一轮发展的强大动力。信息产业的高速发展,为集成电路产业提供了巨大的市场空间。未来几年,我国集成电路市场需求主要来自以下几个方面:1.通信运营业的高速发展对集成电路提出新的需求;2.二是通信运营业的高速发展对集成电路提出新的需求;3 国民经济和社会信息化建设给电子信息制造业创造了一个新市场;4.随着我国经济结构的战略性调整,传统产业改造升级,提高设计和制造水平推进机电一体化

13、,为各行业提供先进和成套的技术准备,又会给集成电路产业带来新的市场。 综观中国集成电路的设计概况,可以看到从20世纪80年代末开始,经过90年代初的创业期,现正进入它的发展期,21世纪将是中国设计业的成熟期。2器件简介2.1 LED显示器2.1.1 LED显示器的结构LED显示块是发光二极管显示字段的显示器件。在单片机应用系统中通常使用的是七段LED。七段LED内部由7个条形发光二极管和一个圆点发光二极管组成。图2-1 本设计中采用的是绿色七段数码管,每一段数码管内部相当于有一个发光二极管。发光二极管具有单向导电性,只有当外加的正向电压使得正向电流足够大时才发光,它的开启电压比普通二极管的大,

14、红色的在1.8V2.2V之间,绿色的约为2V。正向电流越大,发光越强。内部结构如图2-1。 2.1.2 LED的接线形式根据内部发光二极管的接线形式分成共阴极型(公共点接地)和共阳极型(公共点接电源)。计算机与七段显示器的接口,分成静态显示接口和动态显示接口。静态接口是每个七段显示器单独用一组寄存器控制,将其公共点接地。动态接口使用两组寄存器。几个显示器的七段用一组寄存器控制,该寄存器称作段选寄存器。另一组寄存器控制这几个七段显示器的公共点,控制这几个显示器逐个循环点亮。适当选择循环速度,利用人眼“视觉暂留”效应,使看上去好像这几个七段显示器同时在显示一样。控制公共点的寄存器称为位选寄存器。本

15、次设计中采用共阳极型接法,公共级通过一个PNP三极管与12V的电源相连。接口采用动态显示。2.2 AT89C52简介AT89C52是美国ATMEL公司生产的低电压、高性能的CMOS 8位单片机,片内含8k bytes的可反复擦写的只读程序存储器(PEROM)和256 bytes的随即存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准的MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。AT89C52单片机适合于许多较为复杂控制应用场合。2.2.1AT89C52主要性能参数:1与MCS51产品指令和引脚

16、完全兼容2具有8k字节可重擦写Flash闪速存储器31000次擦写周期4全静态操作:0Hz24MHz5三级加密程序存储器62568字节内部RAM732个可编程I/O口线83个16位定时器/计数器98个中断源10低功耗空闲和掉电方式11可编程串行UART通道2.2.2 AT89C52单片机的功能特性概述:AT89C52提供以下标准功能:8k字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路。同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的

17、工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。AT89C52单片机与MCS-51兼容,它与MCS-51的功能基本相同。a.MCS51单片机的中断系统(1)中断源 MCS51单片机是一个多中断源的单片机,有五个中断源:外部中断0、定时器0中断、外部中断1、定时器1中断和串行接收或发送中断。各中断源的中断处理程序入口地址如下表21所示:表21 中断向量表中断源入口地址外部中断00003H定时器0000BH外部中断10013H定时器1001BH串行口0023H(2)中断控制1中断的开放或禁止是由中

18、断允许寄存器IE控制的。IE的格式如下:EAESET1EX1ET0EX0EA中断总允许位。EA1,开放总中断,而各个中断源的中断请求是允许还是禁止,分别由各自的中断允许位确定;EA=0,禁止一切中断。ES串行口中断允许位。ET1和ET0分别是定时器T1和T0的中断允许位。EX1和EX0分别是外部中断1(INT1)和外部中断0(INT0)的中断允许位。以上五个中断允许位的意义是:0为禁止中断,1为允许中断。2中断源优先级控制中断优先级寄存器IP。MCS51单片机有高、低两个中断优先级,5个中断源可由程序设置为高优先级中断或低优先级中断,实现二级中断嵌套。一个正在执行的低优先级中断源的中断服务程序

19、,能被高优先级中断源所中断,但不能被同级别的另一个中断源所中断。MCS51单片机的5个中断源的优先级由中断优先级寄存器IP的相应位设定。IP格式如下:PSPT1PX1PT0PX0PS是串行口的中断优先级控制位。PT1和PT0分别是定时器T1和T0的中断优先级控制位。PX1和PX0分别是外部中断INT1和INT0的中断优先级控制位。中断优先级控制位的意义是:0为设定为低优先级中断源;1为设定为高优先级中断。 如果同优先级的多个中断请求同时出现时,则按MCS51单片机的CPU查询次序确定那个中断请求被响应,其查询次序为:IE0、TF0、IE1、TF1、RI或TI。b.MCS51的定时系统在控制系统

20、中,常常要求有一些实时时钟以实现定时或延时控制,如定时中断、定时检测、定时扫描等等,也往往要求有计数器能对外部事件计数。MCS51单片机有2个定时器,称为定时器0(T0)和定时器1(T1)。(1)定时器的结构MCS51单片机的定时器由计数器0、计数器1、方式控制寄存器和定时器控制寄存器组成。计数器0和计数器1分别由8位计数器TH0、TL0和TH1和TL1构成。TH0、TL0、TH1、TL1是不能位寻址的特殊功能寄存器,通过对TH0、TL0、TH1、TL1的初始化编程来控制T0和T1的计数初值。MCS51单片机的两个计数器TH0、TL0和TH1、TL1可以构成16位的计数器、13位的计数器和8位

21、的计数器。计数器是定时器T0和T1的核心,它可以对引线T0和T1来的外部事件计数;也可以对单片机的机器周期计数。一个机器周期等于12个振荡脉冲周期,因此计数频率为振荡频率的1/12。这样,不但可以根据计数值计算出定时时间,也可以反过来按定时时间的要求计算出计数器的预置值。计数器是加法计数器,所以预置的计数初值应为计数值的补码。(2)定时器的工作方式MCS51单片机的T0有方式0、方式1、方式2和方式3四种工作方式。T1有方式0、方式1和方式2三种工作方式。工作方式控制寄存器TMOD:TMOD寄存器是不能位寻址的特殊功能寄存器,用于控制T1和T0的工作方式,各位的定义如下:GATEC/TM1M0

22、GATEC/TM1M0TMOD的高半字节和低半字节的定义相同,高半字节用于控制T1,低半字节用于控制T0,其中,GATE是门控位。GATE为1时,定时器的计数器受外部引线INT0或INT1输入电平的控制,输入高电平计数,输入低电平停止计数,这时可以用于测量在INTx引线出现的正脉冲宽度;GATE为0时,定时器的计数不受INT0或INT1引线的控制。C/T是定时器和计数器选择位。C/T为1,选择计数器方式,计数器THi和TLi对Ti引线输入的外部事件计数;C/T为0,选择定时器方式,计数器THi和TLi对机器周期进行计数。M1和M0是定时器的工作方式选择位。M1和M0这2位有0011四个状态,分

23、别选择方式0(13位定时器)、方式1(16位定时器)、方式2(8位自动重装载定时器)和方式3(T0分成两个8位的定时器)。2.3 DS1302芯片2.3.1 DS1302的性能特性:1实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;2用于高速数据暂存的318位RAM3最少引脚的串行I/O;42.55.5V电压工作范围;52.5V时耗电小于300nA;6用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式;7简单的3线接口8可选的慢速充电(至Vcc1)的能力DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。它经过一个简单的串行接口与微处理器通信。实时时钟

24、/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用24h或带AM(上午)/PM(下午)的12h格式。采用三线接口与CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302有主电源/后备电源双电源引脚:Vcc1在单电源与电池供电的系统中提供电源,并提供低功率的电池备份;Vcc2在双电源系统中提供主电源,在这种运用方式中Vcc1连接到备份电,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由Vcc1或Vcc2中较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS130

25、2供电;当Vcc2小于Vcc1时,DS1302由Vcc1供电。DS1302数据操作原理 DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输出。无论是读周期还是写周期,开始8位指定40存器中哪个将被访问到。在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的始终周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字数。 如果在传送过程中置RST脚为低电平,则会中止本次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc 2.5V之前,RST

26、脚必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。DS1302的引脚及内部结构图如图2.1所示,表2.1为各引脚的功能。 图2.1 DS1302引脚图及内部结构 图2.2 DS1302的控制字DS1302的控制字如图2.2所示。控制字节的最高有效位(位7)必须是逻辑1;如果它为0。则不能把数据写入到DS1302中。位6如果为0。则表示存取日历时钟数据;为1表示存取RAM数据。位51(A4A0)指示操作单元的地址。最低有效位(位0)如为0,表示要进行写操作;为1表示进行读操作。控制字节总是从最低位开始输入/输出。为了提高对32个地址的寻址能力(地址/命令位15 = 逻辑1),可

27、以把时钟/日历或RAM寄存器规定为多字节(burst)方式。位6规定时钟或RAM,而位0规定读或写。在时钟/日历寄存器中的地址931或RAM寄存器中的地址31不能存储数据。在多字节方式中,读或写从地址0的位0开始。必须按数据传送的次序写最先的8个寄存器。但是,当以多字节方式写RAM时,为了传送数据不必写所有31字节,不管是否写了全部31字节,所写的每一字都将传送至RAM。引脚号引脚名称功能1Vcc2主电源2,3X1,X2震荡源,外接32.768kHz晶振4GND地线5RST复位/片选线6I/O串行数据输入/输出端(双向)7SCLK串行数据输入端8Vcc1后备电源表2.1 DS1302引脚功能图

28、2.3 DS1302数据读/写时序 DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器及其控制字见表2.2,其中奇数为读操作,偶数为写操作。时钟暂停:秒寄存器的位7定义位时钟暂停位。当它为1时,DS1302停止振荡,进入低功耗的备份方式。通常在对DS1302进行写操作时(如进入时钟调整程序),停止振荡。当它为0时,时钟将开始启动。AM-PM/12-24小时方式:小时寄存器的位7定义为12或24小时方式选择位。它为高电平时,选择12小时方式。在此方式下,位5是AM/PM位,此位是高电平时表示PM,低电平表示AM。在24小时方式下,位5为

29、第二个10小时位(2023h)。寄存器名命令字节取值范围寄存器内容写读76543210秒寄存器80H81H0059CH10sSEC分寄存器82H83H0059010minMIN小时寄存器84H85H0023或011212/24010A/PHRHR日期寄存器86H87H0128,29,30,310010DATEDATE月份寄存器88H89H011200010MMONTH周寄存器8AH8BH010700000DAY年寄存器8CH8DH009910YEARYEAR表2.2 内部寄存器地址和内容 DS1302的晶振选用32.768kHz,电容推荐值为6pF,因为振荡频率较低,也可以不接电容,对记时精度

30、影响不大。2.4 74LS164八位移位寄存器2.4.1 74LS64简介74LS164是一个8位移位寄存器,起其主要电特性的典型值如下:型号fmPn54/7416436MHz185mW54/74LS16436MHz80mW当清除(CLEAR)为低电平时,输出端(QAQH)均为低电平。串行数据输入端(A,B)可控制数据。当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0为低电平。当A、B有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态。引出端符号: CLOCK时钟输入端CLEAR同步清楚输入端(低电平有效)A,B串行数据输入端

31、QAQH输出端其管脚图如图2.3: 图2.3 74LS164管脚图2.4.2 74LS164逻辑介绍:1极限值: 电源电压 7V 输入电压 5.5V 工作环境温度: 54164 55125C74164 070C储存温度65150C2其真值表如表2.3 操作模式输入输出复位MRABQ0Q1Q7移位LLQ0Q6HLLLQ0Q6HLHLQ0Q6HHLLQ0Q6HHHHQ0Q6 表2.3 74LS164特性表 H 高电平 L 低电平 任意电平3时序图:时序图如图2.4图2.4 74LS164时序图3硬件电路3.1 线路的设计根据本课题的要求:数字钟要显示现在的日历时间包括年、月、日、星期、时、分、秒和

32、是否为闰年。所以,需要选用19个共阳极数码管,且选用3片74LS164。数码管要通过74LS164送显,所以19个数码管必须排成3排。设计思想:按照系统设计功能的要求,初步确定设计系统由电源转换模块、主控制模块、时钟模块、显示模块、键盘接口模块共5个模块组成,电路系统构成框图如图3.1所示:(89C52)主控制模块电源模块键扫描电路DS1302时钟电路显示电路 图3.1电路系统构成框图3.1.1 电源转换模块日常用到的都是220V的交流电源,所以,需要用变压器将其转换为线路设计中所用到的直流电源。此转换后的直流电源为+12V,而线路设计中许多芯片所用到的电压为+5V,因此,还需有12V到5V的

33、转换电路。此转换采用7805(三端稳压器)来完成,转换图如下:7805Vin=12VVout=5V470uF 470uF 104pF 图3-1 7805电压转换电路当Vin5V时,Vout端可得到稳定的5V电压。图中,104pF电容的作用是去高频干扰;3.1.2 主控制模块此模块由实时时钟芯片DS1302和AT89C52组成。DS1302只有3个管脚SCLK,I/O,RST分别接AT89C52的P3.2,P3.3,P3.4。通过串行输入并行输出来送显示模块。3.1.3 显示模块显示部分采用普通的共阳数码管显示,采用动态扫描,以减少硬件电路。考虑到一次扫描19位数码管显示时会出现闪烁情况,设计时

34、19个数码管分为3排同时扫描。第一排6个数码管分别为千年、百年、十年、年、十月、月,第二排6个数码管分别为十时、时、十分、分、十秒、秒,第三排7个数码管分别为星期、阴历十月、阴历月、阴历十日、阴历日、十日、日。显示时采用串行口输出段码,用3片74LS164来驱动3排数码管,这样扫描一次只需7ms。74LS164内部为8个D触发器,用以实现数据的串行移位。单片机一串行口方式0(移位寄存器方式)输出数据,3片74LS164作为3排共阳数码管的串/并转换显示借口。74LS164为TTL单向8位移位寄存器,可以实现串行输入,并行输出。其中A、B(第1、2管脚)为串行数据输入端,2个引脚按逻辑“与”运算

35、规律输入信号,共一个输入信号时可以并接,共同作为输入脚。CP(第8脚)为时钟输入端,可连接到串行口的TXD端。每一个时钟信号的上升沿加到CP 端时,移位寄存器移一位。8个时钟脉冲过后,8位二进制数全部移入74LS164中。MR(第9脚)为复位端,当该脚为低电平时,移位寄存器各位复0;只有当它为高电平时,时钟脉冲才起作用。Q1Q8(第36和1013引脚)并行输出端分别数码管的ha(因为串行口从低位开始传送)各段对应的引脚上。在给出了8个脉冲后,最先进入74LS164的第1个字节数据到达了最高位。再来1个脉冲,第1个脉冲就会从最高位移出,进入下个74LS164的第1位。3片74LS164首尾相串,

36、而时钟端则接在一起。这样,当输入8个脉冲时,从单片机RXD端输出的第1字节数据就进入了第1片74LS164中,而当第2个8个脉冲到来后,第1字节数据就进入了第2片74LS164,而随后的第2字节的数据则进入了第1片74LS164。这样,当第3个8个脉冲完成后,首次送出的数据被送到了最下面的164(第3片)中,其它数据依次出现在第2和第1片74LS164中,实现了数据在74LS164中的串行输入、并行输出。在方式0状态下,串行口为同步移位寄存器方式,其波特率是固定的,为fOSC/12。数据由RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)端输出。发送、接收数据时低位在先。所以根据

37、本小姐下面提供的电路图,在编写程序时,查共阳数码管的段码的二进制数据应该将正常的共阳数码管09的二进制值按位反序排序,如原来的二进制为(C0H),要改为(03H),就能使数码管正常显示了。3.1.4 键盘接口设计用普通按钮接10K上拉电阻,用查询法完成读键功能。3.2 电路图的绘制电路图的绘制通过PROTELL 99 SE完成。选定需要的芯片,按照PROTEL绘图的步骤完成。3.3 电路板的焊接在完成PROTEL绘图后,按照连接好的线路图,将芯片焊接到对应的位置上。检查线路,看是否焊接出现短路情况。3.4 打开电源前应注意的问题1)先测火线、地线、零线各线之间有没有电阻;2)测控制板上各IC的

38、5V电源是否接正确、有没有与地短路;3)确认IC方向是否插正确;4)第一次开开关时,必须手不能离开开关。若有异样,立刻切断电源;4软件设计部分4.1 阳历程序的设计因为使用了时钟芯片DS1302,阳历程序只需要从DS1302各寄存器中读出年、周、月、日、小时、分、秒等数据,再处理既可。在首次对DS1302进行操作之前,必须对他进行初始化,然后从DS1302中读出数据,再经过处理后,送给显示缓存单元。阳历程序流程图见图4.1所示。开 始初始化13021302开始振荡从1302中读出年、周、月、日、小时、分、秒读出的数据都为BCD码,将其高低位分离,送显示缓存 图4.1 阳历程序流程图4.2 时间

39、调整程序设计调整时间用3个调整按纽,1个作为移位、控制用,另外2个作为加个减用,分别定义为控制按纽、加按纽、减按纽。在调整时间过程中,要调整的位与别的位应该有区别,所以增加了闪烁功能,即调整的位一直在闪烁,直到调整下一位。闪烁原理就是,让要调整的一位每隔一定时间熄灭一次,比如说50ms。利用定时器记时,当到达50ms溢出时,就送给该位熄灭符,在下一次溢出时,再送正常显示的值,不断交替,直到调整该位结束。此时送正常显示值给该位,再进入下一位调整闪烁程序。时间调整程序流程图如图4.2所示。控制键有效,进入月调整程序控制键有效,进入年调整程序等待按键程序等待按键程序减键有效加键有效加键有效减键有效月

40、减1年加1月加1年减1控制键有效,进入星期调整程序控制键有效,进入日调整程序等待按键程序等待按键程序减键有效加键有效加键有效减键有效星期减1日加1星期加1日减1控制键有效,进入分调整程序控制键有效,进入小时调整程序等待按键程序等待按键程序减键有效加键有效加键有效减键有效分减1小时加1分加1小时减1控制键有效,跳出时间调整程序,进入主循环程序图4.2时间调整程序流程图4.3 阴历程序设计阴历程序的实现是要靠阳历日期来推算的,要根据阳历来推算阴历日期,首先要计算法。推算方法就是,根据阳历当前日期在一年中的天数来计算阴历日期。阳历一个月不是30天就是31天(2月除外,闰年2月为29秒天,平年2月为2

41、8天)。阴历一年有12个月或13个月(含闰月),一个月为30天 或29天。如果把一个只有29天的月称为小月,用1为标志,把30天的月称为大月,用0为标志,那么12位二进制能表示一年12个月的大小。如果有闰月,则把闰月的月份作为一个字节的高4位,低4位表示闰月大小,大月为0,小月为1,这样一个字节就包含了所有闰月的信息。阴历春节和阳历元旦相差的天数也用一个字节表示。总共用4字节就可以存储一年中任何一天阳历和阴历的对应关系的有关数据,例如2004年的阴历和阳历对应关系表如表4.1所示。2004年的春节和元旦差21天,这样2004年的信息表示为:21,42H,52H,21H。其中表示12个月大小信息

42、的字节,第4位和第7位不用。第个字节为十进制,其他的都为十六进制。按此方法,50年的阳历和阴历对应关系表总共使用200字节。月份123456789101112闰2月大小小大大大小大小大小大小大小天数1000101010101二进制29303030293029302930293016进制425221表4.12004年阴历和阳历对应关系表2000 2050年的关系表:35,15H,51H,00H(2000)23,11H,52H,41H(2001)42,12H,65H,00H(2002)31,11H,32H,00H(2003)21,42H,52H,21H(2004)39,52H,25H,00H(20

43、05)28,25H,04H,71H(2006)48,66H,42H,00H(2007)37,33H,22H,00H(2008)25,15H,24H,51H(2009)44,05H,52H,00H(2010)33,22H,65H,00H(2011)22,21H,25H,41H(2012)40,24H,52H,00H(2013)30,52H,42H,91H(2014)49,55H,05H,00H(2015)38,26H,44H,00H(2016)27,53H,50H,60H(2017)46,53H,24H,00H(2018)35,25H,54H,00H(2019)24,41H,52H,41H(20

44、20)42,45H,25H,00H(2021)31,24H,52H,00H(2022)21,51H,12H,21H(2023)40,55H,11H,00H(2024)28,26H,21H,61H(2025)47,26H,61H,00H(2026)36,13H,31H,00H(2027)25,05H,31H,51H(2028)43,12H,54H,00H(2029)33,51H,25H,00H(2030)22,42H,25H,31H(2031)41,32H,22H,00H(2032)30,55H,02H,71H(2033)49,55H,22H,00H(2034)38,26H,62H,00H(20

45、35)27,13H,64H,60H(2036)45,13H,32H,00H(2037)34,12H,55H,00H(2038)23,10H,53H,51H(2039)42,22H,45H,00H(2040)31,52H,22H,00H(2041)21,52H,44H,21H(2042)40,55H,44H,00H(2043)29,26H,50H,71H(2044)47,26H,64H,00H(2045)36,25H,32H,00H(2046)25,23H,32H,50H(2047)44,44H,55H,00H(2048)32,24H,45H,00H(2049)22,55H,11H,30H(20

46、50)有了算法和数据以后,就可以设计软件了。根据当前阳历的日期,算出阳历为该年中的第几天。图4.3为计算阳历中任何一天在该年中为第几天的流程图。计算出当前阳历日期为该年中的第几天后,再减去阳历该年春节和元旦的日差,如果够减,则相减的结果就是阴历在该年的总第几天了。根据该数据就可以推算出具体的当前阴历日期;如果不够减,则表示当前阴历年为阳历年的前一年。这种情况下,根据实际,当前阴历日期会处于阴历11月或12月,此时春节和元旦的日差减去前面计算出的当前阳历日期在阳历年为第几天的数据,其结果表示当前阴历日期离春节的天数。计算出阳历天数为该年的第几天,存放在R2和R3中。计算出天数后如果大于#FFH,

47、则把#FFH存放在R2中,余值存放在R3中。也就是说在用积存器R2和R3表示的天数信息中,R2充当主积存器,数据先存满R2,再存R3。在整个转换程序中,这里面的数据不能被覆盖。 计算出阳历总天数后,就可以根据它来推算阴历日期。推算方法是,先用总天数减去春节和元旦的日差,如果结果为1,则该天正好是春节(因为春节在元旦之后,在计算春节和元旦的日差时,假设元旦为0天,春节为n天,则日差为n。前面计算的阳历总天数是该天在该年中的第几天,是以元旦为1而得到的,与计算春节和元旦日差的这种方法相比,其数值少了1,所以要在原来本应该以0作为该天就是春节的依据的基础上加1,所以以1作为该天是春节的标志);如果结

48、果小于1,则阴历应该是阳历的前一年;如果结果大于1,说明阳历和阴历为同一年。再根据查表所得的该年的阴历的闰月和大小月的信息,就可以推算出该天的阴历日期了。图4.4为由总天数推算出阴历日期的程序流程图。计算阳历天数结束,总天数中的为当前日期在阳历年中的第几天Y总天数加入号数 Y当前数是总天数NN与当前月同?月数加1总天数中加入该月天数当前月为1月?置阴历总天数为0 图4.3计算阳历天数程序流程图 程序入口NR2=0? 月份为当前正在减的月份,号数为R2中的值Y月份为当前正在减的月份的前一个月的最后一天YNR3=0?R2=R2+R3R3=0N下个月为闰月?够减YYN月加1减去闰月天数R2减1月天数

49、 图4.4推算阴历日期的程序流程图5调试调试中出现的问题及解决方法:(1)晶振无法正常起振原因:VCC混有交流成分解决方法:在电源正负极间接上一个电容。(2)数码管显示乱码形式原因:数码管的段码表错误,没有与硬件相结合。解决方法:将09十个数字全部输入显示,找出与之对应的正确的数码管段码表。(3)无法初始化DS1302 原因:电路板上DS1302虚焊。解决方法:将DS1302虚焊部分重新焊接。6小结可见技术在不断进步,机械式时钟已经被淘汰,取而代之的是具有高度准确性和直观性且无机械装置,具有更长的使用寿命等优点的数字时钟。数字时钟更具人性化,更能提高人们的生活质量,更受人们欢迎。无可否认机械时

50、代已经过去,电子时代已经到来。做为新时代的我们,更应该提高自身能力,适应新时代的发展。知识来自实践,多去生活中探询所需要的。对于上述所提到的研究课题,我们应尽量考虑到人的因素,增强时钟的实用性和操作性,为使用者提供切实的方便,营造一种舒适的生活氛围。所以,在设计的时候,应该从多方面、多角度去考虑问题,而且应该进一步提高时钟的质量。7致谢首先,感谢学校四年来对我的培养。本课题的前期准备以及整个研究过程是在王文强老师的耐心指导下完成的,他严谨的治学态度、扎实的理论基础、全身心投入工作的精神以及对学生尽心尽力的态度给了我极大的帮助与鼓励,使我受益匪浅,在此谨对他表示崇高的敬意和衷心的感谢!还要衷心感

51、谢其他所有对本课题的研究和论文撰写有过帮助的同学。8参考文献【1】余永权.ATMEL89 系列单片机应用技术,北京航空航天大学出版社,2002【2】李广弟等.单片机基础,北京航空航天大学出版社,2001【4】AT89C52 Datasheet ,ATMEL,2004【5】DS1302 Datasheet ,DALLAS Semiconductor,2004【6】74LS164 Datasheet www.21IC.com 9附录 ;* ;* 万 年 历 程 序 * ;*;从1302中读出数据放在67H(高两位年)66H(低两位年)65H(月)64H(星期);63H(日)62H(小时)61H(分

52、)60H(秒)57H(农历月)56H(农历日);显示缓存单元7CH-7BH(4CH-4BH)(年低位),7AH-79H(4AH-49H)月,78H(48H)星期;77H-76H(47H-46H)日,75H-74H(45H-44H)小时,73H-72H(43H-42H)分;71H-70H(41H-40H)秒,5EH-5DH(55H-54H)农历年;5CH-5BH(53H-52H)农历月,5AH-59H(51H-50H)农历日;闰月标志为F0,定时器T1为调整时间闪烁用。;SCLKEQU P3.2 IOEQU P3.3 RSTEQU P3.4yearDATA 66H monthDATA 65Hwe

53、ekDATA 64H dayDATA 63HhourDATA 62H mintueDATA 61H secondDATA 60H DS1302_ADDRDATA 32H DS1302_DATADATA 31HORG0000HAJMPSTARTORG0003HRETIORG000BHRETIORG001BHLJMPINTT1ORG0023HRETIORG002BHRETI;*;* 主 程 序 *;*START:SETBEAMOVSCON,#00H;串行输出,方式0MOVTMOD,#10H;计数器1,方式1MOVTL1,#00HMOVTH1,#00HMOVDS1302_ADDR,#8EHMOVDS

54、1302_DATA,#00H;允许写1302LCALLWRITEMOVDS1302_ADDR,#90HMOVDS1302_DATA,#0A6H;1302充电,充电电流1.1mALCALLWRITEMAIN1:MOVDS1302_ADDR,#8DH;读出年LCALLREADMOVyear,DS1302_DATAMOVDS1302_DATA,#8BH;读出星期LCALLREADMOVweek,DS1302_DATAMOVDS1302_ADDR,#89H;读出月LCALLREADMOVmonth,DS1302_DATAMOVDS1302_ADDR,#87H;读出日LCALLREADMOVday,DS

55、1302_DATAMOVDS1302_ADDR,#85H;读出小时LCALLREADMOVhour,DS1302_DATAMOVDS1302_ADDR,#83H;读出分LCALLREADMOVmintue,DS1302_DATAMOVDS1302_ADDR,#81H;读出秒LCALLREADMOVsecond,DS1302_DATAMOVR0,year;年分离,送显示缓存LCALLDIVIDEMOV7BH,R1MOV4BH,R1MOV7CH,R2MOV 4CH,R2MOV78H,weekMOV48H,weekMOVR0,month;月分离,送显示缓存LCALLDIVIDEMOV79H,R1MO

56、V49H,R1MOV7AH,R2MOV 4AH,R2MOVR0,day ;日分离,送显示缓存LCALLDIVIDEMOV76H,R1MOV46H,R1MOV77H,R2MOV 47H,R2MOVR0,hour ;小时分离,送显示缓存LCALLDIVIDEMOV74H,R1MOV44H,R1MOV75H,R2MOV 45H,R2MOVR0,minute;分分离,送显示缓存LCALLDIVIDEMOV72H,R1MOV42H,R1MOV73H,R2MOV 43H,R2MOVR0,second;秒分离,送显示缓存LCALLDIVIDEMOV70H,R1MOV40H,R1MOV71H,R2MOV 41

57、H,R2LCALLDISPLAYLCALLGENGXIAN;更新农历程序JNBP1.1,SETGJNBF0,SSSCLRP1.3;闰月,则p1.3清0,指示灯亮LJMPMAIN1SSS:SETBP1.3;非闰月,则p1.3置位,指示灯灭LJMPMAIN1;*;* 公 历 设 置 程 序 *;* SETG:SETBTR1SETBET1CLR08HCLR09HCLR0AHCLR0BHCLR0CHCLR0DHCLR0EHCLR0FHMOVDS1302_ADDR,#8EHMOVDS1302_DATA,#00H;允许写1302LCALLWRITEMOVDS1302_ADDR,#80HMOVDS1302_

58、DATA,#80H;1302停止振荡LCALLWRITEGWAIT:LCALLDISPLAYJNBP1.1,GWAITSETG1:LCALLDISPLAYJNBP1.1,SETG2JNBP1.2,GADDYEARAJMPSETG1 GADDYEAR:MOVR7,66H;年加1LCALLADD1MOV66H,ACJNE A,#51H,GADDYEAR1MOV66H,#01H GADDYEAR1:MOVDS1302_ADDR,#8CH;年值送入1302MOVDS1302_DATA,66HLCALLWRITEMOVR0,66HLCALLDIVIDE;年分离送显示缓存MOV4BH,R1MOV7BH,R

59、1MOV4CH,R2MOV7CH,R2 WAITT1:LCALLDISPLAYJNBP1.2,WAITT1AJMPSETG1 SETG2:SETB0AH;调月时闪标志 GWAIT2:LCALLDISPLAYJNBP1.1,GWAIT2SETG3:LCALLDISPLAYJNBP1.1,SETG4JNBP1.2.GADDMONTHAJMPSETG3 GADDMONTH:MOVR7,65H;月加1LCALLADD1MOV65H,ACJNEA,#13,GADDMONTH1MOV65H,#01H GADDMONTH1:MOVDS1302_ADDR,#88H;月值送入1302MOVDS1302_DATA

60、,65HLCALLWRITEMOVR0,65HLCALLDIVIDE;月分离送显示缓存MOV79H,R1MOV49H,R1MOV7AH,R2MOV4AH,R2 WAITT2:LCALLDISPLAYJNBP1.2,WAITT2AJMPSETG3SETG4:SETB0BH;调日时闪标志 GWAIT4:LCALLDISPLAYJNBP1.1,GWAIT4SETG5:LCALLDISPLAYJNBP1.1,SETG6JNBP1.2,GADDDAYAJMPSETG5 GADDDAY:MOVR7,63H;日加1LCALLADD1MOV63H,ACJNEA,#32H,GADDDAY1MOV63H,#01H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论