找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4271|回復: 2
打印 上一主題 下一主題
收起左側

紅外遙控萬年歷源程序 帶鬧鐘 LCD12864顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:140725 發(fā)表于 2017-3-7 01:03 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
這是一個帶紅外遙控控制的單片機萬年歷源程序,還有鬧鐘的功能:


部分單片機源碼:
  1. #ifndef __displaytime_H__
  2. #define __displaytime_H__
  3. #include "nongli.h"
  4. #include "zk.h"
  5. #include "bell.h"
  6. #include "LCD12864.h"

  7. uchar sec,min,hour,day,date,month,year,week,day_moon;
  8. uchar sel,dd,mo,yy;

  9. /*顯示年、月、日、星期-------------------------------------------------------*/
  10. void displaydate(void)
  11. {
  12.         write_com(0x30);
  13.         write_com(0x06);

  14. /*往液晶屏填寫 年 數(shù)據(jù)-------------------------------------------*/
  15.         lcm_w_test(0,0x80);
  16.         lcm_w_word("20");       
  17.         year=read_clock(0x8d);//調用1302時鐘數(shù)據(jù)中的年數(shù)據(jù),從地址0x8d中
  18.         lcm_w_test(1,(year/16+0x30));       
  19.         lcm_w_test(1,(year%16+0x30));
  20. //        lcm_w_word("年");
  21.        
  22. /*往液晶屏填寫 月 數(shù)據(jù)-------------------------------------------*/
  23.         month=read_clock(0x89);//調用1302時鐘數(shù)據(jù)中的月數(shù)據(jù),從地址0x89中
  24.         lcm_w_word("-");       
  25. /*       
  26.         if(month/10 != 0){write_data((month/10)+0x30);}       
  27.                 else{write_data(0x20);}//十位消隱
  28. */
  29.         lcm_w_test(1,(month/16+0x30));
  30.         lcm_w_test(1,((month%16)+0x30));               
  31. //        lcm_w_word("月");       

  32. /*往液晶屏填寫 日 數(shù)據(jù)-------------------------------------------*/
  33.         date=read_clock(0x87);//從1302芯片中讀取日數(shù)據(jù),從地址0x87中
  34.         lcm_w_word("-");
  35. /*               
  36.         if(date/10 != 0){write_data((date/10)+0x30);}       
  37.                 else{write_data(0x20);}//十位消隱
  38. */                 
  39.         lcm_w_test(1,(date/16+0x30));
  40.         lcm_w_test(1,(date%16+0x30));
  41. //        lcm_w_word("日");
  42. }

  43. /*往液晶屏填寫 星期 數(shù)據(jù)-----------------------------------------*/
  44. void displayxq(void){

  45.         dd = read_clock(0x87);//日
  46.         mo = read_clock(0x89);//月
  47.         yy = read_clock(0x8d);//年
  48.         Conver_week(0,yy,mo,dd);//調用公歷換算星期子函數(shù)
  49.    sel=week;//week是公歷轉換星期子函數(shù)的運行結果,結果為0-6,0是星期日
  50.         lcm_w_test(0,0x86);//顯示位置
  51.         if(sel==0)  {lcm_w_word("日");}    //0=星期日
  52.           if(sel==6)  {lcm_w_word("六");}    //
  53.           if(sel==5)  {lcm_w_word("五");}    //
  54.           if(sel==4)  {lcm_w_word("四");}    //
  55. //        if(sel==3)  {lcm_w_word("三");}//經調試發(fā)現(xiàn)液晶屏不認這一句,只好用下一句顯示 三        。需要打補丁才能正確顯示。
  56.         if(sel==3)  {lcm_w_test(1,0xc8);lcm_w_test(1,0xfd);} //此指令等于lcm_w_word("三"); 因為“三”的內碼失效。
  57.           if(sel==2)  {lcm_w_word("二");}    //
  58.           if(sel==1)  {lcm_w_word("一");}    //星期一
  59.         lcm_w_test(0,0x85);
  60.         lcm_w_word("周");//調用字符顯示子函數(shù),顯示 "周"

  61. }
  62. /*需要繪圖顯示的:時、分、秒--------------------------------------------------*/
  63. void displaytime(void)
  64. {
  65. /*往液晶屏填寫 小時 數(shù)據(jù)-----------------------------------------*/
  66. if(read_clock(0x85)!=hour)//更新小時數(shù)據(jù),然后整點報時
  67.         {//也可根據(jù)個人需要設定在那個時間段進行報時,只需加條if語句便可
  68.         hour = read_clock(0x85);//讀取DS1302的小時
  69.         BEEP=0;DelayM(160);BEEP=1;         //整點報時
  70.    
  71.         }                                 
  72.     write_com(0x88);
  73.         write_data((hour/16)+0x30);
  74.         write_data((hour%16)+0x30);
  75.     lcm_w_word(":");
  76. /*往液晶屏填寫 分鐘 數(shù)據(jù)-----------------------------------------*/
  77.         min = read_clock(0x83);                 //讀取DS1302的 分                               
  78.         write_data((min/16)+0x30);
  79.         write_data((min%16)+0x30);
  80.     lcm_w_word(":");

  81. /*往液晶屏填寫 秒鐘 數(shù)據(jù)-----------------------------------------*/
  82.         sec= read_clock(0x81);                  //讀取DS1302的 秒
  83.         write_data((sec/16)+0x30);
  84.         write_data((sec%16)+0x30);
  85. }

  86. /*顯示農歷日期---------------------------------------------------------------*/
  87. void displaynl(void)
  88. {
  89.         Conversion(century,year,month,date);        //公歷轉農歷
  90.         write_com(0x30); write_com(0x06); write_com(0x90);
  91.         if (month_moon==1) {lcm_w_word("正");}
  92.         if (month_moon==2) {lcm_w_word("二");}
  93. //        if (month_moon==2) {lcm_w_word("三");}
  94.         if (month_moon==3) {lcm_w_test(1,0xc8);lcm_w_test(1,0xfd);}
  95.         if (month_moon==4) {lcm_w_word("四");}
  96.         if (month_moon==5) {lcm_w_word("五");}
  97.         if (month_moon==6) {lcm_w_word("六");}
  98.         if (month_moon==7) {lcm_w_word("七");}
  99.         if (month_moon==8) {lcm_w_word("八");}
  100.         if (month_moon==9) {lcm_w_word("九");}
  101.         if (month_moon==10){lcm_w_word("十");}
  102.         if (month_moon==11){lcm_w_word("冬");}
  103.         if (month_moon==12){lcm_w_word("臘");}
  104.                         lcm_w_word("月");

  105.         if (day_moon==1)   {lcm_w_word("初一");}
  106.         if (day_moon==2)   {lcm_w_word("初二");}
  107.         if (day_moon==3)   {lcm_w_word("初");lcm_w_test(1,0xc8);lcm_w_test(1,0xfd);} //“三”的代碼
  108.         if (day_moon==4)   {lcm_w_word("初四");}
  109.         if (day_moon==5)   {lcm_w_word("初五");}
  110.         if (day_moon==6)   {lcm_w_word("初六");}
  111.         if (day_moon==7)   {lcm_w_word("初七");}
  112.         if (day_moon==8)   {lcm_w_word("初八");}
  113.         if (day_moon==9)   {lcm_w_word("初九");}
  114.         if (day_moon==10)  {lcm_w_word("初十");}
  115.         if (day_moon==11)  {lcm_w_word("十一");}
  116.         if (day_moon==12)  {lcm_w_word("十二");}
  117.         if (day_moon==13)  {lcm_w_word("十");lcm_w_test(1,0xc8);lcm_w_test(1,0xfd);} //十三
  118.         if (day_moon==14)  {lcm_w_word("十四");}
  119.         if (day_moon==15)  {lcm_w_word("十五");}
  120.         if (day_moon==16)  {lcm_w_word("十六");}
  121.         if (day_moon==17)  {lcm_w_word("十七");}
  122.         if (day_moon==18)  {lcm_w_word("十八");}
  123.         if (day_moon==19)  {lcm_w_word("十九");}
  124.         if (day_moon==20)  {lcm_w_word("二十");}
  125.         if (day_moon==21)  {lcm_w_word("廿一");}
  126.         if (day_moon==22)  {lcm_w_word("廿二");}
  127.         if (day_moon==23)  {lcm_w_word("廿");lcm_w_test(1,0xc8);lcm_w_test(1,0xfd);}        //廿三
  128.         if (day_moon==24)  {lcm_w_word("廿四");}
  129.         if (day_moon==25)  {lcm_w_word("廿五");}
  130.         if (day_moon==26)  {lcm_w_word("廿六");}
  131.         if (day_moon==27)  {lcm_w_word("廿七");}
  132.         if (day_moon==28)  {lcm_w_word("廿八");}
  133.         if (day_moon==29)  {lcm_w_word("廿九");}
  134.         if (day_moon==30)  {lcm_w_test(1,0xc8);lcm_w_test(1,0xfd);lcm_w_word("十");}        //三十

  135. }

  136. /****************************************************************************/
  137. void displayJr(void)  //節(jié)日數(shù)據(jù)庫
  138. {       
  139.                 write_com(0x98);
  140. //**********************1月份**********************************************
  141.                 if ( mo == 0x01 && dd == 0x01 ){ lcm_w_word("Happy New Year!!"); }//1月
  142.                 if ( mo == 0x01 && dd == 0x05 ){ lcm_w_word("二十四節(jié)氣:小寒"); }
  143.                 if ( mo == 0x01 && dd == 0x20 ){ lcm_w_word("二十四節(jié)氣:大寒"); }
  144.                 if (month_moon== 1 && day_moon == 1 ){  lcm_w_word("※※春節(jié)快樂※※");  }//陰歷日期填陰歷月和日                                                  
  145.                 if (month_moon== 1 && day_moon == 15 ){ lcm_w_word("※元宵節(jié)快樂!!※"); }   

  146. //************************2月份*****************************************************                                                                                             
  147.       
  148.                 if ( mo == 0x02 && dd == 0x03 ){ lcm_w_word("二十四節(jié)氣:立春"); }//2月
  149. //                if ( mo == 0x02 && dd == 0x13 ){ lcm_w_word("  明天情人節(jié)了  "); }               
  150.                 if ( mo == 0x02 && dd == 0x14 ){ lcm_w_word("◆情人節(jié)快樂!!◆"); }//陽歷日期填實際的陽歷月和日
  151. //                if ( mo == 0x02 && dd == 0x20 ){ lcm_w_word("二十四節(jié)氣:雨水"); }//陽歷日期填實際的陽歷月和日

  152. //**************************3月份***************************************************                               
  153. //                if ( mo == 0x03 && dd == 0x05 ){ lcm_w_word("二十四節(jié)氣:驚蟄"); }               
  154.                 if ( mo == 0x03 && dd == 0x03 ){ lcm_w_word("二十四節(jié)氣:春分"); }               
  155.                 if ( mo == 0x03 && dd == 0x08 ){ lcm_w_word("☆三·八婦女節(jié)☆"); }
  156.         if ( mo == 0x03 && dd == 0x12 ){ lcm_w_word("┣今天植樹節(jié)!!┫"); }                       
  157.                 if ( mo == 0x03 && dd == 0x15 ){ lcm_w_word("⊙消費者權益日⊙"); }                       
  158. //                if ( mo == 0x03 && dd == 0x31 ){ lcm_w_word("  明天是愚人節(jié)  "); }
  159.                 if ( mo == 0x04 && dd == 0x01 ){ lcm_w_word("愚人節(jié)◆小心上當"); }//3       
  160.                
  161. //****************************4月份*************************************************
  162.                 if ( mo == 0x04 && dd == 0x04 ){ lcm_w_word("二十四節(jié)氣:清明"); }               
  163. //                if ( mo == 0x04 && dd == 0x08 ){ lcm_w_word("今天是復活節(jié)"); }               
  164. //                if ( mo == 0x04 && dd == 0x19 ){ lcm_w_word("二十四節(jié)氣:谷雨"); }               
  165.                 if (month_moon== 5 && day_moon == 5 ){ lcm_w_word("◆今天乃端午節(jié)◆"); }  
  166.                
  167. //*****************************5月份************************************************
  168. //                if ( mo == 0x04 && dd == 0x30 ){ lcm_w_word("明天是五一勞動節(jié)"); }//5
  169.                 if ( mo == 0x05 && dd == 0x01 ){ lcm_w_word("△五一勞動節(jié)!!△"); }//5                                
  170.                 if ( mo == 0x05 && dd == 0x04 ){ lcm_w_word("≌五四青年節(jié)!!≌"); }       
  171.                 if ( mo == 0x05 && dd == 0x05 ){ lcm_w_word("二十四節(jié)氣:立夏"); }                                       
  172. //                if ( mo == 0x05 && dd == 0x05 ){ lcm_w_word("近日注意母親節(jié)  "); }               
  173.                 if ( mo == 0x05 && dd == 0x10 ){ lcm_w_word("★今天是母親節(jié)★"); }
  174. //                if ( mo == 0x05 && dd == 0x20 ){ lcm_w_word("二十四節(jié)氣:小滿"); }       
  175.                        
  176. //****************************6月份*************************************************
  177.                 if ( mo == 0x06 && dd == 0x01 ){ lcm_w_word("※今天是兒童節(jié)※"); }//6
  178.                 if ( mo == 0x06 && dd == 0x05 ){ lcm_w_word("二十四節(jié)氣:芒種"); }               
  179. //                if ( mo == 0x06 && dd == 0x13 ){ lcm_w_word("近日注意父親節(jié)  "); }
  180. //                if ( mo == 0x06 && dd == 0x15 ){ lcm_w_word("近日注意父親節(jié)  "); }
  181.                 if ( mo == 0x06 && dd == 0x21 ){ lcm_w_word("△今天是父親節(jié)△"); }       
  182.                 if (month_moon== 7 && day_moon == 7 ){ lcm_w_word("七夕--中國情人節(jié)"); }  
  183.                        
  184. //****************************7月份*************************************************                       
  185. //                if ( mo == 0x07 && dd == 0x06 ){ lcm_w_word("二十四節(jié)氣:小暑"); }               
  186. //                if ( mo == 0x07 && dd == 0x07 ){ lcm_w_word("抗日戰(zhàn)爭記念日  "); }
  187. //                if ( mo == 0x07 && dd == 0x22 ){ lcm_w_word("二十四節(jié)氣:大暑"); }

  188. //****************************8月份*************************************************
  189.             if (month_moon== 8 && day_moon == 15 ){ lcm_w_word("⊙中秋節(jié)快樂!!⊙"); }  
  190.                 if ( mo == 0x08 && dd == 0x01 ){ lcm_w_word("〓八一建軍節(jié)〓=="); }//8
  191.                 if ( mo == 0x08 && dd == 0x07 ){ lcm_w_word("二十四節(jié)氣:立秋"); }
  192. //                if ( mo == 0x08 && dd == 0x08 ){ lcm_w_word("  中國父親節(jié)    "); }
  193. //                if ( mo == 0x08 && dd == 0x15 ){ lcm_w_word("抗戰(zhàn)勝利記念日  "); }
  194. //                if ( mo == 0x08 && dd == 0x22 ){ lcm_w_word("二十四節(jié)氣:處暑"); }
  195.                 if (month_moon== 9 && day_moon == 9 ){ lcm_w_word("▲今日重陽節(jié)!!▲"); }  
  196.                                               
  197. //*******************************9月份**********************************************       
  198. //                if ( mo == 0x09 && dd == 0x07 ){ lcm_w_word("二十四節(jié)氣:白露"); }//9
  199. //                if ( mo == 0x09 && dd == 0x09 ){ lcm_w_word("  明天是教師節(jié)  "); }//9       
  200.                 if ( mo == 0x09 && dd == 0x10 ){ lcm_w_word(">>今天是教師節(jié)<<"); }//9
  201. //                if ( mo == 0x09 && dd == 0x18 ){ lcm_w_word("九·一八事變記念"); }
  202.                 if ( mo == 0x09 && dd == 0x22 ){ lcm_w_word("二十四節(jié)氣:秋分"); }//9

  203. //******************************10月份***********************************************
  204.                 if ( mo == 0x10 && dd == 0x01 ){ lcm_w_word("※國慶節(jié)到了!!※"); }//10
  205. //                if ( mo == 0x10 && dd == 0x08 ){ lcm_w_word("二十四節(jié)氣:寒露"); }       
  206. //                if ( mo == 0x10 && dd == 0x12 ){ lcm_w_word("明天國際教師節(jié)  "); }
  207. //                if ( mo == 0x10 && dd == 0x13 ){ lcm_w_word("  國際教師節(jié)    "); }
  208.                 if ( mo == 0x10 && dd == 0x23 ){ lcm_w_word("二十四節(jié)氣:霜降"); }
  209.                                           
  210. //********************************11月份*********************************************
  211.                 if ( mo == 0x11 && dd == 0x07 ){ lcm_w_word("二十四節(jié)氣:立冬"); }//11
  212. //                if ( mo == 0x11 && dd == 0x22 ){ lcm_w_word("二十四節(jié)氣:小雪"); }
  213.        
  214. //*********************************12月份********************************************       
  215.             if (month_moon== 12 && day_moon == 8 ){ lcm_w_word("★今天是臘八節(jié)★"); }  
  216.             if (month_moon== 12 && day_moon == 15 )    { lcm_w_word("※今天乃小年也※"); }  
  217. //            if (month_moon== 12 && day_moon == 29 ){ lcm_w_word("  臘月二十九    "); }  
  218.             if (month_moon== 12 && day_moon == 30 ){ lcm_w_word("大年三十(*^O^*)!"); }
  219. //                if ( mo == 0x12 && dd == 0x13 ){ lcm_w_word("南京大屠殺紀念日"); }//12
  220. //                if ( mo == 0x12 && dd == 0x07 ){ lcm_w_word("二十四節(jié)氣:大雪"); }
  221.                 if ( mo == 0x12 && dd == 0x22 ){ lcm_w_word("二十四節(jié)氣:冬至"); }
  222. //                if ( mo == 0x12 && dd == 0x23 ){ lcm_w_word("  明晚平安夜    "); }
  223.                 if ( mo == 0x12 && dd == 0x24 ){ lcm_w_word("※※平安夜!!※※"); }
  224.                 if ( mo == 0x12 && dd == 0x25 ){ lcm_w_word("▲▲圣誕快樂▲▲"); }
  225. //                if ( mo == 0x12 && dd == 0x31 ){ lcm_w_word("    明日新年    "); }

  226. //****************************生日(陰歷)*********************************
  227.                 if (month_moon== 10 && day_moon == 12 ){ lcm_w_word("☆今天爺爺生日☆"); }
  228.             if (month_moon== 10 && day_moon == 21 ){ lcm_w_word("☆今天奶奶生日☆"); }

  229.                 if (month_moon== 2 && day_moon == 12 ){ lcm_w_word("★今天媽媽生日★"); }//爸爸生日
  230.                 if (month_moon== 8 && day_moon == 29 ){ lcm_w_word("★今天爸爸生日★"); }
  231.                
  232.                 if (month_moon== 5 && day_moon == 12 ){ lcm_w_word("※今天妹妹生日※"); }//妹妹生日
  233.                 if (month_moon== 4 && day_moon == 19 ){ lcm_w_word("〓今天我的生日〓"); }//楊慧生日
  234.                 if (month_moon== 6 && day_moon == 5 ){ lcm_w_word("〓今天兒子生日〓"); }

  235. //***************************非節(jié)日********************************************
  236.                 else{
  237.                        
  238.                         if ( hour >= 0x00 && hour <= 0x01 ){ lcm_w_word("★I always O U★");}
  239.               if ( hour >= 0x04 && hour <  0x06 ) { lcm_w_word("★★★凌晨▲▲▲"); }
  240.                         if ( hour >= 0x06 && hour <  0x08 ) { lcm_w_word("☆☆☆早晨△△△"); }
  241.                         if ( hour >= 0x08 && hour <  0x12 ) { lcm_w_word("△△△上午▲▲▲"); }
  242.                         if ( hour == 0x12)                  { lcm_w_word("⊙⊙⊙中午⊙⊙⊙"); }
  243.                         if ( hour >= 0x13 && hour <  0x18 ) { lcm_w_word("▲▲▲下午△△△"); }
  244.                         if ( hour >= 0x18 && hour <  0x22 ) { lcm_w_word("★★★晚上☆☆☆"); }
  245.                         if ( hour >= 0x22 && hour <= 0x23)  { lcm_w_word("★★★夜里★★★");}
  246.                         if ( hour >= 0x00 && hour <  0x04)  { lcm_w_word("◆◆◆深夜◆◆◆"); }
  247.                         }

  248. }


  249. /*顯示歡迎信息---------------------------------------------------------------
  250. void welcome(void)
  251. {                                                                  
  252.         write_com(0x80); lcm_w_word("〓〓∧∧∧∧〓〓");
  253.         write_com(0x90); lcm_w_word("Believe yourself");  
  254.         write_com(0x88); lcm_w_word("Don't give up^_^");        
  255.         write_com(0x98); lcm_w_word("〓〓∨∨∨∨〓〓");       
  256. }
  257. */                                                          
  258. void welcome0(void)
  259. {
  260.         write_com(0x80); lcm_w_word("〓電子萬年歷〓");  
  261.         write_com(0x90); lcm_w_word("專利產品仿冒必究");
  262.         write_com(0x88); lcm_w_word(" QQ:1239300456"); //Smile to our life       
  263.         write_com(0x98); lcm_w_word("秉奇科技榮譽出品");   
  264. //⊙⊙⊙⊙⊙⊙⊙⊙  ≌≌≌≌≌≌≌≌  ※※※※※※※※   
  265. //╋╋╋╋╋╋╋╋  〓〓〓〓〓〓〓〓  ◆◆◆◆◆◆◆◆  卐卐卐卐卐卐卐卐
  266. //◎◎◎◎◎◎◎◎  ☆☆☆☆☆☆☆☆  ★★★★★★★★  ╳╳╳╳╳╳╳╳
  267. //┣┣┣┣┫┫┫┫  ┳┳┳┳┳┳┳┳  ┻┻┻┻┻┻┻┻  ╲╱╲╱╲╱╲╱  
  268. //╱╲╱╲╱╲╱╲      
  269. //△△△△△△△△  ◤◤◤◤◥◥◥◥  ◣◣◣◣◢◢◢◢  卍卍卍卍卍卍卍卍  
  270. //〇〇〇〇〇〇〇〇  △▽△▽△▽△▽
  271. //              
  272. }

  273. /*---------------------------------------------------------------------------*/
  274. #endif
復制代碼


下載:
stc89c58萬年歷程序.rar (89.76 KB, 下載次數(shù): 75)


評分

參與人數(shù) 1黑幣 +5 收起 理由
close_two + 5 贊一個!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:159515 發(fā)表于 2017-3-7 08:42 | 只看該作者
看起來不錯。。。。。。!
回復

使用道具 舉報

板凳
ID:185419 發(fā)表于 2017-4-1 18:00 | 只看該作者
看起來不錯!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表