基于单片机的数字电子钟.docx

上传人:b****1 文档编号:322427 上传时间:2023-04-28 格式:DOCX 页数:27 大小:675.44KB
下载 相关 举报
基于单片机的数字电子钟.docx_第1页
第1页 / 共27页
基于单片机的数字电子钟.docx_第2页
第2页 / 共27页
基于单片机的数字电子钟.docx_第3页
第3页 / 共27页
基于单片机的数字电子钟.docx_第4页
第4页 / 共27页
基于单片机的数字电子钟.docx_第5页
第5页 / 共27页
基于单片机的数字电子钟.docx_第6页
第6页 / 共27页
基于单片机的数字电子钟.docx_第7页
第7页 / 共27页
基于单片机的数字电子钟.docx_第8页
第8页 / 共27页
基于单片机的数字电子钟.docx_第9页
第9页 / 共27页
基于单片机的数字电子钟.docx_第10页
第10页 / 共27页
基于单片机的数字电子钟.docx_第11页
第11页 / 共27页
基于单片机的数字电子钟.docx_第12页
第12页 / 共27页
基于单片机的数字电子钟.docx_第13页
第13页 / 共27页
基于单片机的数字电子钟.docx_第14页
第14页 / 共27页
基于单片机的数字电子钟.docx_第15页
第15页 / 共27页
基于单片机的数字电子钟.docx_第16页
第16页 / 共27页
基于单片机的数字电子钟.docx_第17页
第17页 / 共27页
基于单片机的数字电子钟.docx_第18页
第18页 / 共27页
基于单片机的数字电子钟.docx_第19页
第19页 / 共27页
基于单片机的数字电子钟.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的数字电子钟.docx

《基于单片机的数字电子钟.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字电子钟.docx(27页珍藏版)》请在冰点文库上搜索。

基于单片机的数字电子钟.docx

基于单片机的数字电子钟

 

CHANGZHOUINSTITUTEOFTECHNOLOGY

科研实践

题目:

基于单片机的数字电子钟

二级学院(直属学部):

延陵学院

专业:

电气工程及其自动化

班级:

10电Y2

学生姓名:

学号:

10120827

指导教师姓名:

范力旻

职称:

副教授

2013年12月30日至2014年1月10日

一、绪论

1.1课题研究的背景和意义

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

时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记时间,忘记了要做的事情,但是,一旦重要的事情,一时的耽误可能酿成大祸。

 

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

 

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

 

数字电子钟是采用数字电路对时、分、秒数字显示的计时装置,广泛用于个人家庭、车站、码头、办公室等公共场所,成为人们日常生活中不可缺少的必需品。

由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表,钟表的数字化给人们的生产生活带来了极大的方便,而且大大的扩展了钟表原来的报时功能,因此研究数字钟及扩大其应用,有着日常现实的意义。

1.2课题研究的目的

复习KEIL软件的使用方法;

学会编写数字电子钟的C语言程序;

学会画数字电子钟的PROTEUS图;

学会稳压电源的制作方法;

学会制作相应的实物。

 

二、课题设计概况

2.1课题主要实现功能

1、该单片机数字电子钟能在LED 数码管准确显示24小时(显示格式为:

时时,分分,秒秒);

2、可暂停时间的变动,同时在暂停的时候可以通过调秒、调分和调时按钮校正时间,继续计时的时候按调整后的时间变动。

每调整一次时间相对应的LED灯会亮三次,计时的时候灯不亮;

3、每次上电的时候数码管显示“000000”,校时之后方可正常使用。

2.2课题功能分析

1、为了实现计时功能,必须有合适精确的秒源;

2、通过进位的方法可以实现分钟和小时的显示;

3、时、分、秒计到24、60、60要清零;

4、给暂停和校时功能分别设置按钮,每按一次校时按钮相应的数码管显示加1,相应的LED灯亮;

5、通过软件编程课实现上述功能。

2.3课题功能实现过程的描述

给单片机上电之后,数码管显示时间为00时00分00秒,按下暂停/继续键后,通过三个校时按钮把时间校准到实际时间,再次按下暂停/继续键恢复计时。

每一次校时的时候相应的灯就会闪,不调时的时候灯就灭。

 

 

三、总体设计方案

3.1单片机的选择

AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

而ATMEL公司的89C52单片机,是增强型RISC内载Flash的单片机。

  由于单片机的种类很多,在选择单片机时要依据实际设计要求选择合适的单片机。

本数字电子钟产生的数据量并不大,但是为了确保程序的运行,所以选择C51单片机。

  表3-151和52的比较

数据存储器

程序存储器

定时器

中断

51系列

128B

4KB

2

5

