数码之家

 找回密码
 立即注册
搜索
查看: 1877|回复: 29

4.2寸黑白墨水屏日历时钟资料分享

[复制链接]
发表于 2024-12-5 17:19:04 | 显示全部楼层 |阅读模式
本帖最后由 慕名而来 于 2024-12-5 17:19 编辑

由于很长时间以来我的电脑打开、登陆本站非常困难,好久没有在这里发贴了,这两天发现情况好转的很多随时都可以点开网站了,高兴之余决定将做了很长时间的黑白墨水屏时钟的资料、代码整理出来分享给大家,有兴趣的可以看看有能力的也可以仿制一下,如果制作中有什么问题也可以跟帖发问若我见到回帖的话定会回复讨论。废话不说直接上料:
1.墨水屏:双SSD1608驱动的4.2寸黑白墨水屏电子价签,此前曾经发帖说过这个屏幕:
自己挖坑崴了自己的脚,记录点亮墨水屏的那点事https://www.mydigit.cn/forum.php?mod=viewthread&tid=422049&fromuid=1505079(出处: 数码之家)
2.MCU:STC8H8K64U-TSSOP20
3.RTC:RX8025T
4.供电:充电锂电池502540,外形40*25*4容量500mAh,整机每分钟局部刷屏一次,每30分钟全刷新一次,局刷很快无法测试、全刷新时约6S左右电流在10-18mA。
5.制作只是实现一个日历时钟的功能,使用小充电电池力求低功耗,最终实现的效果为无刷新操作时整机电流为4.5uA(由优利德万用表LNI-T  UT39E测试)
6.原理图与PCB图仅供参考,两者中的元件或有不对应之处,元件型号、参数与图符属性无关而以标注为准,原理图中的4个按键在PCB上由一个贴片五向开关替代,文件可以使用力创EDA打开编辑。
7.开源资料为wannenggong原创、使用时请注明作者和出处。

整机使用原机壳,PCB外形与原始电路板一致、组装时需要对后盖内部格栅进行修剪并开孔,完成后效果如下:


电路板展示:


原理图、PCB图文件:




补充内容 (2024-12-29 20:19):
源代码有修改,详见19楼!!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 4家元 +210 收起 理由
沙漠臭屁虫 + 30
bluenight + 30 謝謝分享
海上生明月丶 + 30 謝謝分享
家睦 + 120

查看全部打赏

发表于 2024-12-5 17:41:46 | 显示全部楼层
万能工你好
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-5 17:48:12 | 显示全部楼层
占楼!
此次制作的代码调试前后经历了大半年的时间,直到今天发稿之前还在修改代码添加了夜间固定显示一幅图片的功能,夜里10点至早晨5点之间的7个小时可以不刷屏,目的还是为了进一步省电,时钟只是显示时和分没有秒显示也没有秒闪烁玩过墨水屏的朋友都知道啥原因就不多说了,辅助显示内容有农历日期、二十四节气、数伏、数九时间显示,其中除了农历日期的相关代码外其他辅助显示代码都是我自己写的有兴趣的新手可以参考、高手可以指正,在写按键代码时才知道,墨水屏驱动中的按键代码相比LCD、TFT、OLED等屏而言是很麻烦的,对于我这个二把刀编程者而言前后用了一个多月才实现了基本功能,后来改成可以唤醒睡眠中的MCU的中断按键代码又用了很长时间,个中难处一言难尽,虽然在编程高手大神的眼中这些都不值一提,但对我而言真的挺难的,其实也正是因为这份困难感觉才使我在此前两年多的时间里一直在玩墨水屏,此后或许还要玩很长的时间,这或许就是所谓“爱好”吧、越难弄则兴趣越浓,其实无论费多大力气弄懂的东西也并非是有用途的技艺而最终的制成品也还是一个电子垃圾,但却总是不觉得自己傻,不知道是否还有如我之人。

打赏

参与人数 1家元 +30 收起 理由
springvirus + 30 历练的过程虽然艰辛,但坚持到底的话,一定.

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-5 17:50:28 | 显示全部楼层

你好,我打字慢了些就让你抢去一层,欢迎临帖,更欢迎发表见解讨论问题。
回复 支持 反对

使用道具 举报

发表于 2024-12-5 18:19:39 来自手机浏览器 | 显示全部楼层
做的真漂亮啊这壳打磨过了的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-5 18:24:13 | 显示全部楼层
本帖最后由 慕名而来 于 2024-12-5 18:32 编辑
玛德陛下 发表于 2024-12-5 18:19
做的真漂亮啊这壳打磨过了的?

