找回密码
 立即注册
楼主: cha***

从零开始做一个数码管时钟-开天斧,程序开源 | 已完结

[复制链接]
  • TA的每日心情
    开心
    昨天 07:27
  • 签到天数: 85 天

    [LV.6]常住居民II

    13

    主题

    199

    回帖

    527

    积分

    高级会员

    积分
    527
     楼主| 发表于 2024-1-27 23:32:33 | 显示全部楼层
    修改后效果如视频,大量修改时间起来方便多了!

    VID_20240127_224033~1.mp4

    1.62 MB, 下载次数: 10

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:27
  • 签到天数: 85 天

    [LV.6]常住居民II

    13

    主题

    199

    回帖

    527

    积分

    高级会员

    积分
    527
     楼主| 发表于 2024-1-27 23:35:28 | 显示全部楼层
    功能代码及原理图,芯片为STC-8H8K64U-TSSOP20:

    MyClock.zip

    89.26 KB, 下载次数: 24

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    昨天 00:18
  • 签到天数: 158 天

    [LV.7]常住居民III

    10

    主题

    290

    回帖

    1052

    积分

    金牌会员

    积分
    1052
    发表于 2024-1-28 01:06:05 | 显示全部楼层
    你这小工具准备的真多哈 哈哈
    自信就会温和,温和就会坚定!
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 06:00
  • 签到天数: 175 天

    [LV.7]常住居民III

    17

    主题

    283

    回帖

    470

    积分

    中级会员

    积分
    470
    发表于 2024-1-28 05:37:39 来自手机 | 显示全部楼层
    步骤清晰,内容详细,努力学习
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:27
  • 签到天数: 85 天

    [LV.6]常住居民II

    13

    主题

    199

    回帖

    527

    积分

    高级会员

    积分
    527
     楼主| 发表于 2024-1-28 22:14:05 | 显示全部楼层
    嵌入式之路 发表于 2024-1-28 01:06
    你这小工具准备的真多哈 哈哈

    开发板收到后,在淘宝从华强北买了一堆的小零件,自学没办法,什么都缺,想找个匹配的电阻都没有,我目前电阻只有一包以前买的100Ω的
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:27
  • 签到天数: 85 天

    [LV.6]常住居民II

    13

    主题

    199

    回帖

    527

    积分

    高级会员

    积分
    527
     楼主| 发表于 2024-1-28 22:15:08 | 显示全部楼层
    今天实现了闹钟的功能,可以查看闹钟时间,设置闹钟,并且在到对应的时间后进行提示(因为没有蜂鸣器,所以改为了屏幕闪烁来进行提示)
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:27
  • 签到天数: 85 天

    [LV.6]常住居民II

    13

    主题

    199

    回帖

    527

    积分

    高级会员

    积分
    527
     楼主| 发表于 2024-1-28 22:16:56 | 显示全部楼层
    现在mode.h中添加4种模式:
    Mode_Clock 为显示当前的闹钟时间
    Mode_Clock_Change_Minute 为修改闹钟分钟模式
    Mode_Clock_Change_Hour 为修改闹钟小时模式
    Mode_Clock_Alert 为闹钟时间到了的屏幕闪烁模式
    1. #define Mode_Clock 4
    2. #define Mode_Clock_Change_Minute 5
    3. #define Mode_Clock_Change_Hour 6
    4. #define Mode_Clock_Alert 7
    复制代码
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:27
  • 签到天数: 85 天

    [LV.6]常住居民II

    13

    主题

    199

    回帖

    527

    积分

    高级会员

    积分
    527
     楼主| 发表于 2024-1-28 22:20:20 | 显示全部楼层
    在SetSeg4Bit函数中添加对应模式的显示逻辑
    Mode_Clock 模式显示闹钟,且不显示冒号(和时间模式进行区分)
    Mode_Clock_Change_Minute 模式显示闹钟,且分钟闪烁
    Mode_Clock_Change_Hour 模式显示闹钟,且小时闪烁
    Mode_Clock_Alert 显示当前时间,且小时分钟都闪烁
    1. void SetSeg4Bit()
    2. {
    3.     switch(mode)
    4.     {
    5.     case Mode_Normal:
    6.         SetSeg4BitData_1(Mode_Show_1,is_show_dot);
    7.         SetSeg4BitData_2(Mode_Show_2);
    8.         break;
    9.     case Mode_Change_Minute:
    10.         SetSeg4BitData_1(Mode_Show_1,1);
    11.         if(is_show_dot)
    12.             SetSeg4BitData_2(Mode_Show_2);
    13.         else
    14.             SetSeg4BitData_2(SEG_NULL);
    15.         break;
    16.     case Mode_Change_Hour:
    17.         if(is_show_dot)
    18.             SetSeg4BitData_1(Mode_Show_1,1);
    19.         else
    20.             SetSeg4BitData_1(SEG_NULL,1);
    21.         SetSeg4BitData_2(Mode_Show_2);
    22.         break;
    23.     case Mode_Clock:
    24.         SetSeg4BitData_1(clock_hour,0);
    25.         SetSeg4BitData_2(clock_minute);
    26.         break;
    27.     case Mode_Clock_Change_Minute:
    28.         SetSeg4BitData_1(clock_hour,0);
    29.         if(is_show_dot)
    30.             SetSeg4BitData_2(clock_minute);
    31.         else
    32.             SetSeg4BitData_2(SEG_NULL);
    33.         break;
    34.     case Mode_Clock_Change_Hour:
    35.         if(is_show_dot)
    36.             SetSeg4BitData_1(clock_hour,0);
    37.         else
    38.             SetSeg4BitData_1(SEG_NULL,0);
    39.         SetSeg4BitData_2(clock_minute);
    40.         break;
    41.     case Mode_Clock_Alert:
    42.         if(is_show_dot)
    43.         {
    44.             SetSeg4BitData_1(Mode_Show_1,1);
    45.             SetSeg4BitData_2(Mode_Show_2);
    46.         }
    47.         else
    48.         {
    49.             SetSeg4BitData_1(SEG_NULL,0);
    50.             SetSeg4BitData_2(SEG_NULL);
    51.         }
    52.         break;
    53.     }
    54. }
    复制代码
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:27
  • 签到天数: 85 天

    [LV.6]常住居民II

    13

    主题

    199

    回帖

    527

    积分

    高级会员

    积分
    527
     楼主| 发表于 2024-1-28 22:22:05 | 显示全部楼层
    在clock.h中添加clock_minute和clock_hour的变量定义
    1. uchar clock_minute = 0,clock_hour=0;
    复制代码
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:27
  • 签到天数: 85 天

    [LV.6]常住居民II

    13

    主题

    199

    回帖

    527

    积分

    高级会员

    积分
    527
     楼主| 发表于 2024-1-28 22:25:17 | 显示全部楼层
    按钮+的按键响应函数中添加对新增的4种模式的处理:
    Mode_Clock_Alert 闹钟时间到时,按键关闭闹钟
    Mode_Clock 显示闹钟模式时,按键无响应
    Mode_Clock_Change_Minute,Mode_Clock_Change_Hour 修改闹钟小时和分钟时,按键增加闹钟的小时和分钟,并且判断溢出后变0
    1. uchar Btn_Up_Pressed()
    2. {
    3.     switch(mode)
    4.     {
    5.     case Mode_Clock_Alert:
    6.         mode = Mode_Normal;
    7.             break;
    8.     case Mode_Normal:
    9.     case Mode_Clock:
    10.    
    11.         return 0;
    12.     case Mode_Change_Minute:
    13.         if(minute>=59)
    14.             minute = 0;
    15.         else
    16.             ++minute;
    17.         break;
    18.     case Mode_Change_Hour:
    19.         if(hour>=23)
    20.             hour = 0;
    21.         else
    22.             ++hour;
    23.         break;
    24.     case Mode_Clock_Change_Minute:
    25.         if(clock_minute>=59)
    26.             clock_minute = 0;
    27.         else
    28.             ++clock_minute;
    29.         break;
    30.     case Mode_Clock_Change_Hour:
    31.         if(clock_hour>=23)
    32.             clock_hour = 0;
    33.         else
    34.             ++clock_hour;
    35.         break;
    36.     }
    37.     second = 0;
    38.     return 1;
    39. }
    复制代码
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-20 01:46 , Processed in 0.073855 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表