52系列

256B

8KB

3

8

3.2数字电子钟显示方案论证

本设计可以选择的方案有数码管显示和LCD显示。

由于只要实现时分秒的显示,LCD的显示尽管多,但无论在软件上还是硬件上都需要添加其它部件,比较复杂,因此选择数码管即可。

 

四、硬件设计

4.1总体设计结构图

数字电子钟总体设计结构图如下:

图4-1数字电子钟的总体设计结构图

4.2单片机最小系统的设计

1、时钟电路如下:

单片机必须在时钟的驱动下才能工作.由之前所学的《单片机原理》最小系统内容,在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。

典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)。

为了匹配单片机的频率,经过试验选择匹配电容为30pF。

时钟电路如下(注意接的是单片机18、19引脚):

图4-2时钟电路

2、复位电路

51单片机通常有两种复位方式,上电复位和按钮复位,本论文采用上电复位。

由于本设计的晶体振荡器采用的是12M,因此RC采用典型值。

复位时间计算:

当取100us时

为高电平,所以可以达到复位作用。

复位电路图如下(请忽略时钟电路):

图4-3复位电路

4.3输入电路的设计

1、暂停和校时电路如下:

由于在P0口,所以要选择上拉电阻.参照总体结构设计图,最多顾及LED参数(2.2V,10mA),计算(5-2.2)/0.01=280,为了保证完全满足参数要求,选一定可以满足条件的500,电流<10mA。

各个按钮的功能已经在下图中标明(按钮选择常见的TD-03B即可)。

图4-4暂停和校时电路

2、稳压电源计算如下:

在实际做硬件实物的时候制作出实际的5V直流稳压电源也是必要的一部分。

由于主屏幕上的空间不够,所以并没有接稳压电源的线,让其参与仿真。

图4-5稳压电路

4.4输出电路的设计

1、校时时灯闪电路如下:

上拉电阻选择同上。

LED选择Φ5的T1型红色灯就行了(电流从参数已在上文叙述)。

图4-6校时时灯闪电路

2、数码管显示电路如下:

本电子钟设计只牵涉到6位数码管的显示,因此采用6个7SEG-COM-CATHODE就够了。

此数码管共阴极接地。

端口引出还要加74LS48译码器接单片机,这样软件编程的内容就能清楚地显示了。

图4-7数码管显示电路

五、软件设计

5.1主程序结构图

图5-1主程序结构图

5.2主程序流程图

流程图是使用图形表示算法的思路是一种极好的方法,不论采用何种程序设计方法,程序总体结构确定后,一般以程序流程图的形式对其进行描述。

总体框图中的各个子模块或各个子任务也应该结合具体的教学模型和算法画出较详细的程序流程图,供后面编写具体程序和阅读程序使用。

图5-2主程序流程图

5.3主要程序模块分析

所有的程序详见附录。

5.3.1延时程序

通过软件和晶振电路的配合实现提供1ms的延时程序,当调用ms函数时,通过嵌套调用100us、50us、5us的乘法关系来实现1ms的输出。

当晶振为12MHz时,由

可知程序的确可以延时5us乃至1ms。

考虑误差程序用的是11.0592MHz。

流程图如下:

 图5-3延时程序流程图

5.3.2计24小时程序

由得到的10ms乘以100次可以得到1s,然后进行加法运算,满60秒进1清零,满60分进1清零,满24时清零。

流程图如下:

图5-4计24小时程序

5.3.3暂停/继续程序

通过确认暂停/继续键是否松开这样的去抖程序可以使得按下这一键以及按暂停键之后的动作得以完美执行。

流程图如下:

 

图5-5暂停/继续程序

5.3.4校时灯闪程序

参照上一个模块,在去抖之后可以执行相应的程序。

校时模块:

时分秒的思路其实是一样的,按下相应的键一次,把相应端口的值加1,时的端口时加1,分的端口分加1,秒的端口秒加1。

只要在暂停的情况下按几下校对时间的键相应端口的数码管就加几。

灯闪模块:

在端口加1之后,通过延时程序让LED亮0.1秒灭0.1秒,重复2次,以表明在校时。

流程图如下:

图5-6秒分时校时闪灯程序

5.3.516进制转BCD码程序

用十位乘以16加个位得到。

流程图省略。

六、Protues和keil仿真

6.1proteus软件的介绍及使用

Proteus软件是LabcenterElectronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的布图与仿真。

Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如MCS-51系列、PIC系列等等,以及单片机外围电路,比如按键、LED、数码管等等。

通过Proteus仿真软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。

  Proteus仿真时只需在AT89C52单片机中加载Keil软件生成的.HEX格式文件,即可启动仿真。

