数字钟电子稿.docx

上传人:b****8 文档编号:29337263 上传时间:2023-07-22 格式:DOCX 页数:26 大小:231.18KB
下载 相关 举报
数字钟电子稿.docx_第1页
第1页 / 共26页
数字钟电子稿.docx_第2页
第2页 / 共26页
数字钟电子稿.docx_第3页
第3页 / 共26页
数字钟电子稿.docx_第4页
第4页 / 共26页
数字钟电子稿.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

数字钟电子稿.docx

《数字钟电子稿.docx》由会员分享,可在线阅读,更多相关《数字钟电子稿.docx(26页珍藏版)》请在冰豆网上搜索。

数字钟电子稿.docx

数字钟电子稿

摘要:

我们介绍了多功能数字钟的系统设计。

系统具有时间设置及显示、闹钟、温度显示等功能。

系统以AT89C52为核心,主要进行基于AT89C52低功耗MCU的字符型数字钟及其系统的研究。

系统带有数码管显示器,配合按键提供友好的用户界面,操作简单。

该数字钟能长期、连续、可靠、稳定的工作;同时还具有体积小、功耗低等特点,便于携带,使用方便。

系统软件设计包括单片机计算机两部分的编程。

计算机软件编程主要实现参数设置、串行口数据接收、指令发送以及数据的显示和存储,采用汇编语言编程。

单片机软件编程主要实现键盘、数码管显示等各模块的功能,采用汇编语言编程。

该系统通过定时计数器与计算机通信,计算机给单片机发指令实现数据采集及系统控制,并将数据实时地传回计算机。

关键词:

数字钟、数码管显示、定时计数器

 

Abstract:

Thispaperdescribesthedesignofamulti-functionddigitalclocksystem.Itasdisplayingandsettingtimeforclockandalarm,thissystemhasotherspecialfeaturessuchasdataprotectionatpowerfaillure.ThecorepartofthesystemisbasedonakingofadvancedMCU,AT89C52,thissystemmainlycarriesonlowpowerconsumeMCUthecharacterlisttypetheresearchofthedigitalclockanditssystemaccordingtotheAT89C52.Thesystemtakesliquidcrystaldisplay,matchingwithakeytoprovideamityofcustomerinterface,theoperationissimple,consecution,credibility,stablework;Stillhaveaphysicalvolumeinthemeantimesmall,thepowerconsumealowetc.characteristics,easytotake,theusageconvenience.Thesystemsoftwaredesignincludesasinglesliceaplaitdistancewithtwopartsofmachinecalculator.Thecalculatorsoftwareplaitdistancemainlycarriesoutaparameterconstitution,stringtogoapeople'sdatatoreceive,theinstructionsendoutanddataofmanifestationwithsaving,theadoptionVisualBasic.

Thatsystemgoesandcalculatorcorrespondencethroughastring,thecalculatorgivesingleslicemachinehairtheinstructioncarryoutadatatocollectandthesystemcontrol,andissolidthedatathegroundsendbackacalculator.

Keywords:

digitalclock,LCD,Alarm,

 

引言

20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

  数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。

诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。

因此,研究数字钟及扩大其应用,有着非常现实的意义。

 

目录

1方案论证6

1.1方案

(一)6

1.2方案

(二)6

2单片机设计的基本原理6

2.1软件时钟的基本原理6

2.2系统硬件电路的设计7

2.3.1主程序7

2.3.2数码管显示模块9

2.3.3定时计数器中断服务程序9

2.3.4按键处理模块9

3扩展功能9

4程序清单9

5元器件清单及功能介绍14

5.1元器件清单14

5.2元器件介绍15

6过程分析和结果15

6.1软件调试15

6.2硬件调试15

结束语16

1.对本课程的学习体会16

2.学习本课程后,希望增加的内容。

16

3.对代课老师的教学有何评价,并提出教学建议。

16

参考文献17

 

1方案论证

这次课程设计的题目是数字钟,对于这次课设,根据设计要求我们的方案有:

1.1方案

(一)

通过单片机内部的定时/计数器。

采用软件编程实现时钟计数,这种方法硬件线路简单,系统的功能与软件设计相关,通常用在对时间精度不高的的场合。

1.2方案

(二)

采用时钟芯片,它的功能强大,功能部件集成在芯片内部,自动产生时钟等相关功能。

硬件成本相当较高,软件编程简单。

