0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用单片机实现秒表的设计

Wildesbeast 来源:单片机教程网 作者:h1654155169.2086 2020-05-05 16:16 次阅读

1. 实验任务

(1. 开始时,显示“00”,第1次按下SP1后单片机秒表就开始计时。

(2. 第2次按SP1后,计时停止。

(3. 第3次按SP1后,计时归零。

2. 电路原理

图4.17.1

3. 系统板上硬件连线

(1. 把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。

(2. 把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b,……,P2.7/A15对应着h。

(3. 把“单片机系统“区域中的P3.5/T1用导线连接到”独立式键盘“区域中的SP1端口上;

4. 程序框

T0中断服务程序框

图4.17.2

5. 汇编源程序

TCNTA EQU 30H

TCNTB EQU 31H

SEC EQU 32H

KEYCNT EQU 33H

SP1 BIT P3.5

ORG 00H

LJMP START

ORG 0BH

LJMP INT_T0

START: MOV KEYCNT,#00H

MOV SEC,#00H

MOV A,SEC

MOV B,#10

DIV AB

MOV DPTR,#TABLE

MOVC A,@A+DPTR

MOV P0,A

MOV A,B

MOV DPTR,#TABLE

MOVC A,@A+DPTR

MOV P2,A

MOV TMOD,#02H

SETB ET0

SETB EA

WT: JB SP1,WT

LCALL DELY10MS

JB SP1,WT

INC KEYCNT

MOV A,KEYCNT

CJNE A,#01H,KN1

SETB TR0

MOV TH0,#06H

MOV TL0,#06H

MOV TCNTA,#00H

MOV TCNTB,#00H

LJMP DKN

KN1: CJNE A,#02H,KN2

CLR TR0

LJMP DKN

KN2: CJNE A,#03H,DKN

MOV SEC,#00H

MOV A,SEC

MOV B,#10

DIV AB

MOV DPTR,#TABLE

MOVC A,@A+DPTR

MOV P0,A

MOV A,B

MOV DPTR,#TABLE

MOVC A,@A+DPTR

MOV P2,A

MOV KEYCNT,#00H

DKN: JNB SP1,$

LJMP WT

DELY10MS:

MOV R6,#20

D1: MOV R7,#248

DJNZ R7,$

DJNZ R6,D1

RET

INT_T0:

INC TCNTA

MOV A,TCNTA

CJNE A,#100,NEXT

MOV TCNTA,#00H

INC TCNTB

MOV A,TCNTB

CJNE A,#4,NEXT

MOV TCNTB,#00H

INC SEC

MOV A,SEC

CJNE A,#100,DONE

MOV SEC,#00H

DONE: MOV A,SEC

MOV B,#10

DIV AB

MOV DPTR,#TABLE

MOVC A,@A+DPTR

MOV P0,A

MOV A,B

MOV DPTR,#TABLE

MOVC A,@A+DPTR

MOV P2,A

NEXT: RETI

TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

END

6. C语言源程序

#include 《AT89X51.H》

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,

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

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

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

unsigned char second;

unsigned char keycnt;

unsigned int tcnt;

void main(void)

{

unsigned char i,j;

TMOD=0x02;

ET0=1;

EA=1;

second=0;

P0=dispcode[second/10];

P2=dispcode[second];

while(1)

{

if(P3_5==0)

{

for(i=20;i》0;i--)

for(j=248;j》0;j--);

if(P3_5==0)

{

keycnt++;

switch(keycnt)

{

case 1:

TH0=0x06;

TL0=0x06;

TR0=1;

break;

case 2:

TR0=0;

break;

case 3:

keycnt=0;

second=0;

P0=dispcode[second/10];

P2=dispcode[second];

break;

}

while(P3_5==0);

}

}

}

}

void t0(void) interrupt 1 using 0

{

tcnt++;

if(tcnt==400)

{

tcnt=0;

second++;

if(second==100)

{

second=0;

}

P0=dispcode[second/10];

P2=dispcode[second];

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43970

    浏览量

    620791
  • 键盘
    +关注

    关注

    4

    文章

    843

    浏览量

    39002
  • 秒表
    +关注

    关注

    3

    文章

    77

    浏览量

    21902
收藏 人收藏

    评论

    相关推荐

    求高手为下面的仿真图设计一个51单片机实现秒表的程序

    用STC89C51设计一个2位的LED数码显示作为“秒表”:显示时间为00—99秒,每秒自动加1,另设计一个“开始”键和一个“复位”键。同时设计一个记录按键,能够将记录的秒,按照顺序存储在单片机的EEPROM中,实现断电仍然能够
    发表于 10-21 14:25

    单片机实现秒表倒数计数器 精选资料分享

    单片机实现秒表计数器最近博主在学习单片机的课程,这快到期末考试了,老师让做个简单的课设,我看了看老师给的课题,感觉这个比较容易实现,今天下午
    发表于 07-15 07:50

    怎么实现51单片机简易秒表的设计?

    怎么实现51单片机简易秒表的设计?
    发表于 10-27 07:01

    如何去实现一种基于51单片机的电子秒表设计呢

    如何去实现一种基于51单片机的电子秒表设计呢?如何对基于51单片机的电子秒表设计进行仿真呢?
    发表于 11-08 08:37

    51单片机实现数字秒表设计

    51单片机实现数字秒表,有开始,暂停,结束三个独立按键。Proteus仿真图代码1.头文件,定义变量#include#define uchar unsigned char#define uint
    发表于 11-18 08:38

    基于单片机的数字秒表的设计简介

    设计简介:本设计是基于单片机的数字秒表的设计,主要实现以下功能:可实现LCD12864显示时间以及倒计时、顺计时等信息;可实现通过按键调节调
    发表于 12-08 06:31

    单片机实现秒表显示程序

    发表于 12-15 18:13 12次下载

    使用51单片机实现秒表的代码和资料免费下载

    本例子为用汇编在普中单片机实现一个简单的秒表功能,加一个清零按键。新建keil工程,新建.asm文件并加入工程,不添加startup.a51文件在写代码之前,讲一些后面写51汇编必要的基础知识,因为汇编与硬件息息相关,这些不知
    发表于 09-11 17:24 1次下载
    使用51<b class='flag-5'>单片机</b><b class='flag-5'>实现</b><b class='flag-5'>秒表</b>的代码和资料免费下载

    使用单片机实现秒表的程序免费下载

    本文档的主要内容详细介绍的是使用单片机实现秒表的程序免费下载。
    发表于 09-10 17:26 7次下载
    使用<b class='flag-5'>单片机</b><b class='flag-5'>实现</b><b class='flag-5'>秒表</b>的程序免费下载

    使用51单片机实现秒表的程序免费下载

    本文档的主要内容详细介绍的是使用51单片机实现秒表的程序免费下载。实现简单秒表,按键控制秒表的开
    发表于 08-21 17:31 50次下载
    使用51<b class='flag-5'>单片机</b><b class='flag-5'>实现</b><b class='flag-5'>秒表</b>的程序免费下载

    使用单片机实现秒表计数的C语言程序免费下载

    本文档的主要内容详细介绍的是使用单片机实现秒表计数按键开始,结束,重置的C语言程序免费下载
    发表于 07-26 17:36 9次下载
    使用<b class='flag-5'>单片机</b><b class='flag-5'>实现</b><b class='flag-5'>秒表</b>计数的C语言程序免费下载

    使用51单片机实现秒表的源代码和工程文件免费下载

    本文档的主要内容详细介绍的是使用51单片机实现秒表的源代码和工程文件免费下载。
    发表于 12-10 08:00 10次下载
    使用51<b class='flag-5'>单片机</b><b class='flag-5'>实现</b><b class='flag-5'>秒表</b>的源代码和工程文件免费下载

    使用单片机实现秒表的程序和工程文件免费下载

    本文档的主要内容详细介绍的是使用单片机实现秒表的程序免费下载。
    发表于 06-08 17:20 27次下载
    使用<b class='flag-5'>单片机</b><b class='flag-5'>实现</b><b class='flag-5'>秒表</b>的程序和工程文件免费下载

    使用单片机实现一个10秒的秒表免费下载

    本文档的主要内容详细介绍的是使用单片机实现一个10秒的秒表免费下载。
    发表于 06-09 17:21 10次下载
    使用<b class='flag-5'>单片机</b><b class='flag-5'>实现</b>一个10秒的<b class='flag-5'>秒表</b>免费下载

    单片机实现秒表倒数计数器

    单片机实现秒表计数器最近博主在学习单片机的课程,这快到期末考试了,老师让做个简单的课设,我看了看老师给的课题,感觉这个比较容易实现,今天下午
    发表于 11-04 14:06 7次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>实现</b><b class='flag-5'>秒表</b>倒数计数器