单片机显示时间,可以停止,修改分和时

2019-04-15 17:09发布

main.c #include "bsp.h"


void main(void) 
{
bsp_init();
// Led_On();
while(1)
{

key_scan();
key_scan2();
key_scan3();



time_sem();      //得到时,分,秒


Set_ShowValue();   //显示时分秒


seg7_show_CC();    //与数码管显示连接起来
//seg7_show_CA();
//delay_ms(251);
delay_ms(2);    //进行延时

    }
}


bsp_seg7.c void seg7_show_CC(void)
{
static unsigned char j = 0;

SEGPORT = 0x00; //消影
DUAN = 1;
DUAN = 0;


DUAN = 1;
SEGPORT = CLOCK[j];
DUAN = 0;

SEGPORT = TABLEWEI[j];
WEI = 1;
WEI = 0;


j++;
if(j == 8) j=0;

}




void Set_ShowValue(void)
{
yy++;
CLOCK[7] = TABLECC[sec%10];//秒
CLOCK[6] = TABLECC[sec/10];


if (keyvalue == 2)
CLOCK[4] = TABLECC[min%10] + 0x80;
else 
CLOCK[4] = TABLECC[min%10];
CLOCK[3] = TABLECC[min/10];
if (yy < 375)
{
CLOCK[2] = 0x40;
CLOCK[5] = 0X40;
}
else 
{
CLOCK[2] = 0x00;
CLOCK[5] = 0X00;
}
if (yy == 750)
 yy = 0;
if (keyvalue == 3)
CLOCK[1] = TABLECC[hour%10] + 0x80;
else
CLOCK[1] = TABLECC[hour%10] ;
CLOCK[0] = TABLECC[hour/10];


}

bsp_delay.c #include "bsp.h"


unsigned char hour=16,min=30,sec=0;
unsigned int tick;




sbit LED=P1^0;


void delay_ms(unsigned char t)
{
  while(--t)
{
delay_us(245);
delay_us(245);
}
}




void delay_us(unsigned char t)
{
while(--t);


}


void time_sem(void)
{
if(keyvalue == 0)
{
tick++;
}
if(tick == 750)
{
//LED = ~LED;
  sec++;
tick = 0;
}
if(sec == 60)
{
min++;
sec = 0;
}
if(min == 60)
{
hour++;
min = 0;
}
if(hour == 24)
hour = 0;


if (keyvalue == 2)
{
if (keyvalue2 == 1)
{
min++;
if (min == 60)
min = 0;
keyvalue2 = 0;
   }
}
if (keyvalue == 3)
{
if (keyvalue3 == 1)
{
hour++;
if (hour == 24)
hour = 0;
keyvalue3 = 0;
   }
}


}

bsp_key.c #include "bsp.h"
 
sbit S2=P3^0; //增加计数
sbit S3=P3^1; //减少计数
sbit S4=P3^2;
 unsigned char keyvalue = 0,keyvalue2 = 0,keyvalue3 = 0;


void key_scan(void)
{
if(S2 == 0)
{
if(keyvalue <= 3)
keyvalue++;
if(keyvalue == 4)
keyvalue = 0;


while(!S2);  //等待按键释放
}
}


 


void key_scan2(void)
{
if(S3 == 0)
{

keyvalue2 = 1;


while(!S3);  //等待按键释放
}
}


void key_scan3(void)
{
if(S4 == 0)
{
keyvalue3 =1;
while(!S4);  //等待按键释放
}
}