单片机课程设计倒计时牌2Word下载.docx
《单片机课程设计倒计时牌2Word下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计倒计时牌2Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
设计步骤
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数码管的动态显示,显示字符通过查表方式实现,在显示过程中调用延时程序;
各显示单元显示前须将其数据由存放地址单元拆分后传送至显示缓冲区中,再将其传送至对应的端口。
下面是秒的转换子程序和显示模块
MOVDPTR,#DMB;
段码表首地址放进DPTR
MOVA,33H;
对秒进行拆分
MOVB,#10
DIVAB
MOVCA,@A+DPTR
MOV46H,A;
秒的十位对应的段码放进缓冲区46H
MOVA,B
MOV47H,A;
秒的个位对应的段码放进缓冲区47H
CLRP2.7
MOVA,47H
MOVP1,A
LCALLDL1ms
SETBP2.7
CLRP2.6
MOVA,46H
SETBP2.6
3.2.3定时器T0中断
定时器T0溢出中断(IT0P)程序主要用于产生秒的时间基准,以及在此基础上的天、时、分、秒的正常倒计时以及日期的累加。
流程图如下:
外部中断0(INT0P)用于设置倒计时牌时间时切换各个位以及开启定时器,其中切换时以R3为标志位,
标志位单元
取值
实现功能
R3
初始化值
1
设置秒单元
2
设置分单元
3
设置时单元
4
设置天单元
5
启动定时器,开始倒计时
其中涉及到标志位R4,
R4
初始化值,此时可以设置时间
倒计时运行状态,此时不能设置时间
其流程图如下:
外部中断1(INT1P)程序主要用于天、时、分和秒的修改,按一次加1。
其中涉及到标志位R2,
工作组寄存器
数值
功能
R2
送倒计时时间
送当前日历
清0
3.2.6延时子程序
延时程序(DL1ms)主要用于数码管显示时延时,其流程图如下
程序如下:
4.系统评价
本系统最长可倒计时100天,可通过外部中断设置初始时间,及显示当前日历。
本系统在设计时考虑到只需倒计时100天,所以显示的日历只是最近3个月的,并且初始日期是在程序中设置的,即不能任意设定初始值。
这是本系统的不足之处。
5.心得体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近二个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在万军老师的辛勤指导下,终于游逆而解。
同时,在万军老师那里我学得到很多实用的知识,在次我表示感谢!
同时,对给过我帮助的所有同学和万军指导老师再次表示忠心的感谢!
6.参考文献
1.张毅刚·
单片机原理及应用·
(第一版)·
高等教育出版社,2008年
2.王东峰等.单片机C语言应用100例[M].电子工业出版社,2009.
3.陈海宴.51单片机原理及应用[M].北京航空航天大学出版社,2010.
4.刘守义等.单片机技术基础[M].西安电子科技大学出版社,2007.
5.钟富昭等.8051单片机典型模块设计与应用[M].人民邮电出版社,2007.
源程序
/*该程序最多可产生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
MOVR5,#0AH;
MOVA,32H;
对分进行拆分
MOV44H,A;
分的十位对应的段码放进缓冲区44H
MOV45H,A;
分的个位对应的段码放进缓冲区45H
MOVA,31H;
对时进行拆分
MOV42H,A;
时的十位对应的段码放进缓冲区42H
MOVCA,@A+DPTR
MOV43H,A;
时的个位对应的段码放进缓冲区43H
MOVA,30H;
对天进行拆分
MOV40H,A;
天的十位对应的段码放进缓冲区40H
MOV41H,A;
天的个位对应的段码放进缓冲区41H
MOVA,37H;
对日期进行拆分
MOV4EH,A;
日期的十位对应的段码放进缓冲区4EH
MOV4FH,A;
日期的个位对应的段码放进缓冲区4FH
MOVA,36H;
对月份进行拆分
MOV4CH,A;
月份的十位对应的段码放进缓冲区4CH
MOV4DH,A;
月份的个位对应的段码放进缓冲区4DH
MOVA,35H;
对年的后两位进行拆分
MOV4AH,A;
年的后两位的十位对应的段码放进缓冲区4AH
MOV4BH,A;
年的后两位的个位对应的段码放进缓冲区4BH
MOVA,34H;
对年的前两位进行拆分
MOV48H,A;
年的前两位的十位对应的段码放进缓冲区48H
MOV49H,A;
年的前两位的个位对应的段码放进缓冲区49H
DISPLAY:
CJNER2,#00H,S7
SJMPS77
S7:
MOVA,4FH
S77:
CJNER2,#00H,S6
SJMPS66
S6:
MOVA,4EH
S66:
CLRP2.5
CJNER2,#00H,S5
MOVA,45H
SJMPS55
S5:
MOVA,4DH
S55:
SETBP2.5
CLRP2.4
CJNER2,#00H,S4
MOVA,44H
SJMPS44
S4:
MOVA,4CH
S44:
SETBP2.4
CLRP2.3
CJNER2,#00H,S3
MOVA,43H
SJMPS33
S3:
MOVA,4BH
S33:
SETBP2.3
CLRP2.2
CJNER2,#00H,S2
MOVA,42H
SJMPS22
S2:
MOVA,4AH
S22:
SETBP2.2
CLRP2.1
CJNER2,#00H,S1
MOVA,41H
SJMPS11
S1:
MOVA,49H
S11:
SETBP2.1
CLRP2.0
CJNER2,#00H,S0
MOVA,40H
SJMPS00
S0:
MOVA,48H
S00:
SETBP2.0
LJMPLOOP
IT0P:
MOVTH0,#3CH
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
MOV31H,A
MOV31H,#17H
MOVA,30H
MOV30H,A
PUSHACC
MOVA,37H
INCA
INCR1
MOV37H,A
CJNER1,#31,GO1
MOV36H,#07H
MOV37H,#01H
GO1:
CJNER1,#62,GO2
MOV36H,#08H
GO2:
CJNER1,#93,GO3
MOV36H,#09H
GO3:
CJNER1,#123,GO4
MOVR1,#17
MOV36H,#06H
MOV37H,#17
GO4:
POPACC
CLRTR0
MOV30H,#00H
MOV31H,#00H
MOV32H,#00H
MOV33H,#00H
RETURN:
RETI
/*外部中断0,天、时、分、秒的切换及开始倒计时*/
INT0P:
PUSHPSW
INCR3
CJNER3,#05H,RETURN1
SETBTR0
MOVR3,#00H
MOVR4,#01H
RETURN1:
POPPSW
RETI
/*外部中断1的调整程序*/
INT1P:
CJNER4,#00H,NEXT
CJNER3,#00H,ADD0
SJMPRETURN2
ADD0:
CJNER3,#01H,MM;
秒单元调整
INC33H
CJNEA,#60,RETURN2
MM:
CJNER3,#02H,HH
INC32H
HH:
CJNER3,#03H,DD
INC31H
CJNEA,#24,RETURN2
DD:
CJNER3,#04,RETURN2
INC30H
CJNEA,#100,RETURN2
SJMPRETURN2
NEXT:
INCR2
CJNER2,#02H,RETURN2
MOVR2,#00H
RETURN2:
POPACC
POPPSW
DMB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;
段码表
END