基于51的电子时钟的课程设计完整.docx

上传人:b****5 文档编号:8002082 上传时间:2023-01-27 格式:DOCX 页数:23 大小:314.17KB
下载 相关 举报
基于51的电子时钟的课程设计完整.docx_第1页
第1页 / 共23页
基于51的电子时钟的课程设计完整.docx_第2页
第2页 / 共23页
基于51的电子时钟的课程设计完整.docx_第3页
第3页 / 共23页
基于51的电子时钟的课程设计完整.docx_第4页
第4页 / 共23页
基于51的电子时钟的课程设计完整.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

基于51的电子时钟的课程设计完整.docx

《基于51的电子时钟的课程设计完整.docx》由会员分享,可在线阅读,更多相关《基于51的电子时钟的课程设计完整.docx(23页珍藏版)》请在冰豆网上搜索。

基于51的电子时钟的课程设计完整.docx

基于51的电子时钟的课程设计完整

1,课题设计的目的和意义

学校给我们安排为期三周的单片机课程设计,可以说让我们受益匪浅。

细想,其目的及意义主要有以下几点:

,目的

通过单片机课程设计,加深对单片机的更深层次的理解,熟悉单片机的内部硬件资源,掌握单片机的编程方法及技巧,要学会对单片机的各部硬件资源的控制,分配,特别是掌握单片机中断,定时器的编程方法。

通过这次设计,要学会怎么利用所学单片机知识独立设计系统的能力,达到学于致用的目的,要学会发散创造设计编程思想,要学会开发系统的一般过程,并不断创新。

,意义

作为一名自动化专业的大三学生,做单片机课程设计是十分有意义的,而且是十分必要的。

在已度过的大学时间里,我们大多数接触的是专业课。

我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?

如何把我们所学的专业基础课理论知识运用到实践中去呢?

我想做类似的课程设计就为我们提供了良好的实践平台。

在这次课程设计中,我们运用到了以前所学的专业课知识以及一些实践性很强的软件和工具,如:

Protel制图、Proteus仿真,WAWE仿真设备,汇编语言编译软件keil、单片机的原理等。

虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一很大收获。

2,系统方案设计及确定

,设计思路

其中硬件由AT89S51单片机、六位LED驱动及显示电路、独立式键盘电路、蜂鸣器组成,其中显示采用动态显。

时钟的定时用定时器T0以50MS中断20次,从而实现一秒准确记时。

秒表的定时用定时器T1以10ms中断1次记时。

精度达到0.01秒。

键盘将采用查询的方式判别。

最终成品是以可整电报时,调时,省电模式的时钟为主体,另外还可切换到秒表的电子钟系统。

时钟功能

利用单片机片内定时器(如T0)产生1s计时,自行设定时钟计数单元地址,包括秒单元、分单元、时单元,最大计数值为23时59分59秒。

用6位LED数码管显示时、分、秒,以24<小>时计时方式运行;

使用按键可实现时、分调整,可增加“熄灭符”用于时间调整时的闪烁功能

秒表功能

能通过按键实现秒表/时钟功能之间的转换;

利用单片机内部定时器(如T1)实现秒表的计时,自行设定秒表计数单元地址,包括10ms单元、秒单元、分单元,通过4位LED数码管显示,最大计数值为99.99秒。

可通过按键实现秒表的暂停、清零、启动。

整点报时功能

可通过软件查询判断时钟是否到整点,如果到了,进一步判断几点,并驱动蜂鸣器想几下,能整点提醒(短蜂鸣,次数代表整点时间)

省电模式

可通过按键使系统进入省电状态(数码管不亮,时钟不停)。

3,系统硬件设计

 

3.1AT89S51最小系统设计

片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。

.

对51系列单片机来说,最小系统一般应该包括:

MCS-51系列单片机、晶振电路、复位电路以及一个稳定的5V电源,正极接在40脚,20管脚接地,

控制引脚EA接法。

EA/VPP(31脚)为内外程序存储器选择控制引脚,当EA为低电位时,单片机从外部程序存储器取指令;当EA接高电平时,单片机从内部程序存储器取指令。

AT89S51单片机内部有4KB可反复擦写1000次以上的程序存储器,因此我们把EA接到+5V高电平,让单片机运行内部的程序,我们就可以通过反复烧写来验证我们的程序了。

下面给出一个51单片机的最小系统电路图.

3.1.1时钟电路硬件设计

时钟电路即晶振电路:

典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合,计算的初值为整数,可减小误差)/12MHz(产生精确的uS级时歇,方便定时操作),晶振两端各接一个30pF的微调电容然后接地,可使晶振工作在稳定状态。

3.1.2复位电路硬件设计

复位电路:

由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C取10u,R取10K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平.

