ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:456.08KB ,
资源ID:20632596      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20632596.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于89C51单片机的秒表课程设计Word文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于89C51单片机的秒表课程设计Word文档格式.docx

1、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的引脚如下图:89C51单片机引脚图 4.1.2晶体振荡电路89C51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1

2、和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.0P0.7、 P2.0P2.7、 P1.0P1.7对应三个数码管的a、b、c、d、e、f、g段和小数点位;P0控制数码管十位的显示,P2控制数码管个位的现实,P1控制小数点后一问的显示,P3.2、P3.3、P3.4分别接五、电路原理图用Proteus软件画出主

4、电路图如下:六、程序流程图及程序设计6.1程序流程图6.2程序设计程序的各个组成模块及工作流程描述:(1)秒表的初始化根据程序流程图,先进行秒表的初始化,即:将I/O口P3全写一,为秒表的控制输入做好准备;将数码管全部置零,使其处于秒表计时的初始状态;将工作寄存器R0R2以及30H初始化,留待后面的计时程序备用;将定时器0置于工作方式1,并为其装入计时预置数D8FE(因为程序运行过程中占用的时间会导致一定误差,此为经实物测试之后的修正值),即将定时器定为每10ms溢出;开总中断允许和定时器0中断允许。初始化完成后,即进入之后的按键扫描程序。(2)按键检测程序轮流检测开始计时(P3.2)、暂停计

5、时(P3.3)、秒表清零(P3.4)三个按键。若发现有一个按键出现低电平(可能被按下),则延时10ms(调用延时子程序DELAY),延时完成后,若发现低电平消失,则说明该按键实际上未被按下,此时转回按键检测处继续检测;若发现仍然是低电平,则说明此键确实被按下了,此时就跳转至相应的程序标号处,执行相应的功能。(3)开始计时若确认“开始计时”键被按下,则跳转至程序标号“RUN”处,将定时器0计时允许控制位TR0置位,则定时器开始运行。此动作完成后,返回按键检测程序,等待操作者的下一次指令。(4)计时程序定时器0计时至10ms,溢出,引发中断,程序跳转至定时器0中断服务程序入口000BH处执行。程序

6、跳转至中断服务程序TIME0。由于秒表的最小计时单位是0.1s,即100ms,因此需加入软件计时,使定时器0溢出10次之后才改变数码管的显示状态。因此每来一次中断就将30H中的数加1,若30H中的数没有到10,则给定时器0重新装入预置数,之后中断返回并继续等待中断;到10了,才进入显示程序,改变数码管的显示状态,执行完毕之后中断返回并继续等待中断。(5)显示程序将数码管的段选码放在数表TAB中。每次100ms计时完成后,将R0中的值(初值为0)送入A,然后自加1。.若R0中的值没到10,则使用累加器A查表,并将查得的数码管段选码送入毫秒位数码管。之后将30H中的数置零,中断返回。若发现R0中的

7、数到10了,则将R0置零,并转入秒位进位子程序SECOND,向秒位进位,之后,继续照常向毫秒位送数。在秒位进位子程序SECOND中,由于要用到累加器A,因此先将其推入堆栈保护。将R1中的值(初值为10)送入A,然后自加1。.若R1中的值没到20,则使用累加器A查表,并将查得的数码管段选码送入秒位数码管。若发现R1中的数到20了,则将R1重置为10,并转入十秒位进位子程序SECOND1,向十秒位进位,之后,继续照常向秒位送数。完成后,弹出ACC和PSW,子程序返回。十秒位进位子程序与秒位进位子程序相似,只是没有向下一位进位的功能。(6)暂停计时若确认“暂停计时”键被按下,则跳转至程序标号“PAU

8、SE”处,将定时器0计时允许控制位TR0置零,则定时器暂停运行。(7)秒表清零若确认“秒表清零”键被按下,则跳转至程序标号“STOP”处,将TR0置零,关闭定时器0运行。并且将数码管、工作寄存器、定时器0预置数全部重置,使其处于秒表计时的初始状态。(8)延时程序用于按键延时防抖,延时10ms。程序清单如下:ORG 0000H ;程序开始AJMP START ;跳转到主程序START ORG 000BH ;定时器0中断的地址入口AJMP TIME0 ;定时器0溢出,跳转到中断程序TIME0START: ;主程序MOV P3,#0FFH ;输入端口P3全写1MOV P0,#3FH ;MOV P1,

9、#3FH ;MOV P2,#0BFH ;数码管初始化MOV 30H,#00H ;MOV R0,#00H ;MOV R1,#0AH ;MOV R2,#00H ;工作寄存器初始化MOV TMOD,#01H ;定时器0工作于方式1MOV TH0,#0D8H ;MOV TL0,#0FEH ;定时器0预置数(D8FEH=55550D)SETB EA ;开总中断允许SETB ET0 ;开定时器0中断允许READ:读键程序L1:JB P3.2,L2 ;LCALL DELAY ;按键延时防抖JB P3.2,L1 ;AJMP RUN ;确认计时键被按下,开始/继续计时L2:JB P3.3,L3 ;JB P3.3

10、,L2 ;AJMP PAUSE ;确认暂停键被按下,暂停计时L3:JB P3.4,L1 ;JB P3.4,L3 ;AJMP STOP ;确认清零键被按下,秒表重置RUN:计时键按下,跳转至此SETB TR0 ;定时器0开始/继续运行AJMP READ ;PAUSE:暂停键按下,跳转至此CLR TR0 ;TIME0:定时器0溢出,中断,跳转至此INC 30H ;MOV A,30H ;CJNE A,#0AH,TIME1 ;30H单元中的值到10了吗?(计时到10毫秒了吗,也就是说,该向毫秒位送数了吗?)MOV DPTR,#TAB ;30H中的值到10了,顺序执行MOV A,R0 ;INC R0 ;

