一個基于51單片機,DS1302,LCD1602的萬年歷程序。
設置日期的時候,程序基于蔡勒(Zeller)公式會自動計算星期,包含了BCD碼的處理轉換。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機源程序如下:
- uchar calc_week(uchar y,uchar m,uchar d)
- {
- uint temp = 0,m_tmp=0;
- uchar week_temp;
- y = bcd_to_dec(y);
- m = bcd_to_dec(m);
- d = bcd_to_dec(d);
-
- if(m > 2)
- {
- m_tmp = m+1;
- temp = 26*m_tmp;
- temp /= 10;
- week_temp = (y+(y/4)+(temp&0xff)+d-36)%7;
- }
- else
- {
- m_tmp = m+13;
- temp = 26*m_tmp;
- temp /= 10;
- week_temp = (y - 1+((y - 1)/4)+(temp&0xff)+d-36)%7;
- }
- return week_temp;
- }
復制代碼 全部資料51hei下載地址:
Calendar.zip
(125.7 KB, 下載次數: 673)
2019-5-18 16:11 上傳
點擊文件名下載附件
源碼和仿真
|