通常用在对时间精度较高的的场合。

考虑到做出来的东西具有实用性,所用的集成片尽量少,成本尽可能的低,连接线路尽可能的简单,方便好用。

我们做的数字钟是采用方案一,采用C语言编程,主要采用集成片AT89C52和74LS08完成了此次设计。

2单片机设计的基本原理

2.1软件时钟的基本原理

软时钟是利用单片机内部的定时/计数器来实现的,它的处理过程如下:

首先设定单片机内部的一个定时/计数器工作于定时方式,对及其周期计数形成基准时间(若10ms),然后用另一个定时/计数器或软件计数的方法对基准时间计数形成秒(对10ms计数100次),秒计60次形成分,分计60次形成时,时计24次则计满一天。

然后通过数码管把它们的内容在相应的位置显示处理即可。

本设计数码管采用动态显示方法,线路相对简单,但需动态扫描,扫描频率要大于人眼视觉暂留频率(每秒24次),信息看起来才稳定。

译码方式可分为软件译码和硬件译码,软件译码通过译码程序查得显示信息的字段码;硬件译码通过硬件译码器得到显示信息的字段码,实际中通常采用软件译码。

在具体处理时,定时计数器采用中断方式工作,对时钟的形式在中断服务程序中实现。

在主程序中只需对定时计数器初始化、调用显示子程序和控制子程序。

另外,为了使用方便,设计了简单的按键,可以通过按键实现时、分的调整,这样在主程序中就加入了键盘设置子程序。

2.2系统硬件电路的设计

本系统的硬件主要包括单片机芯片、数码管显示、按键开关等电路,他的硬件电路如图2.1所示,单片机采用应用广泛的AT89C52,系统时钟采用12MHZ的晶振,3个数码管显示,采用共阳极七段式数码管,P0口为选码输出端,P2口为位选码输出端,按键开关设定了四个,通过P1口相连。

 

图2.1

2.3系统软件程序的设计

2.3.1主程序

主程序执行流程如图2.2所示,主程序先对显示单元和定时计数初始化,然后重复调用数码管显示模块和按键处理模块,当有键按下,则转入相应的功能程序。

否是

图2.2主程序流程图图2.3定时/计数器T0中断服务程序流程图

2.3.2数码管显示模块

本系统共用6个数码管,从右到左依次显示秒个位,秒十位,分个位,分十位,时个位,时十位。

数码管显示的信息用6个内存单元存放,这6个内存单元称为显示缓冲区,其中秒个位和秒十位,分个位和分十位,时个位和时十位分别由秒数据,分数据和时数据分拆得到。

在本系统中数码管显示采用软件译码动态显示。

2.3.3定时计数器中断服务程序

定时计数器用于时间计时。

选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中,用一个定时计数器对50ms进行计数,计20次则对秒单元加一,秒单元加到60则对分单元加一,同时秒单元清零;分单元加为60则对时单元加一,同时分单元清零;时单元加到24则对时单元清零,标志一天时间计满。

在对各单元计数的同时,把他们的值放到存储单元的指定位置。

定时计数器T0中断服务程序如图2.3所示:

2.3.4按键处理模块

按键处理设置为:

没有按键时,时钟正常走时;当按下K0按键时,进入选择状态,时钟停止走时;按K1或K2按键可进行加一或减一操作;继续按K0键可分别进行时、分和秒的调整,最后按K3键将退出调整状态,时钟开始计时运行。

3扩展功能

该数字钟的扩展功能为整点报时,每到59分59秒时开始报时一声。

任意定一时间,到达所定时间发光二极管点亮。

4程序清单

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitP1_0=P1^0;

sbitP1_1=P1^1;

sbitP1_2=P1^2;

sbitP1_3=P1^3;

sbitP1_7=P1^7;

sbitP1_6=P1^6;

typedefstruct

{ucharhour;

ucharminute;

ucharsecond;

}time;

timenow={0,0,0};

timedingshi={0,0,0};

ucharcodenum_tab1[]={0x80,0x40,0x20,0x10,0x08,0x04};

