51单片机实验秒表设计

51单片机实验秒表设计
51单片机实验秒表设计

.

实验报告

一、实验名称

10秒计时的秒表设计

二、实验内容

精确到0.1秒的秒表

三、相关模块

led数码管、usb、独立键盘

四、实验代码

#include

eg52.h

//对数据类型进行声明定义typedef unsigned int u16; typedef unsigned char u8;

sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

sbit k1=P3^1;

sbit k2=P3^0;

sbit k3=P3^2;

sbit k4=P3^3;

u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

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

u16 s,sec;

unsigned int i;

资料Word

.

unsigned int j;

unsigned int a,b,c,d;

u8 mb[2];

void Timer0Init()

{

TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。TH0=0XFC; // 给定时器赋初值,定时1ms

TL0=0X18;

TR0=0;//打开定时器

}

void delay(u16 n)

{

while(n--);

}

void DigDisplay1(u16 i)

{

switch(i)

{

case(0):

LSA=0;LSB=0;LSC=0; break;

case(1):

LSA=1;LSB=0;LSC=0; break;

资料Word

.

case(2):

LSA=0;LSB=1;LSC=0; break;

case(3):

LSA=1;LSB=1;LSC=0; break;

case(4):

LSA=0;LSB=0;LSC=1; break;

case(5):

LSA=1;LSB=0;LSC=1; break;

case(6):

LSA=0;LSB=1;LSC=1; break;

LSA=1;LSB=1;LSC=1; break;

}

if (i==1)

{

P0=smgduan[mb[i]]+0x80;//发送段码

}

else

{

P0=smgduan[mb[i]];

}

间隔一段时间扫描delay(1); //资料Word .

P0=0x00;//消隐

}

void DigDisplay2(u16 i)

{

i=i+3;

{

case(0):

LSA=0;LSB=0;LSC=0; break;

case(1):

LSA=1;LSB=0;LSC=0; break;

case(2):

LSA=0;LSB=1;LSC=0; break;

case(3):

LSA=1;LSB=1;LSC=0; break;

case(4):

LSA=0;LSB=0;LSC=1; break;

case(5):

LSA=1;LSB=0;LSC=1; break;

case(6):

LSA=0;LSB=1;LSC=1; break;

case(7): 资料Word

.

LSA=1;LSB=1;LSC=1; break;

}

if (i==4)

{

P0=smgduan[a]+0x80;

}

else

{

P0=smgduan[b];

}

delay(1);

P0=0x00;

}

void DigDisplay3(u16 i)

{

i=i+6;

switch(i)

{

case(0):

LSA=0;LSB=0;LSC=0; break;

case(1):

LSA=1;LSB=0;LSC=0; break; 资料Word

.

case(2):

LSA=0;LSB=1;LSC=0; break;

case(3):

LSA=1;LSB=1;LSC=0; break; case(4):

LSA=0;LSB=0;LSC=1; break; case(5):

LSA=1;LSB=0;LSC=1; break; case(6):

LSA=0;LSB=1;LSC=1; break;

case(7):

LSA=1;LSB=1;LSC=1; break; }

相关主题
相关文档
最新文档