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

上传人:b****8 文档编号:9337742 上传时间:2023-02-04 格式:DOCX 页数:11 大小:225.70KB
下载 相关 举报
单片机秒表设计课程设计报告.docx_第1页
第1页 / 共11页
单片机秒表设计课程设计报告.docx_第2页
第2页 / 共11页
单片机秒表设计课程设计报告.docx_第3页
第3页 / 共11页
单片机秒表设计课程设计报告.docx_第4页
第4页 / 共11页
单片机秒表设计课程设计报告.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

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

《单片机秒表设计课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机秒表设计课程设计报告.docx(11页珍藏版)》请在冰豆网上搜索。

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

单片机秒表设计课程设计报告

 

单片机课程设计报告

设计课题:

秒表设计

 

一、课程设计目的和意义和主要功能

1、目的意义

2、主要功能

二、方案设计与论证

1、时钟电路

2、按钮电路

3、显示电路

4、单片机

三、硬件电路设计

1、STC89C52RC单片机的简单介绍

2、接口电路

3、硬件连线图

四、软件设计:

数字秒表流程图、数字秒表源程序

五、性能分析

六、结论和心得

附件(源程序)

 

电子秒表设计

摘要:

本次设计主要是用STC89C52RC设计一个2位的数码作为“秒表”。

主要是利用单片机的定时器/计数器定时和计数原理来设计简单的计时器系统,拥有正确的启动停止、时间调整,启动停止清零通过键盘按键控制,并同时可以用数码管显示数字0-59,每秒自动加1,能正确地进行计时。

其中软件系统采用汇编语言编写程序,包括显示程序,计数程序,中断,延时程序等,并在keil中调试运行,硬件系统利用单片机开发板能来实现,简单且易于观察,在现实生活中应用广泛,具有现实意义。

关键字:

单片机定时器启动停止时间调整数码管键盘

一、课程设计目的和意义和主要功能

1、目的意义

1、通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。

2、掌握定时器、外部中断的设置和编程原理。

3、通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。

2、主要功能

显示时间为0-59秒,每1秒自动加1,另外设计一个“启动/停止”键、一个“时间调整”键。

能用按钮实现秒表启动、停止、时间调整。

二、方案设计与论证

1、方案设计

本设计要求进行计时并在数码管上显示时间,分为时钟电路、按钮电路、显示电路和单片机四大部分,这些模块中单片机占主控地位。

其模块电路如图2-1所示。

(1)、时钟电路

常用的有内部时钟方式和外部时钟方式,但因为本设计中只需要一片单片机,所以采用内部时钟方式比较简单。

时钟电路如图所示,时钟电路的晶振频率越高,系统的时钟频率越高,单片机的运行速度也就越快。

晶振频率根据设计需要设为12MHz,又根据谐振性质,电路中的电容C1、C2选择为30pF左右。

该电容的的大少会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。

(2)、按钮电路

主要由S1S2三个按键组成,因为开发板自己默认的键盘是矩阵式,而我们的设计中只需要用两个按键,考虑到按键个数比较少,我们将开发板上的J11跳冒由原来的右边调整到左边,让键盘变成独立式。

按钮电路中的“启动/停止”按键由键盘上的S1控制,按钮电路中的“时间调整”按键由键盘上的S2控制。

(3)、具体按键说明

按“时间调整”按键,开始调整时间,数码管显示从00开始每按一次自动加1;再按“启停”按键,系统开始计数,再按“启停”按键,系统暂停计数,数码管显示当前数值,并且再次按“时间调整”可以重新调整时间。

3、显示电路

所用的数码管有共阴和共阳之分,本此设计使用的数码管是共阴极,数码管位控制有P2口控制。

由于电路内部已经有74HC138译码器,译码器的A、B、C赋值0~7,因此输出端分别是Y0-Y7置“0”,如p2=0,则Y0=0,及选通第一个数码管,所以当我们要显示某一个数码管时,只要将P2口赋相应的值即可。

