数字时钟的设计与实现_第1页
数字时钟的设计与实现_第2页
数字时钟的设计与实现_第3页
数字时钟的设计与实现_第4页
数字时钟的设计与实现_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机应用系统与开发技术

课题名称:

数字时钟的设计与实现

班级:____________________

学号:______________________

姓钮_________________________

卷右教学戊木孽论

数码科技系

题目:数字时钟的设计与实现

目录

序言

一、概要设计6

1、项目描述....6

2、功能描述........6

3、系统框图.......6

硬件设计及简介

二、时钟硬件设计7

1、单片机简介......7

2、AT89C51单片机简介....8

3、AT89C51单片机原理图.....8

4、数码管显示工作原理.......11

5、共阳数码管的原理.....13

6、所需元件..........13

7、部分电路图............14

三、焊接.......18

胆、软件设计19

l^主程序••••19

1・1、主程序日勺概念19

1・2、主程序流程图......20

2、LED显示子程序20

2-1xLED显示子程序■•,■20

3、键盘扫描功能设置子程序•••20

3•1、调用键盘扫描功能时日勺措施・・20

3-2、定期中断子程序流程图……21

3.3、编制程序■■■■21

五、设计总结27

序言

时钟,自从它发明的那天起,就成为人类的朋友,但伴随时间的

推移,科学技术日勺不停发展,人们对时间计量的精度规定越来越高,

应用越来越广。怎样让时钟更好的为人民服务,怎样让我们的老朋友

焕发青春呢?这就规定人们不停设计出新型时钟。

现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于

电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定

性好,使用以便,不需要常常调校,数字式电子钟用集成电路计时时,

译码替代机械式传动,用LED显示屏替代显示屏替代指针显示进而显

示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,

还可以进行时和分的校对,片选的灵活性好。

时钟电路在计算机系统中起着非常重要的作用,是保证系统正常

工作日勺基础。在一种单片机应用系统中,时钟有两方面日勺含义:一是

指为保障系统正常工作的I基准振荡定期信号,重要由晶振和外围电路

构成,晶振频率的大小决定了单片机系统工作日勺快慢;二是指系统日勺

原则定期时钟,即定期时间,它一般有两种实现措施:一是用软件实

现,即用单片机内部时可编程定期/计数器来实现,但误差很大,重

要用在对时间精度规定不高日勺场所;二是用专门日勺时钟芯片实现,在

对时间精度规定很高的状况下,一般采用这种措施,经典的时钟芯片

有:DS1302,DS12887,X1203等都可以满足高精度的I规定。

本文重要简介用单片机内部的定期/计数器来实现电子时钟的措

施,本设计由单片机AT89s51芯片和LED数码管为关键,辅以必要

的电路,构成了一种单片机电子时钟。

一设计规定

一、概要设计;

1、项目描述:用六位LED数码管实现电子时钟

的功能,显示方式为时、分、秒,采用24小时计时

方式。使用按键实现时、分的调整。

2、功能描述:

1:显示时间方式:时,分,秒。

2:计时方式:24h(小时)制。

3:上电显示为:12-00-00

3:电子时钟的系统框图。

二硬件设计及部分电路简介

二、时钟硬件设计;

1、单片机简介。

单片机全称为单片机微型计算机(SingleChip

Microsoftcomputer)o从应用领域来看,单片机重要用来控制,因此又

称为微控制器(MicrocontrollerUnit)或嵌入式控制器。单片机是将

计算机的基本部件微型化并集成在一块芯片上日勺微型计算机。

2、AT89c51单片机简介。

VCC:供电电压。

GND:接地。

P0□:P0口为一种8位漏级开路双向I/O口,每脚可吸取

8TTL门电流。当P1口日勺管脚第一次写1时,被定义为高阻输入。

P0可以用于外部程序数据存储器,它可以被定义为数据/地址欧I第八

位。在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个带内部上拉电阻日勺双向U0口,可

接受输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉

为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口

将输出电流(ILL)这是由于上拉时缘故。

P3口也可作为AT89c51的某些特殊功能口,如下表所示:

