基于89C51单片机的秒表课程设计论文.docx
《基于89C51单片机的秒表课程设计论文.docx》由会员分享,可在线阅读,更多相关《基于89C51单片机的秒表课程设计论文.docx(27页珍藏版)》请在冰豆网上搜索。
基于89C51单片机的秒表课程设计论文
摘要
随着电子技术的发展,电子技术在各个领域的运用也越来越广泛,人对它的认识也逐步加深。
秒表计时器秒表计时器常常用于体育竞赛及各种其他要求有较精确时间的各领域中。
其中启/停开关的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关计时终止。
而复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位开关,计时应立即终止,并对计时器清零。
本设计就是利用所学到的电子元器件将脉冲源用数码管显示出来,以制承诺简易的秒表。
以单片机为核心,设计一个秒表,具有计时功能,按键有启动计时、数据清零、停止、时间显示。
采用3个LED数码管显示时间,计时范围设置为0~99.9秒,即精确到0.1秒,用按键控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计时;按“暂停”按键,系统暂停计时;再按“开始”键,系统继续计时;数码管显示当前计时值;按“复位”按键,系统清零。
毕业论文(设计)原创性声明
本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。
据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。
对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。
作者签名:
日期:
毕业论文(设计)授权使用说明
本论文(设计)作者完全了解**学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。
有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。
学校可以公布论文(设计)的全部或部分内容。
保密的论文(设计)在解密后适用本规定。
作者签名:
指导教师签名:
日期:
日期:
注意事项
1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:
引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:
理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:
任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:
按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
一、设计任务
以单片机为核心,设计一个秒表,具有计时功能,按键有启动计时、数据清零、停止、时间显示。
二、设计题目
秒表的设计
三、功能分析
采用3个LED数码管显示时间,计时范围设置为0~99.9秒,即精确到0.1秒,用按键控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计时;按“暂停”按键,系统暂停计时;再按“开始”键,系统继续计时;数码管显示当前计时值;按“复位”按键,系统清零。
四、总体设计
本实验利用单片机的定时器/计数器定时和计数的原理,通过采用Proteus仿真软件来模拟实现。
模拟AT89C51单片机、LED数码管以及控件来控制秒表的计数以及计时的开启、暂停、继续、与复位。
其中有三个数码管来显示数据,两个数码管显示秒(两位),另一个数码管显示十分之一秒,十分之一秒的数码管计数从0~9,满十进一后显示秒得数码管的个位加一,并且十分之一秒显示清零重新从零计数。
同理当个位满十进一后个位也清零重新计数,当计时超过范围(即超过99.9秒)后,所有数码管全部清零从新计数
4.1硬件设计
4.1.189C51单片机
MCS-51系列单片机是8位单片机产品,89C51是其中的典型代表,基本模块包括以下几个部分:
(1)CPU:
89C51的CPU是8位的,另外89C51内部有1个位处理器
(2)R0M:
4KB的片内程序存储器,存放开发调试完成的应用程序
(3)RAM:
256B的片内数据存储器,容量小,但作用大
(4)I/O口:
P0-P3,共4个口32条双向且可位寻址的I/O口线
(5)中断系统:
共5个中断源,3个内部中断,2个外部中断
(6)定时器/计数器:
2个16位的可编程定时器/计数器
(7)通用串行口:
全双工通用异步接收器/发送器
(8)振荡器:
89C51的外接晶振与内部时钟振荡器为CPU提供时钟信号
(9)总线控制:
89C51对外提供若干控制总线,便于系统扩展
89C51单片机引脚如下图:
4.1.2晶体振荡电路
89C51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别为反相振荡放大器的输入及内部时钟工作电路的输入和来自反相振荡器的输出,该反相放大器可以配置为片内振荡器。
这里选用51单片机12MHZ的内部振荡方式,电路如下:
C2、C3起稳定振荡频率、快速起振的作用。
晶振电路
4.1.3复位电路
采用上电复位,上电后,由于电容充电,使RST持续一段时间的高电平,从而实现上电复位操作。
这不仅能使单片机复位,还能是单片机的外围设备同时复位,当程序出现错误时,可以随时使电路复位。
电路图如下:
复位电路
4.1.4按键电路
当按键被按下时,相应的引脚被拉低,经扫描后,获得键值,并执行键功能程序,因此按下不同的按键,将执行不同的功能程序。
电路图如下:
按键电路
4.1.5显示电路
采用3个LED数码管,LED是七段显示器,内部有7个条形发光二极管和1个小圆点发光二极管,根据各管的亮暗组成字符。
在用数码管显示时,有静态和动态两种选择,这里采用LED动态显示,用P0、P1、P2口驱动显示,由于P0口没有上拉电阻,因此P0口需要外接上拉电阻才能输出高电平,这里使用8个4.7k的电阻作为上拉电阻。
电路图如下:
显示电路
4.2引脚控制
P0.0—P0.7、P2.0—P2.7、P1.0—P1.7对应三个数码管的a、b、c、d、e、f、g段和小数点位;P0控制数码管十位的显示,P2控制数码管个位的现实,P1控制小数点后一问的显示,P3.2、P3.3、P3.4分别接。
五、电路原理图
用Proteus软件画出主电路图如下:
六、程序流程图及程序设计
6.1程序流程图
6.2程序设计
程序的各个组成模块及工作流程描述:
(1)秒表的初始化
根据程序流程图,先进行秒表的初始化,即:
①将I/O口P3全写一,为秒表的控制输入做好准备;②将数码管全部置零,使其处于秒表计时的初始状态;③将工作寄存器R0~R2以及30H初始化,留待后面的计时程序备用;④将定时器0置于工作方式1,并为其装入计时预置数D8FE(因为程序运行过程中占用的时间会导致一定误差,此为经实物测试之后的修正值),即将定时器定为每10ms溢出;⑤开总中断允许和定时器0中断允许。
初始化完成后,即进入之后的按键扫描程序。
(2)按键检测程序
轮流检测开始计时(P3.2)、暂停计时(P3.3)、秒表清零(P3.4)三个按键。
若发现有一个按键出现低电平(可能被按下),则延时10ms(调用延时子程序DELAY),延时完成后,若发现低电平消失,则说明该按键实际上未被按下,此时转回按键检测处继续检测;若发现仍然是低电平,则说明此键确实被按下了,此时就跳转至相应的程序标号处,执行相应的功能。
(3)开始计时
若确认“开始计时”键被按下,则跳转至程序标号“RUN”处,将定时器0计时允许控制位TR0置位,则定时器开始运行。
此动作完成后,返回按键检测程序,等待操作者的下一次指令。
(4)计时程序
定时器0计时至10ms,溢出,引发中断,程序跳转至定时器0中断服务程序入口000BH处执行。
程序跳转至中断服务程序TIME0。
由于秒表的最小计时单位是0.1s,即100ms,因此需加入软件计时,使定时器0溢出10次之后才改变数码管的显示状态。
因此每来一次中断就将30H中的数加1,若30H中的数没有到10,则给定时器0重新装入预置数,之后中断返回并继续等待中断;到10了,才进入显示程序,改变数码管的显示状态,执行完毕之后中断返回并继续等待中断。
(5)显示程序
将数码管的段选码放在数表TAB中。
每次100ms计时完成后,将R0中的值(初值为0)送入A,然后自加1。
.若R0中的值没到10,则使用累加器A查表,并将查得的数码管段选码送入毫秒位数码管。
之后将30H中的数置零,中断返回。
若发现R0中的数到10了,则将R0置零,并转入秒位进位子程序SECOND,向秒位进位,之后,继续照常向毫秒位送数。
在秒位进位子程序SECOND中,由于要用到累加器A,因此先将其推入堆栈保护。
将R1中的值(初值为10)送入A,然后自加1。
.若R1中的值没到20,则使用累加器A查表,并将查得的数码管段选码送入秒位数码管。
若发现R1中的数到20了,则将R1重置为10,并转入十秒位进位子程序SECOND1,向十秒位进位,之后,继续照常向秒位送数。
完成后,弹出ACC和PSW,子程序返回。
十秒位进位子程序与秒位进位子程序相似,只是没有向下一位进位的功能。
(6)暂停计时
若确认“暂停计时”键被按下,则跳转至程序标号“PAUSE”处,将定时器0计时允许控制位TR0置零,则定时器暂停运行。
此动作完成后,返回按键检测程序,等待操作者的下一次指令。
(7)秒表清零
若确认“秒表清零”键被按下,则跳转至程序标号“STOP”处,将TR0置零,关闭定时器0运行。
并且将数码管、工作寄存器、定时器0预置数全部重置,使其处于秒表计时的初始状态。
此动作完成后,返回按键检测程序,等待操作者的下一次指令。
(8)延时程序
用于按键延时防抖,延时10ms。
程序清单如下:
ORG0000H;程序开始
AJMPSTART;跳转到主程序START
ORG000BH;定时器0中断的地址入口
AJMPTIME0;定时器0溢出,跳转到中断程序TIME0
START:
;主程序
MOVP3,#0FFH;输入端口P3全写1
MOVP0,#3FH;
MOVP1,#3FH;
MOVP2,#0BFH;数码管初始化
MOV30H,#00H;
MOVR0,#00H;
MOVR1,#0AH;
MOVR2,#00H;工作寄存器初始化
MOVTMOD,#01H;定时器0工作于方式1
MOVTH0,#0D8H;
MOVTL0,#0FEH;定时器0预置数(D8FEH=55550D)
SETBEA;开总中断允许
SETBET0;开定时器0中断允许
READ:
;读键程序
L1:
JBP3.2,L2;
LCALLDELAY;按键延时防抖
JBP3.2,L1;
AJMPRUN;确认计时键被按下,开始/继续计时
L2:
JBP3.3,L3;
LCALLDELAY;按键延时防抖
JBP3.3,L2;
AJMPPAUSE;确认暂停键被按下,暂停计时
L3:
JBP3.4,L1;
LCALLDELAY;按键延时防抖
JBP3.4,L3;
AJMPSTOP;确认清零键被按下,秒表重置
RUN:
;计时键按下,跳转至此
SETBTR0;定时器0开始/继续运行
AJMPREAD;
PAUSE:
;暂停键按下,跳转至此
CLRTR0;
AJMPREAD;
TIME0:
;定时器0溢出,中断,跳转至此
INC30H;
MOVA,30H;
CJNEA,#0AH,TIME1;30H单元中的值到10了吗?
(计时到10毫秒了吗,也就是说,该向毫秒位送数了吗?
)
MOVDPTR,#TAB;30H中的值到10了,顺序执行
MOVA,R0;
INCR0;
CJNER0,#0AH,GET;R0中的值到10了吗?
(该向秒位进位了吗?
)
MOVR0,#00H;
LCALLSECOND;到了,R0清零,调用进位子程序SECOND,向秒位进位
GET:
;没到,跳过进位子程序
MOVCA,@A+DPTR;
MOVP1,A;查表并向数码管毫秒位送数
MOV30H,#00H;重置30H单元
TIME1:
;
MOVTH0,#0D8H;
MOVTL0,#0FEH;给定时器0重新预置数
RETI;中断返回
SECOND:
;秒位进位子程序
PUSHACC;
PUSHPSW;将ACC和PSW推入堆栈保护
MOVA,R1;
INCR1;
CJNER1,#14H,GET1;R1中的值到20了吗,也就是说,该向十秒位进位了吗?
MOVR1,#0AH;
LCALLSECOND1;到了。
R1重置,调用进位子程序SECOND1,向十秒位进位
GET1:
;没到,跳过进位子程序
MOVCA,@A+DPTR;
MOVP2,A;查表并向数码管秒位送数
POPPSW;
POPACC;PSW,ACC出栈
RET;子程序返回
SECOND1:
;十秒位进位子程序
PUSHACC;
PUSHPSW;将ACC和PSW推入堆栈保护
MOVA,R2;
INCR2;
CJNER2,#0AH,GET2;R2中的值到10了吗,也就是说,该将此位归零了吗?
MOVR2,#00H;到了,R2清零
GET2:
;没到,跳过清零程序
MOVCA,@A+DPTR;
MOVP0,A;查表并向数码管十秒位送数
POPPSW;
POPACC;PSW,ACC出栈
RET;子程序返回
STOP:
;清零键按下,跳转至此
MOVP3,#0FFH;
MOVP0,#3FH;
MOVP1,#3FH;
MOVP2,#0BFH;数码管清零
MOV30H,#00H;
MOVR0,#00H;
MOVR1,#0AH;
MOVR2,#00H;工作寄存器初始化
CLRTR0;计时器0停止计时
MOVTH0,#0D8H;
MOVTL0,#0FEH;定时器0预置数
AJMPREAD;
DELAY:
;延时10ms子程序
MOVR3,#50D;
D1:
MOVR4,#100D;
D2:
DJNZR4,D2;
DJNZR3,D1;
RET;子程序返回
TAB:
DB06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,3FH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH,0BFH;数码管段选码数表
END;程序结束
七、程序仿真
将以上程序清单导入先前做好的Proteus仿真电路,汇编之后,按
键开始进行仿真。
仿真结果如下:
仿真结果描述:
按“开始”键,秒表开始计时;按“暂停”键,秒表暂停计时;再按“开始”键,秒表继续计时;按“清零”键,秒表清零。
八、心得体会
虽然秒表是一个非常简单的功能,但要在单片机中使用汇编语言来实现这个功能,仍然花了我不少心思。
首先是计时的问题,由于单片机计时器最大只能计时65.5ms,因此要实现毫秒位的变化,我采用了软件计时的方法,单片机只需计时10ms,然后用软件重复10次,即可达到计时100ms的目的。
显示方面,为了使编程简单,我使用了静态显示。
不过这使得占用I/O口线过多,而且连线复杂繁琐,为实物的制作带来了不便。
在以后的学习和应用中我会努力加深动态扫描显示的理解,争取熟练运用。
根据书本知识,我们一开始只给P0口加上了上拉电阻,但是实物做成后我们发现P1和P2口得输出显示非常暗,初步确定是驱动能力不足的问题后,我们给二者也加上了上拉电阻,结果使得显示正常了。
由此我们了解到,实践才是检验真理的唯一标准,有时候书本上的知识需要经过实践的改进,才能运用到实际中。
此次课程设计巩固了我的基础知识,提高了我的应用水平,锻炼了我的动手能力,使我受益匪浅。
然而,在吸取经验的同时,我也吃了不少教训。
在编程、仿真、焊接方面都走了不少弯路。
但是,学则要有所收获,经过此次的锻炼,我在很多方面都已经有所提高,知识也掌握得更加扎实了。
在今后的学习和实践中,我将继续努力钻研,提高自己,争取在学术和记忆上获得更大的进步。
九、致谢
本设计是在李芳老师的悉心指导下完成的,李老师渊博的知识,严谨的治学态度,一丝不苟的工作作风,平易近人的性格都是我学习的楷模。
在论文的研究及整理期间,李老师给了我很大的支持和鼓励,才使得论文得以顺利的完成,在此谨向导师表示忠心的感谢和崇高的敬意。
同时还要感谢同学们,他们也给了我很大的支持和帮助。
十、参考文献
1)《微控制器与接口技术》.虞沧.电子工业出版社.2012.10
2)李朝青.单片机原理及接口技术[M].北京:
北京航空航天大学出版社.2005.10
3)夏继强.单片机实验北京:
北京航空航天大学出版社.2001.
4)孙德辉,郑士富.微型计算机控制系统.北京:
冶金工业出版社.2002
5)肖洪兵.跟我学用单片机.北京:
北京航空航天大学出版社.2002.8
6)陈汝全.实用微机与单片机控制技术.电子科技大学出版社.1995.7
7)王涌.单片机与嵌入式系统应用[J],2002(3):
58-61
8)罗亚非.凌阳16位单片机应用基础[M].北京:
北京航空航天大学出版社.2003.5
9)李庆.KeilC51使用详解V3.0[M].北京:
北京理工大学出版
10)李华.MCS-51系列单片机实用接口技术.北京航空航天大学出版社.1993,162-229
11)温钢云,黄道平.计算机控制技术.广州:
华南理工大学出版社.2002
12)肖洪兵.单片机应用技术.自编教材
13)孙德辉,郑士富.微型计算机控制系统.北京:
冶金工业出版社.2002
14)韩来吉.用89C51实现急救车优先的交通灯控制系统[J]
15)陈志强,芮延年,城市路口交通灯多级智能控制方法的研究J.2007
16)李广弟.单片机基础.北京:
北京航空航天大学出版社.2001,56
17)马忠梅等.单片机的C语言应用程序设计.北京航空航天出版社.1999
18)刘瑞新,单片机原理及应用教程,北京机械工业出版社,2003
19)李传军,单片机原理及应用,河南科技出版社,2006
20)饶庆,89C51单片机课程设计实训教材,北京人民邮电出版社,2003
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:
日期:
年月日
导师签名:
日期:
年月日
独创声明
本人郑重声明:
所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。
尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。
对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。
本声明的法律后果由本人承担。
作者签名:
二〇一〇年九月二十日
毕业设计(论文)使用授权声明
本人完全了解**学院关于收集、保存、使用毕业设计(论文)的规定。
本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。
(保密论文在解密后遵守此规定)
作者签名:
二〇一〇年九月二十日
基本要求:
写毕业论文主要目的是培养学生综合运用所学知识和技能,理论联系实际,独立分析,解决实际问题的能力,使学生得到从事本专业工作和进行相关的基本训练。
毕业论文应反映出作者能够准确地掌握所学的专业基础知识,基本学会综合运用所学知识进行科学研究的方法,对所研究的题目有一定的心得体会,论文题目的范围不宜过宽,一般选择本学科某一重要问题的一个侧面。
毕业论文的基本教学要求是:
1、培养学生综合运用、巩固与扩展所学的基础理论和专业知识,培养学生独立分析、解决实际问题能力、培养学生处理数据和信息的能力。
2、培养学生正确的理论联系实际的工作作风,严肃认真的科学态度。
3、培养学生进行社会调查研究;文献资料收集、阅读和整理、使用;提出论点、综合论证、总结写作等基本技能。
毕业论文是毕业生总结性的独立作业,是学生运用在校学习的基本知识和基础理论,去分析、解决一两个实际问题的实践锻炼过程,也是学生在校学习期间学习成果的综合性总结,是整个教学活动中不可缺少的重要环节。
撰写毕业论文对于培养学生初步的科学研究能力,提高其综合运用所学知识分析问题、解决问题能力有着重要意义。
毕业论文在进行编写的过程中,需要经过开题报告、论文编写、论文上交评定、论文答辩以及论文评分五个过程,其中开题报告是论文进行的最重要的一个过程,也是论文能否进行的一个重要指标。
撰写意义:
1.撰写毕业论文是检验学生在校学习成果的重要措施,也是提高教学质量的重要环节。
大学生在毕