基于89C52的数字秒表设计.docx

上传人:b****4 文档编号:4591164 上传时间:2022-12-07 格式:DOCX 页数:21 大小:1.72MB
下载 相关 举报
基于89C52的数字秒表设计.docx_第1页
第1页 / 共21页
基于89C52的数字秒表设计.docx_第2页
第2页 / 共21页
基于89C52的数字秒表设计.docx_第3页
第3页 / 共21页
基于89C52的数字秒表设计.docx_第4页
第4页 / 共21页
基于89C52的数字秒表设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

基于89C52的数字秒表设计.docx

《基于89C52的数字秒表设计.docx》由会员分享,可在线阅读,更多相关《基于89C52的数字秒表设计.docx(21页珍藏版)》请在冰豆网上搜索。

基于89C52的数字秒表设计.docx

基于89C52的数字秒表设计

单片机系统

课程设计

成绩评定表

设计课题:

数字秒表设计

学院名称:

电气工程学院

专业班级:

自动F1207

学生姓名:

学号:

201223911407

指导教师:

周刚

设计地点:

31-517

设计时间:

2014-12-29~2015-01-09

指导教师意见:

 

成绩:

签名:

年月日

单片机系统

课程设计

 

课程设计名称:

数字秒表设计

专业班级:

自动F1207

学生姓名:

学号:

201223911407

指导教师:

周刚

课程设计地点:

31-517

课程设计时间:

2014-12-29~2015-01-09

 

单片机系统课程设计任务书

学生姓名

专业班级

自动F1207

学号

201223911407

题目

数字秒表设计

课题性质

工程设计

课题来源

自拟

指导教师

周刚

主要内容

(参数)

1.利用89c51单片机设计一个数字秒表,实现功能如下:

2.秒表的最大计时值为99分59.99秒;

3.六位数码管显示,分辨率为0.01秒;

4.具有清零、启动计时、暂停计时(内部继续计时),调用计时等功能;

5.控制操作键4个,启动(停止)、暂停、调取、复位。

任务要求

(进度)

第1-2天:

熟悉课程设计任务及要求,查阅技术资料,确定设计方案。

第3-4天:

按照确定的方案设计单元电路。

要求画出单元电路图,元件及元件参数选择要有依据,各单元电路的设计要有详细论述。

第5-6天:

软件设计,编写程序。

第7-8天:

实验室调试。

第9-10天:

撰写课程设计报告。

要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确,篇幅合理。

主要参考

资料

[1]张迎新.单片微型计算机原理、应用及接口技术(第2版)[M].北京:

国防工业出版社,2004

[2]伟福LAB6000系列单片机仿真实验系统使用说明书

[3]阎石.数字电路技术基础(第五版).北京:

高等教育出版社,2006

审查意见

 

系(教研室)主任签字:

年月日

目录

1绪论1

1.1数字秒表概述1

1.2设计思想及基本功能1

2方案论证2

2.1方案选取2

2.2系统框图2

2.3总体方案设计2

3硬件电路设计7

3.1单片机最小系统设计7

3.2按键电路8

3.3显示电路9

3.4引脚控制说明9

4系统软件设计10

4.1系统流程图10

4.2秒表的初始化11

4.3按键扫描检测程序12

4.4开始计时12

4.5计时程序12

4.6显示程序12

4.6暂停计时13

4.6秒表清零13

5系统调试13

5.1程序调试12

5.2硬件调试12

6总结16

参考文献:

17

附录。

附录一系统原理图。

附录二程序代码18

1绪论

1.1数字秒表概述

自20世纪末期以来,电子技术的发展日新月异。

电子技术在各个领域的运用也越来越广泛,从而有力地推动了社会生产力的发展以及社会信息化程度的提高。

其中,秒表计时器是工业自动化控制、国防、实验室及科研单位理想的计时仪器,它广泛应用于各种继电器、电磁开关,控制器、延时器、定时器等的时间测试。

在各种现代体育竞技比赛中,秒表成为必不可少的工具之一。

而随着运动员的水平的不断提高,他们之间的差距也在不断缩小。

因此,在某些运动中对时间精度的要求就会越来越高,也就需要高精度的秒表来记录成绩,从而保障比赛的公平性。

