本帖最后由 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 运行效果
|