【外设移植】Ai-WB2+TM1637 NTP时钟

[复制链接]
查看229 | 回复3 | 2024-9-10 18:09:07 | 显示全部楼层 |阅读模式
本帖最后由 King6688 于 2024-9-10 18:17 编辑

  TM1637 是由天微电子开发的一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。本产品性能优良,质量可靠。主要应用于电磁炉、微波炉及小家电产品的显示屏驱动。采用DIP/SOP20的封装形式。

功能特点

采用功率CMOS 工艺

显示模式(8 段×6 位),支持共阳数码管输出

键扫描(8×2bit),增强型抗干扰按键识别电路

辉度调节电路(占空比 8 级可调)

两线串行接口(CLK,DIO)

振荡方式:内置RC 振荡(450KHz+5%)

内置上电复位电路

内置自动消隐电路

封装形式:DIP20/SOP20

说明:
  本次移植参考了WangChong的论坛帖子进行更改,对原有的部分命名做了规范化,参考帖子地址:【外设移植】TM1637 + M61-32S

使用:
  本次我使用的是AI-WB2-32S开发板,自己画了一个板子整合TM1637和舵机、BLE(舵机、BLE的将会在另外2篇帖子介绍),对应的接线方式如下:
  接线:[td]
AI-WB2-32S开发板TM1637
5V VCC
GND GND
IO11 CLK
IO5 DIO

移植过程:
  根据参考帖子以及TM1637的规格书进行更改,时序图王哥已经贴了,我就不重复发了,想了解的可以去看王哥的帖子。TM1637支持5V电压,原贴用是的AI-M61-32S 3V3的供电,本次我们需要更改为AI-WB2支持的方式并用5V供电,主要是更改io以及时间的设置,本来移植到这步已经完成了园长的要求了,但是!我想着既然都用1637了,干脆直接改一个能与NTP服务器同步时间的时钟出来吧,于是,我又整合了wifi和ntp的部分,然后根据算法处理第1~4位和时间点、日期的显示,显示时间5S,日期显示2S,关键代码如下:
  1. void sntp_task()
  2. {
  3.     tcpip_callback(_startup_sntp, NULL);

  4.     vTaskDelay(5000 / portTICK_PERIOD_MS);

  5.     while(1)
  6.     {
  7.             for(int i=0;i<5;i++){
  8.                         uint32_t seconds = 0, frags = 0;
  9.                         sntp_get_time(&seconds, &frags);
  10.                         blog_info("[NTP] time is %lu:%lu\r\n", seconds, frags);
  11.                         utils_time_date_from_epoch(seconds+UTC*60*60, &date);
  12.                         blog_info("Date & time is: %u-%02u-%02u %02u:%02u:%02u (Day %u of week, Day %u of Year)\r\n",
  13.                                 date.ntp_year,
  14.                                 date.ntp_month,
  15.                                 date.ntp_date,
  16.                                 date.ntp_hour,
  17.                                 date.ntp_minute,
  18.                                 date.ntp_second,
  19.                                 date.ntp_week_day,
  20.                                 date.day_of_year
  21.                         );
  22.                         uint32_t hour = date.ntp_hour;
  23.                         uint32_t minute = date.ntp_minute;
  24.                         uint32_t second = date.ntp_second;

  25.                         //tm1637 显示时间
  26.                         int digit4 = 0;
  27.                         int digit3 = 0;
  28.                         int digit2 = 0;
  29.                         int digit1 = 0;

  30.                         digit4 = floor(hour/10);
  31.                         digit3 = floor(hour%10);
  32.                         digit2 = floor(minute/10);
  33.                         digit1 = floor(minute%10);

  34.                         sendDisplayData(digit4, digit3, digit2, digit1, dotFlag);

  35.                         vTaskDelay(1000 / portTICK_RATE_MS);

  36.                         dotFlag=!dotFlag;
  37.             }
  38.                 //tm1637
  39.                 //显示日期
  40.                 int digit4 = 0;
  41.                 int digit3 = 0;
  42.                 int digit2 = 0;
  43.                 int digit1 = 0;
  44.         digit4 = floor(date.ntp_month/10);
  45.         digit3 = floor(date.ntp_month%10);
  46.         digit2 = floor(date.ntp_date/10);
  47.         digit1 = floor(date.ntp_date%10);

  48.         dotFlag = 0;

  49.         sendDisplayData(digit4, digit3, digit2, digit1, dotFlag);

  50.         vTaskDelay(2000 / portTICK_RATE_MS);
  51.     }
  52. }
复制代码
烧录验证效果:
  由于画的板子没有注意TM1637与AI-WB2-32S的排母的间距,所以焊接的时候只能把1637的排母掰弯了一些,各位大佬看看就好~~
  效果图:
      

AI-WB2-32S

AI-WB2-32S

      

TM1637

TM1637




附上打包的代码:
TM1637OnlineClock.rar (7.06 KB, 下载次数: 3)

本帖被以下淘专辑推荐:

回复

使用道具 举报

iiv | 2024-9-10 20:54:46 | 显示全部楼层
优秀!
回复

使用道具 举报

爱笑 | 2024-9-11 08:41:27 | 显示全部楼层
不错不错!
用心做好保姆工作
回复

使用道具 举报

IBelieve | 2024-9-12 10:35:28 | 显示全部楼层
优秀!
回复

使用道具 举报

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

本版积分规则