找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5794|回复: 0
打印 上一主题 下一主题
收起左侧

基于Proteus数字时钟制作毕业设计论文下载(共44页word文档)

[复制链接]
跳转到指定楼层
楼主
ID:242893 发表于 2017-11-13 13:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
数字时钟制作毕业设计(论文)说明书
(论文)
摘要
本次数字时钟电路采用AT89C51单片机作为控制核心,使用按钮设计控制电路,结合LED数码管、74LS373和排阻实现时、分、秒的显示,采用扬声器实现闹钟功能。硬件电路设计主要包括中央处理单元电路、键盘扫描电路以及闹钟电路。软件程序设计则采用汇编语言实现。本设计实现了显示时间、调整时间、闹钟定时等功能,达到了设计的要求和目的。并在Proteus软件上进行了仿真和调试

目  录
摘要            
Abstract            
第一章 诸论            
1.1设计背景            
1.2 数字温度计设计方案论证
1.2.1 方案一
1.2.2 方案二
1.2.3 方案三
1.3 方案三的总体设计框图
第二章 主要元器件介绍
2.1 AT89C51的性能介绍
2.1.1  AT89C51的主要特性
2.1.2 AT89C51的管脚说明
2.1.3 振荡器特性
2.1.4 芯片擦除
2.2 74LS373芯片
2.2.1 74LS373的基本情况
2.2.2 74LS373的内部结构和性能参数
2.3七段数码管的引脚图及使用
2.3.1七段数码管的引脚图
2.3.2 数码管使用条件
第三章 硬件设计
3.1振荡电路和复位电路
1.使用晶振CRYSTAL和瓷片电容构成振荡电路。
3.2 闹钟电路
3.3按键电路
3.4 显示电路
第四章 软件设计
4.1 主程序流程图
4.2 按键扫描子程序流程图
4.2.1 当前时间设置按钮扫描
4.2.2 闹钟时间设置按键扫描
4.3 闹钟子程序流程图
4.4 中断服务子程序流程图
4.5 显示子程序流程图
4.5.1 当前时间显示流程图
4.5.2 闹钟时间显示流程图
第五章 仿真软件
5.1 PROTEUS仿真软件介绍
5.2 Proteus ISIS智能原理图输入系统
5.3 Proteus ISIS的界面和功能介绍
第六章 仿真调试
6.1 仿真原理图
6.2 系统调试
6. 3 仿真
结束语
参考文献
致 谢
附录1 元器件清单
附录2 程序

第一章 诸论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(注:不同厂家具体值有差别):
型号
tPd
PD
54S373/74S373
7ns
525mW
54LS373/74LS373
17ns
120mW 373


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 真值表
输入
输出
输出控制
使能
数据
L
H
H
H
L
H
L
L
L
L
×
Q0
H
×
×
Z

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 元器件清单
元器件名称
规格型号
数量(单位)
芯片
AT89C51
1块
芯片
74LS373
1块
数码管
7SEG-MPX6-CC
1块
电解电容
1nF
1个
瓷片电容
20pF
2个
按键
欧姆龙
10个
芯片插座
IC-40P
1块
排阻
10KΩ(16位)
1个
电阻
100Ω
10个
晶振
12MHz
1个



