第一章 诸论1.1设计背景时钟是人们必不可少的生活用品。从古代的滴漏更鼓到近代的机械钟,从电子表到目前的数字时钟,为了准确的测量和记录时间,人们一直在努力改进计时工具。钟表的数字化,大力推动了计时的精确性和可靠性。在单片机构成的装置中,数字时钟是必不可少的部件。它的用途十分广泛,只要有计时的存在,便要用到数字时钟的原理及结构;同时在日期中,它以其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱。
随着人类科技文明的发展,人们对于时钟的要求在不断地提高。时钟已不仅仅被看成一种用来显示时间的工具,在很多实际应用中它还需要能够实现更多其它的功能。高精度、多功能、小体积、低功耗,是现代时钟发展的趋势。在这种趋势下,时钟的数字化、多功能化已经成为现代时钟生产研究的主导设计方向。
本次设计的数字时钟与传统的时钟相比,具有高精度、多功能、小体积、低功耗的优势,其时间采用数字显示。该设计控制器使用单片机AT89C51作为中央处理的核心,六位数码管作为时间数字的显示屏,实现了显示时间、调整时间、闹钟定时等功能,达到了设计的要求和目的。
1.2 数字温度计设计方案论证1.2.1 方案一基于FPGA的多功能数字时钟的设计方法:DCM(数字时钟管理器)。DCM使用完全数字反馈系统确保多个时钟同步,使用完全数字延线技术可以精确控制时钟的频率和相位。用户可以编程控制时钟任意倍率和分频及任意相位移动,使用非常方便可靠。
缺点:设计较为复杂,成本高,无法实现温度测量功能。
1.2.2 方案二基于VHDL的多功能数字时钟的设计利用VHDL硬件描述语言设计的多功能数字时钟的思路,在MAX+PLUSⅡK开发环境中编译和仿真了所设计的程序,并在可编程逻辑器上下载验证。
缺点:结构简单,实现功能不全面。
1.2.3 方案三基于AT89C51单片机的多功能数字时钟系统具有高精度、多功能、小体积、低功耗等特点。系统的设计是在模块化的基础上设计系统的。基于智能化和模块化的前提下设计数字时钟的,通过对设计目标的分析,分立出各个模块,然后根据各个模块的功能,选择适当的芯片进行设计的。对智能化、模块化设计具有较强的推广应用价值。
综上所述,我们可以看到,设计方案三综合性能良好、造价低廉、且简单易行。所以我选用第三种设计方案。
1.3 方案三的总体设计框图 数字时钟的电路设计总体方框图如图1.1所示,使用AT89C51单片机作为控制核心,用七段数码管来实现时间数字显示。
图1.1 总体设计方框图
第二章 主要元器件介绍2.1 AT89C51的性能介绍AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
2.1.1 AT89C51的主要特性•与MCS-51 兼容
•4K字节可编程闪烁存储器
•寿命:1000写/擦循环
•数据保留时间:10年
•全静态工作:0Hz-24MHz
•三级程序存储器锁定
•128×8位内部RAM
•32可编程I/O线
•两个16位定时器/计数器
•5个中断源
•可编程串行通道
•低功耗的闲置和掉电模式
•片内振荡器和时钟电路
2.1.2 AT89C51的管脚说明图2.1.2 AT89C51管脚图
1.AT89C51的管脚图如图2.1.2所示,其说明如下:
- VCC:供电电压。
- GND:接地。
- P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当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口用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
- P3口: P3口管脚是8个带有内部上拉电阻的双向I/O口,可接收输出 4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
3口也可作为AT89C51的一些特殊功能口,如下所示:
- P3.0 RXD(串行输入口);
- P3.1 TXD(串行输出口);
- P3.2 /INT0(外部中断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。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
- /PSEN:外部程序存储器的选通信号。在由外部程序存储器取值期间,每 个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
- /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
- XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
- XTAL2:来自反向振荡器的输出。
2.1.3 振荡器特性XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
2.1.4 芯片擦除整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
2.2 74LS373芯片2.2.1 74LS373的基本情况74LS373是常用的地址锁存器芯片,它实质是一个是带三态缓冲输出的8D触发器,在单片机系统中为了扩展外部存储器,通常需要一块74LS373芯片。
74LS373为三态输出的八 D 透明锁存器,共有 54/74S373 和 54/74LS373 两种线路 结构型式,其主要电器特性的典型值如表2.2.1所示:
表2.2.1(注:不同厂家具体值有差别):
1.74LS373的特点:
·三态总线驱动输出
·置数全并行存取
·缓冲控制输入
·使能输入有改善抗扰度的滞后作用
2.2.2 74LS373的内部结构和性能参数74LS373的输出端 O0~O7 可直接与总线相连,当三态允许控制端 OE 为低电平时,O0~O7 为正常逻辑状态,可用来驱动负载或总 线。当 OE为高电平时,O0~O7 呈高阻态,即不驱动总线,也不为总线的负载,但 锁存器内部的逻辑操作不受影响。 当锁存允许端 LE 为高电平时,O随数据 D 而变。当 LE 为低电平时,O 被锁存在 已建立的数据电平。 当 LE 端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善 400mV。
引出端符号:
D0~D7 数据输入端
OE 三态允许控制端(低电平有效)
LE 锁存允许端
O0~O7 输出端
1.外部引腿图:
图 2.2.2-1
2.逻辑图
图 2.2.2-2
3.真值表
表 2.2.2-3 真值表
H:高电平;
L:低电平;
×:不定;
Z:高阻态;
QO:建立稳态输入条件前Q 的电平.
2.3七段数码管的引脚图及使用在LED显示电路中,我使用共阴极的七段数码管作为LED显示电路的主要元器件。
2.3.1七段数码管的引脚图图2.3.1-1所示的是七段数码管的引脚图,其中共阳极数码管引脚图和共阴极的是一样的。
图2.3.1-1 七段数码管的引脚图

图2.3.1-2 七段数码管的引脚图
LED数码管根据LED的接法不同分为:共阴极和共阳极。不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图2.3.1-2是共阴极和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。
将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LED的电流通常较小,一般均需在回路中接上限流电阻。假如我们将"b"和"c"段接上正电源,其它端接地或悬空,那么"b"和"c"段发光,此时,数码管显示将显示数字“1”。而将"a"、"b"、"d"、"e"和"g"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。其它字符的显示原理类同。
2.3.2 数码管使用条件1.数码管使用条件如下:
(1) 段及小数点上加限流电阻;
(2) 使用电压:
a.段:根据发光颜色决定;
b.小数点:根据发光颜色决定;
(3) 使用电流:
a.静态:总电流 80mA(每段 10mA);
b.动态:平均电流 4-5mA 峰值电流 100mA
第三章 硬件设计系统整体硬件电路由中央处理单元电路(AT89C51)、振荡电路(Crystal)、复位电路(电解电容)、显示电路(七段数码管)、按键扫描电路(按钮)、闹钟电路(扬声器)这六个部分组成。各部分之间相互协作,构成一个统一的有机整体,实现多功能数字时钟的功能。各部分的硬件电路设计如下:
3.1振荡电路和复位电路1.使用晶振CRYSTAL和瓷片电容构成振荡电路。
图3.1-1振荡电路
2.使用电解电容、按钮和电阻构复位电路,单片机根据扫描到的相应端口的电平判断是否满足程序跳转条件,从而实现数字时钟的复位功能。
图3.1-2 复位电路
3.2 闹钟电路图3.2 闹钟电路
使用扬声器作为闹钟电路的主要元器件,通过接口从AT89C51单片机接受信号,实现闹钟功能。
3.3按键电路图3.3 按键电路
通过使用九个按键分别实现实际时间和闹钟时间的设置,AT89C51单片机根据扫描到的相应端口的电平判断是否满足程序跳转条件,从而实现实际时间和闹钟时间的设置。
3.4 显示电路图3.4 显示电路
通过使用7SEG-MPX6-CC、电阻和74LS373芯片构成LED显示电路,经接口从AT89C51单片机接受信号,实现数字时间显示功能。
第四章 软件设计按照设计方案的要求,在硬件电路的基础上,使用汇编语言进行软件设计,为增加程序可读性,可分为以下五个功能模块:
- 主程序,主程序流程图如图4.1所示;
- 按键扫描子程序, 按键扫描子程序流程图如图4.2所示;
- 闹钟子程序,闹钟子程序流程图如图4.3所示;
- 中断服务子程序, 中断服务子程序流程图如图4.4所示;
- 时间显示子程序, 时间显示子程序流程图如图4.5.1和图4.5.2所示。
4.1 主程序流程图主程序是先开始,然后初始化并启动定时器,在定时器启动后进行按键扫描检测,检测完后使用中断服务实现计数,最后就是显示时间。主程序流程图如图4.1所示。
图4.1 主程序流程图
4.2 按键扫描子程序流程图按键扫描子程序分为两部分:当前时间设置和闹钟时间设置。按键扫描子程序流程图如图4.2所示。
图4.2按键扫描子程序流程图
4.2.1 当前时间设置按钮扫描当前时间设置按键扫描的过程如下:
(1) 首先检测时间设置按键,如果按下,就检测时针按键;如果没有,就返回开始。
(2) 如果时针按键按下,时针就加1;如果没有,就检测分针按键。
(3) 如果分针按键按下,分针就加1;如果没有,就检测时针按键。
(4) 如果时针按键按下,时针就加1;如果没有,就把时间显示出来。
4.2.2 闹钟时间设置按键扫描闹钟时间设置按键扫描的过程如下:
(1) 首先检测查看闹钟按键,如果按下,就显示闹钟时间;如果没有,就检测闹钟设置按键。
(2)如果闹钟设置按键按下,就检测闹钟时针设置按键;如果没有,就返回开始。
(3) 如果闹钟时针设置按下,闹钟时针就加1;如果没有,就检测闹钟分针设置按键。
(4) 如果闹钟分针设置按键按下,闹钟分针就加1;如果没有,就检测闹钟完成设置按键。
(5) 如果闹钟完成设置按键按下,闹钟设置完成并显示当前时间;如果没有,就返回开始。
4.3 闹钟子程序流程图闹钟子程序的功能包括显示闹钟时间、设置闹钟时间和闹钟停止这三个功能,其流程图如图4.3所示。
图4.3闹钟子程序流程图
4.4 中断服务子程序流程图1.定时器中断时的工作过程是:
- 先将累加器A和寄存器PSW入栈;
- 然后检测1秒是否到,如果到,秒单元加1;如果没到,就检测1分钟。
- 如果1分钟到,则秒单元清零,分单元加1;如果没到,就检测1小时。
- 如果1小时到,则分单元清零,时单元加1;如果没到,就检测1天。
- 如果1天到,则时单元清零,天单元加1;如果没到,就显示时间。
图4.4 中断服务子程序流程图
4.5 显示子程序流程图显示子程序分为两个部分:当时间显示和闹钟时间显示,他们的流程图如图4.5.1和图4.5.2所示。
4.5.1 当前时间显示流程图当前时间显示子程序可实现当前时间的时、分、针显示,其流程图如下:
图4.5.1当前时间显示流程图
4.5.2 闹钟时间显示流程图闹钟时间显示子程序可实现闹钟时间的时、分显示,其流程图如下:
图4.5.2闹钟时间显示流程图
第五章 仿真软件5.1 PROTEUS仿真软件介绍Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件,是目前最好的仿真单片机及外围器件的工具。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
Proteus软件是一款功能强大的电路设计分析软件。在利用其进行单片机的软件仿真时,仅仅是使用了其部分功能(如使用其中的ISIS智能原理图输入系统来绘制电路原理图)。因此这里主要介绍该部分的相关知识。
5.2 Proteus ISIS智能原理图输入系统1.Proteus ISIS 是Proteus软件的核心,具有以下特性:
(1)出版高质量的原理图:ISIS提供给用户图形外观,包括线宽、填充类型、字符库等的全部控制,使用户生成精美的原理图。通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用;
(2)良好的用户界面:用户只需要单击元件的引脚或者先前布好的线,就能实现布线。而且摆放、移动和删除操作能都直接用鼠标实现,无需去单击菜单或图标;
(3)自动走线:只要单击想要连接的两个引脚,就能简单地实现走线。自动走线也能在元件移动时操作,自动解决相应连线。节点能够自动布置和移除,使连接导线简单快捷,大大缩短绘图时间,又避免一些可能的错误;
(4)层次设计:ISIS支持层次图设计,特殊的元件能够定义为通过电路图表示的模块,能够任意设定层次。模块可画成标准元件,在使用中可放置和删除端口的子模块电路;
(5)总线支持:使用总线器件和总线布线使电路设计简明清晰;
(6)丰富的器件库:超过27000种元器件,可方便地创建新元件。 ISIS的元件库包含8000多个元件,有标准符号、三极管、二极管、CMOS、微处理器、存储器元件、模拟IC和运算放大器等;
(7)智能的器件搜索:通过模糊搜索可以快速定位所需要的器件。
2.Proteus ISIS 可运行于Windows 98/2000/XP/Windows 7环境,对计算机的配置要求不是很高。在运行Proteus ISIS的执行程序后,先出现一个启动画面,随机进入Proteus ISIS的编辑环境,如图5.2所示。
图5.2 Proteus ISIS的编辑环境
5.3 Proteus ISIS的界面和功能介绍如图5.3所示,Proteus ISIS的工作界面是一种标准的Windows界面。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
图5.3 Proteus 窗口界面图
(1)原理图编辑窗口
- 用于绘制电路原理图的,蓝色方框内为可编辑区,元件要放到它里面。注意,这个窗口是没有滚动条的,可以通过预览窗口来改变原理图的可视范围。
(2)预览窗口
- 它有两个功能:一、当从元件列表选择一个元件时,显示该元件的预览图;二、当你的鼠标箭头落在原理图编辑窗口时,显示整张原理图的缩略图,并会显示一个绿色的方框,绿色的方框里面的内容就是当前原理图窗口中显示的内容。因此,可用鼠标在它上面点击来改变绿色的方框的位置,从而改变原理图的可视范围。
(3)模型选择工具栏
① 主要模型(Main Modes)
●1 用于编辑元件参数 (默认选择的);
●2 选择元件(components);
●3 放置连接点;
●4 放置标签(用总线时会用到);
●5 放置文本;
●6 用于绘制总线;
●7 用于放置子电路 。
② 配件模型(Gadgets Modes))选择工具栏

