久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 35492|回復: 97
收起左側

51單片機+12c887大數字時鐘12864液晶顯示

  [復制鏈接]
ID:51269 發表于 2013-6-26 02:10 | 顯示全部樓層 |閱讀模式
再發一個作品到51hei論壇,仿了個12864大數字時鐘12c887板子和12864一樣大。。4個固定孔。。先吧顯示搞出來。。功能慢慢學習。
12864時鐘PCB和原理圖程序

pcb文件.rar (95.87 KB, 下載次數: 466)
   這個pcb就是發的效果。。還有原理圖什么的都再里面。。要仿的直接就可以用。

電路圖 程序.rar (218.54 KB, 下載次數: 785)
這個是我后來沖沖改的1302和12c887   二選一的PCB。。。。要用的改下io定義就可以了。用1302的話還有好多IO口閑置可以再利用。。當然程序要自己找了。


171017t2m2fn5ugrzrwzfe.jpg.thumb.jpg
171018cshrhfuwredhfsht.jpg.thumb.jpg
171019jxett1tjf0eatzxz.jpg.thumb.jpg
171020p0j0ywff0fu02z2u.jpg.thumb.jpg
171020v7y93vy3ddtc7ltl.jpg.thumb.jpg
171021juge9g180jdb4bv0.jpg.thumb.jpg
171022101w52112bp527p6.jpg.thumb.jpg
171022o8faf4ggof28g4hh.jpg.thumb.jpg
171023quim7lpuuzz47sy7.jpg.thumb.jpg
171023vfe8k7h8few1a4r4.jpg.thumb.jpg
  1. /*---------------------------------------------------------------------------
  2.                 電子智能時鐘程序
  3.                 單 片 機:STC89C52RC
  4.                 晶    振:12MHz
  5.                 時鐘芯片:DS12887
  6.                 液 晶 屏:LCM-12864-ST7920
  7.                 時    間:2010年3月28日
  8.                 LCM12864使用并口連接方式,PSB、RST接高電平
  9. 頭文件----------------------------------------------------------------------*/
  10. #include
  11. #include
  12. #include "LCD12864.h"
  13. #include "DS12CR887.h"
  14. #include "DS18B20.h"
  15. #include "nongli.h"
  16. #include "displaytime.h"
  17. #define uint  unsigned int
  18. #define uchar unsigned char

  19. /*--------------------定義按鍵-----------------------------------------------*/
  20. sbit K1  = P3^2; //K1-設置
  21. sbit K2  = P3^1; //K2-確認、返回
  22. sbit K3  = P3^0; //K3-加
  23. sbit K4  = P1^7; //K4-減
  24. sbit K5  = P1^6; //液晶背光控制按鍵,按一下亮,再按一下滅
  25. sbit BLK = P1^3; //液晶背光控制輸出,低電平有效,PNP三極管控制。

  26. void DelayM(uint);               

  27. /*定義變量-------------------------------------------------------------------*/
  28. bit q=0, w=0;    //調時標志位

  29. /*延時函數 1MS/次------------------------------------------------------------*/
  30. void DelayM(uint a)               
  31. {
  32.         uchar i;
  33.         while( --a != 0) { for(i = 0; i < 125; i++); }                                      
  34. }
  35. /*日期、時間設置函數---------------------------------------------------------*/
  36. void Set_time(uchar sel)  
  37. {
  38.         signed char address,item;
  39.         signed char max,mini;
  40.         unsigned char yy,mo,moontemp1,moontemp2;
  41.         ds_write(0x0a,0x00);     //進入調時,關閉時鐘振蕩器
  42.         write_com(0x30); write_com(0x06);
  43.         write_com(0x98); lcm_w_word("設置");
  44.         if(sel==5)  {lcm_w_word("秒鐘");address=0; max=59;mini=0;}  //秒鐘0  
  45.         if(sel==4)  {lcm_w_word("分鐘");address=2; max=59;mini=0;}  //分鐘2
  46.         if(sel==3)  {lcm_w_word("小時");address=4; max=23;mini=0;}  //小時4  
  47. //        if(sel==3)  {lcm_w_word("星期");address=6; max=7; mini=1;}  //星期6  修改為自動計算
  48. //        if(sel==2)  {lcm_w_word("日期");address=7; max=31;mini=1;}  //日期7  
  49.         if(sel==2)  {lcm_w_word("日期");                                                                                //日期修改為按月份實際天數調整
  50.                                         address=7;                                                                                                        //日期7
  51.                mo = ds_read(0x08);//讀月
  52.                                         moontemp1=mo/16;
  53.                                         moontemp2=mo%16;
  54.                                         mo=moontemp1*10+moontemp2;//轉換成10進制月份數據

  55.                yy = ds_read(0x09);//讀年
  56.                moontemp1=yy/16;
  57.                                         moontemp2=yy%16;
  58.                                         yy=moontemp1*10+moontemp2;//轉換成10進制年份數據

  59.                if(mo==2&&yy%4!=0){max=28;mini=1;}//平年2月28天
  60.                                         if(mo==2&&yy%4==0){max=29;mini=1;}//閏年2月29天
  61.                                         if(mo==1||mo==3||mo==5||mo==7||mo==8||mo==10||mo==12){max=31;mini=1;}//每月31天的月份
  62.                                         if(mo==4||mo==6||mo==9||mo==11){max=30;mini=1;} //每月30天的月份
  63.                                         }                                                                                                                             
  64.         if(sel==1)  {lcm_w_word("月份");address=8; max=12;mini=1;}  //月份8  
  65.         if(sel==0)  {lcm_w_word("年份");address=9; max=99;mini=0;}  //年份9                  
  66.         item=ds_read(address);         //讀取DS12CR887某地址上的數值賦給item
  67.         if(K3 == 0) {item++;}    //K3-加數:1
  68.         if(K4 == 0) {item--;}    //K4-減數:1
  69.         if(item>max) item=mini;  //限制數值最大有效范圍   
  70.         if(item<mini) item="max;" 限制數值最小有效范圍=""
  71.         ds_write(address,item);  //將調整好的item值寫入DS12CR887
  72.         displaydate();                          //顯示日期
  73.         displaytime();                                 //顯示時間
  74.         displaynl();                                  //顯示農歷
  75.         displayxq();                                 //顯示星期
  76. }
  77. /*主函數---------------------------------------------------------------------*/
  78. void main()
  79. {                             
  80.         uchar e=0;
  81.         K1=1;K2=1;K3=1;K4=1;K5=1;BLK=0;

  82.         ds_int();                        //時鐘芯片初始化
  83.         lcm_init();                        //液晶初始化
  84.         welcome();                    //調用歡迎信息
  85.         DelayM(2000);                 //延時
  86.         lcm_clr();            //清屏
  87.         Clean_12864_GDRAM();         //清屏
  88.         while(1)
  89.         {
  90.                 if (w == 0)                  //正常走時
  91.                 {
  92.                         displaydate();         //顯示日期
  93.                         displaynl();         //顯示農歷
  94.                         displaytime();         //顯示時間
  95.                         read_temp();         //讀取溫度
  96.                         ds1820disp();          //顯示溫度
  97. displayxq();
  98.                 }        
  99.                 else {}              //否則啟動調時

  100. /*----------------------------設置時間--------------------------------------*/               
  101.                 if (K1 == 0)         
  102.                 {
  103.                         DelayM(20);                       //按鍵消抖
  104.                         if(K1 == 0 && w == 1)      //當是調時狀態 本鍵用于調整下一項
  105.                         {
  106.                                 e++;
  107.                                 if (e >= 7 ) {e = 0;}
  108.                            while(! K1 );            //等待鍵松開
  109.                                 Set_time(e);           //調整                                
  110.                         }                        
  111.                         if(K1 == 0 && w == 0)      //當是正常狀態時就進入調時狀態
  112.                         {
  113.                                 lcm_clr();            
  114.                                 Clean_12864_GDRAM();   //清屏
  115.                                 w=1;                       //進入調時
  116.                                 Set_time(e);
  117.                         }
  118.                            while(K1 == 0);            //等待鍵松開
  119.                 }
  120. /*--------------------------------------------------------------------------*/               
  121.                 if (K2 == 0)                   // 當在調時狀態時就退出調時
  122.                 {
  123.                         DelayM(20);
  124.                         if(K2 == 0 && w == 1)
  125.                         {                                
  126.                                 w = 0;                       //退出調時
  127.                                 e = 0;                           //"下一項"計數器清0                                                               
  128.                         }
  129.                         if(K2 == 0 && w == 0)
  130.                         {                                
  131.                                 lcm_clr(); Clean_12864_GDRAM();
  132.                                 write_com(0x30); write_com(0x06);
  133.                                 welcome();                                
  134.                                 while(K2 == 0);  
  135.                         }
  136.                         lcm_clr(); Clean_12864_GDRAM();
  137.                         ds_write(0x0a,0x20);       //調時完畢,開啟時鐘振蕩器                                
  138.                         displaydate();
  139.                         displaynl();
  140.                         displaytime();
  141.                         read_temp();
  142.                         ds1820disp();
  143.                         while(K2 == 0);  
  144.                 }
  145. /*加調整--------------------------------------------------------------------*/               
  146.                 if (K3 == 0 && w == 1)
  147.                 {
  148.                         DelayM(20);
  149.                         if(K3 == 0 && w == 1) { Set_time(e); }
  150. //                        while(K3 == 0);
  151.                         while(! K3 );
  152.                 }
  153. /*減調整--------------------------------------------------------------------*/               
  154.                 if (K4 == 0 && w == 1)
  155.                 {               
  156.                         DelayM(20);
  157.                         if(K4 == 0 && w == 1) { Set_time(e); }
  158. //                        while(K4 == 0);
  159.                         while(! K4 );
  160.                 }
  161. /*液晶背光控制,按一下亮,再按一下滅----------------------------------------*/
  162.                 if(K5 == 0)        
  163.                 {
  164.                         DelayM(20); q = ~q;      //標志位取反
  165.                          if(q){BLK = BLK | 1;}   
  166.                                  else {BLK = BLK & 0;}   
  167.                         while(K5 == 0);           
  168.                 }
  169.         }
  170. }
  171. /*結束----------------------------------------------------------------------*/
復制代碼
回復

使用道具 舉報

ID:51343 發表于 2013-6-28 15:32 | 顯示全部樓層
51hei論壇有你更精彩
回復

使用道具 舉報

ID:51343 發表于 2013-6-28 15:34 | 顯示全部樓層
這個資料真的太好了 我也做一個
回復

使用道具 舉報

ID:52863 發表于 2013-8-13 16:26 | 顯示全部樓層
第一次來51hei論壇就弄到這么好的資料  M幣嚴重不夠用啊
回復

使用道具 舉報

ID:55772 發表于 2013-11-1 17:10 | 顯示全部樓層
好東西啊 做的不錯 看著心癢癢的
回復

使用道具 舉報

ID:55805 發表于 2013-11-2 17:06 | 顯示全部樓層
功能很齊全啊 好東西 值得學習啊
回復

使用道具 舉報

ID:58397 發表于 2013-12-31 11:34 | 顯示全部樓層
下載來看看啊!~初學者必須下!~
回復

使用道具 舉報

ID:58397 發表于 2013-12-31 11:38 | 顯示全部樓層
請問下,三極管是怎么選的!~
回復

使用道具 舉報

ID:59072 發表于 2014-3-26 16:48 來自觸屏版 | 顯示全部樓層
不錯!值的收藏
回復

使用道具 舉報

ID:55838 發表于 2014-3-26 22:03 | 顯示全部樓層
不錯,分享的資料很詳細,感謝了。
回復

使用道具 舉報

ID:62288 發表于 2014-5-26 12:25 | 顯示全部樓層
好東東,謝謝樓主分享。
回復

使用道具 舉報

ID:61343 發表于 2014-5-26 13:34 | 顯示全部樓層
好東東,謝謝樓主分享。
回復

使用道具 舉報

ID:63202 發表于 2014-6-22 18:27 | 顯示全部樓層
多得多
回復

使用道具 舉報

ID:63333 發表于 2014-6-26 21:36 | 顯示全部樓層
好東西啊
回復

使用道具 舉報

ID:58937 發表于 2014-6-27 06:28 | 顯示全部樓層
太好嘞謝謝妳分享.................
回復

使用道具 舉報

ID:55565 發表于 2014-8-18 20:37 | 顯示全部樓層
謝謝,很好不錯
回復

使用道具 舉報

ID:65361 發表于 2014-8-22 20:44 | 顯示全部樓層
資料真的太好了,俺要大數字的。。。。
回復

使用道具 舉報

ID:65318 發表于 2014-8-25 09:46 | 顯示全部樓層
這個資料真的太好了
回復

使用道具 舉報

ID:63872 發表于 2014-8-25 10:31 | 顯示全部樓層
真是高手
回復

使用道具 舉報

ID:61343 發表于 2014-8-25 15:52 | 顯示全部樓層
這個資料真的太好了~大大真是高手~
回復

使用道具 舉報

ID:72611 發表于 2015-1-21 22:50 | 顯示全部樓層
下來參考參考
回復

使用道具 舉報

