当前位置:文档之家› 数字时钟

数字时钟

郑州轻工业学院民族职业学院

专科毕业设计(论文)

题目: 数字时钟

学生姓名:何建东

专业班级: 电气自动化

学号: 0701030211

院(系):电子信息技术系

指导教师(职称):贾新建

完成时间: 2010-3-27

数字时钟的设计实现

摘要

单片计算机即单片微型计算机。(Single-Chip Microcomputer ),是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。他体积小,成本低,功能强,广泛应用于智能产

品和工业自动化上。而51 单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。电子钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所。本系统采用本系统以AT89C51为主控芯片,实现电子时钟的设计,并考虑节约系统的硬件,能用软件实现的功能尽量都用软件实现。而且达到时钟功能为24小时的计时方式,显示时、分、秒;具有快速校准时、分的功能;根据按键输入调用相应键处理子程序,实现时间的调整;然后输出到8位的LED显示器显示出来。

关键词AT89C51 数码管

Design and Implementation of Digital Clock

Abstract

Single-chip computer is single-chip micro-computer. (Single-Chip Microcomputer), is a CPU, RAM, ROM,timing, counting and multiple interfaces in one microcontroller. his small size, low cost, feature strong, widely used in intelligent products on products and industrial automation. while 51 is the microcomputer MCU of the most typical and most representative one. The graduation set dollars through its study, the application to achieve the study, design, development software and hardware capabilities. Clock has become an everyday necessity, widely used in the family, stations, terminals, theaters, offices and other places. The system uses the system to AT89C51 as the master chip, designed for electronic clock, and to consider saving the system's hardware, software features can be used both as far as possible with the software implementation. And reached an 24-hour clock time function that shows hours, minutes and seconds; with fast calibration, sub-functions; according to key input processing subroutine calls the appropriate keys to realize the adjustment of the time; and then output to 8-bit LED display displayed.

Key words:AT89C51 digital tube

目录

1.电子时钟简介 (4)

2.电子时钟的原理 (4)

3.设计任务 (4)

1.1题目 (5)

1.2技术指标及设计要求 (5)

1.3给定条件及器件 (5)

1.4使用方法 (5)

4.设计方案与实现 (5)

硬件设计 (6)

软件设计 (7)

5.附录 (9)

1.1元件清单 (10)

1.2程序清单 (10)

1.3程序流程图 (35)

6. 结束语 (37)

7.致谢 (38)

8.参考文献 (39)

1 电子时钟简介:

1957年,Ventura发明了世界上第一个电子表,从而奠定了电子时钟的基础,电子时钟开始迅速发展起来。现代的电子时钟是基于单的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒满二十四小时小时清零。从而达到计时的功能,是人民日常生活不可缺少的工具。

2电子时钟的原理

该电子时钟由89C51,BUTTON,六段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。而电路中唯一的一个控制键却拥有多种不同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。

3设计任务:

1)题目

8位LED数字时钟的设计与实现

2)技术指标及设计要求

(1)显示小时、分钟、秒时间

(2)实现秒的量化显示

(3)具有调整时间功能

(4)开机复位显示及手动复位显示功能

3)给定条件及器件

(1)单片机及相关外围器件

(2)直流稳压电源5V

(3)万用电路板

(4)8联共阳数码管

4)使用方法

接通电源后,蜂鸣器连续两次发出响声,同时工作指示灯LED 闪动,表示程序开始工作,数码管显示‘0000’

(1)设置现在时间

(2)K1键为设置现在时间功能键,按一下K1键进入设置现在时间状态,然后按K2键为小时调整,按K3分钟调整。设置完成后要按一下K4恢复正常的时钟走进状态。

(3)设置闹铃时间。

(4)K2设置闹铃功能键,当走时的设置完按过K4,再按一下K2进入设置闹铃时间状态,此时再按一下K2即为小时调整;按K3分钟调整。闹铃时间设置完成按过K4,此时的K4为设置闹铃ON/OFF闹铃时会听到连续3次发出声响;设为关闭闹铃时会发出1次声响。

(5) 设置倒计时时间。K3设置倒计时功能键,当按一下K3放倒计