在历史上,钟表大致有三个演变阶段。

首先是大时钟演变到小时钟、其次小时钟过渡到袋表、再之袋表发展到腕表。

再这三个阶段,每一次的改变都是和当时的技术水平和创造发明水平是息息相关的。

本文简单阐述了基于单片机STC89C52的数字秒表的的设计。

本设计的主要特点是计时精度达到0.01秒,是各种体育竞赛的必要设备之一。

本设计的数字秒表用STC89S52单片机为主要器件,利用其定时器的原理,结合显示电路、LED数码管以及外部外部中断电路来设计计时器。

将软硬件结合起来,使得系统能实现0~99.99秒的计时,计时精度位0.01秒。

硬件系统利用单片机开发板。

1.2设计思想及基本功能

利用52单片机的定时计数器设计一个秒表,其中设有一个按键,定时器工作在方式1。

当第一次按下按键时,定时器开始计时。

第二次按下按键时,停止计时并计算两次按键的时间间隔,送显示器显示。

第三次按下按键时定时器清零,等待下一次按键。

该系统具有一般数字秒表的最基本功能,即通过键盘按键启动,暂停,复位。

通过LED显示秒表所记时间。

系统本着简单实用经济的思想,尽量简化电路设计,用最简单的电路布线和选用最经济实用的器件来达到设计要求。

秒表控制系统有以下几个基本功能:

(1)利用单片机内部的定时器实现秒表功能并用数码管显示当前时间;

(2)按下暂停键,数码管计时暂停,显示时间,在按下启动键,继续计时;

(3)按下复位键,数码管示数从零开始,具备复位功能。

2方案论证

2.1方案选取

在这次课程设计中,主程序主要是通过STC89C52和74LS373锁存器来控制的,从而为所用的中断程序的地址以及一些必要的标志提供赋值。

其中在数字秒表的设计中运用了2个中断号和2个中断程序。

STC89C52的TO端口在工作方式1下由下降沿触发,然后产生方波脉冲,从而作为AT89C52的中断信号。

2.2系统框图

图2.2

2.3总体方案设计

这次实验所选用的实验器材主要包括开关计时以及显示,其中开关计时是与中断T0相连的,它是中断T0的申请中断信号,也就是设计要求中的第一个人的计时,来负责秒表的计时;而开关显示是与AT89C51上的P2.6口相连,即设计记下时间,当记录完成后,按下显示按钮,就会从最后一个人的顺序倒起来显示他们工作所用的时间(注意:

先来后显示)。

本次设计的核心思想是:

在运行中断程序的时候,首先判断中断信号,然后再根据中断信号来产生脉冲来确定是执行中断服务程序。

3硬件电路设计

3.1单片机最小系统设计

单片机最小系统原理图如图3.1所示单片机最小系统是使单片机工作满足的最低硬件的系统要求,主要包括单片机、时钟电路、复位电路。

时钟电路:

时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。

在STC89C52芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过这两个引角跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。

此电路采用11.0592MHz的石英晶体。

复位电路:

确定单片机工作的起始状态,完成单片机的启动过程。

单片机系统的复位方式有上电自动复位和手动按键复位。

本设计采用手动按键复位,该复位方式同样具有上电自动复位功能。

图3.1单片机最小系统原理图

3.2按键电路

当按下按键后,对应的引脚就会被拉低,再经过扫描后,则会获得键值,然后执行键功能程序。

当按下不同的按键时

,单片机就会执行不同的功能程序。

电路图如下图3.2所示:

图3.2

3.3显示电路

本次设计采用3个LED数码管。

一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a~g,另一个为小数点发光二极管。

当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。

在用数码管显示时,有静态和动态两种选择,这次设计采用了LED动态显示,并用P0、P1、P2口驱动显示。

为了保护各段LED不被损坏,还需外加限流电阻。

但由于P0口没有上拉电阻,因此在P0口还需要外接上拉电阻才能输出高电平,这里我们会使用8个4.7k的电阻作为上拉电阻。

电路图如下图3.3所示:

图3.3

3.4引脚控制说明

P0口:

P0.0—7、P1口:

P1.0—7、P2口P2.0—7对应三个数码管的a、b、c、d、e、f、g段和小数点位;P0用来控制数码管十位的显示,P2用来控制数码管个位的显示,P1则控制小数点后一位的显示,P3.2、P3.3、P3.4分别接按键用来实现控制。

4系统软件设计

4.1程序流程图

本次系统的软件部分主要包括:

主函数、初始化函数、显示函数、定时器0中断服务函数、外部中断0中断服务函数、拆数函数等。

工作流程包括:

秒表的初始化、按键检测程序、开始计时、计时程序、显示程序、暂停计时、秒表清零、延时程序等8个部分。

系统程序流程图如下图4.1所示:

图4.1

4.2秒表的初始化

首先根据程序流程图进行秒表的初始化。

第一步:

将I/O口P3全写一,为秒表的控制输入做好准备;第二步:

将数码管全部置零,使它处于秒表计时的初始状态;第三步:

将工作寄存器R0至R2以及30H初始化,留待后面的计时程序备用;第四步:

将定时器0置于工作方式1,并为其装入计时预置数D8FE(因为程序运行过程中占用的时间会导致一定误差,此为经实物测试之后的修正值),即将定时器定为每10ms溢出;第五步:

开总中断允许和定时器0中断允许。

等初始化完成后,就开始进入之后的按键扫描程序。

4.3按键扫描检测程序

轮流检测开始计时(P3.4)、暂停计时(P3.5)、秒表清零(P3.6)三个按键。

若发现有一个按键出现低电平(可能被按下),则延时10ms(调用延时子程序DELAY),延时完成后,若发现低电平消失,则说明该按键实际上未被按下,此时转回按键检测处继续检测;若发现仍然是低电平,则说明此键确实被按下了,此时就跳转至相应的程序标号处,执行相应的功能。

4.4开始计时

若确认“开始计时”键被按下,则跳转至程序标号“RUN”处,将定时器0计时允许控制位TR0置位,则定时器开始运行。

此动作完成后,返回按键检测程序,等待操作者的下一次指令。

4.5计时程序

定时器0计时至10ms,溢出,引发中断,程序跳转至定时器0中断服务程序入口000BH处执行。

程序跳转至中断服务程序TIME0。

由于秒表的最小计时单位是0.1s,即100ms,因此需加入软件计时,使定时器0溢出10次之后才改变数码管的显示状态。

因此每来一次中断就将30H中的数加1,若30H中的数没有到10,则给定时器0重新装入预置数,之后中断返回并继续等待中断;到10了,才进入显示程序,改变数码管的显示状态,执行完毕之后中断返回并继续等待中断。

4.6显示程序

将数码管的段选码放在数表TAB中。

每次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,向十秒位进位,之后,继续照常向秒位送数。

完成后,弹出ACC和PSW,子程序返回。

十秒位进位子程序与秒位进位子程序相似,只是没有向下一位进位的功能。

4.7暂停计时

若确认“暂停计时”键被按下,则跳转至程序标号“PAUSE”处,将定时器0计时允许控制位TR0置零,则定时器暂停运行。

此动作完成后,返回按键检测程序,等待操作者的下一次指令。

4.8秒表清零

若确认“秒表清零”键被按下,则跳转至程序标号“STOP”处,将TR0置零,关闭定时器0运行。

并且将数码管、工作寄存器、定时器0预置数全部重置,使其处于秒表计时的初始状态。

此动作完成后,返回按键检测程序,等待操作者的下一次指令。

5调试过程

5.1程序调试

(1)打开keil软件,单击project,新建一个工程,命名为shuzimiaobiao并保存。

(2)在弹出的窗口左边选择AT89C52单片机,然后新建并并保存文件shuzimiaobia.c。

(3)在projectworkspace中选中sourcegroup1,单机右键,在弹出的菜单中选择addfilestogroup‘sourcegroup1’,在弹出的对话框中双击刚才保存的shuzimiaobiao.c,将其添加到新建的工程中。

(4)将程序代码写入文件shuzimiaobiao.c中,完成后单击buildtarget按钮进行编译,结果如图5.1所示。

图5.1软件调试结果图

5.2硬件调试

首先将程序下载到单片机中,过程如下

