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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于89c51的LED数字秒表设计文档格式.docx

1、指导教师臧海河主要内容(参数)利用89C51设计一个数字秒表,使其实现以下功能:1具有计时功能;2可通过按键设置,启动计时;3. 可以实现数据清零设置;4设置按键能够停止计时;5能够实现时间显示。任务要求(进度)第1-2天:熟悉课程设计任务及要求,查阅技术资料,确定设计方案。第3-4天:按照确定的方案设计单元电路。要求画出单元电路图,元件及元件参数选择要有依据,各单元电路的设计要有详细论述。第5-6天:软件设计,编写程序。第7-8天:实验室调试。第9-10天:撰写课程设计报告。要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确,篇幅合理。主要参考资料1 张迎新单片微型计算机原理、应

2、用及接口技术(第2版)M北京:国防工业出版社,20042伟福LAB6000系列单片机仿真实验系统使用说明书3 阎石数字电路技术基础(第五版)北京:高等教育出版社,20064 黄艳玲,计算机接口技术试验指导书 ,重庆大学出版社。审查意见系(教研室)主任签字: 年 月 日 目 录1概述 31.1研究背景 31.2设计思想及基本功能 42总体方案设计 42.1方案选取 42.2系统框图 52.3总体方案设计 53硬件电路设计 53.1 89c51单片机的引脚及模块说明 53.2晶体振荡电路 63.3复位电路 73.4按键电路 73.5显示电路 83.6引脚控制说明 83.7绘制电路原理图 94系统软

3、件设计 94.1程序流程图 94.2秒表的初始化 104.3按键扫描检测程序 114.4开始计时 114.5计时程序 114.6显示程序 114.7暂停计时 114.8秒表清零 124.9延时程序 125总结 14参考文献 14附录一 系统总原理图 15附录二 主程序 151概述1.1研究背景自20世纪末期以来,电子技术的发展日新月异。电子技术在各个领域的运用也越来越广泛,从而有力地推动了社会生产力的发展以及社会信息化程度的提高。其中,秒表计时器是工业自动化控制、国防、实验室及科研单位理想的计时仪器,它广泛应用于各种继电器、电磁开关,控制器、延时器、定时器等的时间测试。在各种现代体育竞技比赛中

4、,秒表成为必不可少的工具之一。而随着运动员的水平的不断提高,他们之间的差距也在不断缩小。因此,在某些运动中对时间精度的要求就会越来越高,也就需要高精度的秒表来记录成绩,从而保障比赛的公平性。在历史上,钟表大致有三个演变阶段。首先是大时钟演变到小时钟、其次小时钟过渡到袋表、再之袋表发展到腕表。再这三个阶段,每一次的改变都是和当时的技术水平和创造发明水平是息息相关的。本文则主要阐述了基于单片机89c51的LED数字秒表设计。使其能够实现计时功能,按键有启动计时、数据清零、停止、时间显示的功能。其中在实验过程中我采用了Proteus软件进行仿真。1.2设计思想及基本功能本实验利用单片机的定时器/计数

5、器定时和计数的原理,通过采用Proteus仿真软件来模拟实现。模拟AT89C51单片机、LED数码管以及控件来控制秒表的计数以及计时的开启、暂停、继续、与复位。其中有三个数码管来显示数据,两个数码管显示秒(两位),另一个数码管显示十分之一秒,十分之一秒的数码管计数从09,满十进一后显示秒得数码管的个位加一,并且十分之一秒显示清零重新从零计数。同理当个位满十进一后个位也清零重新计数 ,当计时超过范围(即超过99.9秒)后,所有数码管则会全部清零重新计数。采用按键控制秒表的“开始”、“暂停”、“复位”键,按下“开始”按键,则开始计时;按下“暂停”按键,则暂停计时;再次按下“开始”键,则继续计时;数

6、码管显示当前计时值;按下“复位”键,则系统清零。2总体方案设计2.1方案选取 在这次课程设计中,主程序主要是通过AT89C51和74LS373锁存器来控制的,从而为所用的中断程序的地址以及一些必要的标志提供赋值。其中在数字秒表的设计中运用了2个中断号和2个中断程序。AT89C51的TO端口在工作方式1下由下降沿触发,然后产生方波脉冲,从而作为AT89C51的中断信号。2.2系统框图 图12.3总体方案设计这次实验所选用的实验器材主要包括开关计时以及显示,其中开关计时是与中断T0相连的,它是中断T0的申请中断信号,也就是设计要求中的第一个人的计时,来负责秒表的计时;而开关显示是与AT89C51上