因为秒表只需用两个数码管,我们选用的是第一个和第二个数码管,及分别给P2口送0和1.而数码管显示的数字段码由P0口控制,每次需要显示的数字段码通过查表找到后直接送给P0口即可,如当P0=3F,就会显示数字“0”。

4、单片机

单片机的程序可用汇编语言也可用C语言,为了提高使用汇编语言的能力,本设计特用了汇编语言了编写程序主程序流程图如下所示,具体程序见附件。

主程序流程图见软件设计。

2、方案论证

方案一:

数字信号处理器(DSP)作为一种可编程专用芯片,是数字信号处理理论实用化过程的重要技术工具,在语音处理、图像处理等技术领域得到了广泛的应用。

但对于算法设计人员来讲,利用汇编语言或C语言进行DSP功能开发,具有周期长、效率低的缺点,不利于算法验证和产品的快速开发。

需要模数转换;受采样频率的限制,处理频率X围有限。

方案二:

数字电路具有不稳定,容易出问题,很容易受干扰的特点。

方案三:

单片机具有价格低廉的可擦写1000次以上的16(字)位指令FLASH技术,不再有报废品产生的优点。

高速度、低功耗(μA)!

具有SLEEP(休眠)功能及CMOS技术,每一指令执行速度可达50ns(20MHZ),而耗电则在1mA~2.5mA间(典型功耗,WDT关闭时为100nA)。

AVR运用Harvard结构概念(具有预取指令功能),即对程序存储和数据带有不同的存储器和总线。

当执行某一指令时,下一指令被预先从程序存储器中取出,这使得指令可以在每一个时钟周期内被执行。

超功能精简指令!

具有32个通用工作寄存器(相当于8051中的32个累加器,克服了单一累加器数据处理造成的瓶颈现象)及128-512个SRAM,可灵活使用指令运算并可用功能很强的C语言编程,易学、易写、易移植。

采用STC89C52RC,片内ROM全用FlashROM,能以3V的超低电压工作;同时也与MCS-51系列单片机内部储存器为8KBROM存储空间,同样具有89C51的功能,且具有在线变成可擦除技术,当对电路进行调试时,由于错误修改或对程序的新功能需要烧入程序是,不需要多芯片多次拔插,所以不会对芯片造成损害,最终采用单片机STC89C52RC作为主控系统。

三、硬件设计

1、STC89C52RC单片机的简单介绍

STC89C52RC是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器(FPEROM-FlashProgrammableandEraseableReadOnlyMemory)的8位CMOS微控制器,使用高密度、非易失存储技术制造,并且与80C51引脚和指令系统完全兼容。

主要性能:

◆8031CPU

◆与MCS-51微控制器产品系列兼容

◆4KB字节快速擦写Flash程序存储器,擦写次数1000次

◆存储数据保存时间为10年

◆编程频率3MHZ-24MHZ,编程电流1mA,编程电压Vpp为5V或12V,工作电压5V

◆1个片内振荡器及时钟电路,静态操作模式工作频率0MHZ-24MHZ

◆程序存储器具有3级加密保护

◆128字节内部RAM,128字节特殊功能寄存器区

◆32条可编程I/O线

◆2个16位可编程定时器/计数器

◆中断结构具有6个中断源和2个优先级嵌套中断结构

◆1个可编程全双工异步串行口

◆空闲状态维持低功耗和掉电状态保存存储内容

◆可寻址64K外部RAM和64K外部ROM空间的扩展总线控制电路

2、接口电路

利用12MHZ晶振的一个机器周期为1微秒,通过循环产生1秒时间延迟,扫描单片机中所存放的时间的值,并通过输出显示在数码管上。

如图:

秒表系统连线图

p0.0—p0.7对应了两个接数码管的A,B,C,D,E,F,G和小数点位,p2.6接显示个位数的数码管的3、8引角,p2.7则接十位数的。

p3.2、p3.3分别接按键。

 

2、硬件连线图

 

数字秒表程序硬件电路连线图

 

四、软件设计

1、数字秒表流程图