6.2Keil软件的介绍及使用

KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境、将这些部分组合在一起。

运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。

如果你使用C语言编程,那么Keil几乎就是你的不二之选,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

 本设计使用的keil软件是keiluvision4版本的,protues仿真前要通过工程选项,在output选项卡把生成.HEX文件勾选上,然后编译生成.HEX文件供protues软件仿真使用。

6.3数字电子钟的仿真

根据设计思路做好以下几步:

查找所需的元器件;

摆好元器件的位置;

连线;

添加KEIL生成的HEX文件进行仿真。

仿真图如下:

图6-1整体仿真图

按下暂停/继续键,如下:

图6-2按下暂停/继续键的图

按下秒校时键:

图6-3按下秒计时键

按下分校时键:

图6-4按下分校时键

按下时校时键

图6-5按下时校时键

连续校时也可以满足:

图6-6连续校时

按下暂停/继续键继续走时

图6-7继续走时

 

七、实物制作

7.1电路板焊接

一般来说,造成硬件问题的首要问题就是焊接了,也就是说焊接的好与坏直接响产品的正常运行。

造成焊接质量不高的常见原因是:

①焊锡用量过多,形成焊点的锡堆积;焊锡过少,不足以包裹焊点。

②冷焊。

焊接时烙铁温度过低或加热时间不足,焊锡未完全熔化、浸润、焊锡表面不光亮(不光滑),有细小裂纹(如同豆腐渣一样!

)。

③夹松香焊接,焊锡与元器件或印刷板之间夹杂着一层松香,造成电连接不良。

若夹杂加热不足的松香,则焊点下有一层黄褐色松香膜;若加热温度太高,则焊点下有一层碳化松香的黑色膜。

对于有加热不足的松香膜的情况,可以用烙铁进行补焊。

对形成的黑膜,要"吃"净焊锡,清洁被焊元器件或印刷板表面,重新进行焊接才行。

④焊锡连桥。

指焊锡量过多,造成元器件的焊点之间短路。

这在对超小元器件及细小印刷电路板进行焊接时要尤为注意。

⑤焊剂过量,焊点明围松香残渣很多。

当少量松香残留时,可以用电烙铁再轻轻加热一下,让松香挥发掉,也可以用蘸有无水酒精的棉球,擦去多余的松香或焊剂。

⑥焊点表面的焊锡形成尖锐的突尖。

这多是由于加热温度不足或焊剂过少,以及烙铁离开焊点时角度不当浩成的内。

7.2电路板调试

最小系统的电路不工作,首先应该确认电源电压是否正常。

用电压表测量接地引脚跟电源引脚之间的电压,看是否符合电源电压,常用的是5V左右。

接下来就是检测复位引脚的电压是否正常,EA引脚的电压要正常为5V左右。

如果补焊电源后最小系统还是不能工作,有可能是AT89C51单片机坏掉了,重新选择一个AT89C51单片机焊接。

如果是工作但是不能按需要的功能执行,也可用更换AT89C51单片机方法调试,但在此之前可以选择检查对应的模块是否有焊接问题,若没有再进行更换。

八、总结和展望

8.1科研实践总结

经过近两周的的努力,在老师和同学的商讨和帮助下,我较好的完成了设计任务,通过此次课程设计,我重新认识到了自学的重要性,以及学以致用的道理。

我在图书馆查阅了大量的资料,同时也认识到了图书馆的重要作用。

通过此次的抢答器的设计,让我重新拾起了以前所学习的电子知识,及我觉得此次设计让我更加巩固了所学的知识并在设计的过程中学会了与时俱进,克服了编程的枯燥感,让我受益匪浅。

在学习单片机这门课程的时候,我们应该好好你的记笔记,课下好好的做练习题才能把C程序设计灵活的运用到单片机程序的设计上,在单片机这门课程的学习上,我们还应该知道一种常用的仿真软件proteus软件,可以让你我们更为清晰的掌握AT89C51单片机的实际应用上的设计。

在今后的学习过程中,应该多到图书馆看一些专业方面的书籍,以丰富自己的知识。

也使我加深了对单片机及接口技术的理解和应用,由于知识水平的局限,设计中可能会存在着一些不足,我真诚的接受老师和同学的批评和指正。

8.2对未来的展望

经过两周的科研实践,我深刻明白了理论知识与社会实践相结合的道理,也得到了以前书本知识所不曾得到的知识,更加明白了如今信息时代电子技能知识的重要性。

本设计增强了我对单片机、C语言等技能方面的认识,掌握了分析、处理问题的方法、逻辑思维能力等基本技能的训练,具有了一定程度的实际工作能力。