是原来的壳子,只是把后盖内部碍事部位的加强栅格去除一点再开了些孔而已。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2024-12-5 21:42:13 | 显示全部楼层
PCB自己嘉立创打的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-6 08:55:56 | 显示全部楼层
soma 发表于 2024-12-5 21:42
PCB自己嘉立创打的?

是的,修修改改弄了好几次才感觉可以了。
回复 支持 反对

使用道具 举报

发表于 2024-12-6 09:12:16 | 显示全部楼层
好,要跟着学习学习
回复 支持 反对

使用道具 举报

发表于 2024-12-9 15:48:39 | 显示全部楼层
哈哈,还可以显示农历,不错
回复 支持 反对

使用道具 举报

发表于 2024-12-10 17:32:42 | 显示全部楼层
农历的数据,从哪里读取的
回复 支持 反对

使用道具 举报

发表于 2024-12-10 19:10:28 来自手机浏览器 | 显示全部楼层
老哥这个充电座子焊的挺个性的……很久以前也想玩玩这个的…后来发现咸鱼上的成品居然才20块钱左右…果断撸了个…然后手里的墨水屏就吃灰了…
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-11 15:37:04 | 显示全部楼层
本帖最后由 慕名而来 于 2024-12-11 15:39 编辑
触景情伤 发表于 2024-12-10 19:10
老哥这个充电座子焊的挺个性的……很久以前也想玩玩这个的…后来发现咸鱼上的成品居然才20块钱左右…果断撸 ...

也是买了好多这种mini座的小板子,以前都是直接用小板子这次就拆下来直接焊上了。就是想弄一个省电的屏幕来玩玩,有空闲时玩玩墨水屏也蛮有意思的,它的驱动和LCD类的屏幕还是有不少区别的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-11 16:01:34 | 显示全部楼层
springvirus 发表于 2024-12-10 17:32
农历的数据,从哪里读取的

如果完整的看过代码,或许就没问题了,不知道你的问题是否是:农历数据是怎样显示出来的?,如果是这样的话解释如下:
工程主函数中有以下代码:
////时钟运行///////////////////////////////////////////////////////////
        else if((n == 0) || (working_flag == 1)) //间隔1分钟刷新一次显示
        {
            working_flag = 0;      //清除标志避免循环执行此段程序
            ADC0_flag = 1;       //检测电量
            TR0 = 0;        //正常运行时关闭定时器T0
            if((mi == 0) || (mi == 30))       //每逢0分钟与30分钟全屏刷新
            {
                if(Clear_flag)
                {
                    Clear_flag = 0;     //清屏标志清零
                    EPD_WhiteScreen_White(); //间隔半小时全屏刷新一次
                }
                EPD_HW_Init();
                EPD_Part_Init();
                time_display_out(); //显示输出时间
                EPD_Part_Update();
            }
            else     //非0或30分钟正常走时显示且每分钟局刷一次
            {
                EPD_HW_Init();
                EPD_Part_Init(); //正常为局部显示时间、电量
                time_display_out();
                EPD_Part_Update();
                Clear_flag = 1;  //30分钟清屏一次的标志置位
            }
            EPD_sleep();   //刷新屏幕后屏幕休眠
            sleep_flag = 1;   //刷新屏幕后mcu休眠标志置位
        }
/////////////
代码中的时间显示输出函数time_display_out(); 代码如下:
void time_display_out()
{
    read_8025data();
    time_display_chs();//年、月、日、星期、时、分显示
    nl_text();//农历日期显示
    jie_qi();//二十四节气显示
    if((mo == 7) || (mo == 8))
    {
        shufu_dat();//数伏显示
    }
    if((mo == 12) || (mo == 1) || (mo == 2) || (mo == 3))
    {
        shu_jiu();//数九显示
    }
}
看看此函数的执行顺序就明白了。
回复 支持 反对

使用道具 举报

发表于 2024-12-11 17:04:02 | 显示全部楼层
慕名而来 发表于 2024-12-11 16:01
如果完整的看过代码,或许就没问题了,不知道你的问题是否是:农历数据是怎样显示出来的?,如果是这样的 ...

RX8025里面没有农历的原始数据寄存器,你是根据年月日,用公式换算的吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-11 17:13:43 | 显示全部楼层
springvirus 发表于 2024-12-11 17:04
RX8025里面没有农历的原始数据寄存器,你是根据年月日,用公式换算的吗

单片机万年历的农历代码是数据表+查表算法,我的工程里有代码你可以下载看看,大家用的都是多年前网上流行的代码、本帖最近还有朋友发帖修正数据表错误的帖子:1901年~2099年公历转农历程序
https://www.mydigit.cn/forum.php ... amp;fromuid=1505079
(出处: 数码之家)

