基于单片机的数字秒表设计_第1页
基于单片机的数字秒表设计_第2页
基于单片机的数字秒表设计_第3页
基于单片机的数字秒表设计_第4页
基于单片机的数字秒表设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理及系统课程设计报告单片机原理及系统课程设计评语:考勤(10)守纪(10)过程(40)设计报告(30)答辩(10)总成绩(100)专业:自动控制班级:控1001班姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2013年3月7日摘要近年来随着科技的飞速发展,单片机的应用正在不断的走向人类的日常生活。数字电子秒表就是其中的一个实例,它具有显示直观、读取方便、精度高等优点在计时中广泛使用。本次设计用单片机组成数字电子秒表,力求结构简单、精度高为目标,其硬件电路主要有主控制器、计时与显示电路和回零、启动和停表电路等。主控制器采用单片机AT89C51,配合相应的电路和软件程序,实现秒表的计时、暂停、复位功能,其中显示电路采用共阴极LED数码管显示计时时间。关键词:AT89S5;数字秒表;LED数码管显示AbstractWiththerapiddevelopmentofscienceandtechnologyinrecentyears,theapplicationofSCMiscontinuedtogotothedailylifeofhumanbeings.Digitalelectronicstopwatchisoneofthoseinstances,ithasanintuitivedisplay,easytoread,thewidespreaduseofhighprecisiontiming.Thedesignwithsinglechipdigitalelectronicstopwatch,andstrivesimplestructure,highprecisionforthetargethardwarecircuitmaincontroller,timinganddisplaycircuitandbacktozero,startandstopwatchcircuit.MaincontrollerusessinglechipmicrocomputerAT89C51withthecorrespondingcircuitandsoftwareprogram,stopwatchtiming,pause,resetfunction,whichdisplaycircuitcommoncathodeLEDdigitaldisplaycountingtime.Keyword:AT89S51digitalstopwatchof;LEDdigitaltubedisplay基于单片机的数字秒表设计1引言设计中包括硬件电路的设计和系统程序的设计。其硬件电路主要有主控制器显示电路和启动、暂停、回零电路等。主控制器采用单片机AT89C51显示电路采用共阴极LED数码管显示计时时间设计一个秒表,具有计时功能,按键有启动计时、数据清零、停止、时间显示。2设计方案及原理数字电子秒表具有显示直观、读取方便、精度高等优点,在计时中广泛使用。本系统采用C51系列单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合硬件电路如电源电路晶振电路、复位电路、显示电路以及一些按键电路等来设计计时器,将软、硬件有机地结合起来。其中软件系统采用汇编语言编写程序,硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。其中显示电路采用3个LED数码管显示时间,计时范围设置为0~99.9秒,即精确到0.1秒,用按控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计时;按“暂停”按键,系统暂停计时;再按“开始”键,系统继续计时;数码管显示当前计时值;按“复位”按键,系统清零。设计原理图如下:图1设计原理图3硬件设计本实验利用单片机的定时器/计数器定时和计数的原理,通过采用Proteus仿真软件来模拟实现。模拟AT89C51单片机、LED数码管以及控件来控制秒表的计数以及计时的开启、暂停、继续、与复位。其中有三个数码管来显示数据,两个数码管显示秒(两位),另一个数码管显示十分之一秒,十分之一秒的数码管计数从0~9,满十进一后显示秒得数码管的个位加一,并且十分之一秒显示清零重新从零计数。同理当个位满十进一后个位也清零重新计数,当计时超过范围(即超过99.9秒)后,所有数码管全部清零重新计数。3.1晶体振荡和复位电路89C51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别为反相振荡放大器的输入及内部时钟工作电路的输入和来自反相振荡器的输出,该反相放大器可以配置为片内振荡器。这里选用的晶振频率为12MHZ,来构成本次设计的晶振电路,C2、C3起稳定振荡频率、快速起振的作用。复位电路采用上电复位方式,当程序出现错误时,可以随时使电路复位。电路如下:图2晶振复位电路3.3显示电路采用3个LED数码管,LED是七段显示器,内部有7个条形发光二极管和1个小圆点发光二极管,根据各管的亮暗组成字符。在用数码管显示时,有静态和动态两种选择,这里采用LED动态显示,用P0、P1、P2口驱动显示,由于P0口没有上拉电阻,因此P0口需要外接上拉电阻才能输出高电平,这里使用8个4.7k的电阻作为上拉电阻。显示电路如下:图3显示电路引脚控制: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分别接开始、暂停、归零按键。3.4按键电路当按键被按下时,相应的引脚被拉低,经扫描后,获得键值,并执行键功能程序,因此按下不同的按键,将执行不同的功能程序。P3.2为开始键,P3.3为暂停键,P3.4为复位键。电路图如下:图4按钮电路4软件设计设计思想如下:本设计采用了模块化设计,系统程序主要由秒表的初始化、按键检测以、显示程序开始计时、暂停计时、秒表清零以及延时程序等。初始化方式为将I/O口P3全写“1”,为秒表的控制输入做准备,并将数码管全部置零,将定时器0置于工作方式1,开总中断允许和定时器0中断允许,来完成秒表的初始化;按键检测通过检测计时键、暂停键、归零键是否出现低电平,并调用延时子程序,完成延时后,若发现低电平消失,则说明该键实际上未被按下,此时转回按键检测处继续检测,若发现仍然是低电平则说明此键被按下。在程序编写语言选用方面,采用了汇编语言编写,大大的方便了软件的调试与优化,也方便了他人的阅读。4.1程序流程程序流程图如下:图5主流程图4.2程序设计程序的各个组成模块及工作流程描述:(1)秒表的初始化:先进行秒表的初始化,首先将I/O口P3全写一,为秒表的控制输入做好准备,其次将数码管全部置零,使其处于秒表计时的初始状态,然后将工作寄存器R0~R2以及30H初始化,留待后面的计时程序备用,再将定时器0置于工作方式1,并为其装入计时预置数D8FE,即将定时器定为每10ms溢出,最后开总中断允许和定时器0中断允许。初始化完成后,进入按键扫描程序。(2)开始计时:若确认“开始计时”键被按下,则跳转至程序标号“RUN”处,将定时器0计时允许控制位TR0置位,则定时器开始运行。此动作完成后,返回按键检测程序,等待操作者的下一次指令。(3)暂停计时:若确认“暂停计时”键被按下,则跳转至程序标号“PAUSE”处,将定时器0计时允许控制位TR0置零,则定时器暂停运行。此动作完成后,返回按键检测程序,等待操作者的下一次指令。(4)秒表清零:若确认“秒表清零”键被按下,则跳转至程序标号“STOP”处,将TR0置零,关闭定时器0运行。并且将数码管、工作寄存器、定时器0预置数全部重置,使其处于秒表计时的初始状态。此动作完成后,返回按键检测程序,等待操作者的下一次指令。(5)延时程序:用于按键延时防抖,延时10ms。5仿真实验及结果在proteus环境下仿真结果如下图:图6仿真结果图 仿真结果描述:按“开始”键,秒表开始计时;按“暂停”键,秒表暂停计时;再按“开始”键,秒表继续计时;按“清零”键,秒表清零。6心得体会虽然秒表是一个非常简单的功能,但要在单片机中使用汇编语言来实现这个功能,仍然花了我不少心思。首先是计时的问题,由于单片机计时器最大只能计时65.5ms,因此要实现毫秒位的变化,我采用了软件计时的方法,单片机只需计时10ms,然后用软件重复10次,即可达到计时100ms的目的。显示方面,为了使编程简单,我使用了静态显示。在以后的学习和应用中我会努力加深动态扫描显示的理解,争取熟练运用。此次课程设计巩固了我的基础知识,提高了我的应用水平,锻炼了我的动手能力,使我受益匪浅。然而,在吸取经验的同时,我也吃了不少教训。在编程、仿真方面都走了不少弯路。但是,学则要有所收获,经过此次的锻炼,我在很多方面都已经有所提高,知识也掌握得更加扎实了。在今后的学习和实践中,我将继续努力钻研,提高自己,争取在学术和记忆上获得更大的进步。最后感谢费克玲老师的悉心指导。参考文献【1】王思明,张金敏,张鑫,苟军年,杨乔礼.2012.单片机原理及应用系统设计.北京:科学出版社【2】张友德.1992.单片微型机原理、应用与实验.上海:复旦大学出版社【3】何立民.1990.单片机应用系统设计.北京:北京航空航天大学出版社【4】薛俊义.1997.单片机微型计算机及其应用.北京:西安交通大学出版社【5】林建英,吴振宇.2010.电子系统设计基础.北京:电子工业出版社【6】夏路易.2008.单片机技术基础与实.北京:电子工业出版社【7】全国大学生电子设计竞赛组委会.2004.全国大学生电子设计竞赛获奖作品汇编.北京:北京理工大学出版社附录程序清单如下:ORG0000H;程序开始AJMPSTART;跳转到主程序STARTORG000BH;定时器0中断的地址入口AJMPTIME0;定时器0溢出,跳转到中断程序TIME0START:;主程序MOVP3,#0FFH;输入端口P3全写1MOVP0,#3FH;MOVP1,#3FH;MOVP2,#0BFH;数码管初始化MOV30H,#00H;MOVR0,#00H;MOVR1,#0AH;MOVR2,#00H;工作寄存器初始化MOVTMOD,#01H;定时器0工作于方式1MOVTH0,#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;到了,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论