7、的P2.6口相连,即设计记下时间,当记录完成后,按下显示按钮,就会从最后一个人的顺序倒起来显示他们工作所用的时间(注意:先来后显示)。本次设计的核心思想是:在运行中断程序的时候,首先判断中断信号,然后再根据中断信号来产生脉冲来确定是执行中断服务程序。3硬件电路设计3.1 89c51单片机的引脚及模块说明89C51作为89系列单片机中的典型代表,其基本模块主要是由CPU、ROM、RAM、I/O口、中断系统、定时/计数器、串行口、振荡器、总线控制等几个部分组成。1CPU:89C51是8位CPU,而且89C51内部还包含有1个位处理器2R0M:包含4KB的片内程序存储器,用于存放开发以及调试完成的程

8、序3RAM:256B的片内数据存储器,虽然容量小,但作用很大。4I/O口:即P0-P3口,共4个口包含32条双向且可位寻址的I/O口线。5中断系统:总共有5个中断源,其中3个内部中断和2个外部中断。6定时/计数器:即2个16位的可编程定时/计数器。7串行口:全双工通用异步接收器/发送器8振荡器:由外接晶振以及内部时钟振荡器来为CPU提供时钟信号。9总线控制:对外提供若干条控制总线,以便于系统扩展。另附上引脚图:如图2图23.2晶体振荡电路89C51单片机内部的振荡电路是一个增益反相放大器,其中引线XYAL1和XTAL2分别为反相放大器的输入和内部时钟电路输入和来自反相放大器的输出,该反相放大器

9、可以配置为片内振荡器。然而单片机内部虽然有震荡电路,但要形成时钟,外部还需要附加电路。其中石晶振荡以及陶瓷振荡均可采用,有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽没有任何要求,但是必须要保证脉冲的高低电平要求的宽度。本次选用的是89c51单片机12MHZ的内部振荡方式,电路图如下图3所示。其中C1、C2主要起稳定振荡频率以及快速起振的作用。图33.3复位电路单片机系统主要采用上电自动复位和手动按键复位两种方式实现系统的复位操作。其中上电复位要求接通电源后,能够自动实现复位操作。手动复位则要求在接通电源后,如果在单片机运行期间发生死机,可以用按钮开关操作使单片机复位。

10、本次设计采用上电复位,再使单片机复位时还能使单片机的外设同时复位,而且当程序出现错误时,可以随时使电路复位。电路图如下图4所示:图43.4按键电路当按下按键后,对应的引脚就会被拉低,再经过扫描后,则会获得键值,然后执行键功能程序。当按下不同的按键时,单片机就会执行不同的功能程序。电路图如下图5所示:图53.5显示电路本次设计采用3个LED数码管。一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)ag,另一个为小数点发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。在用数码管显示时,有静态和动态两种选择,这次设计采用了LED动态显示,并

11、用P0、P1、 P2口驱动显示。为了保护各段LED不被损坏,还需外加限流电阻。但由于P0口没有上拉电阻,因此在P0口还需要外接上拉电阻才能输出高电平,这里我们会使用8个4.7k的电阻作为上拉电阻。电路图如下图6所示: 图63.6引脚控制说明P0口:P0.07、P1口:P1.07、P2口 P2.07对应三个数码管的a、b、c、d、e、f、g段和小数点位;P0用来控制数码管十位的显示,P2用来控制数码管个位的显示,P1则控制小数点后一位的显示,P3.2、P3.3、P3.4分别接按键用来实现控制。3.7绘制电路原理图利用Proteus软件画出主电路图如下图7: 图74系统软件设计4.1程序流程图本次

12、系统的软件部分主要包括:主函数、初始化函数、显示函数、定时器0中断服务函数、外部中断0中断服务函数、拆数函数等。工作流程包括:秒表的初始化、按键检测程序、开始计时、计时程序、显示程序、暂停计时、秒表清零、延时程序等8个部分。系统程序流程图如下图8所示: 图84.2秒表的初始化首先根据程序流程图进行秒表的初始化。第一步:将I/O口P3全写一,为秒表的控制输入做好准备;第二步:将数码管全部置零,使它处于秒表计时的初始状态;第三步:将工作寄存器R0至R2以及30H初始化,留待后面的计时程序备用;第四步:将定时器0置于工作方式1,并为其装入计时预置数D8FE(因为程序运行过程中占用的时间会导致一定误差

13、,此为经实物测试之后的修正值),即将定时器定为每10ms溢出;第五步:开总中断允许和定时器0中断允许。等初始化完成后,就开始进入之后的按键扫描程序。4.3按键扫描检测程序轮流检测开始计时(P3.2)、暂停计时(P3.3)、秒表清零(P3.4)三个按键。若发现有一个按键出现低电平(可能被按下),则延时10ms(调用延时子程序DELAY),延时完成后,若发现低电平消失,则说明该按键实际上未被按下,此时转回按键检测处继续检测;若发现仍然是低电平,则说明此键确实被按下了,此时就跳转至相应的程序标号处,执行相应的功能。4.4开始计时若确认“开始计时”键被按下,则跳转至程序标号“RUN”处,将定时器0计时

