单片机汇编语言秒表课程设计设计.docx
《单片机汇编语言秒表课程设计设计.docx》由会员分享,可在线阅读,更多相关《单片机汇编语言秒表课程设计设计.docx(14页珍藏版)》请在冰点文库上搜索。
单片机汇编语言秒表课程设计设计
单片机原理及接口技术
课程设计报告
题目名称:
秒表电路设计
姓名:
班级:
学号:
指导教师:
日期:
2016年7月13日
课程代码:
课程名称:
单片机原理及接口技术课程设计
周数:
2学分:
1.0学分
一、课程设计的性质、任务与目的
单片机原理及接口技术课程设计是在学生学习完理论课和实验课的基础上开设的,通过完成一个涉及MCS-51或其他系列单片机多种资源应用并具有综合功能的设计与编程应用,使学生能够将课堂上学到的理论知识与实际应用结合起来,同时在软件编程、仿真调试及相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的设计开发工作打下一定的基础。
本课程设计的主要目的如下:
1、增进对单片机的感性认识,加深对单片机理论知识的理解,掌握单片机内部功能模块(如定时/计数器、中断、片内外存贮器、I/O口、串行口等)的应用;
2、掌握单片机应用系统的软硬件设计过程及实现方法,为以后设计和实现单片机应用系统打下良好基础;
3、提高综合应用所学理论知识独立分析和解决实际问题的能力。
二、本课程设计的基本理论
本课程设计的基本理论是单片机原理及接口技术的基本理论,主要包括单片机的硬件结构原理、指令系统、汇编语言、中断系统、定时/计数器、串行接口、I/O接口等。
在学习掌握单片机原理及接口技术课程的前提下,利用实验室提供的单片机实验条件或基于仿真软件,采用汇编语言或C51编程,设计实现一个具体的单片机应用系统项目,熟悉单片机系统设计开发的完整过程。
三、课程设计的方式与基本要求
课程设计的方式:
每个班级学生按2~3人分为一组,以组为单位进行课程设计(也可一人独立进行),课程设计的题目从教师给定的题目中选取,也可以是指导教师审核通过的学生自选题目。
基本要求:
每组选定题目后,按题目要求,首先进行方案论证,通过查阅资料、集体讨论,确定设计方案;然后进行具体的硬件和软件设计;完成设计后,进行硬件/软件调试;最后撰写课程设计报告。
秒表电路设计
一.设计任务
用89C52单片机模拟实现电子秒表的开启,计时,停止,存储,回显并显示时间等功能。
二.设计原理
1.软件设计
进行总体设计,画出设计原理图,用PROTEUS软件画出设计电路图,通过PROTEUS软件进行仿真,实现软件的秒表设计。
2.硬件设计
在软件设计的基础上,进行硬件的设计,通过一定的排版,将各种元器件焊接到电路板上,通过合理的布局,实现电路板的简洁,方便,焊接完成之后进行电路的检查。
电路板检查无误后,通过STCISP软件将keil里面的程序下载到89C52的芯片上面,将下载成功的芯片插到电路板的芯片插槽上,并给电路板进行供电,观察焊接的电路板是否能够实现仿真时的现象。
3.实验现象的设计
电路板具有4个按键,并分别具有不同的功能。
(1)按键一实现秒表的开启和暂停功能
(2)按键二实现秒表的清零功能
(3)按键三实现秒表的存储功能,能将按键三按下的时刻秒表计数记录下来,并通过按键四的回显功能进行时间的回显
(4)按键四实现秒表的时间回显的功能
三.电路总设计
1.系统总电路图
图3.1系统总电路图
系统总电路由以上设计的显示电路,时钟电路,按键电路和复位电路组成,只要将单片机与以上各部分电路合理的连接就组成了系统总电路。
系统总电路图如图3.1所示。
89C51单片机为主电路的核心部分,各个电路均和单片机相连接,由单片机统筹和协调各个电路的运行工作。
89C51单片机提供了XTAL1和XTAL2两个专用引脚接晶振电路,因此只要将晶振电路接到两个专用引脚即可为单片机提供时钟脉冲,但在焊接晶振电路时要尽量使晶振电路靠近单片机,这样可以为单片机提供稳定的始终脉冲。
2.系统流程图
四.电路设计程序
ORG0000H
LJMPMAIN;跳转到主程序
ORG0003H;外部中断零入口地址
LJMPINT;跳转到中断函数
ORG000BH;定时器T0中断入口地址
LJMPTIME;跳转到T0中断
ORG0100H
MAIN:
MOVTMOD,#01H;选择定时器T0工作模式1
MOVTH0,#0D8H;装入T0计数初值的高四位定时10MS
MOVTL0,#0F0H;装入T0计数初值的低四位
SETBEA;打开总中断
SETBET0;打开定时器T0中断
SETBIT0;外部中断0为边沿触发方式
SETBEX0;允许外部中断0中断
MOVR0,#50H
CLRTR0;关闭定时器T0
LP:
LCALLDISPLAY
LJMPLP
DISPLAY:
MOVA,R7
MOVB,#10
DIVAB;A/B,商存储在A中,余数存贮在B中
LCALLNUM;长调用
MOVP1,R4;段码送到P1口
MOVP2,#01H;位码送到p2
LCALLDELAY
MOVA,B
LCALLNUM
MOVP2,#00H
MOVP1,R4
MOVP2,#02H
LCALLDELAY
MOVP2,#00H
MOVP1,#0BFH
MOVP2,#04H
LCALLDELAY
MOVA,R6
MOVB,#10
DIVAB
LCALLNUM
MOVP2,#00H
MOVP1,R4
MOVP2,#08H
LCALLDELAY
MOVA,B
LCALLNUM
MOVP2,#00H
MOVP1,R4
MOVP2,#10H
LCALLDELAY
MOVP2,#00H
MOVP1,#0BFH
MOVP2,#20H
LCALLDELAY
MOVA,R5
MOVB,#10
DIVAB
LCALLNUM
MOVP2,#00H
MOVP1,R4
MOVP2,#40H
LCALLDELAY
MOVA,B
LCALLNUM
MOVP2,#00H
MOVP1,R4
MOVP2,#80H
LCALLDELAY
MOVP2,#00H
RET
NUM:
CJNEA,#0,IF1;比较转移指令,相等顺序执行
MOVR4,#0C0H;数码管显示0
RET
IF1:
CJNEA,#1,IF2
MOVR4,#0F9H;数码管显示1
RET
IF2:
CJNEA,#2,IF3
MOVR4,#0A4H;数码管显示2
RET
IF3:
CJNEA,#3,IF4
MOVR4,#0B0H;数码管显示3
RET
IF4:
CJNEA,#4,IF5
MOVR4,#99H;数码管显示4
RET
IF5:
CJNEA,#5,IF6
MOVR4,#92H;数码管显示5
RET
IF6:
CJNEA,#6,IF7
MOVR4,#82H;数码管显示6
RET
IF7:
CJNEA,#7,IF8
MOVR4,#0F8H;数码管显示7
RET
IF8:
CJNEA,#8,IF9
MOVR4,#80H;数码管显示8
RET
IF9:
MOVR4,#90H;数码管显示9
RET
TIME:
MOVTH0,#0D8H;装入T0计数初值的高四位
MOVTL0,#0F0H;装入T0计数初值的低四位
INCR5;自加一
CJNER5,#100,LP0;比较转移指令,相等顺序执行
INCR6;R6里面的数据自加一
MOVR5,#0;(R5)=0
CJNER6,#60,LP0;比较转移指令,相等顺序执行
INCR7;自加一
MOVR5,#0;(R5)=0;
MOVR6,#0;(R6)=0;
CJNER7,#60,LP0;比较转移指令,相等顺序执行
MOVR5,#0;清零
MOVR6,#0;清零
MOVR7,#0;清零
LP0:
RETI;中断返回指令
INT:
CLREX0;禁止外部中断允许
JBP3.7,IFP36;判位变量转移指令,若等于1,则转移
MOVR1,#1;(R1)=1
CPLTR0;开始计数
MOV21H,R2;
LJMPBACK;
IFP36:
JBP3.6,IFP35;判位变量转移指令,若等于1,则转移
MOVR1,#2;
MOVR5,#0;清零
MOVR6,#0;清零
MOVR7,#0;清零
MOVR2,#0;清零
MOVR0,#50H;(R0)=50H
MOVR3,#00H;(R3)=00H
LJMPBACK
IFP35:
JBP3.5,P34;判位变量转移指令,若等于1,则转移
MOVR1,#3
MOVA,R5
MOV@R0,A;存储模块
INCR0;加一指令
MOVA,R6
MOV@R0,A
INCR0
MOVA,R7
MOV@R0,A
INCR0
INCR2
LJMPBACK
P34:
CJNER1,#4,NEW
SJMPOLD
NEW:
CJNER1,#1,BACK
MOVR0,#50H
OLD:
MOVA,@R0
MOVR5,A;回显毫秒
INCR0;
MOVA,@R0;回显模块
MOVR6,A
INCR0
MOVA,@R0
MOVR7,A
INCR0
DJNZ21H,BAC
MOV21H,R2
MOVR0,#50H
BAC:
MOVR1,#4
BACK:
CLRP3.2
SETBP3.2
SETBEX0;允许外部中断0中断
RETI
DELAY:
RET
END
五.实物图
六.总结
通过此次的单片机的课程设计,让我对于89C51芯片的使用有了更加熟练的使用,对于芯片的端口分布更清楚的了解。
并且通过此次的课程设计内容,对于日常实验所用到的一些元器件的使用更加的得心应手,比如数码管的接法和按键灯元器件等。
这次设计,为大家提供了应用自己所学知识的平台,是非常可贵的。
经过此次设计使我们对单片机有了更加的系统认识,同时对单片机模块化编程以及程序的调试增加了实践的经验。
最重要的是提高大家对单片机开发的兴趣,增强了大家团队意识。
再设计过程中,遇到了诸如延时程序不能嵌套,数码管显示的问题,工作寄存器分配问题,跳转指令程序的设计问题,经过大家的积极思考与讨论,使问题都得到了解决。
通过课程设计,复习巩固我们以前所学习的数字、模拟电子技术、单片机原理及接口等课程知识,加深对各门课程及相互关系的理解,并成功使用了Keil uVision4和Proteus ISIS电子软件,使理论知识系统化、实用化,系统地掌握微机应用系统的一般设计方法,培养较强的编程能力、开发能力。
七.参考文献
[1] 张刚毅等编著. 《单片机原理及应用》(第二版),高等教育出版社,2010.05;
[2] 艾学忠等编. 《单片机原理及应用》,机械工业出版社,2012.08;
[3] 李朝青编著.《单片机原理及接口技术》(第3版),北京航空航天大学出版社,2005.10;
[4] 马忠梅等.《单片机的C语言应用程序设计》(第四版),北京航空航天大学出版社,2007.02;
[5] 于永等著.《51单片机C语言常用模块与综合系统设计实例精讲》(第2版),电子工业出版社,2008.10;
[6] 周立功. 《单片机实验与实践教程(三)》,北京航空航天大学出版社,2006.05。