基于单片机实现的数字钟设计.docx

上传人:b****6 文档编号:6708525 上传时间:2023-01-09 格式:DOCX 页数:13 大小:98.62KB
下载 相关 举报
基于单片机实现的数字钟设计.docx_第1页
第1页 / 共13页
基于单片机实现的数字钟设计.docx_第2页
第2页 / 共13页
基于单片机实现的数字钟设计.docx_第3页
第3页 / 共13页
基于单片机实现的数字钟设计.docx_第4页
第4页 / 共13页
基于单片机实现的数字钟设计.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

基于单片机实现的数字钟设计.docx

《基于单片机实现的数字钟设计.docx》由会员分享,可在线阅读,更多相关《基于单片机实现的数字钟设计.docx(13页珍藏版)》请在冰豆网上搜索。

基于单片机实现的数字钟设计.docx

基于单片机实现的数字钟设计

数字钟是一种非常广泛日常计时工具,对现代社会越来越流行。

它可以对年、月、日、时、分、秒进行计时,设置闹钟等很多种功能,对于数字钟采用直观的数字显示,可以同时显示年、月、日、时、分、秒等信息,还具有时间校准等功能。

本设计是基于51系列的单片机进行设计,可以显示年月日时分秒信息,具有可调整日期和时间功能,有秒表以及闹钟功能。

程序采用高级语言C进行编写,以便更简单地实现调整时间。

所有程序编写完成后,在确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。

1、单片机简介

1.1单片机的特点

单片机的集成度很高,他将微型计算机的主要部件都集成在一块芯片上,具有下列特点:

1.体积小、重量轻、价格便宜、耗电少;

2.根据工程环境要求设计,且许多功能部件集成在芯片内部,其信号通道受外界影响小,故可靠性高,抗干扰性能优于采用一般的CPU。

3.控制功能强,运行速度快。

其结构组成与指令系统都着重满足工控要求,又极丰富的条件分支指令,有很强的位处理功能和I/O口逻辑操作功能。

4.片内存储器的容量不可能很大;引脚也嫌少,I/O引脚常不够用,且兼第二功能,第三功能但存储器和I/O口都易于扩展。

1.380C51单片机介绍

51单片机是对目前所有兼容Intel8031指令系统的单片机的统称。

该系列单片机的始祖是Intel的8031单片机,后来随着Flashrom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。

目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。

80C51单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点,增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(PUSH)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源。

采用40引脚双列直插式DIP(DualInLinePackage),内有128个RAM单元及4K的ROM。

80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口。

80C51内部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。

1.4单片机硬件资源

单片机(microcontroller,又称微控制器)是在一块硅片上集成了各种部件的微型计算机。

这些部件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。

图1-1是8051单片机的基本结构图

图1-1

8051单片机的结构特点有以下几点:

8位CPU;片内振荡器及时钟电路;32根I/O线;外部存储器ROM和RAM,寻址范围各64KB;两个16位的定时器/计数器;5个中断源,2个中断优先级;全双工串行口;布尔处理器

1.5定时器/计数器

8051内部有两个16位可编程定时器/计数器,记为T0和T1。

16位是指他们都是由16个触发器构成,故最大计数模值为2

-1。

可编程是指他们的工作方式由指令来设定,或者当计数器来用,或者当定时起来用,并且计数(定时)的范围也可以由指令来设置。

这种控制功能是通过定时器方式控制寄存器TMOD来完成的。

如果需要,定时器在计到规定的定时值是可以向CPU发出中断申请,从而完成某种定式的控制功能。

在计数状态下同样也可以申请中断。

定时器控制寄存器TCON用来负责定时器的启动、停止以及中断管理。

在定时工作时,时钟由单片机内部提供,即系统时钟经过12分频后作为定时器的时钟。

技术工作时,时钟脉冲由TO和T1输入。

1.6中断系统

8051的中断系统允许接受五个独立的中断源,即两个外部中断申请,两个定时器/计数器中断以及一个串行口中断。

外部中断申请通过INTO和INT1(即P3.2和P3.3)输入,输入方式可以使电平触发(低电平有效),也可以使边沿触发(下降沿有效)。

两个定时器中断请求是当定时器溢出时向CPU提出的,即当定时器由状态1转为全零时提出的。

