《毕业设计(论文)基于DS1302点阵万历显示屏.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于DS1302点阵万历显示屏.doc(51页珍藏版)》请在三一办公上搜索。
1、题 目 基于DS1302的点阵万年历显示屏 分 院: 专 业: 电子信息工程 班 级: 学 号: 学生姓名: 指导教师: 起讫日期: 2009.22009.6 摘 要 在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响。为了更好的利用我们自己的时间,我们必须对时间有一个度量,因此产生了钟表。钟表的发展是非常迅速的,从刚开始的机械式钟表到现在普遍用到的数字式钟表,即使现在钟表千奇百怪,但是它们都只是完成一种功能计时功能,只是工作原理不同而已,在人们的使用过程中,逐渐发现了钟表的功能太单一,没有更大程度上的满足人们的需求。因此在这里,我想能不能把一些辅助功能加入
2、钟表中去。在此设计中所设计的钟表不但具有普通钟表的功能,它还能实现额外的功能:万年历显示与查询、文字的显示。 本系统采用了以广泛使用的单片机技术为核心,软硬件结合,使硬件部分大为简化,提高了系统稳定性,并采用LED显示电路、键盘电路,使人机交互简便易行,此外结合供电电路。本方案设计出的万年历可以显示日期时间以及文字信息。关键词:万年历 单片机 DS1302 AT89S51Abstract In the contemporary busy work and the life, the time all has the extremely close relationship with our e
3、ach people, each people all receive the time the influence.In order to better uses our time, we must have a measure to the time, therefore has produced the clock and watch.The clock and watch development was extremely rapid, from uses generally the mechanical clock and watch which just started the d
4、igital clock and watch which to the present, even if present clock and watch all sorts of strange and unusual, but they all only complete one kind of function - - time function, only was the principle of work different, in peoples use process, had discovered gradually the clock and watch function to
5、o was unitary, does not have in the greater degree satisfied peoples demand.Therefore in here, I wants to be able to join some assistance function in the clock and watch.The clock and watch designs which in this design not only has the ordinary clock and watch function, it also can realize the extra
6、 function: Ten thousand calendar demonstrations and inquiry, Chinese character demonstration. This system has used take the widespread use monolithic integrated circuit technology as the core, the software and hardware union, causes the hardware part is greatly the simplification, enhanced the syste
7、m stability, and uses the LED display circuit, the keyboard electric circuit, causes man-machine interaction easy to do and easy, in addition unifies the watch-dog and the feed circuit.This project design ten thousand calendars may demonstrate the date time as well as the writing information.Key wor
8、ds: Ten Thousand Calendars;Monolithic Integrated Circuit;DS1302;AT89S51目 录摘 要IAbstractII目 录III引 言- 1 -1.系统的总体设计- 2 -1.1硬件设计- 2 -1.1.1系统电路示意图- 2 -1.1.2主要硬件器件- 2 -1.2软件设计- 3 -1.3相关开发工具- 3 -2.硬件设计- 4 -2.1微处理器 AT89S51- 4 -2.1.1主要特性- 4 -2.1.2管脚说明- 5 -2.1.3振荡器特性- 6 -2.1.4芯片擦除- 6 -2.2时钟实现方案论证- 6 -2.2.1数字电路
9、实现时钟方案- 7 -2.2.2定时器实现时钟方案- 7 -2.2.3时钟芯片实现时钟方案- 8 -2.3时钟芯片DS1302- 9 -2.3.1简介- 9 -2.3.2引脚及内部结构- 10 -2.3.3内部寄存器- 10 -2.3.4控制字- 12 -2.3.5复位- 12 -2.3.6数据输入输出- 13 -3.软件设计- 14 -3.1软件总体部分的设计- 14 -3.2星期程序- 14 -3.2.1理论分析- 14 -3.2.2程序实现- 15 -3.3键盘实现- 15 -3.3.1万年历查询程序- 16 -3.3.2万年历设置程序- 17 -3.4万年历显示程序- 18 -4.安装
10、与调试- 20 -4.1硬件调试- 20 -4.2软件调试- 20 -4.3综合调试- 20 -4.4系统安装- 20 -结 论- 21 -参考文献- 22 -附件一:系统原理图- 23 -附件二:PCB图- 24 -附件三:单片机程序设计- 25 -附录四:自制实物- 44 -后 记- 45 -引 言 万年历是采用数字电路实现对时,分,秒,数字显示的计时装置,广泛用于个人家庭,车站, 码头,办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表
11、原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,但是所有这些,都是以钟表数字化为基础的。因此,研究万年历及扩大其应用,有着非常现实的意义。 市场上有许多电子钟的专用芯片如:LM8363、LM8365等,但它们功能单一,电路连接复杂,不便于调试制作!但是考虑到用单片机配合时钟芯片,可制成功能任意的电子钟,而且可以做到硬件简单、成本低廉。所以本系统采用了以广泛使用的单片机AT89C51技术为核心,配合时钟芯片DS1302。软硬件结合,使硬件部分大为简化,提高了系统稳定性,并采用LED显示电路、键盘电
12、路,使人机交互简便易行,此外结合看门狗和供电电路。本方案设计出的万年历数字钟可以显示时间、日期及文字信息的功能。 本设计中我重点研究实现了单片机+时钟芯片这种模式的万年历,从原理上对单片机和时钟芯片有了深一步的认识,这些基本功能完成后,在软件基础上实现万年历设置与查询的功能。 本设计在很多场合都能用到,可以把此万年历装在镜框中或其它工艺品中,以便更加实用。1.系统的总体设计1.1硬件设计1.1.1系统电路示意图 系统硬件连接核心部分示意图,如图1-1所示 51单片机74HC13874HC595DS1302点阵显示ISP下载载电源图1-1 系统硬件连接核心部分示意图 此设计是以89S51单片机为
13、核心作为控制模块,控制DS1302芯片的输入,使作为时间记录和存储模块的时钟芯片DS1302输出时间,再连接点阵显示屏(8*8点振块),显示我们想要的结果。软件部分以C语言为基础进行编程,通过软硬结合实现系统设计。1.1.2主要硬件器件 系统所需主要器件有: 专用时钟芯片DS1302 ,单片机AT89S51芯片,译码器74HC138,74HC164芯片,74HC595芯片,数码管。 各部分的功能: (1)DS1302 实时时钟芯片。X1.X2引脚接32.768KHz晶振 ,当复位端RST置1时,在SCLK时钟脉冲作用下从串行输入/输出端口I/O脚串行输入/输出数据。其中,输出时时钟下降沿有效;
14、输出时上升沿有效。本方案通过读写DS1302内部7个读/写寄存器,得到所需时间,读写的时间单字节两位BCD形式。 (2)74HC138 译码器也称解码器译码过程实际上是一种翻译过程。译码器的输入是n位二值代码,输出是m个表征代码原意的状态信号(或另一种代码)。一般情况下有m小于等于2的n次方,即译码器输入线比输出线要少。74HC138为3线-8线变量译码器。 (3)显示部分 共阴LED数码管依次显示年、月、日、星期、小时、分、秒。数码管由74HC164驱动。74HC164八位串行输入串行输出移位寄存器,其中前七位输出用于驱动数码管,剩下一位输出作为下一数码管输入实现多位串行。因为没有使用译码器
15、故由SDATA端口串行输入的时间数据须经自行编写译码程序“翻译”才能正常显示时间。另外,由于各数码管串行,因此,在数据串行输入时会有闪烁。 (4)74HC595芯片 74HC595芯片是一种串入并出的芯片,在电子显示屏制作当中有广泛应用。8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。 (5)键盘 共设5个按键。K0,k1,k2,k3,k4。分别对应万年历设置,控制1,控制2,万年历查询,复位。1.2软件设计 软件设计的主要部分如图1-2:图1-2 软件设计的主要部分 (1)初始化部分: 初始化部分主要完成的是初始时间日期的设置。 (2)万年历查询部分:输入你要查询的公历信息,包括
16、年,月,日信息,返回对应得星期信息。 (3)万年历设置部分:这部分主要完成时间信息的设置,包括年,月,日,星期,小时,分,秒信息。 (4)万年历显示部分: 把当前的时间信息在点阵显示屏上显示出来,包括年,月,日,星期,小时,分,秒。1.3相关开发工具 系统选用的仿真器是南京万利的51系列。选用的调试器是keil,支持8位机的汇编语言和C语言,基于友好的图形用户界面(GUI),支持用户观察或修改嵌入式处理器的寄存器和存储器配置、数据变量的类型和数值,堆栈和寄存器的使用,支持程序断点设置,单步、断点或者全速运行等特性1。2.硬件设计2.1微处理器 AT89S51 AT89S51简介 AT89S51
17、是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器。该器件采用ATMEL高密度非易失存储器制造技术制造,兼容标准MCS-51指令系统及89S51引脚结构和输出管脚相兼容,芯片内集成了通用8位中央处理器和ISP Flash存储单元,由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S51是一种高效微控制器,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供了一种灵活性高且高性价比的解决方案2。图2-1微处理器 AT89S
18、51示意图2.1.1主要特性 8031CPU与MCS-51兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年 全静态工作:0Hz-24KHz 三级程序存储器保密锁定 128*8位内部RAM 32条可编程I/O线 两个16位定时器/计数器 6个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路2.1.2管脚说明 VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P
19、0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储
20、器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89S51的一些特殊功能口,如下所示: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(
21、外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是
22、:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存
23、储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。2.1.3振荡器特性 XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。2.1.4芯片擦除 整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。在芯片擦操
24、作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。 此外,AT89S51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止3。2.2时钟实现方案论证 为了制作设计了以下三种方案:(1) 数字电路实现时钟方案(2) 定时器实现时钟方案(3) 时钟芯片实现时钟方案2.2.1数字电路实现时钟方案 数字逻辑电路通常分为组合逻辑电路与时序逻辑电路。在组合逻辑电路中,任意时刻的输出信
25、号仅取决于该时刻的输入信号,与信号作用前电路原来的状态无关。而时序逻辑电路中,任一时刻的输出信号不但取决于当时的输入信号,而且还取决于电路原来的状态。组合逻辑电路通常由门电路构成,而时序逻辑电路则由门电路与触发器共同组成。实际应用中,更多的是由组合逻辑电路与时序逻辑电路共同组成的数字电路系统4。 电路图如图2-2:图2-2 数字电路实现时钟电路图2.2.2定时器实现时钟方案 我们知道在51单片机中有两个定时器,我们就可以用这两个定时器来对主程序的运行进行监控。我们可以对T0设定一定的定时时间,当产生定时中断的时候对一个变量进行赋值,而这个变量在主程序运行的开始已经有了一个初值,在这里我们要设定
26、的定时值要小于主程序的运行时间,这样在主程序的尾部对变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。对于T1我们用来监控主程序的运行,我们给T1设定一定的定时时间,在主程序中对其进行复位,如果不能在一定的时间里对其进行复位,T1的定时中断就会使单片机复位。在这里T1的定时时间要设的大于主程序的运行时间,给主程序留有一定的的裕量。而T1的中断正常与否我们再由T0定时中断子程序来监视。这样就够成了一个循环,T0监视T1,T1监视主程序,主程序又来监视T0,从而保证系统的稳定运行5。 由单片机定时器实现时钟功能; 单片机定时器实现电路1如图2-3:图2-3
27、 单片机定时器实现电路图 单片机定时器实现电路2如图2-4:图2-4 单片机定时器实现电路图2.2.3时钟芯片实现时钟方案 单片机配合时钟芯片如图2-5:图2-5 单片机配合时钟芯片电路图 这三种方案各自都有优点和缺点,下面是它们的优缺点比较:数字电路实现定时器实现专用时钟芯片实现优点简单、无需编程芯片少、价格低功能强、掉电不丢失缺点不灵活、掉电丢失编程复杂、掉电易丢失价格高、难掌握 通过比较确定采用第三种方案,即用专用时钟芯片与单片机配合实现时钟电路。利用专用时钟芯片DS1302产生时间,通过对单片机编程实现对时钟芯片的控制把时间传送出去,并通过数码管显示出来。2.3时钟芯片DS13022.
28、3.1简介 DS1302是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒分时日日期月年的信息,每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM指示决定采用24或12小时格式DS1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线:1、RES复位;2、I/O数据线;3、SCLK串行时钟时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信DS1302工作时功耗很低保持数据和时钟信息时功率小于1mW6。 DS1302是由DS1202改进而来增加了以下的特性双电源管脚
29、用于主电源和备份电源供应Vcc1为可编程涓流充电电源附加七个字节存储器它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域,下面将主要的性能指标作一综合: (1) 实时时钟具有能计算2100年之前的秒分时日日期星期月年的能力还有闰年调整的能力 (2) 31*8位暂存数据存储RAM (3) 串行I/O口方式使得管脚数量最少 (4) 宽范围工作电压2.0V5.5V (5) 工作电流2.0V 时,小于300nA (6) 读/写时钟或RAM 数据时有两种传送方式单字节传送和多字节传送字符组方式 (7) 8脚DIP封装或可选的8脚SOIC封装根据表面装配 (8) 简单3线接口 (9) 与TTL
30、兼容Vcc=5V (10) 可选工业级温度范围-40+85 (11) 与DS1202 兼容 (12) 在DS1202 基础上增加的特性 对Vcc1有可选的涓流充电能力 双电源管用于主电源和备份电源供应 备份电源管脚可由电池或大容量电容输入 附加的7字节暂存存储器2.3.2引脚及内部结构DS1302的管脚排列及内部结构如图2-6所示 :X1,X2 32.768KHZ晶振管脚GND 地 RST 复位脚I/O 数据输入/输出SCLK 串行时钟VCC1,VCC2 电源供电管脚图2-6 DS1302的管脚排列及内部结构图2.3.3内部寄存器DS1302内部有秒、分、时、日、月、星期、年、控制、涓流等寄存
31、器CH:时钟停止位0:振荡器工作允许 1:振荡器停止WP:写保护位0:寄存器数据能够写入 1:寄存器数据不能写入TCS:涓流充电选择1010:使能涓流充电 其他:禁止涓流充电秒寄存器的第七位为CH位时寄存器的第七位为12/24模式位1:24小时模式 0:12小时模式时寄存器的第五位为AP/AM位1:下午模式 0:上午模式 控制寄存器的第七位为WP位 涓流选择寄存器各位如下:TCSTCSTCSTCSDSDSRSRS当DS=11或00时,即使TCS=1010,充电也被禁止。DS1302时钟芯片内部有写入和读出函数,使用时可在程序中调用此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突
32、发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类,一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为 COHFDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为 FEH(写)、FFH(读)。 DS1302内部时钟寄存器和RAM如图2-7所示:图2-7 DS1302内部时钟寄存器和RAM2.3.4控制字 DS1302的控制字如图2-8所示:图2-8 DS1302的控制字 控制字节的最高有效位(位7)必须是
33、逻辑1,如果它为0,则不能把数据写入到DS1302中;位6如果为0,则表示存取日历时钟数据,为1表示存取RAM 数据;位至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。2.3.5复位 通过把输入驱动置高电平来启动所有的数据传送。输入有两种功能:首先,接通控制逻辑,允许地址命令序列送入移位寄存器;其次,提供了终止单字节或多字节数据的传送手段。当为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中置为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前, 必须保持低
34、电平。只有在SCLK为低电平时,才能将RST置为高电平。图2-9 复位电路图2.3.6数据输入输出 在控制指令字输入后的下一个SCLK时钟的上升沿时数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位至高位7,数据读写时序见图2-10:图2-10 数据读写时序图3.软件设计3.1软件总体部分的设计 系统软件主要由主程序、设置日期时间程序及时间显示程序组成,主程序的流程图,如图3-1所示。图3-1主程序流程图3.2星期程序3.2.1理论分析 公历日是非常有规律的,所以公历日所对应的星期天可以通过计
35、算直接得到理论上公元0年1月1日为星期日,只要求得公历日离公元0年1月1日的日子数除7后的余数就是星期天为了简化计算采用月校正法根据公历的年月日可直接计算出星期天其算法是日期年份所过闰年数月校正数之和除7的余数就是星期天但如果是在闰年又不到3月份上述之和要减一天再除7其1,12月的校正数据为6 2 2 5 0 3 5 1 4 6 2 4在本程序中采用1个字节表示年份闰年数也只计算1900年以后的闰年数,所以实际校正数据也和上述数据不同7。3.2.2程序实现 具体算法和理论分析中相同,程序流程图如图3-2所示:图3-2 程序流程图3.3键盘实现 键盘程序是软件设计的核心部分,键盘包括五个键:万年
36、历设置键,控制键1,控制键2,万年历查询键,复位键;分别对应k0,k1,k2,k3,k4; 键盘部分总体流程图如图3-3所示:图3-3 键盘部分总体流程图3.3.1万年历查询程序 此部分主要完成万年历查询程序,它对应的按键是k3,当此按键按下后,年信息就闪烁,这时你可以通过k1(对应闪烁信息加一)或k2(对应闪烁信息减一)输入要查询的年份,输入完年份信息后,按k0键,就开始同样通过k1和k2键设置要查询的月信息,日信息设置采用同样方法;当要查询的所信息设置完了后,按k3键,把查询得到的信息显示出来,主要包括该公历日对应星期信息,这时再按k3键返回,或不进行任何操作,4秒钟超时自动返回。 流程图
37、如图3-4所示:图3-4 万年历查询流程图3.3.2万年历设置程序 设置子程序包括:万年历信息的设置。它对应得按键是k0. 当k0键按下后,进入设置函数;然后接收键盘,此时若k0键按下,则进行万年历信息调整;若k3键按下,则进行万年历信息查询。 万年历信息调整:首先是年信息闪烁,若k0键按下,则进行下一时间信息调整,k1对应闪烁时间信息加一,k2对应下一时间信息减一,k3保存当前设置的时间信息并返回。 程序流程图如图3-5所示:图3-5 万年历设置程序流程图3.4万年历显示程序 数字钟使用数码管作为显示单元,通过DIS_CLK提供串行移位时钟,DIS_DATA提供串行数据,可以方便的控制数码管
38、显示数据。且本设计为静态数码管显示,不需要时时更新,只是在要改变显示内容时才刷新一次。这有效的减少了对单片机资源的占用。 其电路原理图如图3-6所示:图3- 6 数码管电路原理图 这部分程序主要是把当前时间在数码管上显示出来,程序流程图,如图3-7所示图3-7 程序流程图4.安装与调试4.1硬件调试 根据电路图选购器件,然后焊接到万能板,上电前,根据电路图检查电路是否焊接正确,并且用万能表检查是否有虚焊及短路的地方,检查正确后上电,用万能表测试芯片的工作电压是否正常。4.2软件调试 本系统的软件部分,全部采用C语言编写,除去语法错误和逻辑错误后,通过直接下载到单片机来具体调试。采用了自下到上的
39、调试方法,即先单独调试好每一项功能,然后再连接成一个完整的系统调试。这样保证了软件编写的正确性和可行性。4.3综合调试 调试整个系统时,我们把软件编出的每一项功能结合相应的硬件进行调试。这样保证在综合调试的时候,顺利查找错误,具体分析解决。这是本设计中收获最大的部分,不但能发现和解决很多问题,而且可以看着作品一步一步的成型,心得体会也大多在此得到。4.4系统安装 启动keil应用程序,打开系统的源代码,对源代码进行编译,然后生成可执行代码,最后导出可执行代码的.hex文件。将可执行代码的.hex文件导入到对单片机进行程序烧写的应用程序中,执行应用程序的程序烧写功能,将可执行代码的.hex文件写
40、入单片机中。对单片机烧写成功后,将单片机放入系统版中,对系统上电后单片机就可以实现用户想要实现的功能。结 论 此次设计具有电路简单、功能全、成本低、功耗低等优点,万年历时钟计时准确,显示直观、使用方便。 最终实现的设计可以显示当前日期时间信息,对应的星期信息及文字信息。经过本次设计,作者在器件选型、器件购买、电路原理图设计、电路板的加工焊接、以及软硬件调试等多方面积累了宝贵的经验和教训。这些经验和教训皆来之不易,必将为日后的工作和学习打下夯实的基础。 本设计是作者第一次进行的嵌入式开发,由于经验的不足和水平的有限,在设计中难免存在不完善的地方,恳请各位老师批评指正。参考文献1 李光飞,楼然苗.
41、 51系列单片机设计实例M.北京航空航天大学出社,2003.2 向继文,廖立新.基于AT89S51的电子钟系统设计J.机电产品开发与创新,2007.3 冯建华,赵亮.单片机应用系统设计与产品开发M.北京:人民邮电出版社,2004.4 王永军、从玉珍主编,数字逻辑与数字系统M.北京:电子工业出版社,1999年8月.5 胡汉才.单片机原理及其接口技术M.北京:清华大学出版社.6 张萌,和湘,姜斌单片机应用系统开发综合实例M北京:清华大学出版社,20077 王越明.电子万年历的设计J.黑龙江科技信息,2004.8 胡伟,季晓衡.单片机C程序设计及应用实例M.北京:人民邮电出版社,2003,47047
42、8.9 谭浩强,张基温C/C+程序设计教程M北京:高等教育出版社,200410 杨清德,康娅LED及其工程应用M 北京:人民邮电出版社, 200711 周坚单片机C语言轻松入门J北京:北京航空航天大学出版社200612 刘焕平,童一帆单片机原理与接口技术M北京:北京航空航天大学出版社,200713 马忠梅,籍顺心,张凯,等.单片机的C语言应用程序设计M.北京:北京航空航天大学出版社,2001,143164.附件一:系统原理图附件二:PCB图附件三:单片机程序设计#include #define uchar unsigned char#define uint unsigned intsbit c
43、lk=P32;uchar code hanzi; /汉字字模uchar code timer1116;/09数字uchar code sw; /138驱动数据void Show_word(); /待机显示按三秒间隔分别显示年、月日、星期、时分秒。void Show_pass(); /不显示一个字void Send_data(unsigned char *d); /*串口发送一行*/*/sbit resget=P13;/时钟复位sbit key_moda=P10;/模式转换sbit key_up=P11;/时钟加sbit key_Down=P12;/时钟减sbit T_CLK=P02; /DS1302引脚连接sbit T_IO =P03;sbit T_RST=P04;sbit ACC0=ACC0; /1bit数据存储位sbit ACC7=ACC7;uchar starts_time7=0x00,0x10,0x22,0x11,0x06,0