基于51单片机的电子时钟方案设计书与实现2.docx

上传人:b****5 文档编号:3574951 上传时间:2022-11-24 格式:DOCX 页数:20 大小:134.57KB
下载 相关 举报
基于51单片机的电子时钟方案设计书与实现2.docx_第1页
第1页 / 共20页
基于51单片机的电子时钟方案设计书与实现2.docx_第2页
第2页 / 共20页
基于51单片机的电子时钟方案设计书与实现2.docx_第3页
第3页 / 共20页
基于51单片机的电子时钟方案设计书与实现2.docx_第4页
第4页 / 共20页
基于51单片机的电子时钟方案设计书与实现2.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

基于51单片机的电子时钟方案设计书与实现2.docx

《基于51单片机的电子时钟方案设计书与实现2.docx》由会员分享,可在线阅读,更多相关《基于51单片机的电子时钟方案设计书与实现2.docx(20页珍藏版)》请在冰豆网上搜索。

基于51单片机的电子时钟方案设计书与实现2.docx

基于51单片机的电子时钟方案设计书与实现2

单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。

单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。

由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。

这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。

电子时钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。

电子时钟的精度、稳定度远远超过老式机械钟。

在这次设计中,我们采用LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。

在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。

电子时钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。

关键词:

单片机;AT89S51

ABSTRACT

Sincethe1970schipsincetheadvent,withitshighcostperformanceandattentionbypeopleandattention,itiswidelyusedandfastdevelopment.SCMsmallvolume,lightweight,stronganti-jammingcapability,environmentaldemandisnothigh,lowcost,highreliability,flexibilityisgood,developmentmoreeasy.Becauseoftheabovefeatures,inourcountry,themicrocontrolleriswidelyusedinindustrialautomationcontrol,automaticdetection,intelligentinstrumentandapparatus,householdappliances,powerelectronics,mechanicalandelectricalequipment,andotheraspects,and51SCMisthemosttypicalchipandmostrepresentativeone.Thegraduationdesignthroughtoitsstudy,applicationtoAT89S51chipsasthecore,withthenecessarycircuit,designofasimpleelectronicclock,itby4.5Vdcpowersupply,throughtheelectronictubecanshowtime,adjustthetime,thustolearning,thedesign,thedevelopmentofsoftwareandhardwareintheability.

ElectronicClockisaelectroniccircuitimplementationofthe"when","sub","seconds"Thefiguresshowthetimingdevice.Electronicclockprecision,stability,farmorethantheoldmechanicalclock.Inthisdesign,weuseLEDelectronicdisplayhours,minutes,seconds,to24-hourtimemode,accordingtoelectroniccontroltheorytodynamicdisplaytodisplay,usethe12MHzcrystaloscillationpulse,thetimercount.Inthisdesign,thecircuithasadisplaytimeofthethisfunction,youcanalsorealizethetimeadjustment.Electronicclockisitscompact,lowcost,traveltimeandhighprecision,easytouse,featuresandmore,easyintegrationandlovedbythegeneralconsumer,sowidelyused.

Keywords:

Single-chipmicrocomputer;AT89S51

1绪论

1.1电子时钟的背景

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

时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。

忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。

但是,一旦重要事情,一时的耽误可能酿成大祸。

目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。

下面是单片机的主要发展趋势。

单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。

从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。

这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。

单片机模块中最常见的是电子时钟,电子时钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。

1.2电子时钟的意义

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

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

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

1.3电子时钟的应用

电子时钟已成为人们日常生活中:

必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

由于数字集成电路技术的发展和采用了先进的石英技术,使电子时钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。

2整体设计方案

2.1单片机的选择

单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。

单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。

通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:

中央处理器、存储器和I/O接口电路等。

因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。

单片机经过1、2、3、3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容性方向发展。

其发展趋势不外乎以下几个方面:

2.1.1多功能

单片机中尽可能地把所需要的存储器和I/O口都集成在一块芯片上,使得单片机可以实现更多的功能。

比如A/D、PWM、PCA(可编程计数器阵列)、WDT(监视定时器---看家狗)、高速I/O口及计数器的捕获/比较逻辑等。

有的单片机针对某一个应用领域,集成了相关的控制设备,以减少应用系统的芯片数量。

例如,有的芯片以51内核为核心,集成了USB控制器、SMARTCARD接口、MP3解码器、CAN或者I*I*C总线控制器等,LED、LCD或VFD显示驱动器也开始集成在8位单片机中。

2.1.2高效率和高性能

为了提高执行速度和执行效率,单片机开始使用RISC、流水线和DSP的设计技术,使单片机的性能有了明显的提高,表现为:

单片机的时钟频率得到提高;同样频率的单片机运行效率也有了很大的提升;由于集成度的提高,单片机的寻址能力、片内ROM(FLASH)和RAM的容量都突破了以往的数量和限制。

由于系统资源和系统复杂程度的增加,开始使用高级语言(如C语言)来开发单片机的程序。

使用高级语言可以降低开发难度,缩短开发周期,增强软件的可读性和可移植性,便于改进和扩充功能。

2.1.3低电压和低功耗

单片机的嵌入式应用决定了低电压和低功耗的特性十分重要。

由于CMOS等工艺的大量采用,很多单片机可以在更低的电压下工作(1.2V或0.9V),功耗已经降低到uA级。

这些特性使得单片机系统可以在更小电源的支持下工作更长的时间。

2.1.4低价格

单片机应用面广,使用数量大,带来的直接好处就是成本的降低。

目前世界各大公司为了提高竞争力,在提高单片机性能的同时,十分注意降低其产品的价格。

2.2单片机电子时钟功能确定

图2.1时钟整体布局图

所需元器件如表2.1所示。

表2.1电子元件列表

序号

名称

数量

序号

名称

数量

1

AT89S51

1片

9

2.7K电阻

7只

2

12M晶振

1个

10

104瓷片电容

4只

3

共阳数码管

4只

11

30P瓷片电容

2只

4

PN管8550

7只

12

200Ω电阻

1只

5

74LS244

1片

13

560Ω电阻

8只

6

蜂鸣器

1个

14

10K电阻

12只

7

微动按键

5个

15

100Ω电阻

4只

8

10UF电容

1只

单片机电子时钟,是利用单片机技术实现计时、时间显示、时间调整、定时调整、闹铃等功能。

项目完成过程中使用了外部中断技术、定时器中断技术、键盘查询及动态显示技术。

2.3LED显示模块

图2.2七段共阳极数码管

七段共阳极数码管及功能如图1所示:

如图1所示数码管为共阳极数码管,其3脚和8脚均接电源正极,而共阴极数码管的3脚和8脚均接电源负极。

其端口所标数据与数码管显示条处所标对应,当端口接入高电平时,相应共阳极数码管的显示条即点亮。

2.4按键模块

矩阵式键盘(也称行列式键盘)适用于按键数目较多的场合,它由行线和列线组成。

按键位于行列的交点上。

一个3*3的行列结构可以构成一个有9个按键的键盘。

同理,一个4*4的行列结构结构可以构成一个16键的键盘。

独立式按键就是各按键相互独立,每个按键各接入一根输入线,一根输入线上的案件工作状态不会影响其他输入线上的工作状态。

因此,通过检测输入线的电平状态可以很容易判断哪个按键按下了。

独立式按键电路配置灵活,软件简单。

但每个按键需要占用一个输入口线,在按键数量较多时,需要较多的输入口线且电路结构复杂,故此种键盘适用于按键较少或操作速度较高的场合。

由于此种系统中共有启动两条生产线的“启动1”键和“启动2”键、分选择键、秒选择键、时间设置加、时间设置减、时间设置键、确定键。

只有这8个就键,比较简单。

所以就采用独立式按键接口电路。

3PCB原理图与仿真图

3.1PCB原理图

图3.1时钟PCB图

图3.2时钟仿真图

4程序设计

#include"reg51.h"

#defineucharunsignedchar

#defineuintunsignedint

#definesmplayP2

sbitsm1out=P0^0;

sbitsm2out=P0^1;

sbitsm3out=P0^2;

sbitsm4out=P0^3;

sbitspeak=P0^4;

sbitaddtime=P3^4;

sbitsubtime=P3^5;

sbitsled1=P1^3;

sbitsled2=P1^4;

uchar

codetabsm[]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09};

uchar

codetabds[]={0x02,0x9E,0x24,0x0C,0x98,0x48,0x40,0x1E,0x00,0x08};

uchardatamd,datamg,datahd,datahg;

ucharddatamd,ddatamg,ddatahd,ddatahg;

uchargethour,getmin;

ucharsecdata=0x00;

uchart1num=10;

uchart0num1=10;

uchart0num2=2;

ucharfselect=0;

bitflagplay;

bitflagflash;

bitflagspk=0;

voiddlysys()

{

uchari,j,k;

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

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

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

}

voiddlyplay()

{

uchari,j;

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

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

}

voiddlyint()

{

uchari,j;

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

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

}

voidmain()