第五个中断请求是由串行口发出的,串行口每发送完一个数据或接收完一个数据,就可提出一次中断请求。

1.78051的芯片引脚

如图1-2所示

图1-2

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)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下所示:

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)

P3.3/INT1(外部中断1)

P3.4T0(记时器0外部输入)

P3.5T1(记时器1外部输入)

P3.6/WR(外部数据存储器写选通)

P3.7/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

2、数字钟设计

2.1单片机定时/计数器在数字钟的使用

8051系列单片机至少有两个16位内部定时器/计数器。

8052有三个定时器/计数器,其中连个基本定时器/计数器是定时器/计数器0和定时器/计数器1。

他们既可以编程为定时器使用,也可以编程为计数器使用。

若是计数内部晶振驱动时钟,则它是定时器;若是计数8051的输入引脚的脉冲信号,则它是计数器。

8051的T/C时加一计数的。

定时器实际上也是工作在技术方式下的,只不过对固定频率的脉冲计数;由于脉冲周期固定,由计数值可以计算出时间,有定时功能。

当T/C工作在定时器时,对振荡源12分频的脉冲计数,即每个机器周期计数值加一,频率加=fosc/12。

晶振为6MHz,计数频率=500KHz,每2Us计数加一。

当T/C工作在计数器时,计数脉冲来自外部脉冲输入引脚T0或T1。

当T0或T1脚上负跳变需2个机器周期,即24个振荡周期。

所以T0或T1脚输入的计数外部脉冲的最高频率为fosc/12。

当晶振为12MHz时,最高技术频率为500KHz,高于此频率将计数出错。

2.2与T/C有关的特殊功能寄存器

(1)计数寄存器TH和TL

T/C是16位的,计数寄存器有TH高8位TL低8位构成。

在特殊功能寄存器中,对应T/C0为TH0和TL0;对应T/C1为TH1和TL1。

定时器/计数器的初始值通过TH1/TL1和TH0/TL0设置

(2)定时器/计数器控制寄存器TCON

TR1

TR0

TR0、TR1:

定时器/计数器0、1启动控制位。

1是启动,0是停止

TCON复位后清零,T/C需要受到软件控制才能启动计数;当计数计满时,产生向高位的进位TF,即溢出中断请求标志

T/C的方式控制寄存器TMOD

GATE

C/T

M1

M0

GATE

C/T

M1

M0

C/T:

计数器或定时器选择位。

1位计数器,0位定时器

GATE:

门控信号。

1时T/C的启动控制受到双重控制,即要求TR0/TR1和INT0/INT1同时为高;0时T/C的启动仅受TR0/TR1控制

M1和M0:

工作方式选择位,具体见下表

M1M0

方式

功能

00

0

为13位定时器/计数器,TL存低5位,TH存高8位

01

1

为16定时器/计数器,TL存低8,TH存高8位

10

2

常数自动装入的8位定时器/计数器

11

3

仅适用于T/C0,两个8为定时器/计数器

2.3定时器/计数器的初始化

(1)初始化步骤

在使用8051的定时器/计数器前,应对它进行编程初始化,主要是对TCON和TMOD编程,还需要计算和装载T/C的计数初值。

一般完成以下几个步骤:

确定T/C的工作方式----编程TMOD寄存器。

计算T/C中的计数初值,并装载到TH和TL。

T/C在中断方式工作时,须开CPU中断和源中断----编程IE寄存器。

启动定时器/计数器----编程TCON中TR1和TR0位

(2)计数初值的计算

在定时器方式下,T/C是对机器周期脉冲计数的,如果fosc=6MHz,一个机器周期为2Us,则

方士013位定时器最大时间间隔=(2

-1)*2Us=16.384ms;

方式116位定时器最大时间间隔=(2

-1)*2Us=131.072ms;

方式28位时器最大时间间隔=(2

-1)*2Us=512Us

若使T/C工作在定时器方式1,要求定时1ms,求计数初值。

如设计数初值为x,则有(2

-1)*2Us=1000us

x=2

-500

因此,TH,TL可置65536-500。

2.4查询式键盘

在多功能数字钟的设计中,我们用到了查询式键盘。

查询式键盘也是键盘控制电路中比较常用到的一种。

2.4.1查询式键盘的工作原理

如图2-1时查询式键盘与单片机的连接。

