本帖最后由 jinglixixi 于 2023-1-19 17:01 编辑
在NBK-EBS002功能板上配有2个按键、2个LED和一个蜂鸣器,其电路如图1所示,利用它们与数码管及内部计时器相配合,可完成时钟计时及闹钟的提示功能。 图1 电路原理图
其实现该功能的主程序为: void main(void)
{
uint8_t f=1,n=0;
IcResourceInit();
Led_Init();
Shi=0;
Miao=0;
GPIO_WriteLow(GPIO4, GPIO_PIN_6);
GPIO_WriteLow(GPIO5, GPIO_PIN_5);
while(n<4)
{
if(GPIO_ReadPin(GPIO3, GPIO_PIN_6)==0) // k1
{
if(n==0) Fen=(Fen+1)%10;
if(n==1) Fen=(Fen+10)%60;
if(n==2) Miao=(Miao+1)%10;
if(n==3) Miao=(Miao+10)%60;
while(T0Flag1s==0);
while(GPIO_ReadPin(GPIO3, GPIO_PIN_6)==0);
}
if(GPIO_ReadPin(GPIO5, GPIO_PIN_4)==0) // k2
{
n=n+1;
while(T0Flag1s==0);
while(GPIO_ReadPin(GPIO5, GPIO_PIN_4)==0);
}
Led_Display( Miao%10 , Miao/10 , Fen%10 , Fen/10 , 0x04 );
}
while(1)
{
if(T0Flag1s)
{
T0Flag1s=0;
Miao++;
if(Miao==60)
{
Miao=0;
Fen++;
if(Fen==60)
{
Fen=0;
Shi++;
if(Shi==24)
{
Shi=0;
}
}
}
}
Led_Display( Miao%10 , Miao/10 , Fen%10 , Fen/10 , 0x04 );
if((Fen==12)&&(Miao>=30))
{
GPIO_TogglePin(GPIO4, GPIO_PIN_6);
GPIO_TogglePin(GPIO5, GPIO_PIN_5);
while(T0Flag1ms==0);
}
}
}
经程序的编译与下载,其运行效果如图2所示。 图2 运行效果
|