2、数字秒表程序(附件)

 

五、性能分析

所制电路板虽然能实现设计中要求的功能,但是在实际使用中还是存在着许多缺陷。

这块电路板不能随意查看记录的数据,复位后所计数据便会丢失,不能翻看历史,所计数据组数不能满足现实需要。

六、结论与心得

其实刚接看到题目时,有点迷茫,后来指导老师向我们具体讲解该怎么去做。

对于keil软件和烧写软件,之前我们根本不了解,通过学习光盘中的资料怎么下载和使用这两个软件,在这其中我们也遇到了困难,开始总是不能理解说明书上的步骤,慢慢讨论学习将软件下载成功,我们四个人就在一起摸索该怎样使用,反复看光盘给的资料后终于学会了如何使用两个软件。

预期的设计目的是:

能够实现时钟的基本功能,正常显示秒,于是我们用汇编语言写源程序。

开始编译时没有发现错误,可是烧写到开发板上时,却不能实现基本的功能,经过多次修改之后还是不能解决。

在写程序的过程中,我们互相讨论方案,寻求解决途径,可是还是无法实现相关的功能。

我们有点急了,很迷惑了,我们经讨论后,决定找郭玉老师。

老师给我们提出了意见和建议,在老师的帮忙下,我们成功地编写了一个没有实现启动停止、时间调整和清零功能的秒表程序。

现在就是要实现要求的那些扩展功能,这个困扰了我们很久,因为老师的建议是利用中断写,而我们自己一直想的使用按键控制,最终在查得相关的资料后,我们还是用按键成功写出源程序,并烧尽单片机中。

通过这次的电子秒表设计,我们感觉到了合作的重要性。

通过合作,我们找到了最佳的解决方案,有问题一起解决,有疑问一起讨论。

感到合作的力量很强大!

在设计的过程中,我们遇到了很多困难,失败过许多次,可最后还是成功了。

我们知道,只要愿意努力,只要不放弃,我们会成功的,所以在以后的学习与生活中我们都要保持着这种精神。

 

附件:

实现数字秒表工作源程序

ORG0000H;初始化程序入口地址

LJMPSTART

ORG0003H;加一子程序入口地址

LJMPINTT0

ORG0013H

LJMPINTT1;启停子程序入口地址

ORG1000H

START:

MOVR0,#0;秒表时间置初值

MOVR1,#100;软件计数器置初值

SETBIT0;INT0为电平触发方式

SETBIT1;INT0为电平触发方式

SETBEX0;允许INT0中断

SETBEX1;允许INT1中断

SETBEA;CPU开中断

SETBP1.0;P1.0高电平

L2:

MOVA,R0;数码管显示子程序

MOVB,#10

DIVAB

MOVP2,#0FDH;显示十位

LCALLCASE;调用查表子程序

LCALLDELAY;调用延时程序

MOVA,B

MOVP2,#0FEH;显示个位

LCALLCASE;调用查表子程序

LCALLDELAY;调用延时程序

DJNZR1,L2;判断1s是否到达

MOVR1,#100;对R1重新赋值

JNBP1.0,L5;计时加一

L6:

SJMPL2;显示当前数值

L5:

INCR0;计时加一

CJNER0,#59,L6;判断是否到59

LJMPSTART

INTT0:

;时间调整中断

MOVR

INCR0;按键没按一次,时间加一

CJNER0,#59,L1;与59比较

MOVR0,#0;到59,下一次按键,显示00

L1:

RETI;中断返回

INTT1:

CPLP1.0;对P1.0取反,控制及时的启动与停止

RETI;中断返回

DELAY:

MOVR7,#50;延时程序

L7:

MOVR6,#50

L8:

DJNZR6,L8

DJNZR7,L7

RET

CASE:

MOVDPTR,#TAB;查表显示数值

MOVCA,A+DPTR

MOVP0,A

RET;延时子程序返回

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H;TABLE表,对应共阳极段码

DB92H,82H,0F8H,80H,90H

END;结束

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 其它

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

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