14、允许控制位TR0置位,则定时器开始运行。此动作完成后,返回按键检测程序,等待操作者的下一次指令。4.5计时程序定时器0计时至10ms,溢出,引发中断,程序跳转至定时器0中断服务程序入口000BH处执行。程序跳转至中断服务程序TIME0。由于秒表的最小计时单位是0.1s,即100ms,因此需加入软件计时,使定时器0溢出10次之后才改变数码管的显示状态。因此每来一次中断就将30H中的数加1,若30H中的数没有到10,则给定时器0重新装入预置数,之后中断返回并继续等待中断;到10了,才进入显示程序,改变数码管的显示状态,执行完毕之后中断返回并继续等待中断。4.6显示程序将数码管的段选码放在数表TAB

15、中。每次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,向十秒

16、位进位,之后,继续照常向秒位送数。完成后,弹出ACC和PSW,子程序返回。十秒位进位子程序与秒位进位子程序相似,只是没有向下一位进位的功能。4.7暂停计时若确认“暂停计时”键被按下,则跳转至程序标号“PAUSE”处,将定时器0计时允许控制位TR0置零,则定时器暂停运行。4.8秒表清零若确认“秒表清零”键被按下,则跳转至程序标号“STOP”处,将TR0置零,关闭定时器0运行。并且将数码管、工作寄存器、定时器0预置数全部重置,使其处于秒表计时的初始状态。4.9延时程序主要用于按键延时防抖,并延时10ms。经仿真调试后,程序正常运行,截图如下图9:图9机器码截图如下图10: 图105总结通过这次的课

17、程设计,使我加深了对89C51 的功能以及它们的工作方式的了解,对电脑有了个更新的认识,对中断的工作方式,电脑芯片内部的数据有了较清楚的认识。这次课程设计是基于芯片上的编程,由于对相应芯片的各个端口的功能不熟悉,一开始并不知从何着手,但随着对各个芯片端口的逐步了解,后面程序的编写也变得容易多了。这次设计总的感想是:由于是基于芯片上编程,所以编写程序之前必须对各个芯片有所了解,如芯片的各个端口的功能等。然后选择要实现此程序功能的芯片以及怎样接线,调试程序、修改错误之处。根据书本知识,我们一开始只给P0口加上了上拉电阻,但是实物做成后我们发现P1和P2口得输出显示非常暗,初步确定是驱动能力不足的问

18、题后,我们给二者也加上了上拉电阻,结果使得显示正常了。由此我们了解到,实践才是检验真理的唯一标准,有时候书本上的知识需要经过实践的改进,才能运用到实际中。此次课程设计巩固了我的基础知识,提高了我的应用水平,锻炼了我的动手能力,使我受益匪浅。然而,在吸取经验的同时,我也吃了不少教训。在编程、仿真方面都走了不少弯路。但是,学则要有所收获,经过此次的锻炼,我在很多方面都已经有所提高,知识也掌握得更加扎实了。 在今后的学习和实践中,我将继续努力钻研,提高自己,争取在学术和记忆上获得更大的进步。参考文献1 杨家成单片机原理与应用及C51程序设计北京:清华大学出版社,20072 夏路易 石宗义Protel

19、 99se电路原理图与电路板设计教程北京:北京希望电子出版社,20043 朱玉玺计算机控制技术北京:电子工业出版社,20104 邓兴成单片机原理与实践指导北京:机械工业出版社,20105 阎石.数字电子技术基础.北京:高等教育出版社,2009.附录一 系统总原理图附录二 主程序ORG 0000H ;程序开始AJMP START ;跳转至主程序START ORG 000BH ;定时器0中断的地址入口AJMP TIME0 ;定时器0溢出,跳转到中断程序TIME0START: ;主程序MOV P3,#0FFH ;输入端口P3全部写为1MOV P0,#3FH ;MOV P1,#3FH ;MOV P2,

20、#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,L2 ;AJMP P

21、AUSE ;确认暂停键被按下,暂停计时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单元中的值是否到10MOV DPTR,#TAB ;若30H中的值到10了,顺序执行MOV A,R0 ;INC R0 ;CJNE R0,#0AH,GET ;R0中的值是否到10LCALL SECO

22、ND ;若已到10,则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中的值是否到20LCALL SECOND1 ;若到,则R1重置,调用进位子程序SECOND1,向十秒位进位GET1:若没到,跳过进位子程序MOV P2,A ;查表并向数码管秒位送数P

23、OP 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 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 ;程序结束

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2