|
本帖最后由 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單片機 真敵不過古人算盤?
另外,許老師的日歷程序除了可定農歷日期/節氣,還可依此結合設定的經緯度換算出每天的日落日出,非常實用。
|
|