在电路中我们看到P0口作为输入口。

在端口作为外部输入线时,也就是读引脚时,要先通过指令,把端口锁存器置1,然后再执行读引脚操作,否则就可能读入出错。

若不先对端口置1,端口锁存器中原来状态有可能是0,则加到输出驱动场效应管栅极的信号为1,该场效应管就导通,对地呈现低阻抗。

这是即使引脚上输入的是1,也会因端口的低阻抗而使信号变低,使得外加的1信号读入后不一定是1。

若先执行置1,则可以驱动场效应管戒指,引脚信号直接交到三态缓冲器,实现正确地读入。

由于在输入操作时还必须附加一个准备动作,所以这类端口被称为“准双向”口。

将端口置1后,我们就可以用键盘控制弹片机工作了。

图2-1中我们可以看出,在键盘没有按下时,P0口的8位口线均是高电平,在程序中,我们定期查询P0口的状态,一旦有某个键按下,则与此按键连接的口线就被置为低电平,我们就可以认为有键按下,读取P0口得值,则此值就是得到的键值,或经过运算得到我们事先设定好的键值。

当这个按键被释放时,由于P0口直接与+5V电源连接,P0口被重新置为高电平,我们认为此时没有按键按下

当按键按下时,往往会出现所按键在闭合位置和断开位置之间跳几下才稳定倒闭和状态,在释放一个键时也会出现类似的情形,这就是抖动。

抖动的持续时间不一,通常不会大于10ms。

若抖动问题不解决,就会一起闭合键的多次读入。

解决健抖动最方便的方法就是:

当发现有键按下后,不去马上读取键值,而是延时10ms后再读取。

由于键按下的时候持续上百ms,延时后再读取也不晚

2.4.2查询式键盘与单片机的接法

查询式键盘与8051单片机的连接方法如图2-1

图2-1

2.5显示器件

多功能数字钟的一个重要组成部分就是他的显示电路。

用作显示的器材有许多,目前广泛使用能以十进制数码直观地显示系统中的运行数据的七段字符显示器(或称为七段数码管)。

以下是几种常用的七段数码显示器件

⑴半导体数码管(LED)。

这种数码管的每一段都是一个发光二极管,因而把它叫做半导体二极管或LED数码管,如图所示:

 

(a)(b)(c)(d)

图2-2

图2-2中,(a)是共阴极数码管,(b)是与之对应的数码管工作原理图,当有信号输入,共阴极接地时,数码管会显示字形(c)是共阳极数码管,(d)是与之对应的数码管工作原理图,当有信号输入,共阳极高电平时,数码管会显示字形。

要显示数字,我们只要将组成数字的段点亮就可以了,比如显示“1”,我们只要将“b”和“c”点亮就可以了。

所以,每个数字都有其特定的编码。

半导体数码管具有工作电压低,体积小,寿命长,可靠性高等优点。

而且响应的时间短(一般不超过10us),亮度也比较高。

他的缺点是工作电流比较大,每一段的工作电流在10mA左右。

2.5.1数字钟显示电路的工作原理

时钟显示信号是从8051单片机的P1口输出的。

在设计中用到的是共阴极数码管,我们将要显示数字的编码从P1输出,经过74LS245驱动电路,数码管就会按照编码显示出字形来

设计中用到了8位数码管,分别为时分秒。

数码管采用动态显示。

P2口输出位选择信号,分别接74ls138的地址端A,B,C以及使能端G1。

经过74LS138译码,将要显示的数码管的共阴极置为低电平,其他的为高电平,并选中的数码管就会被点亮,从而显示出字形。

2.6所用其他芯片资料

在本设计中,除8051单片机芯片外,我们还有到了另外两个芯片,74ls245和74ls138。

74ls245主要作为数码管的驱动电路,74ls138主要为12位数码管提供片选信号,两者组成了数字钟动态显示电路,以下是两芯片的详细资料

2.6.174LS138译码器的详细资料

74ls138为3-8线译码器,共有74S138和74ls138两种线路结构形式。

当一个端(G1)为高电平,/(G2A)]和/(G2B)为低电平时,可将地址端(A,B,B)的二进制编码在一个对应的输出端以低电平方式输出

利用G、/(G2A)、/(G2B)可级联扩展为24线译码器,若外接一个反相器,可扩展为32线译码器