3.2键盘、显示电路硬件设计

键盘接口分为独立式键盘接口和行列式键盘接口。

我们用的是查询独立式键盘接口,键盘直接与AT8S51单片机的I/O口线连接,通过I/O口判断I/O口线的电平状态,既可以识别按下的键。

3.2.1键盘电路硬件设计

四位独立键盘直接在I/O口,并接地。

可通过查询低电平看键盘是否按下。

3.2.2显示电路硬件设计

电路采用74HCC573驱动,结构采用总线扩展方式进行设计,其中使用的数码管为连8位的共阴型数码管。

通过芯片U2(74HC573)锁存,为数码管提供段码数据。

通过芯片U1(74HC573)进行位选。

但由于全部数码管的段码线共用,在同一时刻只能点亮一个数码管,所以在实际应用中必须采用动态扫描的方式进行8个数码管的显示。

具体实现方法是使用内部定时器每2ms产生一次定时中断,系统在每进入到一次定时中断后更新一次显示内容,对于每个数码管来说其显示的周期为10ms,由于显示频率足够高人眼感觉不到闪烁的存在。

本设计通过延时程序产生10ms的效果

4.系统软件设计

4.1系统主程序设计

系统主程序主要完成所有存储单元的初始化,定时器T0,T1工作方式的设定,处置的设置,中断系统的开启以及在等待是调用显示程序,查询键盘状态。

4.1.1系统主程序流程图

4.1.2系统软件设计内存分配及芯片地址介绍

在设计程序指出对于其内存的分配是非常有必要的,合理的分配内存可避免内存的冲突,指导我们合理的去设计程序。

30H,31H,32H,33H,34H,35H:

这六个单元为时钟时,分,秒的十位和个位存储单元,同时为显存。

52H,53H,54H,55H,56H:

为秒表的四位存储单元,分别为10秒,1秒,0.1秒,0.01秒。

R0~R7:

用于直接间接的存储单元。

P1.0~P1.3接四个独立式键盘,P1.7用来驱动蜂鸣器,P1口输出LED的段码,P2.0~P2.5为LED的位选。

4.2定时器设计

如下面流程图所示,时钟的定时程序由定时器T0定时产生。

设置T0工作方式为方式1,送入初值为4C00H,此时T0产生一次中断为50ms,当进入中断服务程序后判别中断次数是否到20次(50ms×20=1s),中断20次后进入秒个位单元的加以几判断比较程序,否则直接出中断等待下。

定时器程序流程图:

4.3秒表设计

在时钟显示状态下可由键盘切换至秒表。

键盘按一次时,进入秒表程序,并且调用秒表显示程序,从而达到秒表只显示四个零,处于预备状态。

当键盘第二次按下后,开启秒表定时器T1,其中工作在方式1,初值为0DC00H,为10ms中断一次,即0.01秒中断一次并且调用加以程序。

键盘第三次按下后,关闭定时器T1并且调用现实,达到保持当前计数值的效果。

键盘第四次按下是直接出秒表子程序,回到时钟显示。

在秒表运行是由于定时器T0的中断优先级高于T1,所以时钟的定时器不受影响。

4.4其他主要子程序设计

省电模式子程序:

省电模式使LED现实关闭即可做到。

首先设置一个标志寄存器,在查到省电模式键盘按下进入子程序时给该单元加一并且给P0口送入00H

让LED熄灭,出子程序,当查询到第二次有键按下时,给标记单元减一,出子程序。

同时在每次调用显示是查询标志寄存器是一不调用现实,是0则不调用.

整点报时子程序:

在主程序里调用子程序,判断30H,31H,32H,33H是否为零,是,说明为整点,把小时时单元的十位乘十加个位为蜂鸣器鸣响的次数.

5系统调试

用Keil软件编辑,编译程序,如果有错误进行修改,确保程序无误,然后生成HEX文件。

用Proteus仿真软件画出数字时钟的硬件原理图,软后把Keil生成的HEX文件烧写进Proteus中的单片机中,进行仿真。

仿真效果如下:

当Proteus仿真效果出来后,再将hex文件用Easy51Pro软件以ISP方式烧写到AT89S51单片机中,进行硬件运行。

如对程序有修改,重复1-3步骤。

6总结

经过两个星期的努力,课程设计终于大告成功了。

整个设计通过了软件和硬件上的调试、仿真。

我想这对于自己以后的学习和工作都会有很大的帮助。

在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。

一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。

对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计中的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。

因此在整个设计过程中大部分时间是用在程序上面的。

很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。

因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。

通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。

这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。

通过成了单片机的课程设计。

单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,并不断地去开动自己的大脑

同时也总结了很多问题:

1.在设计程序之前,务必要对所用单片机的内部结构有一个系统的了解,知道该单片机片内有哪些资源.