(1)单机optionsfortarget按钮,在弹出对话框的第二个标签页中设置晶振为11.0592MHz,在第三个标签页中的createHEXfile选项前打勾,完成后再次编译并生成HEX文件

(2)打开STC_ISP_V483软件,选择刚才生成的HEX文件并下载到单片机中

其次开始单人秒表模式的调试

(1)按下key1键,秒表开始计时,数码管正常显示,如图5.2.1所示

图5.2.1开始计时图

(2)按下key2键,停止计时,如图5.2.2所示

图5.2.2停止计时图

(3)按下key3键,秒表复位,如图5.2.3所示

图5.2.3复位图

至此,系统的调试过程就完成了。

但是这个过程并不是一帆风顺的,在程序调试的过程中,

6总结

这次的课程设计使我进一步巩固了书本上的知识,做到了学以致用。

通过STC下载软件、ALTIUMDISIGNER,VISIO和编译软件KEIL使我进一步了解了基于单片机的设计制作过程。

其中最为困难的是编程部分,我们上网找了好多资料,虽然经过自己的修改,但还是有很多功能不能实现。

总结经验的时候我们得出这样的结论,学习应该学以致用,有目的的去学习,如果学了不用等于没学。

其次,要理论联系实际,这样才会取得事半功倍的效果。

 

参考文献

[1]张迎新.单片微型计算机原理、应用及接口技术(第2版)[M].北京:

国防工业出版社,2004

[2]伟福LAB6000系列单片机仿真实验系统使用说明书

[3]阎石.数字电路技术基础(第五版).北京:

高等教育出版社,2006

[4]康华光。

模拟电路技术基础(第五版)。

北京:

高等教育出版社,2005

[6]郭天祥.新概念51单片机C语言教程-入门、提高、开发、拓展全攻

北京:

电子工业出版社,2010.

[7]张兰红.单片机原理及应用.北京:

机械工业出版社,2012.

 

附录

附录原理图一

附录二源程序代码

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitdula=P2^6;

sbitwela=P2^7;

sbitkey1=P3^4;

sbitkey2=P3^5;

sbitkey3=P3^6;

ucharnum=0;

uintsec,a,b;

ucharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

voiddelay1ms(uintx)

{

for(a=x;a>0;a--)

for(b=110;b>0;b--);

}

voiddisplay(ucharqian_c,ucharbai_c,ucharshi_c,ucharge_c)//显示程序

{

dula=0;

P0=table[qian_c];//显示第一位

dula=1;

dula=0;

wela=0;

P0=0xfe;

wela=1;

wela=0;

delay1ms(5);

dula=0;

P0=table[bai_c];//显示第二位

dula=1;

dula=0;

wela=0;

P0=0xfd;

wela=1;

wela=0;

delay1ms(5);

P0=table[shi_c];//显示第三位

dula=1;

dula=0;

wela=0;

P0=0xfb;

wela=1;

wela=0;

delay1ms(5);

P0=table[ge_c];//显示第四位

dula=1;

dula=0;

wela=0;

P0=0xf7;

wela=1;

wela=0;

delay1ms(5);

}

voidkeyscan()

{

if(key1==0)

{

delay1ms(10);

if(key1==0)

{

while(!

key1);

TR0=1;

}

}

if(key2==0)

{

delay1ms(10);

if(key2==0)

{

while(!

key2);

TR0=0;

}

}

if(key3==0)

{

delay1ms(10);

if(key3==0)

{

while(!

key3);

sec=0;

TR0=0;

}

}

}

voidmain()

{

num=0;

TMOD=0x01;//定时器工作在方式1

ET0=1;

EA=1;

TH0=(65536-56320)/256;//对TH0TL0赋值

TL0=(65536-56320)%256;//使定时器0.01秒中断一次

while

(1)

{

display(sec/1000,sec%1000/100,sec%100/10,sec%10);

keyscan();

}

}

voidt0()interrupt1//定时中断服务函数

{

TH0=(65536-56320)/256;//对TH0TL0赋值

TL0=(65536-56320)%256;//重装计数初值

sec++;//每过10mstcnt加一

if(sec==10000)

sec=0;

}

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

当前位置:首页 > 初中教育 > 语文

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

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