永发信息网

利用51单片机动态显示0-60秒表

答案:1  悬赏:40  手机版
解决时间 2021-12-03 00:34
  • 提问者网友:听门外雪花风
  • 2021-12-02 18:35
利用51单片机动态显示0-60秒表
最佳答案
  • 五星知识达人网友:刀戟声无边
  • 2021-12-02 19:16
#include
unsigned int s;
unsigned char key;
sbit d1=P3^7;

void delay() //动态显示延时
{
int k;
for(k=0;k<100;k++);
}

void delay1() //去抖动延时
{
unsigned char code table[] = {
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
P2=table[s%10]; P3=0xf8; delay(); P3=0xf0;
P2=table[s/10%10]; P3=0xf4; delay(); P3=0xf0;
P2=table[s/100%10]; P3=0xf2; delay(); P3=0xf0;
P2=table[s/1000]; P3=0xf1; delay(); P3=0xf0;
}

void main()
{

TMOD = 0x01;
TH0 = (65536 - 10000) / 256;//初值,每10ms中断一次
TL0 = (65536 - 10000) % 256;
ET0=1;
EA=1;
while(1) {
delay1();
if(!d1) {
delay1();
if(!d1) { //去抖动
while(!d1) delay1();//等待释放
key++;
if(key == 4) key = 1;
}
}
if(key == 1) TR0 = 1;//开始计时
else if(key == 2) TR0 = 0;//停止
else s = 0;
}
}

void time0() interrupt 1 //内部中断
{
TH0 = (65536 - 10000) / 256;
TL0 = (65536 - 10000) % 256;
s++;
if(s == 10000) s = 0;
}追问大哥,你好厉害,真心谢谢你!不采纳对不起人,我琢磨下。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