口管脚备选功能

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

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

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

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

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

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

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

P3口同步为闪烁编程和编程校验接受某些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两

个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存容许的输出电平

用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编

程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频

率为振荡器频率的1/6。因此它可用作对外部输出W、J脉冲或用于定期

目的。然而要注意的是:每当用作外部数据存储器时,将跳过一种

ALE脉冲。如想严禁ALE时输出可在SFR8EH地址上置0。此时,

ALE只有在执行MOVX,MOVC指令是ALE才起作用。此外,该

引脚被略微拉高。假如微处理器在外部执行状态ALE严禁,置位无

效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器

取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器

时,这两次有效日勺/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储

器(0000H-FFFFH),不管与否有内部程序存储器。注意加密方式1

时,,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程

序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源

(VPP)o

XTAL1:反向振荡放大器的输入及内部时钟工作电路日勺输

入。

XTAL2:来自反向振荡器日勺输出。

3、AT89c51单片机原理图,(如图2所示)

U1

1939

>XTAL1P0.0/AD0

P0.1/AD1

P0.2/AD2

18

XTAL2P0.3/AD3

P0.4/AD4

P0.5/AD5

P06/AD6

9

RSTP0.7/AD7

P20/A8

P21/A9

P22/A10

22-

PSEHP2.3/A11

30-

ALEP2.4/A12

31

EAP25/A13

P26/A14

P2.7/A15