时状态后,K3和K2功能,此时K2倒计时分钟数键,按倒计时增加:K3为倒计时分钟数减少键,按倒计时减少。倒计时的时间最长为59 min 。倒计时时间设置好后,按一下K4键会听到4次声响,表示设置完毕,进入倒计时工作状态。倒计时结束后会发出警报,此时需要按一下K4键,警报声停止,时钟恢复正常走时状态。在倒计时时,时钟在正常地走时,只是在倒计时期间里U3/U4数码管反映的是倒计时的时间,而U1/U2数码管仍然反映的走时时间。当倒计时结束后U3/U4数码管也会立即恢复正常的走时时间。 2 设计方案及实现 1) 硬件设计 (1)相关器件介绍

(a) 4联LED 数码显

(b) 4联LED 数码显

图3 四位LED 数

(a) LED 数码显示(b) LED 数码显示

图1 一位LED 数码

(c) 共阳极结构

C 图2 9012和LE

D 引

3 4

图 4 按键引线排1 2 4

o

r

_

+

(2)数码管介绍:

数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。

2)软件设计

(3)数码管的驱动方式

数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。

①静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱

动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S52单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

②动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O 线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O 端口,而且功耗更低。

(4)单片机AT89C51的介绍

AT89C51是一种带4K字节闪烁可编

程可擦除只读存储器(FPEROM—Falsh

Programmable and Erasable Read Only

Memory)的低电压,高性能CMOS8位微处

理器,俗称单片机。AT89C2051是一种带

2K字节闪烁可编程可擦除只读存储器的

单片机。单片机的可擦除只读存储器可以

反复擦除100次。该器件采用ATMEL高密

度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

(6)电路设计

附录:

元器件清单

晶振数码管开关电容电阻三极管 1 2 5 3 9 4

程序:

定义存放计时单元地址

ALB EQU 20H.0 ;闹铃设置标志

BUF EQU 30H ;30~37H 连续8字节存放显示器数据

HOUR EQU 38H ;存放小时变量

MIN EQU 39H ;存放分钟变量

SEC EQU 40H ;存放秒钟变量

DEDA EQU 41H ;存放5 ms 计数值

HH EQU 42H ;闹铃设置小时变量

MM EQU 43H ;闹铃设置分钟变量

SS EQU 44H ;闹铃设置秒变量

;………………………………

SEC0 EQU 3AH ;存放旧的秒数

MM_D EQU 3BH ;倒数时间分钟数

SS_D EQU 3CH ;倒数时间秒钟数

;………………………………

;按键输入引脚定义

K1 EQU P1.0 ;按键1引脚定义

K2 EQU P1.1 ;按键2引脚定义

K3 EQU P1.2 ;按键3引脚定义

K4 EQU P1.3 ;按键4引脚定义

;压电喇叭和指示灯引脚定义

SPK EQU P1.4 ;压电喇叭控制信号

; WLED EQU P1.0 ;工作指示灯引脚定义

;程序开始执行地址

ORG 0H ;程序代码由地址0开始执行 JMP MAIN

ORG 0BH ;定时器 0 中断地址设置

JMP TO_SRV

;---------主程序--------――

MAIN: ;开始

CLR ALB ;清除闹铃标志

ACALL BZ ;压电喇叭连续两次鸣响一声 ACALL BZ

ACALL LED_BL ;LED 闪动,表示程序开始执行 ACALL INIT ;初始变化量

ACALL INIT_TIMER ;设置定时器

;加载显示器初值数据

MOV A, #0C0H

MOV P0, A

MOV 32H,#0BFH

MOV 35H,#0BFH

;无穷循环

LOOP: ;无穷循环

ACALL CONV ;转换时时分分数据 ACALL TIME_PRO ;检查闹铃时间

ACALL DISP ;扫描显示

;设置走时时间

JB K1, M1 ;未按下K1键则继续扫描 ACALL LED_BL ;LED闪动

ACALL SET_TIME ;设置目前时间

JMP LOOP ;继续循环执行

;设置闹铃时间

M1:JB K2,M2 ;未按下K2键则继续扫描

ACALL LED_BL

ACALL SET_ATIME ;设置闹铃时间

JMP LOOP ;继续循环执行

;设置倒计时间