面对如此激烈的市场竞争体系,只有努力掌握好单片机知识方可在竞争中立于不败之地,我对从事电子设计、C语言编程和研究产生了浓厚的兴趣。

希望自己以后能通过自己的不懈努力取得更大的进步。

附录

参考文献

[1]高伟.单片机原理及应用[M].北京:

国防工业出版社,2008年.

[2]范力旻.《单片机原理及应用技术》.电子工业出版社.

[3]胡文金杨健.《单片机应用技术实训教程》.重庆大学出版社.

[4]杨加国.《单片机原理与应用及C51程序设计》.清华大学出版社,2006年.

[5]齐朱宁西.单片机应用系统设计实验(C51).电子工业出版社,2013年.

元器件清单

序号

名称

型号规格

数量

元件编号

1

直流电源

9V

1

V1

2

电解电容

220uF和10uF

1和1

C3~C4

3

瓷片电容

0.022uF和30pF

1和2

C5、C1~C2

4

三端稳压器

7805

1

U8

5

电阻

500,1k

8,1

R1~R7,R8

6

晶振

11.0592MHz

1

X1

7

单片机

STC89C51

1

U1

8

LED-RED

φ5

3

LED1~LED3

9

轻触按钮

TD-03B

4

S1~S4

10

数码管

7SEG-COM-CATHODE

6

DIG1~DIG6

11

译码器

74LS48

6

U2~U7

原理图和PCB图

 

C语言程序代码

#include//片内寄存器定义

#include//输入输出函数库

#include//内部函数库

sbitpauseButton=P0^0;//暂停/继续按钮

sbitsecButton=P0^1;//调秒按钮

sbitminButton=P0^2;//调分按钮

sbithouButton=P0^3;//调时按钮

sbitLed1=P0^4;//调分的时候闪灯

sbitLed3=P0^6;//调时的时候闪灯

voidtime(unsignedintucMs);/延时单位:

ms

/*HEXtoBCD*/

unsignedcharHEXtoBCD(unsignedcharhex)

{

return((hex/10)*16+(hex%10));

}

/*mainC*/

voidmain(void)

{inti;

unsignedcharuc10ms=0,uc1s=0,uc60s=0,uc1h=0;

while

(1)

{

P1=HEXtoBCD(uc1s);//显示秒

P2=HEXtoBCD(uc60s);//显示分

P3=HEXtoBCD(uc1h);//显示时

time(10);//延时0.01秒

uc10ms++;

if(uc10ms==100)

{

uc10ms=0;uc1s++;

}

if(uc1s==60)

{//满60秒,即一分

uc1s=0;uc60s++;

}

P1=HEXtoBCD(uc1s);

if(uc60s==60)

{//满60分,即一小时

uc60s=0;uc1h++;

}

P2=HEXtoBCD(uc60s);

if(uc1h==24)//满一天,归零

{

uc1h=0;

}

P3=HEXtoBCD(uc1h);

Led1=1;

Led2=1;

Led3=1;

if(!

pauseButton)//暂停/继续,用来校时

{

while(!

pauseButton);

while(pauseButton)

{

if(!

secButton)//校准秒

{

while(!

secButton);

uc1s++;

if(uc1s==60)uc1s=0;

P1=HEXtoBCD(uc1s);

for(i=0;i<2;i++)//校准秒时led1亮

{

Led1=1;

time(100);

Led1=0;

time(100);

}

}

if(!

minButton)//校准分

{

while(!

minButton);

uc60s++;

if(uc60s==60)uc60s=0;

P2=HEXtoBCD(uc60s);

for(i=0;i<2;i++)//校准分时led2亮

{

Led2=1;

time(100);

Led2=0;

time(100);

}

}

if(!

houButton)//校准时

{

while(!

houButton);

uc1h++;

if(uc1h==24)uc1h=0;

P3=HEXtoBCD(uc1h);

for(i=0;i<2;i++)//校准时时led3亮

{

Led3=1;

time(100);

Led3=0;

time(100);

}

}

}

while(!

pauseButton);

}

}

}

/*晶振11.0592MHz要2个_nop_(),22.1184MHz要4个*/

voiddelay_5us(void)

{

_nop_();

_nop_();

//_nop_();

//_nop_();

}

/*delay_50us*/

voiddelay_50us(void)

{

unsignedchari;

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

{

delay_5us();

}

}

/*延时100us*/

voiddelay_100us(void)

{

delay_50us();

delay_50us();

}

/*延时单位:

ms*/

voidtime(unsignedintucMs)

{

unsignedcharj;

while(ucMs>0)

{

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

delay_100us();

ucMs--;

}

}

 

实物图

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

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2