|
本帖最后由 exv 于 2014-12-6 12:58 编辑
看了论坛中几个有农历的时钟程序,无一例外使用查表法实现的,且只能查上下100年(因为DS1302只有上下一百年)。
看过莆田第十中学许剑伟老师的农历算法,可实现上下五千年农历的计算(含节气),
与主函数直接相关的C代码就有6000余行;
关于日月星辰轨道计算的代码有数十组,
每一组换算往往涉及几十个64位double。
不知道51单片机在 合理 配置的情况下,能否实现这样的计算?
如果不行,实现这一功能的最低配置是?
许剑伟老师的代码这儿就不贴了(估计也贴不下),百度下 莆田第十中学许剑伟老师 即可。
51hei人才济济,下面这段计算圆周率的代码大家应该非常熟悉,古人几十本书还没说清的一两行就搞定了:- long a=10000,b,c=2800,d,e,f[2801],g;
- void main(){for(;b-c;)f[b++]=a/5;for(;d=0,g=c*2;c-=14,cout<<e+d/a,e=d%a)for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);}
复制代码
古人制农历最多也就是算盘,难道 51单片机 真敌不过古人算盘?
另外,许老师的日历程序除了可定农历日期/节气,还可依此结合设定的经纬度换算出每天的日落日出,非常实用。
|
|