单片机课程设计倒计时牌.docx

上传人:b****5 文档编号:8008979 上传时间:2023-01-27 格式:DOCX 页数:22 大小:194.18KB
下载 相关 举报
单片机课程设计倒计时牌.docx_第1页
第1页 / 共22页
单片机课程设计倒计时牌.docx_第2页
第2页 / 共22页
单片机课程设计倒计时牌.docx_第3页
第3页 / 共22页
单片机课程设计倒计时牌.docx_第4页
第4页 / 共22页
单片机课程设计倒计时牌.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

单片机课程设计倒计时牌.docx

《单片机课程设计倒计时牌.docx》由会员分享,可在线阅读,更多相关《单片机课程设计倒计时牌.docx(22页珍藏版)》请在冰豆网上搜索。

单片机课程设计倒计时牌.docx

单片机课程设计倒计时牌

单片机课程设计

 

所在院系:

机械电子工程学院

专业班级:

08自动化

(1)班

姓名:

舒震宇

学号:

200810320111

指导老师:

万军

完成日期:

2011-06-18

 

目录

 

1、总体设计4

2、硬件原理电路图的设计及分析5

2.1模块方框图5

2.2电路图6

2.3.使用说明6

3.程序设计及分析7

3.1软件系统模块图7

3.2各子程序设计7

3.2.1主程序7

3.2.2转换子程序及显示子程序模块9

3.2.3定时器T0中断10

3.2.4外部中断0:

11

3.2.5外部中断1:

12

3.2.6延时子程序14

4.系统评价15

5.心得体会16

6.参考文献17

7.附:

源程序18

单片机课程设计任务书

姓名舒震宇班级08自动化

(1)班指导老师万军

题目:

倒计时牌

课题的任务和要求

1.1实现日历功能;

1.2.显示距倒计时时刻还有多长时间(显示天、时、分、秒);

1.3倒计时的时间可人为设定;

设计步骤

1、根据课题,查阅相关资料

2、画出系统原理框图;

3、画出单元电路图;

4、编写相应部分程序;、

5、撰写说明书

参考文献

1、靳达.单片机应用系统开发实例导航.北京:

人民邮电出版社,2003.10

2、张俊谟.单片机中级教程.原理与应用.北京:

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

3、何立民.MCS-51系列单片机应用系统设计(系统配置与接口技术).

前言

在生活和生产的各领域中,凡是有自动控制要求的地方都会有单片机的身影出现;从简单到复杂,从空中、地面到地下,凡是能想像到的地方几乎都有使用单片的需求。

现在尽管单片机的应用已经很普遍了,但仍有许多可以用单片机控制而尚未实现的项目,因此,单片机的应用大有想像和拓展空间。

单片机的应用有利于产品的小型化、多功能化和智能化,有助于提高劳动效率,减轻劳动强度,提高产品质量,改善劳动环境,减少能源和材料消耗,保证安全等。

但是,单片机应用的意义绝不仅限于它的广阔范围以及所带来的经济效益上,更重要的意义还在于:

单片机的应用正从根本上改变着传统的控制系统设计思想和设计方法。

从前必须有模拟电路或数字电路实现的大部分功能,现在已能使用单片机通过软件(编程序)方法实现了。

这种以软件取代硬件并提高系统性能的控制系统“软化”技术,称之为微控制技术。

微控制技术是一种全新的概念,是对传统控制技术的一次革命。

随着单片机应用的推广普及,微控制技术必将不断发展、日益完善和更加充实。

近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。

模拟多通道压力系统是利用压力传感器采集当前压力并反映在显示器上,它可以分析压力过量程,并发出报警。

并采用电子秤原理可根据输入单价准确的计算出物体的金额。

本篇论文讨论了简单的倒计时器的设计与制作,对于倒计时器中的四位LED数码显示器来说,我为了简化线路、降低成本,采用以软件为主的接口方法,即不使用专门的硬件译码器,而采用软件程序进行译码。

 

