[开发工具] 【新定义MCU开发板测评】时钟校正及蜂鸣器闹钟提示

[复制链接]
 楼主| jinglixixi 发表于 2023-1-19 16:59 | 显示全部楼层 |阅读模式
本帖最后由 jinglixixi 于 2023-1-19 17:01 编辑

NBK-EBS002功能板上配有2个按键、2LED和一个蜂鸣器,其电路如图1所示,利用它们与数码管及内部计时器相配合,可完成时钟计时及闹钟的提示功能。
1.jpg
图1 电路原理图


其实现该功能的主程序为:
  1. void main(void)
  2. {
  3.         uint8_t f=1,n=0;
  4.         IcResourceInit();
  5.         Led_Init();
  6.         Shi=0;
  7.         Miao=0;
  8.         GPIO_WriteLow(GPIO4, GPIO_PIN_6);
  9.         GPIO_WriteLow(GPIO5, GPIO_PIN_5);
  10.         while(n<4)
  11.         {
  12.                 if(GPIO_ReadPin(GPIO3, GPIO_PIN_6)==0)    // k1
  13.                 {
  14.                          if(n==0) Fen=(Fen+1)%10;
  15.                          if(n==1) Fen=(Fen+10)%60;
  16.                          if(n==2) Miao=(Miao+1)%10;
  17.                          if(n==3) Miao=(Miao+10)%60;
  18.                          while(T0Flag1s==0);
  19.                          while(GPIO_ReadPin(GPIO3, GPIO_PIN_6)==0);
  20.                  }
  21.                
  22.                 if(GPIO_ReadPin(GPIO5, GPIO_PIN_4)==0)   // k2
  23.                 {
  24.                           n=n+1;
  25.                           while(T0Flag1s==0);
  26.                           while(GPIO_ReadPin(GPIO5, GPIO_PIN_4)==0);
  27.                 }
  28.                 Led_Display( Miao%10 , Miao/10 , Fen%10 , Fen/10 , 0x04 );
  29.      }
  30.      while(1)
  31.      {
  32.         if(T0Flag1s)
  33.         {
  34.             T0Flag1s=0;
  35.             Miao++;
  36.             if(Miao==60)
  37.             {
  38.                 Miao=0;
  39.                 Fen++;
  40.                 if(Fen==60)
  41.                 {
  42.                     Fen=0;
  43.                     Shi++;
  44.                     if(Shi==24)
  45.                     {
  46.                         Shi=0;
  47.                     }
  48.                 }
  49.             }
  50.         }
  51.         Led_Display( Miao%10 , Miao/10 , Fen%10 , Fen/10 , 0x04 );
  52.         if((Fen==12)&&(Miao>=30))
  53.         {
  54.                  GPIO_TogglePin(GPIO4, GPIO_PIN_6);
  55.                  GPIO_TogglePin(GPIO5, GPIO_PIN_5);
  56.                  while(T0Flag1ms==0);
  57.         }
  58.     }
  59. }

经程序的编译与下载,其运行效果如图2所示。
2.jpg
图2 运行效果

Wordsworth 发表于 2023-4-21 12:44 | 显示全部楼层
用的定时器计时的吗
everyrobin 发表于 2023-5-10 21:23 | 显示全部楼层
使用的是内部rtc的吗              
 楼主| jinglixixi 发表于 2023-5-11 00:32 | 显示全部楼层
everyrobin 发表于 2023-5-10 21:23
使用的是内部rtc的吗

内部没有RTC,只有计时器。
wengh2016 发表于 2023-5-11 16:16 | 显示全部楼层
时钟的误差大约是多少的              
mollylawrence 发表于 2023-5-11 16:25 | 显示全部楼层
可以网络实现授时吗              
 楼主| jinglixixi 发表于 2023-5-12 08:11 | 显示全部楼层
mollylawrence 发表于 2023-5-11 16:25
可以网络实现授时吗

那就需要有网络透传之类的模块来辅助了。
earlmax 发表于 2023-6-6 17:39 | 显示全部楼层
如何实现网络校时?               
backlugin 发表于 2023-6-8 22:57 | 显示全部楼层
使用定时器或RTC模块等硬件资源,定期对单片机内部时钟进行校正。
albertaabbot 发表于 2023-6-10 11:09 | 显示全部楼层
时钟时间误差如何调整才最有效              
jackcat 发表于 2023-6-10 11:28 | 显示全部楼层
单片机数字时钟比实际时间的慢啊怎么办?
maqianqu 发表于 2023-6-10 12:31 | 显示全部楼层
时钟不准,可以调节吗?              
 楼主| jinglixixi 发表于 2023-6-11 08:41 | 显示全部楼层
maqianqu 发表于 2023-6-10 12:31
时钟不准,可以调节吗?

计时值可调整,至于精度就没办法了。
 楼主| jinglixixi 发表于 2023-6-11 08:43 | 显示全部楼层
jackcat 发表于 2023-6-10 11:28
单片机数字时钟比实际时间的慢啊怎么办?

适当地予以之前性修正吧
georgeliu2016 发表于 2023-7-1 14:04 | 显示全部楼层
误差应该挺大吧。
 楼主| jinglixixi 发表于 2023-7-1 18:12 | 显示全部楼层

也可外挂一个DS1302计时模块来解决
chenqianqian 发表于 2023-7-3 07:55 来自手机 | 显示全部楼层
没有RTC外设吗?
 楼主| jinglixixi 发表于 2023-7-3 09:37 | 显示全部楼层

应该没有
您需要登录后才可以回帖 登录 | 注册

本版积分规则

518

主题

2934

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部

518

主题

2934

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部