2.设计程序采用什么编程语言并不是非常重要,关键要有一个清晰的思路和一个完整的软件流程图.

3.在设计程序时,不能妄想一次就将整个程序设计好,"反复修改,不断改进"是程序设计的必经之路.

4.要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便.

5.在设计程序过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题.

我觉得课程设计反映的是一个从理论到实际应用的过程,但是更远一点可以联系到以后毕业之后从学校转到踏上社会的一个过程。

小组人员的配合,以及自身的动脑和努力,都是以后工作中需要的。

所以我认为这次的课程设计意义很深,和其他3位同学的共同学习﹑配合﹑努力的过程也很愉快,另外还要感谢老师的耐心辅导。

 

参考文献

[1]张俊谟.单片机原理与应用[M].北京:

北京航空航天大学出版社.2000.6

[2]闰玉德,俞虹.MCS一51单片机原理与应用[M].北京:

机械工业出版社.2003.

[3]孙裕晶,沙玲,赵红霞.实用控制系统设计教程[M].长春:

吉林大学出版社.2000.

[4]李及,赵利民.MCS一51系列单片机原理与应用[M].长春:

吉林科学技术出版社.1995.

[5]姚君遗.汇编语言程序设计[M].北京:

经济科学出版社.2000.

 

附录

程序清单:

ORG0000H

ORG0000H

LJMPSTART

ORG000BH

LJMPINTT0

ORG001Bh

LJMPJIN

START:

;主程序

MOV30H,#0

MOV31H,#2

MOV32H,#5

MOV33H,#9

MOV34H,#5

MOV35H,#8

MOV52H,#0

MOV53H,#0

MOV54H,#0

MOV55H,#0

MOV56H,#0

MOVR0,#0

movR1,#0

movR2,#0

MOVR3,#0

MOVR4,#0

MOVR5,#0

MOVR6,#0

MOVR7,#0

MOVTMOD,#11H

MOVTL0,#00H

MOVTH0,#4CH

MOVTL1,#00H

MOVTH1,#0DCH

SETBEA

SETBET0

SETBET1

SETBTR0

MOVR0,#14H

lp:

CJNER1,#0,L0

LCALLXS

L0:

JNBP1.1,SETled;键盘查询

JNBP1.2,SETTIM1

JNBP1.3,SETTIM2

JNBP1.0,MIAO

SJMPLP

SETled:

LJMPclrled

SETTIM1:

AJMPMIN

SETTIM2:

AJMPHOU

MIAO:

INC56H

MOVR5,56H

LJMPXS0

 

MIN:

JNBP1.2,MIN

LCALLSETMIN

MOVA,33H

CJNEA,#0,LP

LCALLSETMIN1

AJMPLP

HOU:

JNBP1.3,HOU

LCALLSETHOU

MOVA,31H

movr7,30h

CJNEA,#0,LP

LCALLSETHOU1

AJMPLP

XS:

MOV40H,#20H;显示子程序

MOVDPTR,#TAB

MOVP2,40H

MOVA,30H

MOVCA,@A+DPTR

MOVP0,A

LCALLYS1MS

MOVP0,#00H

MOVA,40H

RRA

MOV40H,A

 

MOVP2,40H

MOVA,31H

ADDA,#10

MOVCA,@A+DPTR

MOVP0,A

LCALLYS1MS

MOVP0,#00H

MOVA,40H

RRA

MOV40H,A

 

MOVP2,40H

MOVA,32H

MOVCA,@A+DPTR

MOVP0,A

LCALLYS1MS

MOVP0,#00H

MOVA,40H

RRA

MOV40H,A

MOVP2,40H

MOVA,33H

ADDA,#10

MOVCA,@A+DPTR

MOVP0,A

LCALLYS1MS

MOVP0,#00H

MOVA,40H

RRA

MOV40H,A

MOVP2,40H

MOVA,34H

MOVCA,@A+DPTR

MOVP0,A

LCALLYS1MS

MOVP0,#00H

MOVA,40H

RRA

MOV40H,A

MOVP2,40H

MOVA,35H

MOVCA,@A+DPTR

MOVP0,A

LCALLYS1MS

MOVP0,#00H

MOVA,40H

RRA

MOV40H,A

RET

clrled:

JNBP1.1,clrled

CJNER1,#0,X1

mov43h,#00h

movp0,43h

INCR1

ajmpLP

X1:

DECR1

AJMPLP

 

INTT0:

PUSHACC;T0中断服务程序

PUSHPSW

CLRET0

CLRTR0

MOVTL0,#00H

MOVTH0,#4CH

SETBTR0

DJNZR0,OUT

MOVR0,#14H

LCALLBELL

CJNER1,#0,JIA

LCALLXS

JIA:

MOVA,35H

CJNEA,#9,JIA35

MOV35H,#0

MOVA,34H

CJNEA,#5,JIA34

MOV34H,#0

LCALLSETMIN

MOVA,33H

CJNEA,#0,OUT

LCALLSETMIN1

MOVA,32H

CJNEA,#0,OUT

LCALLSETHOU

MOVA,31H

MOVR7,30H

CJNEA,#0,OUT

LCALLSETHOU1

OUT:

POPPSW

POPACC

SETBET0

RETI

SETMIN:

MOVA,33H

CJNEA,#9,JIA33

MOV33H,#0

X4:

RET

SETMIN1:

MOVA,32H

CJNEA,#5,JIA32

MOV32H,#0

X5:

RET

 

SETHOU:

MOVA,31H

CJNEA,#9,JIA31

MOV31H,#0

X6:

RET

SETHOU1:

MOVA,30H

CJNEA,#2,JIA30

MOV30H,#0

X7:

RET

JIA30:

INC30H

AJMPX7

JIA31:

CJNEA,#3,JIAJIA

MOVA,30H

CJNEA,#02,JIAJIA

MOV30H,#0

MOV31H,#0

AJMPX6

JIAJIA:

INC31H

AJMPX6

JIA32:

INC32H

AJMPX5

JIA33:

INC33H

AJMPX4

JIA34:

INC34H

AJMPOUT

JIA35:

INC35H

AJMPOUT

BELL:

MOVR2,35H

MOVR3,34H

MOVR4,30H

MOVR5,31H

MOVR6,32H

MOVR7,33H

CJNER2,#00H,OUT1

CJNER3,#00H,OUT1

CJNER6,#00H,OUT1

CJNER7,#00H,OUT1

MOVB,#10

movA,R4

MULAB

ADDA,R5

movr5,a

cjner5,#0,X3

movr5,#24

X3:

CLRP1.7

lcalldel

setbp1.7

LCALLDEL

djnzr5,x3

OUT1:

RET

XS0:

JNBP1.0,XS0

CJNER5,#1,N1

AJMPXS1

N1:

CJNER5,#2,N2

AJMPZZ

N2:

CJNER5,#3,N3

CLRET1

CLRTR1

AJMPXS1

N3:

CJNER5,#4,N4

N4:

MOV56H,#0

LCALLCLRMIAO

MOVTL1,#00H

MOVTH1,#0DCH

SETBET1

LJMPLP

ZHUAN:

JNBP1.0,ZHUAN

LJMPMIAO

ZZ:

SETBTR1

 

XS1:

JNBP1.0,ZHUAN

MOV45H,#08H

MOVDPTR,#TAB

MOVP2,45H

MOVA,52H

MOVCA,@A+DPTR

MOVP0,A

LCALLYS1MS

MOVP0,#00H

MOVA,45H

RRA

MOV45H,A

 

MOVP2,45H

MOVA,53H

ADDA,#10

MOVCA,@A+DPTR

MOVP0,A

LCALLYS1MS

MOVP0,#00H

MOVA,45H

RRA

MOV45H,A

 

MOVP2,45H

MOVA,54H

MOVCA,@A+DPTR

MOVP0,A

LCALLYS1MS

MOVP0,#00H

MOVA,45H

RRA

MOV45H,A

MOVP2,45H

MOVA,55H

MOVCA,@A+DPTR

MOVP0,A

LCALLYS1MS

MOVP0,#00H

MOVA,45H

RRA

MOV45H,A

AJMPXS1

CLRMIAO:

MOV52H,#0

MOV53H,#0

MOV54H,#0

MOV55H,#0

RET

JIN:

PUSHACC

PUSHPSW

CLRET1

CLRTR1

MOVTL1,#00H

MOVTH1,#0DCH

SETBTR1

MOVA,55H

CJNEA,#9,JIN1

MOV55H,#0

MOVA,54H

CJNEA,#9,JIN10

MOV54H,#0

MOVA,53H

CJNEA,#9,JIN100

MOV53H,#0

MOVA,52H

CJNEA,#9,JIN1000

MOV52H,#0

AJMPOUT3

 

JIN1000:

INC52H

AJMPOUT3

JIN100:

INC53H

AJMPOUT3

JIN10:

INC54H

AJMPOUT3

JIN1:

INC55H

AJMPOUT3

OUT3:

POPPSW

POPACC

SETBET1

RETI

 

YS1MS:

MOVR6,#9H

YL1:

MOVR7,#10H

DJNZR7,$

DJNZR6,YL1

RET

del:

movr7,#255

del1:

movr6,#255

djnzr6,$

djnzr7,del1

ret

TAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

DB0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH

End

 

 

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

当前位置:首页 > 初中教育 > 科学

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

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