M2:JB K3, M3 ;未按下K3键则继续扫描 ;…………………………

ACALL LED_BL

ACALL DOWN_ATIME ;设置倒计时间

;…………………………

JMP LOOP ;继续循环执行

M3:JB K4,M4 ;未按下K4键则继续扫描 CPL ALB

JNB ALB,M31

;闹铃启动连续3次发出响声

ACALL BZ

ACALL BZ

ACALL BZ

JMP LOOP ;继续循环执行

M31:

ACALL BZ ;闹铃停止,发出一声响

JMP LOOP ;继续循环执行

M4:

JMP LOOP ;继续循环执行

;----―――实现走时功能的子程序-----――

;使用定时器0模式0计时

INIT_TIMER: ;初始化定时器,使用定时器0模式1计时

MOV TMOD,#00000000B ;设置定时器0工作模式为0

MOV IE, #10000010B ;启用定时器0中断产生

MOV TL0, #(8192-4900)MOD 32 ;加载低字节

MOV TH0, #(8192-4900)/32 ;加载高字节

SETB TR0 ;启动定时器0开始计时

RET

;-----------―――

;中断服务程序

TO_SRV: ;定时器0计时中断程序每隔5ms 中断一次

PUSH ACC ;将累加器放入堆栈

MOV TL0, #(8192-4900)MOD 32 ;加载低字节 MOV TH0, #(8192-4900)/32 ;加载高字节 INC DEDA ;5ms计数值加1 ;秒输出

MOV A, DEDA

CJNE A,#200,TT1 ;是否1s到了

MOV DEDA, #0 ;计数值清除为0

; CPL WLED ;LED灯亮灭变换

INC SEC ;秒计数加1

MOV A, SEC

CJNE A, #60, TT1;是否1min到了

;分输出

INC MIN ;分计数加1

MOV SEC, #0 ;秒计数清除为0

MOV A, MIN

CJNE A, #60, TT1 ;是否1h到了

;时输出

INC HOUR ;小时计数加1

MOV MIN, #0 ;分计数清除为0

MOV A, HOUR

CJNE A,#24, TT1 ;是否24h到了

MOV SEC, #0 ;秒钟变量清除为0

MOV MIN, #0 ;分钟变量清除为0

MOV HOUR, #0 ;小时变量清除为0

TT1:

POP ACC ;将累加器由堆栈取出

RETI

;----――实现显示功能的子程序---――――

;转换时时:分分数据

CONV:

;转换小时数据

MOV A, HOUR

MOV B, #10

DIV AB

MOV DPTR,#TABLE ;查表转换

MOVC A, @A+DPTR

MOV BUF, A

MOV A, B

MOVC A, @A+DPTR

MOV BUF+1, A

;转换分钟数据

MOV A, MIN

MOV B, #10

DIV AB

MOV DPTR,#TABLE ;查表转换 MOVC A, @A+DPTR

MOV BUF+3, A

MOV A, B

MOVC A, @A+DPTR

MOV BUF+4, A

; 转换秒数据

MOV A, SEC

MOV B, #10

DIV AB

MOV DPTR,#TABLE ;查表转换 MOVC A, @A+DPTR

MOV BUF+6, A

MOV A, B

MOVC A, @A+DPTR

MOV BUF+7, A

RET

;字型数据编码表

TABLE:

DB 0C0H,0F9H,0A4H,0B0H

DB 99H,92H,82H,0F8H

DB 80H,90H,88H,83H

DB 0C6H,0A1H,86H,8EH

;---------――――

;扫描显示

DISP:

MOV R0, #BUF ;指向显示器显示缓冲区起始地址 MOV R2, #8 ;循环执行4次

MOV ACC, #01111111b;加载扫描信号初值01111111B S1:

PUSH ACC

MOV A, @R0 ;取出显示器数据

MOV P0, A ;由P0送出一位显示器数据

POP ACC

MOV P2, A ;由P2送出扫描输出信号

MOV R5, #2 ;延迟一会儿

ACALL DELAY

;改变扫描码 EX:01111111

RR A ;累加器向左移动一位

INC R0 ;显示器显示缓冲区地址加1

相关主题
文本预览
相关文档 最新文档