#include<reg52h>
sbit AA=P3^4;//数码管显示用IO端口
sbit BB=P3^5;
sbit CC=P3^6;
sbit DD=P3^7;
sbit X=P2^7;//启动按钮
sbit Y=P2^6;//停止按钮
sbit Z=P2^5;//清零按钮
int aa,temp;
char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极
//char table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极
void delay(int x); //延迟函数声明
void display(int d); //显示函数声明
//
//
void main()
{
temp=0;
TMOD=0x01;//设置定时器工作方式
TH0=(65536-922)/256;//1毫秒
TL0=(65536-922)%256;//定时器装初始值
EA=1;//开总中断
ET0=1;//开定时器 0 的中断
while(1)
{
if(X==0){TR0=1;}//开启定时器,开始计数
if(Y==0){TR0=0;}//关闭定时器,暂停计数
if(Z==0){temp=0;}//清零计数器
display(temp); //调用显示子函数
}
}
//
//
void delay(int x) //延迟子函数
{
int y;
for(;x>0;x--)
for(y=80;y>0;y--);
}
//
//
void display(int d) //显示子函数
{
char d1,d2,d3,d4;
d4=d%10; //取个位 %求余
d3=(d/10)%10; //取十位
d2=(d/100)%10; //取百位
d1=(d/1000)%10; //取千位
P1=table[d4]; AA=0; delay(1); AA=1;//个位显示
P1=table[d3]; BB=0; delay(1); BB=1;//十位显示
P1=table[d2]; CC=0; delay(1); CC=1;//百位显示
P1=table[d1]; DD=0; delay(1); DD=1;//千位显示
}
//
//
此程序本人编写的,绝对可用,只要你连接正确
#include<reg51h>
#define uchar unsigned char
sbit key=P1^0;
sbit close=P1^1;
uchar times=0;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
times++;
if(key==1)times=0;
if(times>60)close=0;
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
close=1;
while(1)
{
if(key==0){TR0=1;times=0;}
if(key==1)TR0=0;
}
}
按键按下去不是K2等于0么?
else if(K2==1 && dly==0)
{
dly=DLY1;
if(mode==2 && hour<23)hour++;
if(mode==3 && minute<59) minute++;
if(mode==4 && minute<59) second++;
if(key_l!=0xf0)
{
delay_nms(5);
key_l=P1;
……
在第4行加 while( key_l!=0xf0 );
等待按键释放,按键不放开就一直在此处等待,知道按键释放,此语句执行完。再往下执行
以上就是关于51单片机 秒表设计 怎么用按键控制开始 停止和清零全部的内容,包括:51单片机 秒表设计 怎么用按键控制开始 停止和清零、51单片机设计长按开关机程序、51单片机程序设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)