11、CJNE R0,#0AH,GET ;R0中的值到10了吗?(该向秒位进位了吗?LCALL SECOND ;到了,R0清零,调用进位子程序SECOND,向秒位进位GET:没到,跳过进位子程序MOVC A,A+DPTR ;MOV P1,A ;查表并向数码管毫秒位送数重置30H单元TIME1:给定时器0重新预置数RETI ;中断返回SECOND:秒位进位子程序PUSH ACC ;PUSH PSW ;将ACC和PSW推入堆栈保护MOV A,R1 ;INC R1 ;CJNE R1,#14H,GET1 ;R1中的值到20了吗,也就是说,该向十秒位进位了吗?LCALL SECOND1 ;到了。R1重置,调用

12、进位子程序SECOND1,向十秒位进位GET1:MOV P2,A ;查表并向数码管秒位送数POP PSW ;POP ACC ;PSW,ACC出栈RET ;子程序返回SECOND1:十秒位进位子程序MOV A,R2 ;INC R2 ;CJNE R2,#0AH,GET2 ;R2中的值到10了吗,也就是说,该将此位归零了吗?到了,R2清零GET2:没到,跳过清零程序MOV P0,A ;查表并向数码管十秒位送数PSW,ACC出栈STOP:清零键按下,跳转至此数码管清零计时器0停止计时定时器0预置数DELAY:延时10ms子程序MOV R3,#50D ;D1:MOV R4,#100D ;D2:DJNZ

13、R4,D2 ;DJNZ R3,D1 ;TAB: DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,3FH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH,0BFH ;数码管段选码数表END ;程序结束七、程序仿真 将以上程序清单导入先前做好的Proteus仿真电路,汇编之后,按键开始进行仿真。 仿真结果如下:仿真结果描述:按“开始”键,秒表开始计时;按“暂停”键,秒表暂停计时;再按“开始”键,秒表继续计时;按“清零”键,秒表清零。八、心得体会虽然秒表是一个非常简单的功能,但要在单片机中使用汇编语言来实现这个功能,仍然花了我不少心

14、思。首先是计时的问题,由于单片机计时器最大只能计时65.5ms,因此要实现毫秒位的变化,我采用了软件计时的方法,单片机只需计时10ms,然后用软件重复10次,即可达到计时100ms的目的。显示方面,为了使编程简单,我使用了静态显示。不过这使得占用I/O口线过多,而且连线复杂繁琐,为实物的制作带来了不便。在以后的学习和应用中我会努力加深动态扫描显示的理解,争取熟练运用。根据书本知识,我们一开始只给P0口加上了上拉电阻,但是实物做成后我们发现P1和P2口得输出显示非常暗,初步确定是驱动能力不足的问题后,我们给二者也加上了上拉电阻,结果使得显示正常了。由此我们了解到,实践才是检验真理的唯一标准,有时

15、候书本上的知识需要经过实践的改进,才能运用到实际中。此次课程设计巩固了我的基础知识,提高了我的应用水平,锻炼了我的动手能力,使我受益匪浅。然而,在吸取经验的同时,我也吃了不少教训。在编程、仿真、焊接方面都走了不少弯路。但是,学则要有所收获,经过此次的锻炼,我在很多方面都已经有所提高,知识也掌握得更加扎实了。在今后的学习和实践中,我将继续努力钻研,提高自己,争取在学术和记忆上获得更大的进步。九、致谢本设计是在XX老师的悉心指导下完成的,老师渊博的知识,严谨的治学态度,一丝不苟的工作作风,平易近人的性格都是我学习的楷模。在论文的研究及整理期间,导师给了我很大的支持和鼓励,才使得论文得以顺利的完成,

16、在此谨向导师表示忠心的感谢和崇高的敬意。 同时还要感谢同学们,他们也给了我很大的支持和帮助。十、参考文献1) 微控制器与接口技术.虞沧.电子工业出版社.2012.102) 李朝青. 单片机原理及接口技术M. 北京:北京航空航天大学出版社.2005.103) 夏继强. 单片机实验北京:北京航空航天大学出版社.2001. 4) 孙德辉,郑士富. 微型计算机控制系统. 北京:冶金工业出版社.20025) 肖洪兵. 跟我学用单片机. 北京:北京航空航天大学出版社.2002.86) 陈汝全. 实用微机与单片机控制技术. 电子科技大学出版社.1995.77) 王涌. 单片机与嵌入式系统应用J,2002(3

17、):58-618) 罗亚非. 凌阳16位单片机应用基础M. 北京:北京航空航天大学出版社.2003.59) 李庆. Keil C51 使用详解 V3.0M. 北京:北京理工大学出版10) 李华. MCS-51系列单片机实用接口技术. 北京航空航天大学出版社.1993,162-22911) 温钢云,黄道平. 计算机控制技术. 广州:华南理工大学出版社.200212) 肖洪兵. 单片机应用技术. 自编教材13) 孙德辉,郑士富. 微型计算机控制系统. 北京:14) 韩来吉.用 89C51实现急救车优先的交通灯控制系统J15) 陈志强,芮延年, 城市路口交通灯多级智能控制方法的研究J.200716) 李广弟. 单片机基础. 北京:北京航空航天大学出版社.2001,5617) 马忠梅等. 单片机的C语言应用程序设计. 北京航空航天出版社.199918) 刘瑞新,单片机原理及应用教程,北京机械工业出版社,200319) 李传军,单片机原理及应用,河南科技出版社,200620) 饶庆, 89C51单片机课程设计实训教材,北京人民邮电出版社,2003

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

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