1多功能电子万年历多功能电子万年历摘要:以AT89S52单片机微处理芯片为核心,辅以DS1302实时时钟芯片,采用软、硬件结合的方法, 设计一款多功能电子万年历整个设计分为主控模块、时钟模块、键盘输入模块、显示模块、电源 模块等部分,可以显示年、月、日、时、分、秒等信息,与此同时通过内部程序指令还具有修改和 查询等功能 关键词:万年历;单片机;数码管动态显示 Multi-functional electronic calendar designStudent majoring in electronic information science and technology Chen Xiao dongTutor Wang xiu xiaAbstract::Based on AT89S52 SCM micro processing chip in the core, and with the DS1302 clock chip with hardware and software of the method of combining, design of a multi-function electronic calendar. The whole design is divided into control module, clock module, keyboard input module, display modules, power module part. And it can display the date , time, points, years and other information. Meanwhile through the internal program instructions it has modification and query function. Key words: calendar microcontroller digital tube dynamic show引言引言 目前单片机及其应用渗透到我们生活的各个领域,单片机具有体积小、功耗 低、控制功能强、扩展灵活、微型化、使用方便等优点,广泛应用于仪器仪表中,结 合不同类型的传感器,可实现诸如电压、频率、湿度、温度、速度、硬度、压力等物 理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采 用电子或数字电路更加强大 AT89S52 单片机完全兼容 51 系列单片机,有独到之处,抗干扰性能强,超低功耗, 可以远程升级,内部有专用复位电路,价格也较便宜基于这些特点,本设计以 AT89S52 单片机为核心设计一款多功能电子万年历,系统不但接口设计简单,读取方便、 显示直观、功能多样、电路简洁、便于控制,而且可以进行调整1 系系统统基本方案基本方案1.1 系统整体框图 采用单片机设计应用系统时,应考虑到在满足设计要求的情况下,硬件电路应尽 可能精简,最大限度地用程序设计完成系统的各项功能这样做的目的主要是为了: 一是节省硬件成本;二是缩短设计周期,便于系统今后的维护与升级鉴于此,该电 子万年历主要采用单片机 AT89S52、实时时钟芯片 DS1302 及 LED 数码管实现系统由 5 部分组成,如图 1 所示:主控模 块键盘输入模块显 示 模 块2图 1 系统整体框图1.2 应用模块: 电源模块:采用 5V 的直流稳压电源供电给整个系统工作 单片机控制模块:采用支持 ISP 编程技术的单片机 AT89S52 便于写程序。
键盘输入模块: 采用轻触式开关做键盘输入 时钟电路模块:采用 DS1302 时钟芯片 显示模块:采用数码管来显示 1.3 各模块方案选择和论证 单片机的选择 方案一:AT89C51 单片机 采用 AT89C51 单片机,它可以与其它 51 系列的单片机兼容、内部 ROM 全部采用 FLASH ROM、最高时钟频率可达 24MHz 且能以 3V 超低压工作但不支持 ISP 编程 技术、内部 ROM 仅为 4KB 不利于功能扩展 方案二:AT89S52 单片机 采用 AT89S52 单片机,它是一种高性能,低功耗的 8 位 CMOS 微处理芯片,除具备 AT98C51 的功能外,还支持 ISP 编程技术且内部 ROM 为 8KB,有利于功能扩展它 采用电源控制模式:时钟可停止和恢复,空闲模式,掉电模式还包括 6 个中断优先 级,4 个 8 位 I/O 口,三个 16 位定时/计数器 比较以上两种方案,我们采用方案二 AT89S52 单片机 显示模块的选择 方案一:数码管静态显示 采用 LED 数码管静态显示方法,电路容易理解,驱动程序简单,但需要每个数码管 都要一块 74LS47 来驱动显示,增高了成本,浪费系统硬件资源,而需要占用单片机多 个 I/O 口。
方案二:数码管动态显示 采用 LED 数码管动态扫显示方法,只需三块数码管驱动器 74LS47 芯片和一块译码 器芯片 74LS138 就可以驱动多个数码管,并且只需要 2 个 P 口就可以同时驱动多个数 码管显示动态显示的效果和静态显示是一样的,但却能够节省大量的 I/O 端口,而且功耗更低, 硬件利用效率高,驱动程序容易理解和编程 比较以上两种方案,我们采用方案二数码管动态显示 1.4 系统各模块的最终方案 结合整个系统的功能、成本、美观度等综合考虑,用 AT89S52 单片机为主控模块、 轻触式按键为键盘输入模块、用三块 74LS47、一块 74LS138 和 8 个三极管来驱动数码 管做显示模块2 系系统统的硬件的硬件设计设计与与实现实现2.1 系统硬件概述本系统采用 AT89S52 单片机作为主控制模块,以 DS1302 时钟芯片为基础,由单片机 将 DS1302 芯片的数据读出后进行处理,最后将处理后的数据输出给数码管来显示出年、时钟电路模块直流稳压电源模 块3月、日、时、分等信息 2.2 单片机控制模块电路的设计图 2 单片机控制模块如图 2 所示,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 引脚为电源端2.3 时钟电路的设计图 3 时钟电路与主电路的连接4如图 3 所示,DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实 时时钟电路,它可以对年、月、日、时、分、秒进行计时,具有闰年补偿功能,工作 电压为 2.5V~5.5V采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送 多个字节的时钟信号或 RAM 数据DS1302 内部有一个 31×8 的用于临时性存放数据的 RAM 寄存器DS1302 的工作电压在 2.5V 到 5.5V 范围内,2.5V 耗电小于 300nA 2.4 键盘输入的设计 按键输入部分主要用于时间的调整与设置,最终确定有四个按键来实现上述功能 由于按键比较少,所以普通按钮接在 I/O,启用 I/O 口德内部上拉电阻,用查询法完成 读键功能。
2.5 数码管显示 数码显示原理是采用的七段数码管的实现原理,LED 数码管动态扫显示方法,需三 块数码管驱动器 74LS47 芯片和一块译码器 74LS138 芯片驱动,并需要 2 个 P 口就可以 驱动多个数码管显示硬件利用效率高,驱动程序容易理解和编程原理图见图 4:图 4 七段数码管原理3 系系统统的的软软件件设计设计3.1 软件系统分析 程序流程图如图 5:5图 5 程序流程图3.2 程序编写主程序说明:单片机复位后进入初始化,把年、月、日、时、分、秒、星期等信 息写入 DS1302 后时钟芯片开始工作,单片机通过 DS1302 的 I/O 口读取信息进行处理 后把数据送给数码管显示出来因为使用了时钟芯片 DS1302,日历程序只需从各个寄存器中读出年、月、日、周、 时、分等数据,再加以处理即可在首次对 DS1302 进行操作前,必须对他尽心初始化, 然后从中读出数据,经过处理后,送到显示缓冲单元计数和进位功能设计思想如下: (1)计秒模块:以秒脉冲作为计秒电路的计数时钟信号,待计数至 60 瞬间进位,计分电路 加 1,而计秒电路则清零并重新计秒 (2)计分模块、计时模块:其设计思想与计秒模块类似。
(3)计星期模块:将计时电路产生的进位脉冲信号作为计星期模块的计数时钟信号,待计 数至 6 瞬间,计星期模块返回 0 重新开始计数 (4)计日模块:将计时模块产生的进位脉冲信号作为计日模块的计数时钟信号,通过系统 辨认,确定本月总天数 X(包括 28、29、30、31 四种情况),待计数至 X+1 瞬间,进位,计 月模块加 1,而计日模块返回 1 重新开始计数 (5)计月模块:将计日模块产生的进位脉冲信号作为计月模块的计数时钟信号,待计数至 12 瞬间,进位,计年模块加 1,而计月模块返回 1 重新开始计数 (6)计年模块:将计月模块产生的进位脉冲信号作为计年模块的计数时钟信号,待计数至 365 瞬间,计年模块返回 0 重新开始计数 主程序如下:TEMPH EQU 51HTEMPL EQU 50H6REG2 EQU 52HREG3 EQU 53HREG4 EQU 54HDAT EQU P0.7CONFIG12 EQU 1FHORG 0000HLJMP MIAN MIAN:MOV 30H,#50H ; 秒MOV 31H,#10H ; 分MOV 32H,#19H ; 时MOV 33H,#22H ; 日MOV 34H,#11H ; 月MOV 35H,#04H ; 星期MOV 36H,#07H ; 年底MOV 37H,#20H ; 年高MOV 38H,#04H ; 日MOV 39H,#10H ; 月MOV 3AH,#20H ;MOV 56H,#00H ; 数码管选择标志MOV 57H,#00H ; 闪烁标志MOV 58H,#00HCLR P0.5CLR P0.6LCALL ZIJIAN ; 调用自检子程序LCALL XIEDS1302 ; 调用写操作子程序 START:LCALL DUDS1302 ; 调用读取 DS1302 数据子程序MOV A,31HANL A,#0FHJNZ STLCALL SXKE ST:LCALL WENDU ; LCALL XIAOMIAO ; 调用扫描子程序MOV A,32HCJNE A,#00H,ST4 ; LCALL DANGQIANG ; 调用计算当前是一年中的第几天子程序LCALL DUIZHANG ; ST4: ; MOV A,56HJZ ST5LCALL DANGQIANG ; 调用计算当前是一年中的第几天子程序LCALL DUIZHANG ; 调用农历处理子程序 ST5:7LCALL CHULI ; 调用显示处理子程序LCALL SHANSHUO ; LCALL XIANSHI ; 调用显示子程序MOV A,56HCJNE A,#20,ST1 ; 等于 20 时说明修改完成,把修改后的数据。