电子秒表课程设计Word下载.docx

上传人:b****5 文档编号:20013142 上传时间:2023-01-15 格式:DOCX 页数:14 大小:696.80KB
下载 相关 举报
电子秒表课程设计Word下载.docx_第1页
第1页 / 共14页
电子秒表课程设计Word下载.docx_第2页
第2页 / 共14页
电子秒表课程设计Word下载.docx_第3页
第3页 / 共14页
电子秒表课程设计Word下载.docx_第4页
第4页 / 共14页
电子秒表课程设计Word下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

电子秒表课程设计Word下载.docx

《电子秒表课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《电子秒表课程设计Word下载.docx(14页珍藏版)》请在冰豆网上搜索。

电子秒表课程设计Word下载.docx

单片机电子跑表STC89C52中断数码管显示键盘扫描

电子跑表

1.设计要求

利用单片机作为控制核心,设计出电子跑表,具有以下功能:

(1)具有跑表功能;

(2)跑表显示范围0000.00秒-9999.99秒;

(3)当按下启动按钮跑表开始计时,按下停止按钮停止计时,当按下复位按钮跑表归零。

2.方案设计

数码管显示是本设计主要的部分。

根据需要,可采用两种方案实现,即静态显示法和动态显示法。

数码管显示方案一:

静态显示。

所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。

该方式每一位都需要一个8位输出口控制。

静态显示时较小的电流能获得较高的亮度,且字符不闪烁。

但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。

数码管显示方案二:

动态显示。

所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。

利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。

显示器的亮度既与导通电流有关,也与点亮时间与间隔时间的比例有关。

调整参数可以实现较高稳定度的显示。

动态显示节省了I/O口,降低了功耗。

由于静态现实法需要数据锁存器等硬件,接口复杂一些,又考虑到时钟显示只有6位,且系统没有其他的处理任务;

并且从节省I/O口和降低能耗出发,所以决定采用动态扫描法实现LED的显示,即采用方案二。

3.硬件电路设计

此电路组成包括STC89C52单片机最小系统电路,其中包括晶振电路、复位电路、电源电路;

74LS138译码器电路;

CH340USB下载电路;

8段数码管显示电路;

74LS573缓存电路。

3.189C52最小系统电路

图189C52单片机

复位电路:

上拉电阻电路:

晶振电路:

3.238译码器电路

3.38段数码管显示电路及缓存电路

3.4电源模块

3.5CH340下载电路

4.软件设计

/*

*********************************************************************

***项目名称:

电子秒表

***描述:

实现开始,暂停,重置

***日期:

2016/12/14

*/

#include"

reg51.h"

#include<

intrins.h>

#defineGPIO_LEDP1//LED显示输出端口

#definekey_down0//按键按下

#definestart0

#definestop1

#defineflush2

sbitkey=P0^3;

//按键

sbitLS138A=P0^0;

//74LS138的输入端

sbitLS138B=P0^1;

sbitLS138C=P0^2;

intkey_times=2;

longintLedNumVal=0;

//计数进入中断的次数

/**********变量区***************/

intcmd;

unsignedcharLED_Num[6];

unsignedcharcodeDIG_CODE[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

//LED显示段码

/*****************函数声明******************************/

voiddisplay(void);

intkey_scan(void);

voidTimer0Init(void);

voidTime0_interrupt(void);

voiddelay1ms(unsignedinti);

/********************************************************************

**主函数:

main()

**功能:

时钟初始化,变量初始化,按键处理及显示

********************************************************************/

intmain(void)

{

Timer0Init();

while

(1)

{

cmd=key_scan();

LED_Num[0]=DIG_CODE[LedNumVal%10];

LED_Num[1]=DIG_CODE[LedNumVal%100/10];

LED_Num[2]=DIG_CODE[LedNumVal%1000/100]|0x80;

LED_Num[3]=DIG_CODE[LedNumVal%10000/1000];

LED_Num[4]=DIG_CODE[LedNumVal%100000/10000];

LED_Num[5]=DIG_CODE[LedNumVal%1000000/100000];

display();

}

return0;

}

voidTimer0Init(void)//10毫秒@11.0592MHz

IE=0X8A;

//设置中断

TMOD&

=0xF0;

//设置定时器模式

TMOD|=0x01;

TL0=0x00;

//设置定时初值

TH0=0xDC;

TF0=0;

//清除TF0标志

TR0=1;

//定时器0开始计时

key=1;

GPIO_LED=0x00;

/**********************************************

**按键扫描函数

**return:

0开始

**1暂停

**2重置

*********************************************/

intkey_scan(void)

inti=0;

if(key==key_down)

{

delay1ms(20);

while((i<

50)&

&

(key==key_down))//检测按键是否松开

delay1ms(10);

i++;

}

key_times++;

return(key_times%3);

/********************************************

***显示秒表

***0:

开始1:

暂停2:

重置

**********************************************/

voiddisplay(void)

inti,j=0;

switch(cmd)

casestart:

for(i=0;

i<

6;

i++)

switch(i)

case0:

LS138A=1;

LS138B=1;

LS138C=1;

break;

case1:

LS138A=0;

case2:

LS138B=0;

case3:

case4:

LS138C=0;

case5:

default:

GPIO_LED=LED_Num[i];

j=10;

while(j--);

//消隐

}break;

casestop:

//禁止中断

EA=0;

case1:

case3:

while(j--);

GPIO_LED=0x00;

//消隐

caseflush:

//重置,清零

EA=1;

LedNumVal=0;

j=10;

//消隐

}break;

default:

**外部中断10

**定时器0的中断号1

**外部中断22

**定时器1的中断号3

**串口中断4

voidTime0_interrupt(void)interrupt1

//设置定时初值

LedNumVal++;

/*************************

**延时1ms*i

*************************/

voiddelay1ms(unsignedinti)

intm,n;

for(i;

i>

0;

i--)

//以下延时1ms

_nop_();

for(m=2;

m>

0;

m--)

for(n=199;

n>

n--);

}

5.实际操作效果

操作一:

上电复位

运行过程中:

可以看到后两位数字有些不清晰,这是由于采用动态扫描的方式显示,并且小数点后的是毫秒级的,频率较快。

操作二:

暂停可以看到暂停后,小数点后两位不在闪烁。

操作三:

清零,图片同操作一。

6.总结

我在这次电子跑表的课程设计中受益匪浅。

通过对自己这一学期来所学知识的回顾,并充分发挥对所学知识的理解和对课程设计的思考及书面表达能力,最终完成了。

这对自己今后进一步深化学习,积累了一定宝贵的经验。

撰写论文的过程也是专业知识的学习过程,同时强化了自己的动手能力,对PCB软件,作图软件等软件更加熟练。

对程序和硬件电路的调试也有了很大的提高。

它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。

让我们知道了理论和实际的距离,也知道了理论和实际相结合的重要性。

课程设计成绩评定表

评定项目

内容

满分

评分

总分

学习态度

学习认真,态度端正,遵守纪律。

10

答疑和设计情况

认真查阅资料,勤学好问,提出的问题有一定的深度,分析解决问题的能力较强。

40

说明书质量

设计方案正确、表达清楚;

设计思路、实验(论证)方法科学合理;

达到课程设计任务书规定的要求;

图、表、文字表达准确规范,上交及时。

回答问题情况

回答问题准确,基本概念清楚,有理有据,有一定深度。

总成绩

采用五级分制:

优、良、中、及格、不及格

指导教师评语:

签名:

年月日

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

当前位置:首页 > 总结汇报 > 其它

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

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