找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: lids
打印 上一主题 下一主题
收起左侧

OLED12864+DS3231的万年历制作,带农历,大字体(单片机源码+实物)

  [复制链接]
121#
ID:997051 发表于 2021-12-26 14:13 | 只看该作者
农历的部分,在那里,
回复

使用道具 举报

122#
ID:997051 发表于 2021-12-28 00:15 | 只看该作者
OLED 万年历 (显示正负温度版).rar 已下载完毕,内容完美,程序已运行,很好,谢谢!
回复

使用道具 举报

123#
ID:894228 发表于 2021-12-29 11:37 | 只看该作者
有开源还是不错的,谢谢了
回复

使用道具 举报

124#
ID:894228 发表于 2021-12-29 11:39 | 只看该作者
不知道自己能不能做出来
回复

使用道具 举报

125#
ID:229641 发表于 2022-2-15 21:49 来自手机 | 只看该作者
成功了,89c52调整过延时函数后下载程序的时候改成双倍速度按键还是反应很慢…
回复

使用道具 举报

126#
ID:577622 发表于 2022-2-16 08:19 | 只看该作者
不错的例程,pic能移植一份吗?
回复

使用道具 举报

127#
ID:242298 发表于 2022-11-26 10:28 | 只看该作者
我用STC8G1K的单片机运行就点不亮OLED,单片机的频率和程序频率都调整为6.000MHZ了,还是不能运行。。。求助
回复

使用道具 举报

128#
ID:140489 发表于 2022-11-28 09:21 | 只看该作者
leezll 发表于 2022-11-26 10:28
我用STC8G1K的单片机运行就点不亮OLED,单片机的频率和程序频率都调整为6.000MHZ了,还是不能运行。。。求 ...

STC8G1K单片机要设置端口的模式才行的
回复

使用道具 举报

129#
ID:140489 发表于 2022-11-28 09:29 | 只看该作者
leezll 发表于 2022-11-26 10:28
我用STC8G1K的单片机运行就点不亮OLED,单片机的频率和程序频率都调整为6.000MHZ了,还是不能运行。。。求 ...

仔细看下STC8G的规格书

51hei截图20221128092655.png (34.79 KB, 下载次数: 116)

51hei截图20221128092655.png
回复

使用道具 举报

130#
ID:922242 发表于 2022-12-19 20:33 | 只看该作者
这个号,刚好可以练练手
回复

使用道具 举报

131#
ID:46220 发表于 2022-12-19 21:17 | 只看该作者
感谢分享,仿制已经成功,稍微做了点修改,加入了生肖显示,把星期的数据也自动换算了,但是这两块屏幕都是新的,为什么在边上会有1个竖条的断续亮点呢?开机的时候有时候多有时候少,搞不懂,难道两块屏幕都是次品吗,便宜是便宜的,1个8块1个17块,有懂得高手请指点指点

51hei图片_20221219211225.jpg (100.22 KB, 下载次数: 107)

51hei图片_20221219211225.jpg

51hei图片_20221219211217.jpg (112.56 KB, 下载次数: 99)

51hei图片_20221219211217.jpg

51hei图片_20221219211210.jpg (105.99 KB, 下载次数: 100)

51hei图片_20221219211210.jpg

51hei图片_20221219211203.jpg (115.42 KB, 下载次数: 99)

51hei图片_20221219211203.jpg
回复

使用道具 举报

132#
ID:88256 发表于 2022-12-25 18:18 | 只看该作者
我参考这个界面用ESP-12F模块联网,用ARDUINO拼凑了一个程序,但是农历迟了一天,不明白是怎么计算的不好查错,特意百度了一下,找到下面的介绍,特意贴出来大家一起学习。


公历是全世界通用的历法以地球绕太阳的一周为一年一年365 天分为12 个月1 3 5 7 8 10 12 月为
31 天2 月为28 天其余月份为30 天事实上地球绕太阳一周共365 天5 小时48 分46 秒比公历一年多出5 小时48
分46 秒为使年误差不累积公历年用闰年法来消除年误差 由于每年多出5 小时48 分46 秒每4 年累计多出23
小时15 分4 秒接近1 天天文学家就规定每4 年有一个闰年把2 月由28 天改为29 天凡是公历年代能被4 整除
的那一年就是闰年但是这样一来每4 年又少了44 分56 秒为了更准确地计时天文学家又规定凡能被100 整除
的年份只有能被400 整除才是闰年即每400 年要减掉3 个闰年经过这样处理后实际上每400 年的误差只有2 小时
53 分20 秒已相当准确了
农历与公历不同农历把月亮绕地球一周作为一月因为月亮绕地球一周不是一整天所以农历把月分为大月和小
月大月30 天小月29 天通过设置大小月使农历日始终与月亮与地球的位置相对应为了使农历的年份与公历年
相对应农历通过设置闰月的办法使它的平均年长度与公历年相等农历是中国传统文化的代表之一并与农业生产联
系密切中国人民特别是广大农民十分熟悉并喜爱农历
公历与农历是我国目前并存的两种历法各有其固有的规律农历与月球的运行相对应其影响因素多它的大小
月和闰月与天体运行有关计算十分复杂且每年都不一致因此要用单片机实现公历与农历的转换用查表法是最方
便实用的办法
51 系列单片机因其在功能上能满足大部份对速度要求不高的应用场合的要求且价格低廉开发工具普及程度高
是目前应用最多的单片机之一本文介绍一种用51 单片机实现从1901 年到2099 年2199 年公历日到农历日及星期
的转换方法并向读者提供完整的51C程序
二 基本原理
实现公历与农历的转换一般采用查表法按日查表是速度最快的方法但51 单片机寻址能力有限不可能采用
按日查表的方法除按日查外我们可以通过按月查表和按年查表的方法再通过适当的计算来确定公历日所对应的
农历日期本文采用的是按年查表法最大限度地减少表格所占的程序空间
对于农历月来说大月为30 天小月为29 天这是固定不变的这样我们就可用1 个BIT 位来表示大小月信
息农历一年如有闰月为13 个月否则是12 个月所以一年需要用13 个BIT 闰月在农历年中所在的月份并不固定
大部分闰月分布在农历2 8 月但也有少量年份在9 月以后所以要表示闰月的信息至少要4BIT 在这里我们用4BIT
的值来表示闰月的月份值为0 表示本年没有闰月有了以上信息还不足以判断公历日对应的农历日因为还需要一
个参照日我们选用农历正月初一所对应的公历日期作参照日公历日最大为31 日需要5BIT 来表示而春节所在的
月份不是1 月就是2 月用1BIT 就够了考虑到表达方便我们用2BIT 来表示春节月2BIT 的值直接表示月份这
样一年的农历信息只用3 个字节就全部包括了
计算公历日对应的农历日期的方法先计算出公历日离当年元旦的天数然后查表取得当年的春节日期计算出春
节离元旦的天数二者相减即可算出公历日离春节的天数以后只要根据大小月和闰月信息减一月天数调整一月农
历月份即可推算出公历日所对应的农历日期如公历日不到春节日期农历年要比公历年小一年农历大小月取前一
年的信息农历月从12 月向前推算
公历日是非常有规律的所以公历日所对应的星期天可以通过计算直接得到理论上公元0 年1 月1 日为星期日
只要求得公历日离公元0 年1 月1 日的日子数除7 后的余数就是星期天为了简化计算采用月校正法根据公历的
年月日可直接计算出星期天其算法是日期年份所过闰年数月校正数之和除7 的余数就是星期天但如果是在
闰年又不到3 月份上述之和要减一天再除7 其1 12 月的校正数据为6 2 2 5 0 3 5 1 4 6 2 4 在
本程序中采用1 个字节表示年份闰年数也只计算1900 年以后的闰年数所以实际校正数据也和上述数据不同