1、总体设计

本倒计时牌以AT89C51单片机作为核心,最长可以倒计时100天。

可以显示距倒计时时刻还有多长时间,显示格式为天(十位,个位)、时(十位、个位)、分(十位、个位)、秒(十位、个位);倒计时的时间可以人为设定;另外还可以显示当前的日历,显示格式为年(四位),月(两位),日(两位)。

倒计时设置时间时的位切换、设定数值、启动定时器、切换日历通过外部中断来实现。

倒计时牌天、时、分、秒的计时分别利用100、24、60、60进制自减计数来实现。

倒计时的显示电路由LED数码管组成,利用8只数码管显示,从左至右依次显示为天(十位,个位)、时(十位、个位)、分(十位、个位)、秒(十位、个位)及年(四位),月(两位),日(两位)。

 

2、硬件原理电路图的设计及分析

倒计时牌硬件系统的设计,关键是其显示器接口电路的设计,本设计采用直接利用单片机AT89C51的并行I/O口构成倒计时牌显示接口电路,其硬件系统主要包括单片机(包含晶振、电源)、控制电路(设置初始时间以及日历切换)及显示接口电路。

2.1模块方框图

 

2.2电路图

2.3.使用说明

倒计时牌具有如下工作状态:

设置状态和运行状态。

倒计时牌上电后,显示为全0。

这时要设置倒计时时间,按K1,开始设置时间,这时设置的是秒,按一次K2,秒加1;再按一次K1,设置分,依次类推;设置完天后,按K1则启动定时器,开始倒计时。

在倒计时牌运行状态下,按K2,显示当前的日期(年、月、日);再按一次,回到倒计时间显示。

注:

INT0对应的开关为位切换/启动按钮K1;

INT1对应的开关为修改/日历切换按钮K2

 

3.程序设计及分析

3.1软件系统模块图

3.2各子程序设计

3.2.1主程序

主程序(MAIN)的主要功能是初始化程序、转换子程序和调用延时子程序以及数码管的断码表,其流程图如下:

程序代码(加注释)如下:

MAIN:

MOVTMOD,#01H;定时器T0设为方式一

MOVR1,#17;日历

MOVR2,#00H;切换显示(日历和倒计时的切换)

MOVR5,#0AH;十次中断产生一秒

MOVR3,#00H;利用外部中断0对天、时、分、秒进行切换

MOVR4,#00H;当倒计时开始(R3=5)时对倒计时的初值不能再进行设置

MOV30H,#00H;天

MOV31H,#00H;时

MOV32H,#00H;分

MOV33H,#00H;秒

MOV34H,#20;年的前两位

MOV35H,#09;年的后两位

MOV36H,#06;月

MOV37H,#17;日

SETBEX0

SETBEX1

SETBIT0;外部中断0为边沿触发

SETBIT1;外部中断1为边沿触发

SETBET0

SETBEA

MOVTH0,#3CH;定时器T0置初值

MOVTL0,#0B0H

/*下面为转换子程序*/

LOOP:

/*下面为显示程序*/

DISPLY:

/*下面为延时程序*/

DL1ms:

MOVR7,#02H

DL:

MOVR6,#0FFH

DL6:

DJNZR6,DL6

DJNZR7,DL

RET

3.2.2转换子程序及显示子程序模块

转换子程序(LOOP)将中断服务程序中产生的天、时、分、秒数据,转换成适应LED数码管显示的数据,并将其存放在缓冲区中;

各个要显示的单元都存放在数据缓冲区中,如下表:

显示子程序(DISPLY)动态控制数码管的点亮同时显示数据,完成8个LED数码管的动态显示,显示字符通过查表方式实现,在显示过程中调用延时程序;各显示单元显示前须将其数据由存放地址单元拆分后传送至显示缓冲区中,再将其传送至对应的端口。

