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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

0到59秒单片机秒表课程设计报告.docx

1、0到59秒单片机秒表课程设计报告单片机课程设计报告设计课题:秒表设计专业班级:10级电子信息科学与技术4班学生姓名:马飞杨悬悬夏婷婷董静静对应学号:080210198080210227080210248080210257指教教师:郭玉设计时间:2012 年6月7日一、课程设计目的和意义和主要功能1、目的意义2、主要功能二、方案设计与论证1、时钟电路2、按钮电路3、显示电路4、单片机5、参数计算三、硬件电路设计1、STC89C52RC单片机的简单介绍2、接口电路3、硬件连线图四、软件设计:数字秒表流程图、数字秒表源程序五、性能分析六、结论和心得附件(源程序)电子秒表设计摘要:本次设计主要是用ST

2、C89C52RC设计一个2位的数码作为“秒表”。主要是利用单片机的定时器/计数器定时和计数原理来设计简单的计时器系统,拥有正确的启动停止、时间调整、清零功能,启动停止清零通过键盘按键控制,并同时可以用数码管显示数字0-59,每秒自动加1,能正确地进行计时。其中软件系统采用汇编语言编写程序,包括显示程序,计数程序,中断,延时程序等,并在keil中调试运行,硬件系统利用单片机开发板能来实现,简单且易于观察,在现实生活中应用广泛,具有现实意义。关键字:单片机定时器启动停止清零时间调整数码管键盘一、 课程设计目的和意义和主要功能1、目的意义1、通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单

3、片机课程的应用进一步的了解。2、 掌握定时器、外部中断的设置和编程原理。3、 通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。2、主要功能显示时间为0-59秒,每1秒自动加1,另外设计一个“启动”键、一个“停止”键和一个“清零”键。能用按钮实现秒表启动、停止、清零功能二、 方案设计与论证1、方案设计本设计要求进行计时并在数码管上显示时间,分为时钟电路、按钮电路、显示电路和单片机四大部分,这些模块中单片机占主控地位。其模块电路如图2-1所示。(1)、时钟电路常用的有内部时钟方式和外部时钟方式,但因为本设计中只需要一片单片机,所以采用内部时钟方式比较简单。时钟电路如图所示,时钟电

4、路的晶振频率越高,系统的时钟频率越高,单片机的运行速度也就越快。晶振频率根据设计需要设为12MHz,又根据谐振性质,电路中的电容C1、C2选择为30pF左右。该电容的的大少会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。(2)、按钮电路主要由S1S2S3三个按键组成,因为开发板自己默认的键盘是矩阵式,而我们的设计中只需要用到三个按键,考虑到按键个数比较少,我们将开发板上的J11跳冒由原来的右边调整到左边,让键盘变成独立式。按钮电路中的“启动”按键由键盘上的S1控制,按钮电路中的“停止”按键由键盘上的S2控制,按钮电路中的“清零”按键由键盘上的S3控制。(3)、具体按键说明按“启动”按键,

5、开始计数,数码管显示从00开始每秒自动加1;按“停止”按键,系统暂停计数,数码管显示当时的计数,并且再次按“启动”键后就会继续计时;按“清零”按键,系统暂停计数,数码管显示00,并且再次按“启动”就会重新计时。3、显示电路所用的数码管有共阴和共阳之分,本此设计使用的数码管是共阴极,数码管位控制有P2口控制。由于电路内部已经有74HC138译码器,译码器的A、B、C赋值07,因此输出端分别是Y0-Y7置“0”,如p2=0,则Y0=0,及选通第一个数码管,所以当我们要显示某一个数码管时,只要将P2口赋相应的值即可。因为秒表只需用两个数码管,我们选用的是第一个和第二个数码管,及分别给P2口送0和1.

6、而数码管显示的数字段码由P0口控制,每次需要显示的数字段码通过查表找到后直接送给P0口即可,如当P0=3F,就会显示数字“0”。4、单片机单片机的程序可用汇编语言也可用C语言,为了提高使用汇编语言的能力,本设计特用了汇编语言了编写程序主程序流程图如下所示,具体程序见附件。主程序流程图见软件设计。5、 参数计算本设计利用定时器T0的计数原理来实现秒表。定时器T0工作于方式1,寄存器TMOD低四位M1M0应取01,设定为软件启动定时器,故GATE取零,因为用定时功能,C/T取0,定时器方式寄存器TMOD的高四位为无关位,一般都取0,所以TMOD的控制字应取为01H。晶振频率为12MHZ,T机=1U