●1 终端接口(terminals) ,有 VCC、地、输出、输入等接口;
●2 器件引脚:用于绘制各种引脚;
●3 仿真图表(graph) :用于各种分析,如 Noise Analysis;
●4 录音机;
●5 信号发生器(generators);
●6 电压探针:使用仿真图表时要用到;
●7 电流探针:使用仿真图表时要用到;
●8 虚拟仪表:有示波器等。
③ 2D 图形

(2D Graphics)

●1 画各种直线;
●2 画各种方框;
●3 画各种圆;
●4 画各种圆弧;
●5 画各种多边形;
●6 画各种文本;
●7 画符号;
●8 画原点等。
用于挑选元件(components)终端接口(terminals)信号发生器(generators)仿真图表(graph)等。举例,当你选择“元件(components)”单击“P”按钮会打开挑选元件对话框,选择了一个元件后该元件会在元件列表中显示,以后要用到该元件时,只需在元件列表中选择即可。
(5)方向工具栏
旋转:

旋转角度只能是 90 的整数倍。成水平翻转和垂直翻转。
使用方法:先右键单击元件,再点击(左击)相应的旋转图标。
(6)仿真工具栏
仿真控制按钮

●1 运行;
●2 单步运行;
●3 暂停;
●4 停止。
第六章 仿真调试使用Proteus软件进行仿真调试
6.1 仿真原理图根据设计方案,将各部分电路进行组合,可得仿真原理图如6.1所示:
图6.1 仿真原理图
6.2 系统调试1.双击单片机出现如图6.2-1所示的画面,在Program File一栏中选择仿真项目的源程序代码文件,点击OK。
图6.2-1 加载源程序图
2.点击菜单中的“Source”—“Build All”,得到如图6.2-2所示的“Build Log” 。
图6.2-2 检查日志图
6. 3 仿真单击Play按钮,进入仿真状态,得到仿真结果如图6.3-1和图6.3-2所示:
图6.3-1 仿真结果一
图6.3-2 仿真结果二
结束语经过几周的努力,我终于完成了这一份数字时钟的设计。本次数字时钟电路采用AT89C51单片机作为控制核心,使用按钮设计控制电路,结合LED显示屏、74LS373和电阻来实现了时、分、秒的显示,采用扬声器实现闹钟功能。虽然达到了设计要求,但是还存在有待改善和提高的地方。
通过这份设计,我发现自己在编写软件程序方面的不足,也提高了我设计硬件电路和编写软件程序的能力。同时,通过这份毕业设计,让我明白:实践和理论有很大的联系,又高于理论。要把课本上所学的知识跟实际联系起来,才能把理论变成实际。本次电路的设计既巩固了我从课本上所学的知识,也使我把理论与实际结合起来,增强了学习的兴趣,考验了我们借助图书馆、互联网搜索、查阅相关资料的综合能力。
在学习过程中,要理论联系实际、学以致用,把所学的理论知识用到实际当中,通过实践把所学的理论知识进行巩固。以上,就是我在这次毕业设计中的收获,这为我以后从事电子电路设计、研制电子产品领域的工作提供了宝贵的经验。
参考文献
[1] 李朝青. 单片机原理及接口技术(简明修订版). 杭州; 北京航空航天大学出版社,1998
[2] 李广弟. 单片机基础[M]. 北京; 北京航空航天大学出版社,1994
[3] 阎石. 数字电子技术基础(第三版). 北京; 高等教育出版社,1989
[4] 梁炳东. 单片机原理与应用(第一版).北京;人民邮电出版社,2009.
[5] 高卫东,辛友顺,韩彦征. 51单片机原理与实践[M]. 北京; 北京航空航天大学出版社,2008
致 谢
这份关于数字时钟制作的毕业设计是在xxx老师的热情关怀和悉心指导下完成的。从设计的选题,相关资料的查寻,到论文的撰写这一整个过程中,xxx老师以其广博的知识、丰富的经验 、清晰的思路,为我细心指导和帮助。他严谨的治学态度,精益求精的工作作风和孜孜不倦的求学精神令我受益匪浅,在此,我对郑誉煌老师表示衷心的感谢!
在完成这份毕业设计的过程中,我也得到了许多同学的建议和帮助,在此一并致以真诚的谢意,感谢所有帮助过我的老师和同学们!
最后,感谢在百忙中抽出时间对本毕业设计(论文)进行评审并提出宝贵意见的老师们,谢谢!
附录1 元器件清单
表附录1 元器件清单