光学  

   你现在的位置:JUNTRY>>主 页>>              今天是:

   

99秒马表设计

 

1. 实验任务

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

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

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

2. 电路原理图

 

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. 程序框

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

}

}


 

  · AT89S51单片机试验以及教程 01 闪烁灯

 · AT89S51单片机试验以及教程 02 模拟开关灯

 · AT89S51单片机试验以及教程 03 多路开关状态指示

  · AT89S51单片机试验以及教程 04 广告灯的左移右移

 · AT89S51单片机试验以及教程 05 广告灯(利用取表方式)

  · AT89S51单片机试验以及教程 06 报警产生器

 · AT89S51单片机试验以及教程 07 I/O并行口直接驱动LED显示

 · AT89S51单片机试验以及教程 08 按键识别方法之一

 · AT89S51单片机试验以及教程 09 一键多功能按键识别技术

 · AT89S51单片机试验以及教程 10 00-99计数器

 · AT89S51单片机试验以及教程 11 00-59秒计时器(利用软件延时)

 · AT89S51单片机试验以及教程 12 可预置可逆4位计数器

 · AT89S51单片机试验以及教程 13 动态数码显示技术

  · AT89S51单片机试验以及教程 14 4×4矩阵式键盘识别技术

  · AT89S51单片机试验以及教程 15 定时计数器T0作定时应用技术(一)

  · AT89S51单片机试验以及教程 16 定时计数器T0作定时应用技术(二)

 · AT89S51单片机试验以及教程 17 99秒马表设计

  · AT89S51单片机试验以及教程 18 “嘀、嘀、……”报警声

 · AT89S51单片机试验以及教程 19 “叮咚”门铃

 · AT89S51单片机试验以及教程 20 数字钟

 · AT89S51单片机试验以及教程 21 拉幕式数码显示技术

 · AT89S51单片机试验以及教程 22 电子琴

 · AT89S51单片机试验以及教程 23 模拟计算器数字输入及显示

  · AT89S51单片机试验以及教程 24 8X8 LED点阵显示技术

 · AT89S51单片机试验以及教程 25 点阵式LED“0-9”数字显示技术

 · AT89S51单片机试验以及教程 26 点阵式LED简单图形显示技术

 · AT89S51单片机试验以及教程 27 ADC0809A/D 转换器基本应用技术

 · AT89S51单片机试验以及教程 28 数字电压表

 · AT89S51单片机试验以及教程 29 两点间温度控制

 · AT89S51单片机试验以及教程 30 四位数数字温度计

 · AT89S51单片机试验以及教程 31 6位数显频率计数器

 · AT89S51单片机试验以及教程 32 电子密码锁设计

 · AT89S51单片机试验以及教程 33 4×4键盘及8位数码管显示构成的电子密码锁

 · AT89S51单片机试验以及教程 34 有存储器功能的数字温度计-DS1624技术应用

 · AT89S51单片机试验以及教程 35 DS18B20数字温度计使用

 

 

 

 

以上部分内容转载于网上,如有涉及到版权问题,请即通知本人删除

copyright© 2004-2005 all rights reserved www.JUNTRY(.IK8).com

juntry@126.com