{

ucharchgi=0;

ucharchkkey=10;

P0=P1=P2=P3=0xff;

dlysys();

datamd=9;

datamg=5;

datahd=3;

datahg=2;

ddatamd=0;

ddatamg=0;

ddatahd=0;

ddatahg=0;

flagplay=0;

flagflash=0;

EA=EX0=EX1=ET0=ES=IT0=IT1=1;

TMOD=0x21;

SCON=0x50;

TH1=0xe6;

TL1=0xe6;

TH0=0x3c;

TL0=0xb0;

TR0=1;

TR1=1;

sled1=sled2=0;

while

(1)

{

chgi=0;

while(flagplay==0)

{

sm1out=sm2out=sm3out=sm4out=1;

smplay=tabsm[datamd];

if(fselect==2)

sm1out=flagflash;

else

sm1out=0;

dlyplay();

sm1out=sm2out=sm3out=sm4out=1;

smplay=tabsm[datamg];

if(fselect==2)

sm2out=flagflash;

else

sm2out=0;

dlyplay();

sm1out=sm2out=sm3out=sm4out=1;

smplay=tabsm[datahd];

if(fselect==1)

sm3out=flagflash;

else

sm3out=0;

dlyplay();

sm1out=sm2out=sm3out=sm4out=1;

smplay=tabsm[datahg];

if(fselect==1)

sm4out=flagflash;

else

sm4out=0;

dlyplay();

if(fselect==2)

{

TR0=0;

chkkey--;

if(chkkey==0)

{

chkkey=10;

if(addtime==0)

{

datamd++;

if(datamd==10)

{datamd=0;

datamg++;

if(datamg==6)

datamg=0;}}

if(subtime==0)

{

datamd--;

if(datamd==255)

{

datamd=9;

datamg--;

if(datamg==255)

datamg=5;}}

}

}

if(fselect==1)

{

TR0=0;

chkkey--;

if(chkkey==0)

{

chkkey=10;

if(addtime==0)

{

datahd++;

if((datahg!

=2)&&(datahd==10))

{datahd=0;

datahg++;}

if((datahg==2)&&(datahd==4))

{datahd=0;

datahg=0;}

}

if(subtime==0)

{

datahd--;

if(datahd==255)

{datahd=9;

datahg--;

if(datahg==255)

{datahg=2;

datahd=3;}}}

}

}

if(flagspk==1)

{

if((addtime==0)||(subtime==0))

flagspk=0;

speak=~speak;}

else

speak=1;

}

while(flagplay)

{

sm1out=sm2out=sm3out=sm4out=1;

smplay=tabds[ddatamd];

if(fselect==2)

sm1out=flagflash;

else

sm1out=0;

dlyplay();

sm1out=sm2out=sm3out=sm4out=1;

smplay=tabds[ddatamg];

if(fselect==2)

sm2out=flagflash;

else

sm2out=0;

dlyplay();

sm1out=sm2out=sm3out=sm4out=1;

smplay=tabds[ddatahd];

if(fselect==1)

sm3out=flagflash;

else

sm3out=0;

dlyplay();

sm1out=sm2out=sm3out=sm4out=1;

smplay=tabds[ddatahg];

if(fselect==1)

sm4out=flagflash;

else

sm4out=0;

dlyplay();

if(fselect==2)

{

chkkey--;

if(chkkey==0)

{

chkkey=10;

if(addtime==0)

{

ddatamd++;

if(ddatamd==10)

{ddatamd=0;

ddatamg++;

if(ddatamg==6)

ddatamg=0;}}

if(subtime==0)

{

ddatamd--;

if(ddatamd==255)

{

ddatamd=9;

ddatamg--;

if(ddatamg==255)

ddatamg=5;}}

}

}

if(fselect==1)

{

chkkey--;

if(chkkey==0)

{

chkkey=10;

if(addtime==0)

{

ddatahd++;

if((ddatahg!

=2)&&(ddatahd==10))

{ddatahd=0;

ddatahg++;}

if((ddatahg==2)&&(ddatahd==4))

{ddatahd=0;

ddatahg=0;}

}

if(subtime==0)

{

ddatahd--;

if(ddatahd==255)

{ddatahd=9;

ddatahg--;

if(ddatahg==255)

{ddatahg=2;

ddatahd=3;}}}

}

}

if(fselect==0)

{

chgi++;

if(chgi==255)

{

flagplay=0;

chgi=0;

}

}

if(flagspk==1)

{

if((addtime==0)||(subtime==0))

flagspk=0;

speak=~speak;}

else

speak=1;

}

}

}

voidint0zd()interrupt0

{

if(flagspk==1)

flagspk=0;

else

{

flagplay=~flagplay;

fselect=0;

dlyint();

IE0=0;

}

}

voidint1zd()interrupt2

{

if(flagspk==1)

flagspk=0;

else

{

fselect++;

fselect%=3;

if(fselect!

=0)

{TMOD=0x11;

TH1=0x3c;

TL1=0xb0;

ET1=1;

ES=0;

TR1=1;}

else

{

TMOD=0x21;

TH1=0xe6;

TL1=0xe6;

ET1=0;

ES=1;

TR1=1;

TR0=1;}

dlyint();

IE1=0;

}

}

voidt0zd()interrupt1

{

TH0=0x3c;

TL0=0xb0;

t0num1--;

if(t0num1=

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

当前位置:首页 > 小学教育 > 小升初

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

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