7、S,因为方式1最长的定时时间为65.535MS,达不到1秒的要求,因此采用硬件定时和软件计数相结合的方式来达到1秒定时。取T0的定时时间T定时=50MS,定时器采用中断方式工作,中断20次50MS乘20等于1S,设定寄存器R0为软件计数器,初值为20。秒表的初值存于寄存器R4中,个位数存于20H单元,十位数存于21H单元中。2、方案论证方案一:数字信号处理器(DSP)作为一种可编程专用芯片,是数字信号处理理论实用化过程的重要技术工具,在语音处理、图像处理等技术领域得到了广泛的应用。但对于算法设计人员来讲,利用汇编语言或C语言进行DSP功能开发,具有周期长、效率低的缺点,不利于算法验证和产品的快

8、速开发。需要模数转换;受采样频率的限制,处理频率范围有限。方案二:数字电路具有不稳定,容易出问题,很容易受干扰的特点。方案三:单片机具有价格低廉的可擦写1000次以上的16(字)位指令FLASH技术,不再有报废品产生的优点。高速度、低功耗(A)!具有SLEEP(休眠)功能及CMOS技术,每一指令执行速度可达50ns(20MHZ),而耗电则在1mA2.5mA间(典型功耗,WDT关闭时为100nA)。AVR运用Harvard结构概念(具有预取指令功能),即对程序存储和数据带有不同的存储器和总线。当执行某一指令时,下一指令被预先从程序存储器中取出,这使得指令可以在每一个时钟周期内被执行。超功能精简指

9、令!具有32个通用工作寄存器(相当于8051中的32个累加器,克服了单一累加器数据处理造成的瓶颈现象)及128-512个SRAM,可灵活使用指令运算并可用功能很强的C语言编程,易学、易写、易移植。采用STC89C52RC,片内ROM全用FlashROM,能以3V的超低电压工作;同时也与MCS-51系列单片机内部储存器为8KBROM存储空间,同样具有89C51的功能,且具有在线变成可擦除技术,当对电路进行调试时,由于错误修改或对程序的新功能需要烧入程序是,不需要多芯片多次拔插,所以不会对芯片造成损害,最终采用单片机STC89C52RC作为主控系统。三、硬件设计1、 STC89C52RC单片机的简

10、单介绍STC89C52RC是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器(FPEROM-FlashProgrammableandEraseableReadOnlyMemory)的8位CMOS微控制器,使用高密度、非易失存储技术制造,并且与80C51引脚和指令系统完全兼容。主要性能: 8031CPU 与MCS-51微控制器产品系列兼容 4KB字节快速擦写Flash程序存储器,擦写次数1000次 存储数据保存时间为10年 编程频率3MHZ-24MHZ,编程电流1mA,编程电压Vpp为5V或12V,工作电压5V 1个片内振荡器及时钟电路,静态操作模式工作频率0MHZ-24MHZ 程序

11、存储器具有3级加密保护 128字节内部RAM,128字节特殊功能寄存器区 32条可编程I/O线 2个16位可编程定时器/计数器 中断结构具有6个中断源和2个优先级嵌套中断结构 1个可编程全双工异步串行口 空闲状态维持低功耗和掉电状态保存存储内容 可寻址64K外部RAM和64K外部ROM空间的扩展总线控制电路2、接口电路利用12MHZ晶振的一个机器周期为1微秒,通过循环产生1秒时间延迟,扫描单片机中所存放的时间的值,并通过输出显示在数码管上。如图:秒表系统连线图p0.0p0.7对应了两个接数码管的A,B,C,D,E,F,G和小数点位,p2.6接显示个位数的数码管的3、8引角,p2.7则接十位数的

12、。p3.6、p3.7分别接按键。2、硬件连线图数字秒表程序硬件电路连线图四、软件设计1、数字秒表流程图2、数字秒表程序(附件)五、性能分析所制电路板虽然能实现设计中要求的功能,但是在实际使用中还是存在着许多缺陷。这块电路板不能随意查看记录的数据,复位后所计数据便会丢失,不能翻看历史,所计数据组数不能满足现实需要。六、结论与心得其实刚接看到题目时,有点迷茫,后来指导老师向我们具体讲解该怎么去做。对于keil软件和烧写软件,之前我们根本不了解,通过学习光盘中的资料怎么下载和使用这两个软件,在这其中我们也遇到了困难,开始总是不能理解说明书上的步骤,慢慢讨论学习将软件下载成功,我们四个人就在一起摸索该