打赏

参与人数 1家元 +30 收起 理由
springvirus + 30

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2024-12-12 08:39:05 来自手机浏览器 | 显示全部楼层
这个程序编写实属不易
回复 支持 反对

使用道具 举报

发表于 2024-12-12 16:23:07 | 显示全部楼层
挺好的,自己的爱好再怎么过程艰巨也开心!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-29 20:18:43 | 显示全部楼层
本帖最后由 慕名而来 于 2024-12-30 10:53 编辑

使用中发现农历显示错误,在此给出修改后的代码,有用到的可以看看,代码如下:
一、将原代码nong_li.c文件中数据表换成完整以下的完整数据表:
注:本数据表已经根据网友 @mmxx2015 分享的文章勘误,相关内容请移步原帖:1901年~2099年公历转农历程序
https://www.mydigit.cn/forum.php?mod=viewthread&tid=478126&fromuid=1505079
(出处: 数码之家)


以下是我的数据表:(在nong_li.c文件中)
  1. u8 code year_code[] =
  2. {
  3.    
  4.                 0x04, 0xAe, 0x53, //1901 0
  5.     0x0A, 0x57, 0x48, //1902 3
  6.     0x55, 0x26, 0xBd, //1903 6
  7.     0x0d, 0x26, 0x50, //1904 9
  8.     0x0d, 0x95, 0x44, //1905 12
  9.     0x46, 0xAA, 0xB9, //1906 15
  10.     0x05, 0x6A, 0x4d, //1907 18
  11.     0x09, 0xAd, 0x42, //1908 21
  12.     0x24, 0xAe, 0xB6, //1909
  13.     0x04, 0xAe, 0x4A, //1910
  14.     0x6A, 0x4d, 0xBe, //1911
  15.     0x0A, 0x4d, 0x52, //1912
  16.     0x0d, 0x25, 0x46, //1913
  17.     0x5d, 0x52, 0xBA, //1914
  18.     0x0B, 0x54, 0x4e, //1915
  19.     0x0d, 0x6A, 0x43, //1916
  20.     0x29, 0x6d, 0x37, //1917
  21.     0x09, 0x5B, 0x4B, //1918
  22.     0x74, 0x9B, 0xC1, //1919
  23.     0x04, 0x97, 0x54, //1920
  24.     0x0A, 0x4B, 0x48, //1921
  25.     0x5B, 0x25, 0xBC, //1922
  26.     0x06, 0xA5, 0x50, //1923
  27.     0x06, 0xd4, 0x45, //1924
  28.     0x4A, 0xdA, 0xB8, //1925
  29.     0x02, 0xB6, 0x4d, //1926
  30.     0x09, 0x57, 0x42, //1927
  31.     0x24, 0x97, 0xB7, //1928
  32.     0x04, 0x97, 0x4A, //1929
  33.     0x66, 0x4B, 0x3e, //1930
  34.     0x0d, 0x4A, 0x51, //1931
  35.     0x0e, 0xA5, 0x46, //1932
  36.     0x56, 0xd4, 0xBA, //1933
  37.     0x05, 0xAd, 0x4e, //1934
  38.     0x02, 0xB6, 0x44, //1935
  39.     0x39, 0x37, 0x38, //1936
  40.     0x09, 0x2e, 0x4B, //1937
  41.     0x7C, 0x96, 0xBf, //1938
  42.     0x0C, 0x95, 0x53, //1939
  43.     0x0d, 0x4A, 0x48, //1940
  44.     0x6d, 0xA5, 0x3B, //1941
  45.     0x0B, 0x55, 0x4f, //1942
  46.     0x05, 0x6A, 0x45, //1943
  47.     0x4A, 0xAd, 0xB9, //1944
  48.     0x02, 0x5d, 0x4d, //1945
  49.     0x09, 0x2d, 0x42, //1946
  50.     0x2C, 0x95, 0xB6, //1947
  51.     0x0A, 0x95, 0x4A, //1948
  52.     0x7B, 0x4A, 0xBd, //1949
  53.     0x06, 0xCA, 0x51, //1950
  54.     0x0B, 0x55, 0x46, //1951
  55.     0x55, 0x5A, 0xBB, //1952
  56.     0x04, 0xdA, 0x4e, //1953
  57.     0x0A, 0x5B, 0x43, //1954
  58.     0x35, 0x2B, 0xB8, //1955
  59.     0x05, 0x2B, 0x4C, //1956
  60.     0x8A, 0x95, 0x3f, //1957
  61.     0x0e, 0x95, 0x52, //1958
  62.     0x06, 0xAA, 0x48, //1959
  63.     0x6A, 0xd5, 0x3C, //1960
  64.     0x0A, 0xB5, 0x4f, //1961
  65.     0x04, 0xB6, 0x45, //1962
  66.     0x4A, 0x57, 0x39, //1963
  67.     0x0A, 0x57, 0x4d, //1964
  68.     0x05, 0x26, 0x42, //1965
  69.     0x3e, 0x93, 0x35, //1966
  70.     0x0d, 0x95, 0x49, //1967
  71.     0x75, 0xAA, 0xBe, //1968
  72.     0x05, 0x6A, 0x51, //1969
  73.     0x09, 0x6d, 0x46, //1970
  74.     0x54, 0xAe, 0xBB, //1971
  75.     0x04, 0xAd, 0x4f, //1972
  76.     0x0A, 0x4d, 0x43, //1973
  77.     0x4d, 0x26, 0xB7, //1974
  78.     0x0d, 0x25, 0x4B, //1975
  79.     0x8d, 0x52, 0xBf, //1976
  80.     0x0B, 0x54, 0x52, //1977
  81.     0x0B, 0x6A, 0x47, //1978
  82.     0x69, 0x6d, 0x3C, //1979
  83.     0x09, 0x5B, 0x50, //1980
  84.     0x04, 0x9B, 0x45, //1981
  85.     0x4A, 0x4B, 0xB9, //1982
  86.     0x0A, 0x4B, 0x4d, //1983
  87.     0xAB, 0x25, 0xC2, //1984
  88.     0x06, 0xA5, 0x54, //1985
  89.     0x06, 0xd4, 0x49, //1986
  90.     0x6A, 0xdA, 0x3d, //1987
  91.     0x0A, 0xB6, 0x51, //1988
  92.     0x09, 0x57, 0x46, //1989
  93.     0x54, 0x97, 0xBB, //1990
  94.     0x04, 0x97, 0x4f, //1991
  95.     0x06, 0x4B, 0x44, //1992
  96.     0x36, 0xA5, 0x37, //1993
  97.     0x0e, 0xA5, 0x4A, //1994
  98.     0x86, 0xB2, 0xBf, //1995
  99.     0x05, 0xAC, 0x53, //1996
  100.     0x0A, 0xB6, 0x47, //1997
  101.     0x59, 0x36, 0xBC, //1998
  102.     0x09, 0x2e, 0x50, //1999 294
  103.     0x0C, 0x96, 0x45, //2000 297

  104.     0x4d, 0x4A, 0xB8, //2001 300
  105.     0x0d, 0x4A, 0x4C, //2002
  106.     0x0d, 0xA5, 0x41, //2003
  107.     0x25, 0xAA, 0xB6, //2004
  108.     0x05, 0x6A, 0x49, //2005
  109.     0x7A, 0xAd, 0xBd, //2006
  110.     0x02, 0x5d, 0x52, //2007
  111.     0x09, 0x2d, 0x47, //2008
  112.     0x5C, 0x95, 0xBA, //2009 323
  113.     0x0A, 0x95, 0x4e, //2010 326
  114.     0x0B, 0x4A, 0x43, //2011
  115.     0x4B, 0x55, 0x37, //2012
  116.     0x0A, 0xd5, 0x4A, //2013
  117.     0x95, 0x5A, 0xBf, //2014
  118.     0x04, 0xBA, 0x53, //2015
  119.     0x0A, 0x5B, 0x48, //2016
  120.     0x65, 0x2B, 0xBC, //2017
  121.     0x05, 0x2B, 0x50, //2018
  122.     0x0A, 0x93, 0x45, //2019
  123.     0x47, 0x4A, 0xB9, //2020
  124.     0x06, 0xAA, 0x4C, //2021
  125.     0x0A, 0xd5, 0x41, //2022
  126.     0x24, 0xdA, 0xB6, //2023
  127.     0x04, 0xB6, 0x4A, //2024
  128.     0x6A, 0x57, 0x3d, //2025
  129.     0x0A, 0x4e, 0x51, //2026
  130.     0x0d, 0x26, 0x46, //2027
  131.     0x5e, 0x93, 0x3A, //2028
  132.     0x0d, 0x53, 0x4d, //2029
  133.     0x05, 0xAA, 0x43, //2030
  134.     0x36, 0xB5, 0x37, //2031
  135.     0x09, 0x6d, 0x4B, //2032
  136.     0xB4, 0xAe, 0xBf, //2033
  137.     0x04, 0xAd, 0x53, //2034
  138.     0x0A, 0x4d, 0x48, //2035
  139.     0x6d, 0x25, 0xBC, //2036
  140.     0x0d, 0x25, 0x4f, //2037
  141.     0x0d, 0x52, 0x44, //2038
  142.     0x5d, 0xAA, 0x38, //2039
  143.     0x0B, 0x5A, 0x4C, //2040
  144.     0x05, 0x6d, 0x41, //2041
  145.     0x24, 0xAd, 0xB6, //2042
  146.     0x04, 0x9B, 0x4A, //2043
  147.     0x7A, 0x4B, 0xBe, //2044
  148.     0x0A, 0x4B, 0x51, //2045
  149.     0x0A, 0xA5, 0x46, //2046
  150.     0x5B, 0x52, 0xBA, //2047
  151.     0x06, 0xd2, 0x4e, //2048
  152.     0x0A, 0xdA, 0x42, //2049
  153.     0x35, 0x5B, 0x37, //2050
  154.     0x09, 0x37, 0x4B, //2051
  155.     0x84, 0x97, 0xC1, //2052
  156.     0x04, 0x97, 0x53, //2053
  157.     0x06, 0x4B, 0x48, //2054
  158.     0x66, 0xA5, 0x3C, //2055
  159.     0x0e, 0xA5, 0x4f, //2056
  160.     0x06, 0xAA, 0x44, //2057
  161.     0x4A, 0xB6, 0x38, //2058
  162.     0x0A, 0xAe, 0x4C, //2059
  163.     0x09, 0x2e, 0x42, //2060
  164.     0x3C, 0x97, 0x35, //2061
  165.     0x0C, 0x96, 0x49, //2062
  166.     0x7d, 0x4A, 0xBd, //2063
  167.     0x0d, 0x4A, 0x51, //2064
  168.     0x0d, 0xA5, 0x45, //2065
  169.     0x55, 0xAA, 0xBA, //2066
  170.     0x05, 0x6A, 0x4e, //2067
  171.     0x0A, 0x6d, 0x43, //2068
  172.     0x45, 0x2e, 0xB7, //2069
  173.     0x05, 0x2d, 0x4B, //2070
  174.     0x8A, 0x95, 0xBf, //2071
  175.     0x0A, 0x95, 0x53, //2072
  176.     0x0B, 0x4A, 0x47, //2073
  177.     0x6B, 0x55, 0x3B, //2074
  178.     0x0A, 0xd5, 0x4f, //2075
  179.     0x05, 0x5A, 0x45, //2076
  180.     0x4A, 0x5d, 0x38, //2077
  181.     0x0A, 0x5B, 0x4C, //2078
  182.     0x05, 0x2B, 0x42, //2079
  183.     0x3A, 0x93, 0xB6, //2080
  184.     0x06, 0x93, 0x49, //2081
  185.     0x77, 0x29, 0xBd, //2082
  186.     0x06, 0xAA, 0x51, //2083
  187.     0x0A, 0xd5, 0x46, //2084
  188.     0x54, 0xdA, 0xBA, //2085
  189.     0x04, 0xB6, 0x4e, //2086
  190.     0x0A, 0x57, 0x43, //2087
  191.     0x45, 0x27, 0x38, //2088
  192.     0x0d, 0x16, 0x4A, //2089
  193.     0x8e, 0x93, 0x3e, //2090
  194.     0x0d, 0x52, 0x52, //2091
  195.     0x0d, 0xAA, 0x47, //2092
  196.     0x66, 0xB5, 0x3B, //2093
  197.     0x05, 0x6d, 0x4f, //2094
  198.     0x04, 0xAe, 0x45, //2095
  199.     0x4A, 0x4e, 0xB9, //2096
  200.     0x0A, 0x2d, 0x4C, //2097
  201.     0x0d, 0x15, 0x41, //2098
  202.     0x2d, 0x92, 0xB5, //2099
  203. };
复制代码


二、修改源代码文件hint_text.c中的函数void nl_text(void)中的第3行代码更换成以下代码:

Conversion(read_8025(0x06), read_8025(0x05), read_8025(0x04));


资料开放网盘分享:(已经修改了一些显示错误)
链接: https://pan.baidu.com/s/1J6ofoneeARKqmXRcaYduKQ
提取码: 33bw


回复 支持 反对

使用道具 举报

发表于 2025-1-1 11:01:35 | 显示全部楼层
慕名而来 发表于 2024-12-29 20:18
使用中发现农历显示错误,在此给出修改后的代码,有用到的可以看看,代码如下:
一、将原代码nong_li.c文件 ...

谢谢,特别是网盘公开资料!
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-4 04:32 , Processed in 0.187200 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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