大神们,帮帮忙呀
数码管计数0-59,计数到59的时候,蜂鸣器鸣叫一次,可以利用按键进行调节第一次按下k1数码管停止计时,按下k2个位加,按下k3,个位减,第二次按下k1,按下k2十位加,按下k3十位减,第三次按下k1,从定时的数字继续向下走。
这个应该怎么做鸭
我自己做的有很大的问题,麻烦各位大神教教我
刚刚开始自己学单片机
只学到动态数码管
#include "reg52.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
u8 code smgduan={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
u8 code white={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d};
u8i,n,j;
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;
void delay(u16 i)
{
while(i--);
}
/*
void keypros()
{
if(k1==0)
{
delay(1000);
if(k1==0)
{
}
}
}
*/
void DigDisplay()
{
i++;
delay(50000);
P0=smgduan;
if(i==10)
i=0;
}
void DigDisplay_1()
{
P0=white;
if(i==9)
delay(5000);
j++;
P0=white;
if(j==6)
j=0;
}
void main()
{
while(1)
{
for(n=0;n<2;n++)
{
switch(n)
{
case(0):
LSA=0,LSB=0,LSC=0;
DigDisplay();
break;
case(1):
LSA=1,LSB=0,LSC=0;
DigDisplay_1();
break;
}
delay(100);
}
}
}
:'(:'(:'(:'(:'(:'( 设置一个标志,比如 mode,mode=0时正常走时,每按K1一下就令 mode=(mode+1)%3,那么它就会在0,1,2范围内不断变换了。mode=1时,K2、K3只能改变个位数,mode=2时K2、K3只能改变十位数就行了。 神奇 发表于 2019-8-22 13:31
设置一个标志,比如 mode,mode=0时正常走时,每按K1一下就令 mode=(mode+1)%3,那么它就会在0,1,2范围内 ...
请问我这个0~59的循环有那些问题?:P 你的按键函数还没写好,定时器中断也没有,哪里来的0-59循环 ...
页:
[1]