13、怎样使用,反复看光盘给的资料后终于学会了如何使用两个软件。预期的设计目的是:能够实现时钟的基本功能,正常显示秒,于是我们用汇编语言写源程序。开始编译时没有发现错误,可是烧写到开发板上时,却不能实现基本的功能,经过多次修改之后还是不能解决。在写程序的过程中,我们互相讨论方案,寻求解决途径,可是还是无法实现相关的功能。我们有点急了,很迷惑了,我们经讨论后,决定找郭玉老师。老师给我们提出了意见和建议,在老师的帮忙下,我们成功地编写了一个没有实现启动停止、时间调整和清零功能的秒表程序。现在就是要实现要求的那些扩展功能,这个困扰了我们很久,因为老师的建议是利用中断写,而我们自己一直想的使用按键控制,最终

14、在查得相关的资料后,我们还是用按键成功写出源程序,并烧尽单片机中。通过这次的电子秒表设计,我们感觉到了合作的重要性。通过合作,我们找到了最佳的解决方案,有问题一起解决,有疑问一起讨论。感到合作的力量很强大!在设计的过程中,我们遇到了很多困难,失败过许多次,可最后还是成功了。我们知道,只要愿意努力,只要不放弃,我们会成功的,所以在以后的学习与生活中我们都要保持着这种精神。附件:实现数字秒表工作源程序STRTEQUP3.0;启动键控制口STPEQUP3.1;停止键控制口CLRREQUP3.2;清零键控制口ORG00HLJMPMAIN;初始化程序入口地址ORG0BH;定时器T0的入口地址LJMPIN

15、TT;加一子程序入口地址MAIN:MOVR0,#20;软件计数器置初值MOVR4,#0;秒表时间置初值MOV21H,#0;个位数存储单元清零MOV22H,#0;十位数存储单元清零MOVTMOD,#01H;定时器T0工作于方式1MOVTH0,#3CH;置50ms定时初值高位MOVTL0,#0B0H;置50ms定时初值低位SETBEA;开CPU总中断SETBET0;开T0中断k1:LCALLDISP;调显示子程序JBSTRT,K2;判断启动键是否按下LCALLDISP;按下,调用显示子程序JNBSTRT,$;判断启动键是否释放AJMPSTART;释放启动键,跳转到启动指令段k2:LCALLDISP

16、;启动键未按下,调用显示子程序JBSTP,K3;判断停止键是否按下LCALLDISP;按下,调用显示子程序JNBSTP,STOP;判断停止键是否释放,释放则跳转到停止指令段K3:LCALLDISP;停止键未按下,调用显示子程序JBCLRR,K1;判断清零键是否按下,未按下判断“启动”键是否按下LCALLDISP;按下清零键,调用显示子程序JNBCLRR,CLEAR;判断清零键是否释放,释放则跳转到清零指令段AJMPK1;清零键释放判断是否重新按下“启动”键START:SETBTR0;启动T0AJMPK1;跳转到启动键是否按下的指令段,不断判断STOP:CLRTR0;关闭T0AJMPK2;跳转到

17、停止键是否按下的指令段,不断判断CLEAR:CLRTR0;关闭T0,以便显示子程序显示此时的秒表数MOVR4,#0;秒表时间清零AJMPK1;跳转到判断“启动”指令段INTT:MOVTH0,#3CH;重装定时初值MOVTL0,#0B0HDJNZR0,LOOP;中断二十次MOVR0,#20;重新装软件计数器初值INCR4;1秒时间到,秒表数加一CJNER4,#60,LOOP;与60比较,小于60就跳转MOVR4,#00H;若秒表数加到60秒,则清零LOOP:RETI;返回中断DISP:MOVA,R4;显示程序,先将秒表计时值给累加器作为被除数MOVB,#10;除数为10,存放在B累加器DIVAB

18、;A除以BMOV21H,B;存放个位数MOV22H,A;存放十位数MOVP2,#1;用第二个数码管显示个位数MOVA,21HMOVDPTR,#TABLE;DPTR指向TABLE表首地址MOVCA,A+DPTR;查表找个位数段码MOVP0,A;将个位段码送给P0口LCALLDELAY2;延时MOVP2,#0;用第一个数码管显示十位数MOVA,22HMOVDPTR,#TABLEMOVCA,A+DPTR;查表找十位数段码MOVP0,A;将十位数段码送给P0口LCALLDELAY2;延时RET;显示子程序返回DELAY2:MOVR6,#02H;延时子程序D1:MOVR7,#248D2:DJNZR7,D2DJNZR6,D1RET;延时子程序返回TABLE:DB3FH,06H,5BH,4FH,66H;TABLE表,对应共阴极段码DB6DH,7DH,07H,7FH,6FHEND;结束

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

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