您的当前位置:首页正文

数码管前三位显示一个跑表,从000到999之间以百分之一秒速度运行,当按下一个独立键盘时跑表停止,松开……

来源:好兔宠物网


1.数码管前三位显示一个跑表,从000到999之间以1%秒速度运行,当按下一个独立键盘时跑表停止,松开手后跑表继续运行。(用定时器设计表)。

在上题的基础上,用另外三个独立键盘实现按下第一个时计时停止,按下第二个时计时开始,按下第三个是计数值清零从头开始

#include<>

#define uint unsigned int

#define uchar unsigned char

sbit key1=P3^4;

sbit key2=P3^5;

sbit key3=P3^6;

sbit key4=P3^7;

void init();//初始化子程序

void delay(uint);//延时子程序

void display(uint);//显示子程序

void keyscan();//按键扫描子程序

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

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

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

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

uint x,y;

void main()

{

init();

while(1)

{

if(x==1)

{

x=0;

if(y==1000)

y=0;

}

display(y);

keyscan();

}

}

void init()

{

P2=0x3f;

P1=0xf8;

TMOD=0x01;

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

EA=1;

ET0=1;

TR0=1;

x=0;

y=0;

}

void timer0()interrupt 1

{

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

x++;

y++;

}

void delay(uint ms)

{

uint x,y;

for(x=ms;x>0;x--)

for(y=110;y>0;y--);

}

void display(uint a)

{

uint bai,shi,ge;

bai=a/100;

shi=a%100/10;

ge=a%10;

P2=table[bai];

P1=0xfe;

delay(1);

P1=0xff;

P2=table[shi];

P1=0xfd;

delay(1);

P1=0xff;

P2=table[ge];

P1=0xfb;

delay(1);

P1=0xff;

}

void keyscan()

{

if(key1==0)

{

delay(5);

if(key1==0)

TR0=0;

while(key1==0)

display(y);

TR0=1;

}

if(key2==0)

{

delay(5);

if(key2==0)

TR0=0;

}

if(key3==0)

{

delay(5);

if(key3==0)

TR0=1;

}

if(key4==0)

{

delay(5);

if(key4==0)

{

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

x=0;

y=0;

}

}

}

因篇幅问题不能全部显示,请点此查看更多更全内容