下面是秒的转换子程序和显示模块

LOOP:

MOVDPTR,#DMB;段码表首地址放进DPTR

MOVA,33H;对秒进行拆分

MOVB,#10

DIVAB

MOVCA,@A+DPTR

MOV46H,A;秒的十位对应的段码放进缓冲区46H

MOVA,B

MOVCA,@A+DPTR

MOV47H,A;秒的个位对应的段码放进缓冲区47H

/*下面为显示程序*/

DISPLY:

CLRP2.7

MOVA,47H

MOVP1,A

LCALLDL1ms

SETBP2.7

CLRP2.6

MOVA,46H

MOVP1,A

LCALLDL1ms

SETBP2.6

3.2.3定时器T0中断

定时器T0溢出中断(IT0P)程序主要用于产生秒的时间基准,以及在此基础上的天、时、分、秒的正常倒计时以及日期的累加。

流程图如下:

3.2.4外部中断0:

外部中断0(INT0P)用于设置倒计时牌时间时切换各个位以及开启定时器,其中切换时以R3为标志位,

标志位单元

取值

实现功能

R3

0

初始化值

R3

1

设置秒单元

R3

2

设置分单元

R3

3

设置时单元

R3

4

设置天单元

R3

5

启动定时器,开始倒计时

其中涉及到标志位R4,

标志位单元

取值

实现功能

R4

0

初始化值,此时可以设置时间

R4

1

倒计时运行状态,此时不能设置时间

其流程图如下:

3.2.5外部中断1:

外部中断1(INT1P)程序主要用于天、时、分和秒的修改,按一次加1。

其中涉及到标志位R2,

工作组寄存器

数值

功能

R2

0

送倒计时时间

R2

1

送当前日历

R2

2

清0

其流程图如下:

3.2.6延时子程序

延时程序(DL1ms)主要用于数码管显示时延时,其流程图如下

程序如下:

DL1ms:

MOVR7,#02H

DL:

MOVR6,#0FFH

DL6:

DJNZR6,DL6

DJNZR7,DL

RET

 

4.系统评价

本系统最长可倒计时100天,可通过外部中断设置初始时间,及显示当前日历。

本系统在设计时考虑到只需倒计时100天,所以显示的日历只是最近3个月的,并且初始日期是在程序中设置的,即不能任意设定初始值。

这是本系统的不足之处。

 

5.心得体会

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。

回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近二个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在万军老师的辛勤指导下,终于游逆而解。

同时,在万军老师那里我学得到很多实用的知识,在次我表示感谢!

同时,对给过我帮助的所有同学和万军指导老师再次表示忠心的感谢!

 

6.参考文献

1.张毅刚·单片机原理及应用·(第一版)·高等教育出版社,2008年

2.王东峰等.单片机C语言应用100例[M].电子工业出版社,2009.

3.陈海宴.51单片机原理及应用[M].北京航空航天大学出版社,2010.

4.刘守义等.单片机技术基础[M].西安电子科技大学出版社,2007.

5.钟富昭等.8051单片机典型模块设计与应用[M].人民邮电出版社,2007.

 

7.附:

源程序

/*该程序最多可产生100天的倒计时,采用6MHZ的晶振,外部中断0对初值设置时

的各单元进行切换,同时还控制T0的开始;外部中断1对相应的单元设置初值,

每按一次该单元增加1。

R3=1设置秒单元,R3=2设置分单元,R3=4设置时单元,

R3=4设置天单元,R3=5,T0开始计时。

*/

ORG0000H

LJMPMAIN

ORG0003H

LJMPINT0P

ORG00BH

LJMPIT0P

ORG0013H

LJMPINT1P

ORG0100H

MAIN:

MOVTMOD,#01H;定时器T0设为方式一

MOVR1,#17;日历

MOVR2,#00H;切换显示(日历和倒计时的切换)

MOVR5,#0AH;十次中断产生一秒

MOVR3,#00H;利用外部中断0对天、时、分、秒进行切换

MOVR4,#00H;当倒计时开始(R3=5)时对倒计时的初值不能再进行设置

MOV30H,#00H;天

MOV31H,#00H;时

MOV32H,#00H;分

MOV33H,#00H;秒

MOV34H,#20;年的前两位

MOV35H,#09;年的后两位

MOV36H,#06;月

MOV37H,#17;日

SETBEX0

SETBEX1

SETBIT0;外部中断0为边沿触发

SETBIT1;外部中断1为边沿触发

SETBET0

SETBEA

MOVTH0,#3CH;定时器T0置初值

MOVTL0,#0B0H

LOOP:

MOVDPTR,#DMB;段码表首地址放进DPTR

MOVA,33H;对秒进行拆分

MOVB,#10

DIVAB

MOVCA,@A+DPTR

MOV46H,A;秒的十位对应的段码放进缓冲区46H

MOVA,B

MOVCA,@A+DPTR

MOV47H,A;秒的个位对应的段码放进缓冲区47H

MOVA,32H;对分进行拆分

MOVB,#10

DIVAB

MOVCA,@A+DPTR

MOV44H,A;分的十位对应的段码放进缓冲区44H

MOVA,B

MOVCA,@A+DPTR

MOV45H,A;分的个位对应的段码放进缓冲区45H

MOVA,31H;对时进行拆分

MOVB,#10

DIVAB

MOVCA,@A+DPTR

MOV42H,A;时的十位对应的段码放进缓冲区42H

MOVA,B

MOVCA,@A+DPTR

MOV43H,A;时的个位对应的段码放进缓冲区43H

MOVA,30H;对天进行拆分

MOVB,#10

DIVAB

MOVCA,@A+DPTR

MOV40H,A;天的十位对应的段码放进缓冲区40H

MOVA,B

MOVCA,@A+DPTR

MOV41H,A;天的个位对应的段码放进缓冲区41H

MOVA,37H;对日期进行拆分

MOVB,#10

DIVAB

MOVCA,@A+DPTR

MOV4EH,A;日期的十位对应的段码放进缓冲区4EH

MOVA,B

MOVCA,@A+DPTR

MOV4FH,A;日期的个位对应的段码放进缓冲区4FH

MOVA,36H;对月份进行拆分

MOVB,#10

DIVAB

MOVCA,@A+DPTR

MOV4CH,A;月份的十位对应的段码放进缓冲区4CH

MOVA,B

MOVCA,@A+DPTR

MOV4DH,A;月份的个位对应的段码放进缓冲区4DH

MOVA,35H;对年的后两位进行拆分

MOVB,#10

DIVAB

MOVCA,@A+DPTR

MOV4AH,A;年的后两位的十位对应的段码放进缓冲区4AH

MOVA,B

MOVCA,@A+DPTR

MOV4BH,A;年的后两位的个位对应的段码放进缓冲区4BH

MOVA,34H;对年的前两位进行拆分

MOVB,#10

DIVAB

MOVCA,@A+DPTR

MOV48H,A;年的前两位的十位对应的段码放进缓冲区48H

MOVA,B

MOVCA,@A+DPTR

MOV49H,A;年的前两位的个位对应的段码放进缓冲区49H

/*下面为显示程序*/

DISPLAY:

CLRP2.7

CJNER2,#00H,S7

MOVA,47H

SJMPS77

S7:

MOVA,4FH

S77:

MOVP1,A

LCALLDL1ms

SETBP2.7

CLRP2.6

CJNER2,#00H,S6

MOVA,46H

SJMPS66

S6:

MOVA,4EH

S66:

MOVP1,A

LCALLDL1ms

SETBP2.6

CLRP2.5

CJNER2,#00H,S5

MOVA,45H

SJMPS55

S5:

MOVA,4DH

