首页 > 消费电子 >日常电器电路 > 99秒单片机马表设计

99秒单片机马表设计

来源: 互联网 关键词: 电子钟表 更新时间: 2021/11/15

1. 实验任务

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

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

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

2. 电路原理图

 

99秒马表设计99s Timer

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中断服务程序框图

 

99秒马表设计99s Timer

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

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%10];

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%10];

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%10];

}

}

推荐帖子 最新更新时间:2022-08-20 01:40

双色彩灯
本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 很清晰 不错 Re: 双色彩灯
 lorant移动便携
关于MC9S12XS128 单片机之间 SPI通信的一些问题
最近在做一个东西,上面用到了两篇XS128之间的主从机通信一片主机一片从机。下面用A(主机) B(从机)代替单功形式,A通过直接写数据寄存器吧数据发送到B,B生成中断响应 接收数据。完全好用在尝试A接收B的数据时。首先B写数据寄存器,进入死循环等待A发送信号。A给了1000ms的
 lzsxtreeNXP MCU
最近研究cortex-a8及linux音频驱动的实现遇到问题
之前做了关于cortex-a8的MP3播放器,然后和同学正在研究cortex-a8及linux音频驱动的实现,两个课题很相似,前一个实现了,但是后一个是不用串口以为改改就可以用,但是同学和我都是菜鸟,刚接触嵌入式基础太弱,一直不知道程序该如何编写,请大神指点一下,两个项目的区别介
 物联网菜鸟ARM技术
关于系统深度睡眠(Deep Sleep)的理解?
大多微处理器芯片都提供深度睡眠的功能,可以减少功耗。比如S3C2440。 那么在什么时候才应该进入深度睡眠呢? 我们知道,一般的操作系统提供了TIMER功能。 这个功能需要使用硬件定时器来进行计数,比如周期为5ms。 那么如果当前有TASK在使用Timer,是否可以进入深
 qddianzi嵌入式系统
基于AD8108的宽频带低串扰视频切换矩阵的设计
介绍了一种宽频带低串扰视频切换矩阵的设计。该矩阵采用美国ADI公司的AD8108作为宽频带视频切换矩阵的信号切换芯片,采用AT89C51作为微控制器完成矩阵切换的控制和外围界面的维护。实现的视频切换矩阵具有325MHz的带宽能力和低通道间串扰、低进出串扰的特性,同时具有-98dB
 fighting测试/测量
谁有关于投影机软件开发的资料?DDP2230之类
哪位大哥有关于投影机软件开发的资料?TI有个DDP2230的芯片,有谁了解? 谁有关于投影机软件开发的资料?DDP2230之类
 steel69187DSP 与 ARM 处理器

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

EEWORLD 电路图 站点相关: 下载中心 Datasheet 参考设计

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved