没做完,做的我头好疼,可能我按这个想法走感觉很复杂,是否有好一点的方法呢,求高手帮帮解决。谢谢
代码是:#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delayms(uchar a);
void shanshuo();
void jiashu();
void jianshu();
void init();
void display();
uchar i=0,t=0,n=0,m=0,s=0;
sbit k5=P1^4;
sbit k6=P1^5;
sbit k7=P1^6;
sbit k8=P1^7;
//位选
uchar wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//段选(共阳极0123456789-)
uchar duan[]={
0xC0,0xF9, 0xA4,0xB0,0x99, 0x92, 0x82,0xF8,0x80,0x90,0xbf};
void main()
{
while(1)
{
init();
shanshuo();
}
}
void delayms(uchar a)
{
uchar w;
while(a--)
for(w=0;w<120;w++);
}
//下杠左右移闪烁函数
void shanshuo()
{
uchar s,k;
while(1)
{
display();
if(k7==0) //右移键
{
TR1=1;//停止计数
delayms(0); //消抖
if(k7==0)
{
for(k=10;k>0;k--) //闪烁的次数
{
P2=wei[s];
P0=0xf7;
delayms(5000);delayms(5000);
P0=0xff;
delayms(5000);delayms(5000);
P0=0xf7;
if(k5==0) //在闪烁过程中如果按键k5按一下数加一
{
delayms(0);//消抖
if(k5==0)
{
jiashu(); //加数函数
}
}
else if(k6==0) //在闪烁过程中如果按键k6按一下数减一
{
delayms(0);//消抖
if(k6==0)
{
jianshu(); //减数函数
}
}
}
if(s>=8)
{
s=0;
}
}s++;
}
else if(k8==0)//左移键
{
TR1=0;//停止计数
if(s==0)
{
s=7;
}
delayms(0); //消抖
if(k8==0)
{
for(k=10;k>0;k--) //闪烁的次数
{
P2=wei[s];
P0=0xf7;
delayms(5000);delayms(5000);
P0=0xff;
delayms(5000);delayms(5000);
P0=0xf7;
if(k5==0) //在闪烁过程中如果按键k5按一下数加一
{
delayms(0);//消抖
if(k5==0)
{
jiashu(); //加数函数
}
}
else if(k6==0) //在闪烁过程中如果按键k6按一下数减一
{
delayms(0); //消抖
if(k6==0)
{
jianshu(); //减数函数
}
}
}
}s--;
}
}
}
void jiashu()//加数函数
{
}
void jianshu()//减数函数
{
}
void init()
{
TMOD=0x10;
EA=1;
EX0=1;IT0=0; //外部中断0
EX1=1;IT1=0; //外部中断1
ET1=1; //定时计数器
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR1=1;
}
void wzd0() interrupt 0//外部中断0
{
}
void wzd1() interrupt 2//外部中断1
{
}
void t1() interrupt 3
{
i++;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
if(i>=20)
{
i=0;
t++;
if(t>=60)
{
t=0;
n++;
if(n>=60)
{
n=0;
m++;
if(m>=24)
{
m=0;
}
}
}
}
}
void display()
{
uchar d;
uchar table[8];
table[0]=duan[m/10];table[1]=duan[m%10];table[2]=duan[10];
table[3]=duan[n/10];table[4]=duan[n%10];
table[5]=duan[10];table[6]=duan[t/10];table[7]=duan[t%10];
for(d=0;d<8;d++)
{
P2=wei[d];
P0=table[d];
delayms(2);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>