公历年对应的农历数据,每年三字节,
格式第一字节BIT7-4 位表示闰月月份,值为0 为无闰月,BIT3-0 对应农历第1-4 月的大小
第二字节BIT7-0 对应农历第5-12 月大小,第三字节BIT7 表示农历第13 个月大小
月份对应的位为1 表示本农历月大(30 天),为0 表示小(29 天)
第三字节BIT6-5 表示春节的公历月份,BIT4-0 表示春节的公历日期
回复

使用道具 举报

133#
ID:88256 发表于 2022-12-25 23:34 | 只看该作者
经过对比多个程序(几乎都是抄来抄去的),发现有个程序在公历转农历上有标注输入输出参数都是BCD码(这个程序之前也是不对),而另外一个程序起始有BCD到hex的处理,但是因为定位数据表地址的语句放置在这之后,所以运行起来也是不对,把该行往前移,就好了,输出也不需要BCD码的转换。
回复

使用道具 举报

134#
ID:46220 发表于 2023-1-2 10:54 | 只看该作者
调整了一下偏移量,两个屏幕都可以正常显示了

51hei图片_20230102105210.jpg (122.41 KB, 下载次数: 100)

51hei图片_20230102105210.jpg

51hei图片_20230102105202.jpg (120.71 KB, 下载次数: 99)

51hei图片_20230102105202.jpg
回复

使用道具 举报

135#
ID:1059989 发表于 2023-1-10 21:25 | 只看该作者
感谢分享。准备用大点的屏幕做一个。单片机用不带AD的就可以了。
回复

使用道具 举报

136#
ID:55479 发表于 2023-1-11 21:41 | 只看该作者
楼主用的是什么型号的单片机?
回复

使用道具 举报

137#
ID:1059989 发表于 2023-1-20 12:12 | 只看该作者
我仿制了一个 KS0108 12864+DS3231的万年历制作,单片机用STC89C52,12864是KS0108的,感觉很好。感谢楼主分享!
回复

使用道具 举报

138#
ID:34298 发表于 2023-7-14 21:50 | 只看该作者
都别用OLED屏,一年就衰减了 亮度也暗了 我的就是 还是LCD屏耐用 屏幕也大
回复

使用道具 举报

139#
ID:282557 发表于 2023-7-29 13:47 | 只看该作者
做了一个,没有你的好看,看看你的程序,学习一下
回复

使用道具 举报

140#
ID:1091136 发表于 2023-9-8 08:14 | 只看该作者
我这提示缺少51.h文件,不知道怎么回事
回复

使用道具 举报

141#
ID:1040201 发表于 2023-9-8 16:21 | 只看该作者
灰常漂亮,感谢分享
回复

使用道具 举报

142#
ID:929517 发表于 2023-9-9 16:53 来自手机 | 只看该作者
请问群主 3231模块哪家店买的,怕买到假的,精度不行
回复

使用道具 举报

143#
ID:611626 发表于 2023-10-6 19:53 | 只看该作者
仿真不显示,好像I2C驱动不行,换驱动才能显示和计时
回复

使用道具 举报

144#
ID:965040 发表于 2024-1-9 10:21 | 只看该作者
不错,有空自己照着做一个
回复

使用道具 举报

145#
ID:1110897 发表于 2024-3-8 11:19 | 只看该作者
代码非常详细,直接编译通过,感谢分享。
回复

使用道具 举报

146#
ID:1112603 发表于 2024-3-29 19:53 | 只看该作者
转换成STC8G1K单片机用不知可行不,下载看看,谢谢分享!
回复

使用道具 举报

147#
ID:884031 发表于 2024-4-1 14:47 | 只看该作者
打算用51改一下,谢谢楼主无私提供
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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