若将选通端中的一个接数据输入端时,138还可以做数据分配器。

在本设计用到一片74LS138。

在与74LS138连接的四位口线中,有三位口线于74LS138的的地址端A,B,C连接,另一口线与使能端G1连接,在G2A,G2B接地的情况下,组成3线-8线译码器,输出数码管的片选信号。

74LS138的真值表如下所示:

输入

输出

使能端

选择端

G1

G2*

C

B

A

Y0

Y1

Y2

Y3

Y4

Y5

Y6

Y7

H

H

H

H

H

H

H

H

H

L

H

H

H

H

H

H

H

H

H

L

L

L

L

L

H

H

H

H

H

H

H

H

L

L

L

H

H

L

H

H

H

H

H

H

H

L

L

H

L

H

H

L

H

H

H

H

H

H

L

L

H

H

H

H

H

L

H

H

H

H

H

L

H

L

L

H

H

H

H

L

H

H

H

H

L

H

L

H

H

H

H

H

H

L

H

H

H

L

H

H

L

H

H

H

H

H

H

L

H

H

L

H

H

H

H

H

H

H

H

H

H

L

表2-2

2.6.274LS245

74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。

74LS245还具有双向三态功能,既可以输出,也可以输入数据。

当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。

当片选端/CE低电平有效时,DIR=“0”,信号由B向A传输;(接收)。

DIR=“1”,信号由A向B传输;(发送)当CE为高电平时,A、B均为高阻态。

由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与驱动器输入线对应相连。

P0口与74LS245输入端相连,E端接地,保证数据线畅通。

8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时,74LS245输入(P0.1←D1),其它时间处于输出(P0.1→D1)。

引脚如图2-3

图2-3

3、数字钟整体电路图

4、个人任务程序编写

多功能数字钟的程序是用C语言来实现的,在程序中,我们用定时器/计数器0作为数字钟的时钟信号源,产生年、月、日、时、分、秒信号,方式1计数,付初值TH0=0xd8;TL0=0xf0;约为10ms中断100次为1秒。

60秒是增加一分钟,以此类推。

程序如下:

voidtime2dely(void)interrupt1using1

{

staticunsignedcharcount;

TH0=0xd8;//重新赋值

TL0=0xf0;

count++;

if(count==100)

{

count=0;

second++;//秒加1

if(second==60)

{

second=0;

minute++;//分加1

if(minute==60)

{

minute=0;

hour++;//时加1

if(hour==24)

{

hour=0;

day++;//日加1

if(day==32)

{

day=1;

moon++;//月加1

if(moon==13)

{

moon=1;

year++;//年加1

}

}

}

}

}

}

}

定时器1用于数码管动态显示时扫描计时用,采用中断方式,初值TH1=0xF8;TL1=0xf0;编程方法如下:

voidtime1scan(void)interrupt3using0//定时器1用来动态扫描

{

staticunsignedcharnum;

TH1=0xF8;//重入初值

TL1=0xf0;

switch(num){

case0:

P2=0;P0=StrTab[num];break;

case1:

P2=1;P0=StrTab[num];break;

case2:

P2=2;P0=StrTab[num];break;

case3:

P2=3;P0=StrTab[num];break;

case4:

P2=4;P0=StrTab[num];break;

case5:

P2=5;P0=StrTab[num];break;

case6:

P2=6;P0=StrTab[num];break;

case7:

P2=7;P0=StrTab[num];break;

default:

break;

}

num++;//扫描8次,使用8个数码管

if(num==8)

num=0;

}

数字钟共使用4个按键,分别对应单片IO口为KEY1=P3^0;KEY2=P3^1;KEY3=P3^2;KEY4=P3^3;当按下键1时为闹钟调时,1键为加和2键为减,4键调整位,长按3键返回,显示时间。

2键进入秒表,1键开始暂停,2键清零,长按3键返回。

显示时间是按3键显示日期,按4键为调整时间,1键为加2键为减。

5、参考文献

[1]何立民编著[M].《MCS-51系列单片机应用系统设计系统配置与接口技术》北京北京航空航天大学出版社,1990

[2]张毅刚.单片机原理及应用.高等教育出版社,2009.11

 

评语

成绩

指导教师

(签字)

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1