ucharcodenum_tab2[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极显示

ucharstate=0;

ucharcount=100;

ucharflag=0;//调整时间/定时的标志

ucharrecount=0;

ucharrecount1=0;

voiddelay(uinttime1)//延时子程序

{

inti;

intk;

for(i=0;i

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

}

voiddisplay(timedisnum)//显示子程序

{

inthour_shi,hour_ge,min_shi,min_ge,sec_shi,sec_ge,i;

intnum[6]={0,0,0,0,0,0};

hour_shi=disnum.hour/10;

hour_ge=disnum.hour%10;

min_shi=disnum.minute/10;

min_ge=disnum.minute%10;

sec_shi=disnum.second/10;

sec_ge=disnum.second%10;

num[0]=hour_shi;

num[1]=hour_ge;

num[2]=min_shi;

num[3]=min_ge;

num[4]=sec_shi;

num[5]=sec_ge;

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

{

P2=num_tab1[i];

P0=num_tab2[num[i]];

delay

(1);

}

}

voiddisplay_1(ucharwei,uchark)//显示子程序1

{

ucharwei1,wei2;

wei1=wei/10;

wei2=wei%10;

P2=num_tab1[k];

P0=num_tab2[wei1];

delay

(1);

P2=num_tab1[k+1];

P0=num_tab2[wei2];

delay

(1);

}

voidinterrupt_init(void)

{

EA=0;

TMOD=0x01;

TH0=0xd8;

TL0=0xf0;

IT0=1;

ET0=1;

EX0=1;

EA=1;

TR0=1;

}

voidinterrup0(void)interrupt0using3

{

uchari=0;

delay

(1);

if(P1_0==0)//调时

{

if(flag==1)//定时的调节

{

state++;

if(state==9)

{state=0;}

}

else

{

TR0=0;

state++;

if(state==4)

{

state=0;

TR0=1;

}

}

}

if(P1_1==0)//加

{

switch(state)

{

case0:

break;

case1:

{

now.hour++;

if(now.hour==24)

now.hour=0;

break;

}

case2:

{

now.minute++;

if(now.minute==60)

now.minute=0;

break;

}

case3:

{

now.second++;

if(now.second==60)

now.second=0;

break;

}

case4:

break;

case5:

{

dingshi.hour++;

if(dingshi.hour==60)

dingshi.hour=0;

break;

}

case6:

{

dingshi.minute++;

if(dingshi.minute==60)

now.minute=0;

break;

}

case7:

{

dingshi.second++;

if(dingshi.second==60)

dingshi.second=0;

break;

}

case8:

break;

}

}

if(P1_2==0)//减

{

switch(state)

{

case0:

break;

case1:

{

if(now.hour==0)

now.hour=23;

else

now.hour--;

break;

}

case2:

{

if(now.minute==0)

now.minute=59;

else

now.minute--;

break;

}

case3:

{

if(now.second==0)

now.second=59;

else

now.second--;

break;

}

case4:

break;

case5:

{

if(dingshi.hour==0)

dingshi.hour=23;

else

dingshi.hour--;

break;

}

case6:

{

if(dingshi.minute==0)

now.minute=59;

else

dingshi.minute--;

break;

}

case7:

{

if(dingshi.second==0)

dingshi.second=59;

else

dingshi.second--;

break;

}

case8:

break;

}

}

if(P1_3==0)//定时/取消定时

{

if(flag==0)//定时

{

flag=1;

state=4;

}

else//取消定时

{

flag=0;

state=0;

dingshi.hour=0;

dingshi.minute=0;

dingshi.second=0;

}

}

}

voidinterrup1(void)interrupt1using3

{

TR0=0;

TH0=0xd8;

TL0=0xf0;

TR0=1;

if(count==0)

{

count=100;

now.second++;

if(now.second==60)

{

now.minute++;

now.second=0;

if(now.minute==60)

{

recount=(now.hour+1)*2;//整点提示

now.hour++;

now.minute=0;

if(now.hour==24)

{

now.hour=0;

}

}

}

if(flag==1)

{

if(dingshi.hour==now.hour&&dingshi.minute==now.minute&&dingshi.second==now.second)

recount1=18;

}

if(recount!

=0)

{

P1_7=~P1_7;

recount--;

}

else

{P1_7=0;}

if(recount1!

=0)

{

P1_6=~P1_6;

recount1--;

}

else

{P1_6=0;}

}

else

{

count--;

}

}

voidmain(void)

{

ucharj=0;

flag=0;

interrupt_init();//中断初始化

P1_6=0;

P1_7=0;

while

(1)

{

switch(state)

{

case0:

display(now);break;

case1:

display_1(now.hour,0);break;

case2:

display_1(now.minute,2);break;

case3:

display_1(now.second,4);break;

case4:

display(dingshi);break;//显示定时初值00:

00:

00

case5:

display_1(dingshi.hour,0);break;

case6:

display_1(dingshi.minute,2);break;

case7:

display_1(dingshi.second,4);break;

case8:

display(dingshi);break;//显示定时时间

}

}

}

5元器件清单及功能介绍

5.1元器件清单

序号

名称

数量

元器件说明

1

AT89C52单片机

1个

2

晶振

1个

12MHZ

3

数码管

6个

共阳极

4

电阻

6个

510Ω

5

电容

2个

30pf

6

开关

4个

7

发光二极管

1个

8

三极管

1个

NPN型

9

与门

3个

74LS08

5.2元器件介绍

AT89C52芯片的内部结构及引脚

(1)电源及时钟引脚(4个)

VCC:

电源接入引脚;

VSS:

接地引脚;

XTAL1:

晶体振荡器接入的一个引脚(采用外部振荡时,此引脚接地)

XTAL2:

晶体振荡器接入的另一个引脚(采用外部振荡时,此引脚作为外部振荡信号的输入端)。

(2)控制线引脚(4个)

RST/VPD:

复位信号输入引脚/备用电源输入引脚

ALE/PROG:

地址锁存允许信号输出引脚/编程脉冲输入引脚;

EA/VPP:

内外存储器选择引脚/片内EPROM(或FLASHROM)编程电压输入引脚;

PSEN:

外部程序存储器选通信号输出引脚。

(3)并行I/O引脚(32个,分成4个8位口)

P0.0—P0.7:

一般I/O口引脚或数据/低位地址总线复用引脚;

P1.0—P1.7:

一般I/O口引脚;

P2.0—P2.7:

一般I/O口引脚或高位地址总线引脚;

P3.0—P3.7:

一般I/O口引脚或第二功能引脚。

6过程分析和结果

6.1软件调试

在调试中遇到了很多问题。

刚开始将程序输入后,无法执行。

发现很多处错误,而使程序无法执行。

改正后,重新执行程序。

可以正确的显示时间。

但当达到整点时,时钟不能正常报时。

按Ctrl+C退出后,检查程序。

经仔细分析,发现报时子程序出错;及时修改之后,程序调试正确。

在单片机仿真软件运行后,数码管从左至右按照“时:

分:

秒”的格式显示“XX:

XX:

XX”,并且秒位以每秒递增1的速度变化,即完成数字电子钟的正常显示。

并到达整点时进行长达1秒的报时;到达定时时间后发光二极管点亮。

6.2硬件调试

焊接电路完成后,将程序烧入AT89C52芯片中,插入5V电源后调试,无现象出现。

我们仔细检查电路后发现有几处电路连接错误,经重新接线后再次调试时间正常走时,扩展功能报时不能正常运行。

结束语

1.对本课程的学习体会

通过本次课程设计,我们进一步理解了所学的相关可编程芯片的原理、内部结构、使用方法等,学会了相关可编程芯片实际应用以及编程的方法。

在老师的指导帮助下,顺利完成了该硬件、软件的设计、调试等工作。

通过课程设计,我有了很大的收获。

在调试程序过程中,使我们的编程与调试程序的能力得到了锻炼,同时理解了汇编、计算机所组成原理以及接口技术这三门课程之间的联系与融合渗透,也使我体会到学习计算机接口技术的乐趣。

2.学习本课程后,希望增加的内容。

希望老师能给我们讲解更多有关单片机的知识,对各种片子的功能做更广泛的讲解,不要只讲它的少部分功能,在平时的课堂练习中对片子的功能测试应多样化,不该只测试单一的片子管脚接法。

在课堂上更多的涉及与当今社会有关的知识。

3.对代课老师的教学有何评价,并提出教学建议。

评价:

在平时的课堂上潘老师给了我们一堂又一堂的精彩讲解,不仅教给了我们许多书本上的知识,同时也教会了我们如何做人做事,在我们枯燥无味的学习生活中增添了不少乐趣。

潘老师的耐心也令人感动,一次不会讲两次,两次不会讲三次,从没有厌烦的表情。

教学建议:

建议老师不要太过相信我们的能力,毕竟我们都是刚接触这些实物性的东西,有很多问题都不太了解,希望老师应多指导一下课设类的题目,避免我

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

当前位置:首页 > 医药卫生 > 基础医学

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

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