单片机万年历电子钟设计报告含电路图和源程序 联系客服

发布时间 : 星期一 文章单片机万年历电子钟设计报告含电路图和源程序更新完毕开始阅读

用累加的方法让定时时间累加一百次即可产生一秒时间:100*10ms=1000ms=1s

2.2. 总天数的算法

首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为355。然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年1月1日到输出年的该月1日的总天数。

2.3 输出月份第一天为星期几的算法

使总天数除以7取余加2得几既为星期几,若是7,则为星期日。

2.4. 算出输出月份的完整日历算法

算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并从该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。

2.5 计算某一天是星期几的算法:蔡勒(Zeller)公式

历史上的某一天是星期几?未来的某一天是星期几?关于这个问题,有很多计算公式(两个通用计算公式和一些分段计算公式),其中最著名的是蔡勒(Zeller)公式。 即:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

公式中的符号含义如下,w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于5,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。(C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月要按上一年的13月和 14月来算,这时C和y均按上一年取值。)算出来的W除以7,余数是几就是星期几。如果余数是0,则为星期日。以2049年10月1日(100周年国庆)为例,用蔡勒(Zeller)公式进行计算,过程如下:

蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 =49+[49/4]+[20/4]-2×20+[26× (10+1)/10]+1-1 =49+[12.25]+5-40+[28.6] =49+12+5-40+28

=54 (除以7余5)

即2049年10月1日(100周年国庆)是星期五。

三.系统的硬件设计与实现

3.1 电路设计框图

5

AT89S52 主控制 键盘模块 液晶显示模块 模 块 闹钟模块

3.2 系统硬件概述

本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;显示部份LCD1602实现,能够同时显示16x2即32个字符;闹钟部分由蜂鸣器构成,蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。

3.3 主要单元电路的设计 3.3.1单片机主控制模块的设计

AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。

单片机的最小系统如下图所示,18脚和19脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20脚为接地端,40脚为电源端.如图-1 所示。

6

图-1 主控制系统

3.3.2显示模块的设计

LCD1602液晶显示屏工业字符型液晶,能够同时显示16x2即32个字符。(16列2行), 有16个引脚,通过D0~D7的8位数据端传输数据和指令,引脚图如图6-5。

图6-5 LCD1602引脚示意图

LCD1602液晶显示屏引脚功能如表6-5所示: 表6-5 LCD1602引脚功能

Vss 管脚一般接地 1 管脚2 管脚3 管脚4

Vdd V0 RS 接电源(+5V) 液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高 RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器 7

管脚5 管脚6 管脚7 管脚8 管脚9 管脚10 管脚11 管脚12 管脚13 管脚14 管脚15 管脚16

R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 BLA BLK R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 E(或EN)端为使能(enable)端,下降沿使能。 底4位三态、 双向数据总线 0位 底4位三态、 双向数据总线 1位 底4位三态、 双向数据总线 2位 底4位三态、 双向数据总线 3位 高4位三态、 双向数据总线 4位 高4位三态、 双向数据总线 5位 高4位三态、 双向数据总线 6位 高4位三态、 双向数据总线 7位 背光电源正极 背光 电源负极 1602液晶模块内部的控制器共有11条控制指令,如表10-14所示:

序号 指令 1 清显示 2 光标返回 3 置输入模式 4 显示开/关控制 5 光标或字符移位 6 置功能 7 置字符发生存贮器地址 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 * 1 I/D S D C B * * 1 S/C R/L * F * 1 DL N 字符发生存贮器地址 8 置数据存贮器地址 1 显示数据存贮器地址 8