[10

P1.0P3.O/RXD

11

3-P1.1P3.1/TXD4O

P1.2P3.2/INT0

4A-7?

P1.3P3.3/INT1

514

AP3.47T0

6I4oC

rP1AKO.DZII

7_1b

P1.6P3.6WR

817

P1.7P3.7/RD

AT89C51

图2单片机

4、数码管显示方案。

动态显示。所谓动态显示就是一位一位的轮番点亮各个位,

对于显示屏时每一位来说,每隔一段时间点亮一次。运用人的视觉暂

留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪

烁。显示屏日勺亮度既与导通电流有关,也于点亮时间与间隔时间的比

例有关。调整参数可以实现较高稳定度的显示。动态显示节省了I/O

口,减少了能耗

5、数码管显示工作原理;

数码管是一种把多种LED显示段集成在一起的显示设

备。有两种类型,一种是共阳型,一种是共阴型。共阳型就是把多种

LED显示段的阳极接在一起,又称为公共端。共阳型就是把多种LED

显示段日勺阳极接在一起,即为公共商。一般日勺数码管又分为8段,即

8个LED显示段,分别为A、B、C、D、E、F、G、DP,其中DP

是小数点位段。而多位数码管,除某一位的公共端会连接在一起,不

一样位日勺数码管时相似端也会连接在一起。即,所有的A段都会连

在一起,其他时段也是如此,这是实际最常用的使用方法。数码管显

示措施可分为静态显示和动态显示两种。静态显示就是数码管口勺8段

输入及其公共端电平一直有效。动态显示的原理是,各个数码管内相

似段连接在一起,共同占用8位段引管线;每位数码管的阳极连在

一起构成公共端。运用人眼的视觉暂留性,依次给出各个数码管公共

端加有效信号,在此同步给出该数码管加有效日勺数据信号,当全段扫

描速度不小于视觉暂留速度时,显示就会清晰显示出来。

6、共阳极数码管原理图;

LED5V

D8

图3共阳极数码管内部构造图

7、所需元件

1、8位数码管

图3数码管

2、电容、

C1

1nF

图4电容器

3:电阻、

R1

II

10k

图5电阻

4:晶体、

图6晶振

7、部分硬件电路图,

1、复位电路

C2

图复位电路

1、单片机最小系统,如图所示;

C1

U1

19

.VTAt1POOAOO

PO1/AD1

PO2/AD2

yrAIoP03/A03

P04/AD4

P05/AD5

PO6/AO6

FOVP07/A07

P20/A8

P21/AO

事P2»A10

P23/A11

AL£P24Ml2

EAP25Ml3

主P26/A14

P27/A15

圭P10P3ORXD

P11P31/FXD

P12P32/IMT0

P13P3yiMTl

P14P34/TD

P15P351

P16

PI7P37和

图6单片机最小系统

2、键盘扫描电路,(系统中用3个按键作为功能键,Ki,K2,

K3,因此采用独立式键盘构造。)

该设计只用了三个键盘,但实现的功能却是比较完善,减少了

硬件资源W、J损耗,该键可以实现时、分、秒W、J调整。当按键按下第一

种键(kl淞开时,则可以通过第二个按键实现小时W、J累加,可以通过第

三个键(K3)实现小时时累减,每按一次小时加一或减一,当再次

按第一种键(K1)时,此时分钟进行闪烁,则可以进行对分钟的加、

减,同样按第一种键(K1)就可以对跑秒进行调整,每按(kl)一

次选中要调整的对象,按(k2)一次加一,按(k3)一次减一。达届

时间调整的目的。

RST

29

30^PSE

37«ALE

EA

1•

P1.C

P1.1

3

P1.2

4・

P1.3

5

P1.4

6・

P1.5

7

P1.6

8切

P1.7

AT89(

图7独立按键

3、数码管扫描驱动电路,(用8个NPN型三

极管来驱动8位动态数码管)

三极管驱动电路

4、电子时钟时硬件电路图。

图9

三、焊接模块。

1、物品清单与元件特性

表1・1物品清单:

元件名称规格型号单位数量

瓷片电容30P只2

电解电容47UF/16V只1

电解电容10UF/16V只2

电阻10kO只8

电阻200Q只8

-ff-|_1_

心片AT89S51片1

芯片座DIP40只1

无源晶振12M只1

4位数码管0.5寸/共阳只2

三极管9012个8

二极管1N4148只1

按键无自锁只4

电池盒个1

电路板9.55*5.664CM21

表1・2AT89c51功能特性:

兼容MCS-51指令系统・4k可反复擦写(>1000次)ISPFIashROM

•32个可编程I/O口-4.0-5.5V工作电压范围

・2个16位可编程定期/计数器•全静态工作模式:时钟频率O-33MHZ

•全双工UART串行中断口线■128x8bit内部RAM

•5个中断源・低功耗空闲和掉电模式

焊接总结:

本次试验提供8051芯片和PNP型三极管.焊接的时候一不小心就会出错,,

实际上的电路图不会和仿真软件的电路图完全一致,不过大体上还是同样的。

本次焊接实际上需要比较多的电线,尤其是数码管部分,由于相邻引脚非常贴

近,在焊接的时候要非常留心,谨防相邻两点短路。

1>主程序。

17、主程序日勺概念:

主程序重要是循环调用显示子程序及键盘扫描功能设置子程序,

1•2、主程序流程图

系统初始化

容许TO中断

调用显示子程序

调用键盘子程序

图10主程序流程图

2、LED显示子程序

2・1、码管显示日勺数据寄存在内存单元dis[0卜dis[5]中。每一单元均为十进

制BCD码。由于采用软件动态扫描方式实现数据显示日勺功能,显示用十进制BCD

码数据的对应段码寄存在ROM表中。显示时,先取出dis[O卜dis[5]某一地址中

H勺数据,然后查H勺对应H勺显示用段码,并从pO口输出,p2口将对应的数码管选

中供电,就能显示该地址单元的数据值。

3、键盘扫描功能设置子程序

3・1、调用键盘扫描功能时的措施如下:按下pl.O口按键,则进入调整时间

状态,等待操作,pl.O口或pl.2口按键时,在调时间状态下可实现加1或减1

的功能。

3・2、定期中断子程序流程图

图TO中断服务程序流程图

3.3、编制程序

********************

:*功能描述:K0一时分位选择,K1-----加1,K2——减1

:*上电时初始化显示:12-00-00,12Hz晶振,8位共阳数码管

*******火火火火**火*火*火**

#include<reg51.h>

#defineucharunsignedchar

#defincuintunsignedint

#defineleddataPO//段码控制端

#defineledbitP2//位选端

sbitkeyO=PlAO;//功能切换按键

sbitkeyl=PlAl;〃加一按键

sbitkcy2=PlA2;〃减一按键

ucharcode

tablef1={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,Oxf8,0x80,0x90,0xff,0xbf};

〃共阳0-9段码,Oxff为清零码,Oxbf为显示“一”用;

uchardatascan_con[8]={0x01,0x02,0x04,0x08,Ox10,0x20,0x40,0x80};

码;

uchardatatimcdata[8j={0x01,0x02,0x0b,0x00,0x00,0x0b,0x00,0x00);//用作数

码管显示时分秒计数;

uchardatadis[10]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,Oxff)://

数码管的显示;

uchardatacon1s=0x00,con03s=0x00,con=0x00;

voiddelaylms(uintt)〃延时函数

(

intj;

fbr(;t>O;t-)

for(j=0;j<120;j++);

voidkeyscan()//按键扫描函数

EA=0;〃关中断

if(keyO==O)

(

delaylms(5);

while(keyO==O);

con++;

TR0=0;

ET0=0;

TR1=1;

ET1=1;

if(con>=8)//如con>=8,则恢复时钟正常显

示,并对con时值清零;

(

con=0;

TR1=O;

ET1=O;

TRO=1;

ET()=1;

dis[8]=0x()a;

}

)

if(con!=0)//con的J值不为零,阐明此时正在调

时模式下等待调时;

(

if(key1==O)

(

delay!ms(5);

while(keyl==O);

timedata[con]+4-;

switch(con)

(

case1:if(timedata[con]<10)〃判断小时的I个位与否不不小

于十;

(

if(timedata[con]>=4&&timedata[con-1]==2)〃判断

小时与否加到“24”,假如是小时位变成“00”;

timedata[con]=0;

timedata[con-r=0;

}

)

else〃小时的个位不小于等于十,就

使小时的十位加一;

(

timedata[con]=0;

timedata[con-l]+4-;

break;

case3:〃3和6分别代表分与秒的十

位,它的值不小于5时,就对目前值清零;

case6:if(timedata[con]>=6)

timedata[con]=0;

break;

case4://4和7分别代表分与秒『、J个位,它

时值不小于9时,就对目前值清零;

case7:if(timedata[con]>=10)

timedata[con]=();

break;

)

dis[con]=timedata[con];

dis[con-1]=timedata[con-11;

dis[8]=0x0a;

)

)

if(con!=0)

(

if(key2==0)

(

BEEP();

delaylms(5);

while(key2==0);

switch(con)

{

case1:if(timedata[con]=0)

timedata[con]=9;

timedata[con-l]—;

if(timedata[con-1]==0&&timedata[con]==0)

(

timedata[con]=3;

timedata[con-l]=2;

}

)

else

timedata[con]-;

break;

case3:

case6:if(timcdata[con]==0)

timedata[conl=5;

else

timedatafcon]—;

break;

case4:

case7:if(timedata[con]==0)

timcdata[conj=9;

else

timedata[con]—;

break;

)

dis[con]=timedata[con];

dis[con-l]=timedata[con-l];

dis[8]=0x0a;

)

}

EA=1;

)

voiddisplay()〃显示函数

(

uchark;

for(k=0;k<8;k++)

(

led_data=table[dis[k]];

led_bit=scan_con[k];

delaylms(l);

P2=0x00;

)

voidinitializa()//初始化

(

inti;

for(i=0;i<8;i++)

(

dis[i]=timedata[i];

)

/***打开T0和T1定期中断,并对TO和T1赋定期50ms的初值***/

TH0=0X3C;

TL0=0XB0;

THl=0X3C;

TL1=OXBO;

TMOD=OX11;

ETO=1;

ET1=1;

TR()=1;

TR1=O;

EA=I;

main()

inilializa();〃初始化函数

while(l)

{displayO;〃显示函数

keyscan();〃按键检测函数

1

)

voidtime_intO()interrupt1//TO定期Is中断服务函数

(

ET0=0;

TR0=0;

TH0=0x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论