❶ 数字钟一般有几部分电路组成
数字钟电路一般包括以下几个部分:晶体振荡电路、整形电路、计数器电路、数码转换电路、显示驱动电路。
其中计数器电路、数码转换电路、显示驱动电路都可以由单片机完成。
也有专用的时钟电路把上述几部分功能电路都集成在一个芯片上。
❷ 问一下,时钟电路的原理及应用
实时时钟电路的原理及应用
[日期:2006-11-16] 来源:互联网 作者:未知 [字体:大 中 小]
1 引言
现在流行的串行时钟电路很多,如DS1302、DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。
2 DS1302的结构及工作原理
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
2.1 引脚功能及结构
图1示出DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK始终是输入端。
2.2 DS1302的控制字节
DS1302的控制字如图2所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
2.3 数据输入输出(I/O)
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
2.4 DS1302的寄存器
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表1。
此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
3 DS1302实时显示时间的软硬件
DS1302与CPU的连接需要三条线,即SCLK(7)、I/O(6)、RST(5)。图3示出DS1302与89C2051的连接图,其中,时钟的显示用LCD。
3.1 DS1302与CPU的连接
实际上,在调试程序时可以不加电容器,只加一个32.768kHz的晶振即可。只是选择晶振时,不同的晶振,误差也较大。另外,还可以在上面的电路中加入DS18B20,同时显示实时温度。只要占用CPU一个口线即可。LCD还可以换成LED,还可以使用北京卫信杰科技发展有限公司生产的10位多功能8段液晶显示模块LCM101,内含看门狗(WDT)/时钟发生器及两种频率的蜂鸣器驱动电路,并有内置显示RAM,可显示任意字段笔划,具有3-4线串行接口,可与任何单片机、IC接口。功耗低,显示状态时电流为2μA(典型值),省电模式时小于1μA,工作电压为2.4V~3.3V,显示清晰。
3.2 DS1302实时时间流程
图4示出DS1302的实时时间流程。根据此流程框图,不难采集实时时间。下面结合流程图对DS1302的基本操作进行编程:
根据本人在调试中遇到的问题,特作如下说明:
DS1302与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位MSB(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;D6=0,指定时钟数据,D6=1,指定RAM数据;D5~D1指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入),D0=1,指定读操作(输出)。
在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。若进行单字节传送,8位命令字节传送结束之后,在下2个SCLK周期的上升沿输入数据字节,或在下8个SCLK周期的下降沿输出数据字节。
DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,在此方式下可一次性读、写所有的RAM的31个字节。
要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F以上)。虽然DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。可以用老式电脑主板上的3.6V充电电池。如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。100 μF就可以保证1小时的正常走时。DS1302在第一次加电后,必须进行初始化操作。初始化后就可以按正常方法调整时间。
4 结论
DS1302存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有重要意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片DS1302,则能很好地解决这个问题
❸ 怎样用数字电路设计一个数字时钟
数字钟电路是一个典型的数字电路系统,其由时,分,秒计数器以及校时和显示电路组成.下面介绍利用集成十进制递增计数器(74160)和带译码器的七段显示数码管组成的数字钟电路.计数器74160和七段显示数码管的功能及使用方法在8.4节已有叙述.
1. 利用两片74160组成60进制递增计数器
利用两片74160组成的同步60进制递增计数器如图9.4-1所示,其中个位计数器(C1)接成十进制形式。十位计数器(C2)选择QC与QB做反馈端,经与非门输出控制清零端(CLR’),接成六进制计数形式。个位与十位计数器之间采用同步级连方式,将个位计数器的进位输出控制端(RCO)接至十位计数器容许端(ENT),完成个位对十位计数器的进位控制。将个位计数器的RCO端和十位计数器的QC、QA端经与们由CO端输出,作进位输出控制信号。当计数器状态为59时,CO端输出高电平,在同步级联方式下,容许高位计数器计数。选择信号源库中的1HZ方波信号作为计数器的测试时钟源。
因为秒与分计数均由60进制递增计数器来完成,为在构成数字钟系统时使电路得到简化,我们将图9.4-1虚线框内建立部分用子电路表示。具体操作过程如下:
在EWB主界面内建立图9.4-1所示60进制计数器,闭合仿真电源,经过功能测试,确保计数器工作正常。选中虚线框内所示部分电路(Circuit)菜单中的创建子电路(Creat Subcircuit……)项,主界面内出现子电路设置对话框,在对话框内添入电路名称(60C)后,选择在电路中置换(Replace in Circuit)项,得用子电路表示的60进制递增计数器如图9.4-3所示。
2、用两片74160组成24/12进制递增计数器
图9.4-4所示电路是由两片74160组成的能实现12和24进制转换的同步递增计数器。图中个位与十位计数器均接成十进制计数形式,采用同步级连方式。选择十位计数器的输出端QB和个位计数器的输出端QC通过与非门NAND2控制两片计数器的清零端(CLR’),利用状态24反馈清零,可实现24进制递增计数。若选择十位计数器的输出端QA与个位计数器的输出端QB经过与非门NAND1输出,控制两片计数器的清零端(CLR’),利用状态12反馈清零,可实现12进制递增计数。敲击Q键,使开关K选择与非门NAND2输出或NAND1输出可实现24和12进制递增计数器的转换。该计数器可利用作数字钟的时计数器。
为简化数字钟电路,我们将图9.4-4所示的24/12进制计数器虚线框内电路转换为子电路,转换方法与上述60进制计数器相同。用子电路表的24/12进制同步计数器如图9.4-5所示。
3. 数字钟系统的组成
利用60进制和24/12进制递增计数器子电路构成的数字钟系统如图9.4-6所示。在数字钟电路中,由两个誉虚60进制同步递增计数器完成秒、分计数,由24/12进制同步递增计数器实现小时计数。
秒、分、时计数器之间采用同步级连判悔方式。开关K控制小时的24进制和12进制计数方式选择。为简化电路,直接选用信号源库中的方波秒脉冲作数字钟的秒脉冲信号,读者可自行设计独立的秒脉冲源,例如;可利用555多谐振荡器产生的秒脉冲,或者采用石英晶体振荡器经分频器产生秒脉冲。还可以在小时显示的基础上,增加上、下午或日期显示以及整点报时等,这里不再赘述。
敲击S和F键,可控制开关S和F 将秒脉冲直接引入时、分计数器,实现校时。
对于图9.4-6所示数字钟电路,若要进一步 简化电路还可以利用子电路嵌套功能将虚线框内电路转换为更高一级的子电路,我们将子电路命名为CLOCK,用高一级子电路表示的数字钟电路如图9.4-7所示。
今后在设计用到数字钟作单元电路的系统时可直接引用该电路,使系统得到简化。
图1、数字电子钟结构图
2、秒钟、分钟计时电路的设计
利用集成十进制递增计数器(74160)和带主译码器的七段显示数码管组成的数字钟电路。计数器74160的功能真值表如图2所示。
根据计数器74160的功能表真值表,利用两片74160组成的同步六十进制递增计数器如图3示,其中个位计数器(CL)接成十进制形式。十位计数器(C2)选择QC与QB做反馈端,经与非门(NEND)输出控制清零端(CLR),接成六进制计数形式。掘虚正个位与十位计数器之间采用同步级连复位方式,将个位计数器的进位输出控制端(RCO)接至十位计数器的计数计数器的计数容许端(ENT),完成个位对十位计数器的进位控制QC,QA端经过与门AND1和AND2由CO端输出,作为六十进制的进位输出脉冲信号,
图二、同步十进制计数器74160真值表
当计数器计数状态为59时,CO端输出高电平,在同步级联方式下,容许高位计数器计数。电路创建完成后,进行仿真实验时,利用信号源库中的1HZ方波信号作为计数器的时钟脉冲源。
图3、秒钟/分钟计时电路
因为秒钟与分钟技术均由六十进制递增计数器来完成,为在构成数字钟系统时使电路得到简化,图虚线框内的电路创建为子电路表示。具体操作过程如下:在EWB主界面内建立如示的六十进制计数器,闭合仿真电源开关,经过计数器功能测试,确定计数器工作正常,选中虚线框内所示部分电路后,再选择电路菜单中创建子电路框内添入子电路名称(分计时)后,选择在电路中置换选项,得到用子电路表示的六十进制递增计数器,即秒钟/分钟计时子电路,如图4
图4、分钟计时子电路对话框
图5、分钟计时电路
四、24/12进制的能实现递增计数器
24/12进制的能实现十二四进制的同步递增计数器。如图四。所示。图中个位与十位计数器均接成十进制计数形式,采用同步级联复位方试。 选择十位计数器的输出端Qb和个位计数器 输出端Qc通过与非门NAND2的控制两片计数器的清零端CLR,当计数器的输出状态为00100100时,立即译码清零,实现二进制纟递增计数器:若选择十位二进制的输出端Q a与个位计数器的输出端Qb经与非门NAD1控制两片计数器的清零端CLR,当计数器的输出状态为00100100时,立即译码反馈为零,实现二十进制递增计数器,若选择十位计数器的输出端Qb经与门NAND1控制两片计数器的清零端CLR。当计数器的输出端状态为00010010时,立即译码反馈为零,实现十二进制递增计数,敲Q,开关Q 选择与非门NAND2输出和NA民NAND1输出实现二十四进制递增计数器的转换。计数器用作数子钟的计数器。
图6、24/12二进制计时电路
为了简化数子电子钟的电路,需要将图765的24/12二进制计数器的线框内电路转换为子电路,方法与上面六二进制的分计数器一样,用子电路表示24/12进同步计数器如图7。
图7、24/12计时电路
五、数字电子钟系统的组成
利用六十进制和24/12进制递增计数器子电路构成的数字电子钟系统如图8所示,在数字电子钟电路中,由两个六十进制同步递增计数器分别构成秒钟计时器和分计时器,级连够完成秒 ,分计时、由24/12进制同步递增计实现小时计数。秒、分、时计数器之间采用同步级连方式,开关(Q)控制小时的二十四进制和十二进制计数方式选择,敲击S和F键,可控制开关S和F将秒脉冲直接引入时,分计数器,实现时计数器和分计数器的校时。
对于图所示数字电子钟电路,为了进一步简化电路,还可以利用子电路嵌套功能,将虚线框内电路转换为更高一级的子电路,成为子电路数字电子钟,用嵌套子电路表示的数字电子钟电路如图8所示
图8、24/12进制计数电路
以上创建的各种子电路都已经存入自定义元器件库中,在其他电子系统设计中需要时,可以直接调用这些子电路,使系统的设计更方便,更快捷。
访真实验时,可直接选用信号源库中的方波秒脉冲作数字钟的秒脉冲信号,作为一个设计内容,读者可自行设计独立的秒脉冲信号源,可利用555定时器组成多谐震荡器产生秒钟脉冲信号,或者采用石英晶体震荡器经分频器产生秒脉冲,脉冲频率更稳定,计时误差会更小,还可以在小时显示的基础上,增加上下午或日期显示,整点报时电路以及作息时间提示电路等。
❹ 谁知道用74LS161设计数字钟(可校时),怎么弄
数字电子技术基础大作业
一、设计任务
利用所学的数字电子技术基础知识,查阅相关资料和文献,试设计一数字钟电路。
二、设计条件
基于Multisim仿真软件设计与调试。
三、设计要求
① 时间以24小时为一个周期;
② 显示时、分、秒;
③ 具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间; ④ 要求针对你的设计写出你的设计实现过程;
⑤ 可以自己在此基础上增加功能。
四、完成时间:
(1)完成截止时间:2009年6月21日;
(2)需交材料:设计文档和实现的Multisim仿真文件
(发到教师邮箱,文件名: 学号_姓名 )
1/10
可供参考的设计内容(12小时周期)(设计不局限于以下思想和器件)
1. 设计思想:
数字钟主要分为数码显示器、60进制和12进制计数器、频率振荡器和校时这几个部分。数字钟要完成显示需要6个数码管,八段的数码管需要译码器械才能显示,然后要实现时、分、秒的计时需要60进制计数器和12进制计数器,在在仿真软件中发生信号可以用函数发生器仿真,频率可以随意调整。60进制可能由10进制和6进制的计数器串联而成,而小时的12进制可以采用74LS191的十进制计数器和D触发器来产生计数和进位。频率振荡器可以由晶体振荡器分频来提供,也可以由555定时来产生脉冲并分频为1HZ。主体思路如下图所示:
2. 电路结构与原理图
(1)数码显示器
在Multisim8仿真器件中,数码管分为需要译码器显示的和无需译码直接显示的两种,需要译码器的数码管有共阳极和共阴极之分,此电路采用的是不需译码直接显示的数码管(如图1所示),这样就简化了电路,增加了调试的正确性。如图2所示的数码管需要译码器才能显示,74LS47是驱动共阳极数码管的
2/10
器件,74LS48是驱动共阴极数码管的器件。
图1 不需译码管的数码管
图2 需译码器的双数码显示
图片加载失败
点击图片重新加载
图3 译码器驱动共阴极数码管电路
如图3所示电路,从74LS48的A,B,C,D端输入二进制数便可完成显示功能,而图1的数码管直接输入二进制数便可显示。
(2)60进制计数和12进制计数
在设计数字钟电路中,进制是最主要的一部分,它关系着显示的正确与否。关键在于了解各种器件的作用及功能,而且在调试的过程中容不容易出问题,电路会不会变得复杂,器件的选择最好要统一,以便调试成功。
① 分和秒的六十进制:
从常理可知,数字钟需要六十进制和十二进制计数器,而六十进制可通过十进制和六进制串联而成,从而完成数码显示。因为同步加法计数器74LS161可构成16进制以下的计数器,所以此电路中分和秒的计时都采用74LS161来进行设计。而小时是12进制计数,依然用74LS161,但电路作了改进。
3/10
在数字钟的控制电路中,分和秒的控制都是一样的,都是由一个十进制计数器和一个六进制计数器串联而成的,在电路的设计中我采用的是统一的器件74LS161N的反馈置数法来实现十进制功能和六进制功能,十进制的同步加法计数器有74160和74192,而没有现成的六进制同步加法计数器。图4是用74LS161构成六进制计数器的结构图,根据74LS161的结构把输出端的0101(十进制为
5)用一个与非门74LS00引到Load端便可置0,这样就实现了六进制计数。图5是用74LS161构成十进制计数器的结构图,同样,在输出端的1001(十进制为9)用一个与非门74LS00引到Load端便可置0,这样就实现了十进制计数。在分和秒的进位时,用秒计数器的Load端接分计数器的CLK控制时钟脉冲,脉冲在上升沿来时计数器开始计数。
图片加载失败
点击图片重新加载
图4 74LS161构成六进制计数器
4/10
图片加载失败
点击图片重新加载
图5 74LS161构成十进制计数器
② 小时的十二进制:
数字钟的小时要用到十二进制,要用到十进制,并且在计数到12时要清零,所以不能用单纯的十进制计数器,考虑到在12时要清零,还是要用两个74LS161来实现。具体的电路图如图6。个位采用十进制,而且当同时满足十位为1,各位为2时,两个计数器同时清零,这自然就要想到用与非门和非门反馈接到清零或置数端来实现,电路也是用反馈置的方法。其他原理与①相同,不再细讲。。
(3) 校时
由于Multisim可以仿真,并有函数发生器,最简单的校时方法就是通过开关用函数发生器对CLK端输入脉冲以改变显示的数值。此电路的设计就是采用这种方法校时的,虽可以只用一个函数发生器来实现同步,但调试时结果不能体现出来,所以用另外的函数发生器来实现校时。
❺ 数字电子技术课程设计-------数字显示电子钟
《数字钟设计报告》
指导老师:
姓名:
学号:
电子设计
一、 引言
大屏幕数字钟套件采用6位数字(二十四小时制)显示,格式为“时时:分分:秒秒”,电路板尺寸为330MM*70MM,是以前大屏幕数字钟的改进版,解决了以前大屏幕数字钟显示数字“6”和“9”不美观的现象;解决了发光二极管引脚焊盘间距过大容易插坏LED的现象;解决了用户如果自己安装外壳时,电源和外接调时开关不方便安装的现象。纯硬件电路,每个笔画由三个LED组成,频差为-200PPM的石英晶体定时,走时精度高。 工作电压:交流5V—9V,直流6V—10V。
二、电源接线图
三、板外接线图
四、 总体设计
采用同步电路,总线结构,时钟信号分别加到各个模块,各个模块功能相对独立,主要功能集中在模块内部,模块功能较为独立,模块间连线简单,易于扩展,本次设计采用此方案。
秒计数和分计数为60进制,时计数为24进制,为了简化设计,秒和分计数采用同一单元。控制模块有两部分,一为实现调整切换,二为实现显示切换。现对本方案中的各个主要功能模块的接口定义如下:
1. 60进制模块(电路图中模块名称为60count,下同。)
实现同步60进制计数,可调整
电源 5v
时钟信号输入 接1Hz的信号源
进位输入 接秒的进位信号,实现秒功能时,接低电平。
进位输出 秒模块接分模块,分模块接时模块
显示输出 接到显示总线,能闪烁
调整使能端 入0有效,有效时,显示信号输出,同时屏蔽进位输入和进位输出,允许调整信号输入。
显示使能端 入0有效
调整信号输入
2. 24进制模块(24count)
实现同步24进制计数,可调整
电源,时钟信号 同上
进位输入 接分的进位信号
进位输出 秒模块接分模块,分模块接时模块
显示输出 同上
调整使能端,显示使能端,调整信号输入 同上
4. 控制模块(fun,func)
管理总线资源,对各个模块输出控制信号
电源 5v VCC
调整切换信号 接各个需要调整的模块
调整信号 接到各个需要调整的模块
显示切换信号 接到各个需要共享显示总线的模块
控制信号输出 接到各个模块,有且只能有1个为0
至此,本阶段就结束了。在上面的接口定义中,也可以发现,各个模块的
立性是很强的,这样的结构使得以后的扩展很容易。
五、电路图
六、装好的成品晚上拍的照片:
七、 心得体会
经过长达两个星期的设计与思考,最终完成了数字钟的设计。其间遇到了许多问题,但最后都一一得到解决。现将心得体会总结如下:
1. 设计初期要考虑周到,否则后期改进很困难。应该在初期就多思考几个方案,进行比较论证,选择最合适的方案动手设计。总体设计在整个设计过程中非常重要,应该花较多的时间在上面。
2. 方案确定后,才开始设计。设计时多使用已学的方法,如列真值表,化简逻辑表达式,要整体考虑,不可看一步,做一步。在整体设计都正确后,再寻求简化的方法。
3. 在设计某些模块的时候无法把握住整体,这时可以先进行小部分功能的实现,在此基础上进行改进,虽然可能会多花一些时间,但这比空想要有效的多。
4. 尽可能是电路连线有序,模块之间关系清楚,既利于自己修改,也利于与别人交流。如果电路乱的连自己都看不懂,那还如何改进和扩展。
5. 很多难点的突破都来自于与同学的交流,交流使自己获得更多信息,开拓了思路,因此要重视与别人的交流。
6. 应该有较好的理论基础,整个实验都是在理论的指导下完成了,设计过程中使用了许多理论课上学的内容,如真值表、卡拉图等。本次设计把理论应用到了实践中,同时通过设计,也加深了自己对理论知识的理解和掌握。
❻ AT89S51单片机外部时钟电路由什么构成时钟电路起什么作用
单片机外部时钟电路通常由一个晶振配两个片电容构成,时钟电路是为单片机提供时钟脉冲信号,单片机必须有时间信号才能正常工作。
❼ 用单片机设计一个时钟,可显示时和分,可以调时间,也要有闹钟功能,要有设计的电路图
其实不用定时中断也能实现功能:
#include<reg51.h> 主函数
unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};定义0-9数组
unsigned int tmp;定义变量
void delay(unsigned int xms)定义延时函数
{unsigned int j,i;
for(i=0;i<xms;i++)
for(j=0;j<100;j++);
}
void disp()定义子函数
{
P1=tmp;
delay(1);
P2=0xff;
tmp=tmp<<1;
}
void main( )
{
unsigned char z,s=00,m=00,h=00;给时钟初始值
while(1)
{
for(z=0;z<100;z++)
{
tmp=0x01;
P2=tab[h/10];小时显示
disp();
P2=tab[h%10];
disp();
P2=tab[m/10];分钟显示
disp();
P2=tab[m%10];
disp();
P2=tab[s/10];秒显示
disp();
P2=tab[s%10];
disp();
}
s++;
while(s==60)秒进一位,到60清0
{
m++;
s=00;
}
while(m==60)分钟进一位,到60清0
{
h++;
m=00;
}
while(h==24)小时进一位,到24清0
{
h=00;
}
}
}