附录2 程序
单片机源程序如下:
  1. M_SET  BIT  P1.0   ;时间设置按键
  2.    H_DE   BIT  P1.1   ;时针部分设置
  3.    M_DE   BIT  P1.2   ;分针部分设置
  4.    S_DE   BIT  P1.3   ;秒针分设置
  5.    N_SHOW BIT  P1.4   ;查看闹钟按键
  6.    NH_SET BIT  P1.5   ;闹钟设置按键
  7.    NH_DE  BIT  P1.6   ;闹钟时针部分设置键
  8.    NM_DE  BIT  P1.7   ;闹钟分针分设置键
  9.    N_OK   BIT  P3.5   ;闹钟设置完成按键
  10.    SECOND EQU  30H    ;定义秒计数单元
  11.    MINUTE EQU  31H    ;定义分计数单元
  12.    HOUR   EQU  32H    ;定义时计数单元
  13.    TCNT   EQU  33H    ;一秒计数存储区
  14.    HH     EQU  40H    ;闹钟时针存储区
  15.    MM     EQU  41H    ;闹钟分针存储区
  16. ;************  初始化;设置常量 ***************
  17.        ORG   0000H
  18.        LJMP   START   ;转开始
  19.        ORG    001BH
  20.        LJMP   INT_T0  ;转中断
  21.        ORG    0060H
  22. START: MOV   SP,   #60H
  23.        MOV   PSW,  #00H
  24.        MOV   P0,   #0FFH
  25.        MOV   P2,   #00H
  26.        MOV   DPTR, #TABLE
  27.        MOV   R0, #20H
  28.        MOV   R7,  #5FH
  29.    Q1: MOV  @R0, #00H  ;初始化存储器
  30.        INC   R0
  31.        DJNZ  R7,  Q1
  32.        MOV  HOUR,  #00 ;设置时钟处置0点整
  33.        MOV  MINUTE,#0
  34.        MOV  SECOND,#0
  35.        MOV  HH,#01     ;设置闹钟时间1点10分
  36.        MOV  MM,#10
  37.        CLR  P3.4       ;清闹钟标志,P3.4接扬声器,闹钟时间到
  38.        MOV  TMOD,  #10H
  39.        MOV  TH1,   #(65536-50000)/256
  40.        MOV  TL1,   #0B0H
  41.        SETB  EA
  42.        SETB  ET1
  43.        SETB  TR1        ;启动定时器T1工作
  44. ;************ 按键扫描子程序 ***************

  45. LOOP: LCALL DISPLAY      ;显示当前时间
  46.        LCALL KEY          ;扫描按键
  47.        LCALL ALARM_CLOCK  ;查看闹钟时间
  48.        SJMP LOOP

  49.      KEY: LCALL  DISPLAY;
  50.           JNB    M_SET, S1
  51.           JNB    H_DE, S2
  52.           JNB    M_DE,  S3
  53.           JNB    S_DE,  S4
  54.           JNB    N_SHOW, S5 ;查看闹钟时间
  55.           JNB    NH_SET,S6  ;设置闹钟         
  56.           RET

  57.        S1: LCALL  DISPLAY   ;时间设置按键
  58.                  CPL    TR1       ;定时器改变开关状态
  59.            MOV R5,#1
  60.                     LCALL  DELAY1
  61.                  LJMP   KEY

  62.        S2: LCALL  DELAY      ;设置时针部分
  63.            JB     H_DE,  KEY
  64.            INC    HOUR       ;时针加1
  65.            MOV    A,  HOUR
  66.            CJNE   A,  #24,  J1
  67.            MOV    HOUR,  #0
  68.            LJMP   KEY

  69.        S3: LCALL  DELAY    ;设置分针部分
  70.            JB     M_DE, KEY
  71.            INC    MINUTE    ;分针加1
  72.            MOV    A, MINUTE
  73.            CJNE   A, #60, J2
  74.            MOV    MINUTE, #0
  75.            LJMP   KEY

  76.        S4: LCALL  DELAY    ;设置秒针部分
  77.            JB     S_DE,  KEY
  78.            INC    SECOND    ;秒针加1
  79.            MOV    A,  SECOND
  80.            CJNE   A,  #60, J3
  81.                  MOV    SECOND, #0
  82.                  LJMP   KEY

  83.        S5: LCALL  DELAY    ;查看闹钟时间
  84.            MOV R5,#50
  85.            TU: LCALL DISPLAY1
  86.                LCALL DELAY
  87.                DJNZ R5,TU
  88.                LJMP LOOP

  89.        S6: LCALL DISPLAY1  ;闹钟设置按键
  90.            JB NH_DE,S7
  91.            INC HH          ;闹钟时针加1
  92.            MOV A,HH
  93.            CJNE A,#24,J4
  94.            MOV HH,#0
  95.            LJMP LOOP

  96.        S7: LCALL DISPLAY1  ;设置闹钟时针部分
  97.            JB NM_DE,S8
  98.            INC MM          ;闹钟分针加1
  99.            MOV A,MM
  100.            CJNE A,#60,J5
  101.            MOV MM,#0
  102.            LJMP S6

  103.        S8: JB N_OK,S6      ;闹钟设置完成按键
  104.            JNB N_OK,$
  105.            LCALL DISPLAY
  106.            LJMP LOOP

  107.        J0: JB M_SET,AA
  108.            LCALL  DISPLAY
  109.            SJMP J0
  110.        J1: JB H_DE,AA
  111.            LCALL  DISPLAY
  112.            SJMP J1
  113.        J2: JB M_DE ,AA
  114.            LCALL  DISPLAY
  115.            SJMP J2
  116.        J3: JB S_DE,AA
  117.            LCALL  DISPLAY
  118.            SJMP J3
  119.        J4: MOV R4,#10
  120.            UU:LCALL DISPLAY1
  121.            DJNZ R4,UU
  122.            LJMP S6
  123.        J5: MOV R4,#10
  124.       UU1: LCALL DISPLAY1
  125.            DJNZ R4,UU1
  126.            LJMP S6
  127.        AA: LJMP  LOOP
  128. ;************ 闹钟子程序 ***************
  129. ALARM_CLOCK: MOV A,HOUR
  130.              MOV B,HH
  131.              CJNE A,B,LL     ;当A不等于B时候跳转
  132.              MOV A,MINUTE
  133.              MOV B,MM
  134.              CJNE A,B,LL     ;当A不等于B时候跳转
  135.          X1: LCALL DISPLAY
  136.              CPL P3.4
  137.              LCALL DELAY
  138.              JB N_OK,X1
  139.              JNB N_OK,[        DISCUZ_CODE_2        ]nbsp;    ;闹钟持续一分钟,按下P3.5,闹钟停止
  140.              CLR P3.4  
  141.              LL:RET

  142. ;************  中断子程序  ***************
  143. INT_T0: PUSH   ACC
  144.         PUSH   PSW
  145.         MOV    TH1, #(65536-50000)/256
  146.         MOV    TL1, #0B0H
  147.         INC    TCNT
  148.         MOV    A,  TCNT
  149.         CJNE   A,  #20,RETUNE ;当A不等于20时候跳转
  150.         INC  SECOND
  151.         MOV  TCNT,  #0
  152.         MOV   A,   SECOND
  153.         CJNE  A,  #60,RETUNE  ;当A不等于60时候跳转
  154.         INC   MINUTE
  155.         MOV   SECOND,  #0
  156.         MOV   A,  MINUTE
  157.         CJNE  A,  #60,RETUNE  ;当A不等于60时候跳转
  158.         INC   HOUR
  159.         MOV   MINUTE,#0
  160.         MOV   A,HOUR
  161.         CJNE  A, #24,RETUNE   ;当A不等于24时跳转
  162.         MOV   HOUR,    #0
  163.         MOV   MINUTE,  #0
  164.         MOV   SECOND,  #0
  165.         MOV   TCNT,    #0
  166. RETUNE: POP   PSW
  167.         POP   ACC
  168.         RETI
  169. ;************  显示子程序  ***************
  170. DISPLAY: MOV  DPTR,  #TABLE
  171.          MOV  A,  SECOND
  172.          MOV  B,  #10
  173.          DIV  AB              ;被除数在A中,除数在B中,运算结束后,商存于A中,余数存于B中。
  174.          CLR  P2.6
  175.          MOVC  A, @A+DPTR
  176.          MOV   P0, A
  177.          LCALL  DELAY
  178.          SETB  P2.6
  179.          MOV   A,  B
  180.          CLR   P2.7
  181.          MOVC  A,  @A+DPTR
  182.          MOV   P0,  A
  183.          LCALL  DELAY
  184.          SETB   P2.7

  185.          MOV  DPTR,  #TABLE
  186.          MOV  A,  MINUTE
  187.          MOV  B,  #10
  188.          DIV  AB              ;被除数在A中,除数在B中,运算结束后,商存于A中,余数存于B中
  189.          CLR  P2.3
  190.          MOVC  A, @A+DPTR
  191.          MOV   P0, A
  192.          LCALL  DELAY
  193.          SETB  P2.3
  194.          MOV   A,  B
  195.          CLR   P2.4
  196.          MOVC  A,  @A+DPTR
  197.          MOV   P0,  A
  198.          LCALL  DELAY
  199.          SETB   P2.4

  200.          MOV  DPTR,  #TABLE
  201.          MOV  A, HOUR
  202.          MOV  B,  #10
  203.          DIV  AB              ;被除数在A中,除数在B中,运算结束后,商存于A中,余数存于B中。
  204.          CLR  P2.0
  205.          MOVC  A, @A+DPTR
  206.          MOV   P0, A
  207.          LCALL  DELAY
  208.          SETB  P2.0
  209.          MOV   A,  B
  210.          CLR   P2.1
  211.          MOVC  A,  @A+DPTR
  212.          MOV   P0,  A
  213.          LCALL  DELAY
  214.          SETB   P2.1
  215.          RET

  216. DISPLAY1: MOV  DPTR,  #TABLE
  217.           MOV  A, HH
  218.           MOV  B,  #10
  219.           DIV  AB              ;被除数在A中,除数在B中,运算结束后,商存于A中,余数存于B中。
  220.           CLR  P2.0
  221.           MOVC  A, @A+DPTR
  222.           MOV   P0, A
  223.           LCALL  DELAY
  224.           SETB  P2.0
  225.           MOV   A,  B
  226.           CLR   P2.1
  227.           MOVC  A,  @A+DPTR
  228.           MOV   P0,  A
  229.           LCALL  DELAY
  230.           SETB   P2.1
  231.           CLR    P2.2
  232.           MOV    P0, #40H
  233.           LCALL  DELAY
  234.           SETB   P2.2

  235.           MOV  DPTR,  #TABLE
  236.           MOV  A,  MM
  237.           MOV  B,  #10
  238.           DIV  AB              ;被除数在A中,除数在B中,运算结束后,商存于A中,余数存于B中。
  239.           CLR  P2.3
  240. ……………………

  241. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

完整的Word格式文档51黑下载地址(共44页):
基于proteus数字时钟制作设计与仿真.doc (1.04 MB, 下载次数: 21)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表