ID:54731 發表于 2015-1-23 14:41 | 顯示全部樓層
樓主資料不全哦
回復

使用道具 舉報

ID:77387 發表于 2015-5-10 12:04 | 顯示全部樓層
好東西,支持
回復

使用道具 舉報

ID:81058 發表于 2015-5-25 13:38 | 顯示全部樓層
好東西,支持支持
回復

使用道具 舉報

ID:84566 發表于 2015-7-3 18:25 | 顯示全部樓層
不知樓主用的是什么12864的?用帶字庫的嗎
回復

使用道具 舉報

ID:54731 發表于 2015-7-3 18:47 | 顯示全部樓層
樓主:這個資料太好了,都是模塊化結構,對我也是一種啟示
回復

使用道具 舉報

ID:58108 發表于 2015-7-6 10:53 | 顯示全部樓層
你好看到你做的時鐘不錯可惜我沒有黑幣,麻煩你把你的制作資料發給我用用不勝感激。我的郵箱是JZRCL88@163.com
回復

使用道具 舉報

ID:84881 發表于 2015-7-6 11:06 | 顯示全部樓層
不錯啊
回復

使用道具 舉報

ID:90515 發表于 2015-9-19 12:12 | 顯示全部樓層
精彩的呀。
回復

使用道具 舉報

ID:59084 發表于 2015-10-9 02:45 | 顯示全部樓層
M幣嚴重不夠用啊
回復

使用道具 舉報

ID:91888 發表于 2015-10-14 22:48 來自觸屏版 | 顯示全部樓層
很漂亮啊
回復

使用道具 舉報

ID:93169 發表于 2015-10-21 21:39 | 顯示全部樓層
51hei論壇有你更精彩
回復

使用道具 舉報

ID:23317 發表于 2015-10-22 23:26 | 顯示全部樓層
漂亮,12c887 剛拆得兩片,改天做個試試,謝謝分享!
回復

使用道具 舉報

ID:91888 發表于 2015-10-24 21:31 | 顯示全部樓層
很好看啊
回復

使用道具 舉報

ID:93502 發表于 2015-10-25 11:30 | 顯示全部樓層
正在學習51中,來了后發現,這里的朋友程序都貼得很工整。感謝樓主
回復

使用道具 舉報

ID:91888 發表于 2015-10-26 21:09 | 顯示全部樓層
照著用洞洞板做了一個,一直顯示不出來,不知道哪里出錯了
回復

使用道具 舉報

ID:91888 發表于 2015-10-26 21:11 | 顯示全部樓層
P3口沒有焊接上拉電阻,顯示不正常,是這個原因嗎?
回復

使用道具 舉報

ID:91888 發表于 2015-10-26 21:13 | 顯示全部樓層
說錯了,是P2口沒有上拉電阻,是不是這個原因呢
回復

使用道具 舉報

ID:93890 發表于 2015-10-28 21:21 來自觸屏版 | 顯示全部樓層
謝謝分享,好詳細啊
回復

使用道具 舉報

ID:93890 發表于 2015-10-28 21:21 來自觸屏版 | 顯示全部樓層
金屬蒙皮 發表于 2014-3-26 22:03
不錯,分享的資料很詳細,感謝了。

感謝了,很詳細,連pcb版圖都有
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人免费在线 | 日韩欧美三区 | 一区二区三区四区免费观看 | 中文字幕高清av | 欧美8一10sex性hd | 男女视频在线观看免费 | 亚洲高清在线免费观看 | 日韩在线看片 | 久草网址 | 国产乱码一二三区精品 | 成人18亚洲xxoo | 亚洲一区二区国产 | 999精品在线观看 | 欧美日韩国产传媒 | 色婷婷av久久久久久久 | 国产区第一页 | 久久久久成人精品 | 天天操操| 黄色大片在线免费观看 | 亚洲国产精品一区二区久久 | 国户精品久久久久久久久久久不卡 | 一区二区在线免费观看视频 | 久久机热 | 国产视频线观看永久免费 | 伊人伊成久久人综合网站 | 国产一区二区三区精品久久久 | 国产精品一区二区三区在线 | 午夜免费观看体验区 | 亚洲一区视频在线 | 成年视频在线观看 | 中文字幕一区二区三区四区五区 | 日韩欧美国产成人一区二区 | 免费欧美 | 一区二区日韩 | 羞羞的视频在线 | 亚洲bt 欧美bt 日本bt | 亚洲中午字幕 | 国产精品福利网 | 中文字幕精品一区 | 久在线 | 国产精品色av |