1、1题 目:51 单片机之电子时钟专 业:网络工程 年 级:2009 学 号:20091204048 姓 名:汤贯洋 指导教师:于雷 2单片机电子时钟的设计1.单片机介绍数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。虽然现在市场上已有现成的电子钟集成电路芯片,价格便宜、使用也方便,但是人们对电子产品的应用要求越来越高,数字钟不但可以显示当前的时间,而且可以显示期、农历 、以及星期等,给人们的生活带来了方便。另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用
2、的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:D
3、S1302 ,DS12887,X1203 等都可以满足高精度的要求。AT89S51 是 一 个 低 功 耗 , 高 性 能 CMOS 8 位 单 片 机 , 片 内 含 4k Bytes ISP(In-system programmable)的 可 反 复 擦 写 1000 次 的 Flash 只 读程 序 存 储 器 , 器 件 采 用 ATMEL 公 司 的 高 密 度 、 非 易 失 性 存 储 技 术 制 造 , 兼容 标 准 MCS-51 指 令 系 统 及 80C51 引 脚 结 构 , 芯 片 内 集 成 了 通 用 8 位 中央 处 理 器 和 ISP Flash 存 储 单
4、元 , 功 能 强 大 的 微 型 计 算 机 的 AT89S51 可为 许 多 嵌 入 式 控 制 应 用 系 统 提 供 高 性 价 比 的 解 决 方 案 。AT89S51 具 有 如 下 特 点 : 40 个 引 脚 , 4k Bytes Flash 片 内 程 序 存 储器 , 128 bytes 的 随 机 存 取 数 据 存 储 器 ( RAM) , 32 个 外 部 双 向 输 入 /输出 ( I/O) 口 , 5 个 中 断 优 先 级 2 层 中 断 嵌 套 中 断 , 2 个 16 位 可 编 程 定 时 计数 器 ,2 个 全 双 工 串 行 通 信 口 , 看 门 狗
5、 ( WDT) 电 路 , 片 内 时 钟 振 荡 器 。 此 外 , AT89S51 设 计 和 配 置 了 振 荡 频 率 可 为 0Hz 并 可 通 过 软 件 设 置省 电 模 式 。 空 闲 模 式 下 , CPU 暂 停 工 作 , 而 RAM 定 时 计 数 器 , 串 行 口 ,外 中 断 系 统 可 继 续 工 作 , 掉 电 模 式 冻 结 振 荡 器 而 保 存 RAM 的 数 据 , 停 止3芯 片 其 它 功 能 直 至 外 中 断 激 活 或 硬 件 复 位 。 同 时 该 芯 片 还 具 有 PDIP、 TQFP 和 PLCC 等 三 种 封 装 形 式 , 以
6、适 应 不 同 产 品 的 需 求 。本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机 AT89S51 芯片和 LED 数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。2关于电子时钟2.1 电子时钟简介 1957 年,Ventura 发明了世界上第一个电子表,从而奠定了电子时钟的基础,电子时钟开始迅速发展起来。现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。从而达到计时的功能,是人民日常生活补课缺少的工具。2.2 电子时钟的基本特点 现在高精度的
7、计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED 显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。2.3 电子时钟的原理 该电子时钟由 89C51,BUTTON,六段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。而电路中唯一的一个控制键却拥有多种不同的功能,按下又松开,可以实现
8、屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。4.方案论证441 数字时钟方案数字时钟是本设计的最主要的部分。根据需要,可利用两种方案实现。本方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现 1 秒定时中断,每产生一次中断,存储器内相应的秒值加 1;若秒值达到 60,则将其清零,并将相应的分字节值加 1;若分值达到 60,则清零分字节,并将时字节值加 1;若时值达到 24,则将十字节清零。该方案具有硬件
9、电路简单的特点。但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。4.2 数码管显示方案动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了 I/O 口,降低了能耗。从节省 I/O 口和降低能耗出发5 系统设计5.11 计时方案利用 AT89S51 单片机内部的定时/计数器进行中断时
10、,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。5.1.2 控制方案AT89S51 的 P0 口和 P2 口外接由八个 LED 数码管(LED8LED1) 构成的显示器,用 P0 口作 LED 的段码输出口,P2 口作八个 LED 数码管的位控输出线,P1 口外接四个按键 A、B、C 构成键盘电路。AT89S51 是一种低功耗,高性能的 CMOS 8 位微型计算机。它带有 8K Flash 可编程和擦除的只读存储器(EPROM),该器件采用
11、ATMEL 的高密度非易失性存储器技术制造,与工业上标准的 80C51 和 80C52 的指令系统及引脚兼容,片内 Flash 集成在一个芯片上,可用与解决复杂的问题,且成本较低。简易电子钟的功能不复杂,采用其现有的 I/O 便可完成,所以本设计中采用此的设计方案。55.1.3 具体设计分析利用单片机(AT89S51)制作简易电子时钟,由六个 LED 数码管分别显示小时十位、小时个位、分钟十位、分钟个位、秒钟十位、秒钟个位。结合本设计实验来说,要求显示的时间为时,分,秒,并且都用两位数码管来实现显示。因此,具体设计程序时,应尽可能多用一些子程序与数据暂寄存器单元。本程序设计中,在主程序之外,可
12、以设置时间值处理子程序,时间值显示前的处理子程序,按键情况扫描子程序,1S 定时中断子程序以及 5ms 延时消除按键抖动子程序等多个小型的子程序。另外,可以设置一些数据单元作为数据寄存器。用 28H,2AH,2BH 和 2CH 地址单元分别作为显示位数的扫描指针值寄存器,时寄存器,分寄存器和秒寄存器,再用 20H 地址单元作为显示寄存器 系统框图65.2 模块设计5.2.1 芯片分析 5.2.1.1 AT89S51 芯片 选用的 AT89S51 与同系列的 AT89C51 在功能上有明显的提高,最突出是的可以实现在线的编程。用于实现系统的总的控制。其主要功能列举如下:1、为一般控制应用的 8
13、位单片机2、晶片内部具有时钟振荡器(传统最高工作频率可至 33MHz)3、内部程式存储器(ROM)为 4KB4、内部数据存储器(RAM)为 128B5、外部程序存储器可扩充至 64KB6、外部数据存储器可扩充至 64KB7、32 条双向输入输出线,且每条均可以单 独做 I/O 的控制8、5 个中断向量源9、2 组独立的 16 位定时器10、1 个全双工串行通信端口11、8751 及 8752 单芯片具有数据保密的功能12、单芯片提供位逻辑运算指令AT89S51 各引脚功能介绍:VCC:ATAT89S51 电源正端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反向放大器输入端。X
14、TAL2:系统时钟的反向放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两个引脚与地之间加入一个 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。RESET:AT89S51 的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51 便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H 处开始读入程序代码而执行程序。EA/Vpp:“EA“为英文“External Access“的缩写,表示存取外部程序代码之意,低电7平动作,
15、也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部 EPROM 中)来执行程序。因此在 8031 及 8032 中,EA 引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至 8751 内部 EPROM 时,可以利用此引脚来输入 21V 的烧录高压(Vpp) 。ALE/PROG:ALE 是英文“Address Latch Enable“的缩写,表示地址锁存器启用信号。ATAT89S51 可以利用这支引脚来触发外部的 8 位锁存器(如 74LS373) ,将端口0 的地址总线(A0A7)锁进锁存器中,因为 A
16、TAT89S51 是以多工的方式送出地址及数据。平时在程序执行时 ALE 引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录 8751 程序代码时,此引脚会被当成程序规划的特殊功能来使用。PSEN:此为“Program Store Enable“的缩写,其意为程序储存启用,当 8051 被设成为读取外部程序代码工作模式时(EA=0) ,会送出此信号以便取得程序代码,通常这支脚是接到 EPROM 的 OE 脚。ATAT89S51 可以利用 PSEN 及 RD 引脚分别启用存在外部的 RAM 与 EPROM,使得数据存储器与程序存储器可以合并在一起而共用 6
17、4K 的定址范围。PORT0(P0.0P0.7):端口 0 是一个 8 位宽的开路电极(Open Drain)双向输出入端口,共有 8 个位,P0.0 表示位 0,P0.1 表示位 1,依此类推。其他三个 I/O 端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0 在当作 I/O用时可以推动 8 个 LS 的 TTL 负载。如果当 EA 引脚为低电平时(即取用外部程序代码或数据存储器) ,P0 就以多工方式提供地址总线(A0A7)及数据总线(D0D7) 。设计者必须外加一个锁存器将端口 0 送出的地址锁住成为A0A7,再配合端口 2 所送出的 A8A15 合成一组完整的 1
18、6 位地址总线,而定位地址到 64K 的外部存储器空间。PORT2(P2.0P2.7):端口 2 是具有内部提升电路的双向 I/O 端口,每一个引脚可以推动 4 个 LS的 TTL 负载,若将端口 2 的输出设为高电平时,此端口便能当成输入端口来使用。P2 除了当作一般 I/O 端口使用外,若是在 ATAT89S51 扩充外接程序存储器或数据存储器时,也提供地址总线的高字节 A8A15,这个时候 P2 便不能当作I/O 来使用了。PORT1(P1.0P1.7):端口 1 也是具有内部提升电路的双向 I/O 端口,其输出缓冲器可以推动 4个 LS TTL 负载,同样地,若将端口 1 的输出设为高
19、电平,便是由此端口来输入数据。如果是使用 8052 或是 8032 的话,P1.0 又当作定时器 2 的外部脉冲输入脚,而 P1.1 可以有 T2EX 功能,可以做外部中断输入的触发引脚。PORT3(P3.0P3.7):端口 3 也具有内部提升电路的双向 I/O 端口,其输出缓冲器可以推动 4 个TTL 负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。8P3.1:TXD,串行通信输出。P3.2:INT0,外部中断 0 输入。P3.3:INT1,外部中断 1 输入。P3.4
20、:T0,计时计数器 0 输入。P3.5:T1,计时计数器 1 输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。5.2.1.2 74LS47 芯片说明74LS47 是 BCD-7 段数码管译码器/驱动器, 74LS47 的功能用于将 BCD 码转化成数码块中的数字,通过它解码, 可以直接把数字转换为数码管的显示数字, 从而简化了程序。74LS47 译码器原理:译码为编码的逆过程。它将编码时赋予代码的含义“翻译”过来。实现译码的逻辑电路成为译码器。译码器输出与输入代码有唯一的对应关系。74LS47 是输出低电平有效的七段字形译码器,它在这里与数码管配合使用
21、,下表列出了 74LS47 的真值表,表示出了它与数码管之间的关系。输 入 输 出 显示数字符号 LT RBI A3 A2 A1 A0 BI RBO a b c d e f g1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 X 0 0 0 1 1 1 0 0 1 1 1 1 1 1 X 0 0 1 0 1 0 0 1 0 0 1 0 2 91 X 0 0 1 1 1 0 0 0 0 1 1 0 3 1 X 0 1 0 0 1 1 0 0 1 1 0 0 4 1 X 0 1 0 1 1 0 1 0 0 1 0 0 5 1 X 0 1 1 0 1 1 1 0 0 0 0 0 6 1
22、 X 0 1 1 1 1 0 0 0 1 1 1 1 7 1 X 1 0 0 0 1 0 0 0 0 0 0 0 8 1 X 1 0 0 1 1 0 0 0 1 1 0 0 9 X X X X X X 0 1 1 1 1 1 1 1 熄灭 1 0 0 0 0 0 0 1 1 1 1 1 1 1 熄灭0 X X X X X 1 0 0 0 0 0 0 0 8 5.2.1.3 74LS138 芯片说明74HC138:74LS138 为 3 线8 线译码器,共有 54/74S138 和 54/74LS138 两种线路结构型式,其74LS138 工作原理如下: 当一个选通端(G1)为高电平,另两个选通
23、端(/(G2A)和/(G2B))为低电平时,可将地址端(A、 B、C )的二进制编码在一个对应的输出端以低电平译出。74LS138 的作用:利用 G1、/(G2A)和/(G2B)可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。 若将选通端中的一个作为数据输入端时,74LS138 还可作数据分配器74LS138 与 74HC 的引脚图10用与非门组成的 3 线-8 线译码器 74LS138 无论从逻辑图还是功能表我们都可以看到 74LS138 的八个输出引脚,任何时刻要么全为高电平 1芯片处于不工作状态,要么只有一个为低电平0,其余 7 个输出引脚全为高电平 1。如
24、果出现两个输出引脚同时为 0 的情况,说明该芯片已经损坏。71LS138 有三个附加的控制端、和。当、时,输出为高电平(S1),译码器处于工作状态。否则,译码器被禁止,所有的输出端被封锁在高电平,如表 3.3.5 所示。这三个控制端也叫做“片选”输入端,利用片选的作用可以将多篇连接起来以扩展译码器的功能。3 线-8 线译码器 74LS138 的功能表带控制输入端的译码器又是一个完整的数据分配器。在图 3.3.8 电路中如果把作为“数据”输入端(同时),而将作为“地址”输入端,那么从送来的数据只能通过所指定的一根输出线送出去。这就不难理解为什么把叫做地址输入了。例如当101 时,门的输入端除了接至输出端的一个以外全是高电平,因此的数据以反码的形式从输出,而不会被送到其他任何一个输出端上。5.2.2 晶振电路右图所示为时钟电路原理图,在 AT89S51 芯片内部有一个高增益反相放大器,其输入端为芯片引脚 XTAL1,输出端为引脚 XTAL2。而在芯片内部,XTAL1 和 XTAL2 之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激