S55:

MOVP1,A

LCALLDL1ms

SETBP2.5

CLRP2.4

CJNER2,#00H,S4

MOVA,44H

SJMPS44

S4:

MOVA,4CH

S44:

MOVP1,A

LCALLDL1ms

SETBP2.4

CLRP2.3

CJNER2,#00H,S3

MOVA,43H

SJMPS33

S3:

MOVA,4BH

S33:

MOVP1,A

LCALLDL1ms

SETBP2.3

CLRP2.2

CJNER2,#00H,S2

MOVA,42H

SJMPS22

S2:

MOVA,4AH

S22:

MOVP1,A

LCALLDL1ms

SETBP2.2

CLRP2.1

CJNER2,#00H,S1

MOVA,41H

SJMPS11

S1:

MOVA,49H

S11:

MOVP1,A

LCALLDL1ms

SETBP2.1

CLRP2.0

CJNER2,#00H,S0

MOVA,40H

SJMPS00

S0:

MOVA,48H

S00:

MOVP1,A

LCALLDL1ms

SETBP2.0

LJMPLOOP

IT0P:

MOVTH0,#3CH

MOVTL0,#0B0H

DJNZR5,RETURN

MOVR5,#0AH

MOVA,33H

DECA

MOV33H,A

CJNEA,#0FFH,RETURN

MOV33H,#3BH

MOVA,32H

DECA

MOV32H,A

CJNEA,#0FFH,RETURN

MOV32H,#3BH

MOVA,31H

DECA

MOV31H,A

CJNEA,#0FFH,RETURN

MOV31H,#17H

MOVA,30H

DECA

MOV30H,A

PUSHACC

MOVA,37H

INCA

INCR1

MOV37H,A

CJNER1,#31,GO1

MOV36H,#07H

MOV37H,#01H

GO1:

CJNER1,#62,GO2

MOV36H,#08H

MOV37H,#01H

GO2:

CJNER1,#93,GO3

MOV36H,#09H

MOV37H,#01H

GO3:

CJNER1,#123,GO4

MOVR1,#17

MOV36H,#06H

MOV37H,#17

GO4:

POPACC

CJNEA,#0FFH,RETURN

CLRTR0

MOV30H,#00H

MOV31H,#00H

MOV32H,#00H

MOV33H,#00H

RETURN:

RETI

DL1ms:

MOVR7,#02H

DL:

MOVR6,#0FFH

DL6:

DJNZR6,DL6

DJNZR7,DL

RET

/*外部中断0,天、时、分、秒的切换及开始倒计时*/

INT0P:

PUSHPSW

INCR3

CJNER3,#05H,RETURN1

SETBTR0

MOVR3,#00H

MOVR4,#01H

RETURN1:

POPPSW

RETI

/*外部中断1的调整程序*/

INT1P:

PUSHPSW

PUSHACC

CJNER4,#00H,NEXT

CJNER3,#00H,ADD0

SJMPRETURN2

ADD0:

CJNER3,#01H,MM;秒单元调整

INC33H

MOVA,33H

CJNEA,#60,RETURN2

MOV33H,#00H

SJMPRETURN2

MM:

CJNER3,#02H,HH

INC32H

MOVA,32H

CJNEA,#60,RETURN2

MOV32H,#00H

SJMPRETURN2

HH:

CJNER3,#03H,DD

INC31H

MOVA,31H

CJNEA,#24,RETURN2

MOV31H,#00H

SJMPRETURN2

DD:

CJNER3,#04,RETURN2

INC30H

MOVA,30H

CJNEA,#100,RETURN2

MOV30H,#00H

SJMPRETURN2

NEXT:

INCR2

CJNER2,#02H,RETURN2

MOVR2,#00H

RETURN2:

POPACC

POPPSW

RETI

DMB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;段码表

END

 

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

当前位置:首页 > 总结汇报 > 学习总结

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

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