再發(fā)一個作品到51hei論壇,仿了個12864大數(shù)字時鐘12c887板子和12864一樣大。。4個固定孔。。先吧顯示搞出來。。功能慢慢學(xué)習(xí)。
12864時鐘PCB和原理圖程序
pcb文件.rar
(95.87 KB, 下載次數(shù): 466)
2013-6-26 01:59 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
這個pcb就是發(fā)的效果。。還有原理圖什么的都再里面。。要仿的直接就可以用。
電路圖 程序.rar
(218.54 KB, 下載次數(shù): 785)
2013-6-26 01:59 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
這個是我后來沖沖改的1302和12c887 二選一的PCB。。。。要用的改下io定義就可以了。用1302的話還有好多IO口閑置可以再利用。。當然程序要自己找了。
171017t2m2fn5ugrzrwzfe.jpg.thumb.jpg (60.15 KB, 下載次數(shù): 331)
下載附件
2013-6-26 02:12 上傳
171018cshrhfuwredhfsht.jpg.thumb.jpg (40.84 KB, 下載次數(shù): 268)
下載附件
2013-6-26 02:12 上傳
171019jxett1tjf0eatzxz.jpg.thumb.jpg (32.4 KB, 下載次數(shù): 291)
下載附件
2013-6-26 02:12 上傳
171020p0j0ywff0fu02z2u.jpg.thumb.jpg (44.17 KB, 下載次數(shù): 343)
下載附件
2013-6-26 02:12 上傳
171020v7y93vy3ddtc7ltl.jpg.thumb.jpg (37.74 KB, 下載次數(shù): 295)
下載附件
2013-6-26 02:12 上傳
171021juge9g180jdb4bv0.jpg.thumb.jpg (45.9 KB, 下載次數(shù): 294)
下載附件
2013-6-26 02:12 上傳
171022101w52112bp527p6.jpg.thumb.jpg (34.58 KB, 下載次數(shù): 296)
下載附件
2013-6-26 02:12 上傳
171022o8faf4ggof28g4hh.jpg.thumb.jpg (26.89 KB, 下載次數(shù): 275)
下載附件
2013-6-26 02:12 上傳
171023quim7lpuuzz47sy7.jpg.thumb.jpg (41.75 KB, 下載次數(shù): 321)
下載附件
2013-6-26 02:12 上傳
171023vfe8k7h8few1a4r4.jpg.thumb.jpg (32.9 KB, 下載次數(shù): 333)
下載附件
2013-6-26 02:12 上傳
- /*---------------------------------------------------------------------------
- 電子智能時鐘程序
- 單 片 機:STC89C52RC
- 晶 振:12MHz
- 時鐘芯片:DS12887
- 液 晶 屏:LCM-12864-ST7920
- 時 間:2010年3月28日
- LCM12864使用并口連接方式,PSB、RST接高電平
- 頭文件----------------------------------------------------------------------*/
- #include
- #include
- #include "LCD12864.h"
- #include "DS12CR887.h"
- #include "DS18B20.h"
- #include "nongli.h"
- #include "displaytime.h"
- #define uint unsigned int
- #define uchar unsigned char
- /*--------------------定義按鍵-----------------------------------------------*/
- sbit K1 = P3^2; //K1-設(shè)置
- sbit K2 = P3^1; //K2-確認、返回
- sbit K3 = P3^0; //K3-加
- sbit K4 = P1^7; //K4-減
- sbit K5 = P1^6; //液晶背光控制按鍵,按一下亮,再按一下滅
- sbit BLK = P1^3; //液晶背光控制輸出,低電平有效,PNP三極管控制。
- void DelayM(uint);
- /*定義變量-------------------------------------------------------------------*/
- bit q=0, w=0; //調(diào)時標志位
- /*延時函數(shù) 1MS/次------------------------------------------------------------*/
- void DelayM(uint a)
- {
- uchar i;
- while( --a != 0) { for(i = 0; i < 125; i++); }
- }
- /*日期、時間設(shè)置函數(shù)---------------------------------------------------------*/
- void Set_time(uchar sel)
- {
- signed char address,item;
- signed char max,mini;
- unsigned char yy,mo,moontemp1,moontemp2;
- ds_write(0x0a,0x00); //進入調(diào)時,關(guān)閉時鐘振蕩器
- write_com(0x30); write_com(0x06);
- write_com(0x98); lcm_w_word("設(shè)置");
- if(sel==5) {lcm_w_word("秒鐘");address=0; max=59;mini=0;} //秒鐘0
- if(sel==4) {lcm_w_word("分鐘");address=2; max=59;mini=0;} //分鐘2
- if(sel==3) {lcm_w_word("小時");address=4; max=23;mini=0;} //小時4
- // if(sel==3) {lcm_w_word("星期");address=6; max=7; mini=1;} //星期6 修改為自動計算
- // if(sel==2) {lcm_w_word("日期");address=7; max=31;mini=1;} //日期7
- if(sel==2) {lcm_w_word("日期"); //日期修改為按月份實際天數(shù)調(diào)整
- address=7; //日期7
- mo = ds_read(0x08);//讀月
- moontemp1=mo/16;
- moontemp2=mo%16;
- mo=moontemp1*10+moontemp2;//轉(zhuǎn)換成10進制月份數(shù)據(jù)
- yy = ds_read(0x09);//讀年
- moontemp1=yy/16;
- moontemp2=yy%16;
- yy=moontemp1*10+moontemp2;//轉(zhuǎn)換成10進制年份數(shù)據(jù)
- if(mo==2&&yy%4!=0){max=28;mini=1;}//平年2月28天
- if(mo==2&&yy%4==0){max=29;mini=1;}//閏年2月29天
- if(mo==1||mo==3||mo==5||mo==7||mo==8||mo==10||mo==12){max=31;mini=1;}//每月31天的月份
- if(mo==4||mo==6||mo==9||mo==11){max=30;mini=1;} //每月30天的月份
- }
- if(sel==1) {lcm_w_word("月份");address=8; max=12;mini=1;} //月份8
- if(sel==0) {lcm_w_word("年份");address=9; max=99;mini=0;} //年份9
- item=ds_read(address); //讀取DS12CR887某地址上的數(shù)值賦給item
- if(K3 == 0) {item++;} //K3-加數(shù):1
- if(K4 == 0) {item--;} //K4-減數(shù):1
- if(item>max) item=mini; //限制數(shù)值最大有效范圍
- if(item<mini) item="max;" 限制數(shù)值最小有效范圍=""
- ds_write(address,item); //將調(diào)整好的item值寫入DS12CR887
- displaydate(); //顯示日期
- displaytime(); //顯示時間
- displaynl(); //顯示農(nóng)歷
- displayxq(); //顯示星期
- }
- /*主函數(shù)---------------------------------------------------------------------*/
- void main()
- {
- uchar e=0;
- K1=1;K2=1;K3=1;K4=1;K5=1;BLK=0;
- ds_int(); //時鐘芯片初始化
- lcm_init(); //液晶初始化
- welcome(); //調(diào)用歡迎信息
- DelayM(2000); //延時
- lcm_clr(); //清屏
- Clean_12864_GDRAM(); //清屏
- while(1)
- {
- if (w == 0) //正常走時
- {
- displaydate(); //顯示日期
- displaynl(); //顯示農(nóng)歷
- displaytime(); //顯示時間
- read_temp(); //讀取溫度
- ds1820disp(); //顯示溫度
- displayxq();
- }
- else {} //否則啟動調(diào)時
- /*----------------------------設(shè)置時間--------------------------------------*/
- if (K1 == 0)
- {
- DelayM(20); //按鍵消抖
- if(K1 == 0 && w == 1) //當是調(diào)時狀態(tài) 本鍵用于調(diào)整下一項
- {
- e++;
- if (e >= 7 ) {e = 0;}
- while(! K1 ); //等待鍵松開
- Set_time(e); //調(diào)整
- }
- if(K1 == 0 && w == 0) //當是正常狀態(tài)時就進入調(diào)時狀態(tài)
- {
- lcm_clr();
- Clean_12864_GDRAM(); //清屏
- w=1; //進入調(diào)時
- Set_time(e);
- }
- while(K1 == 0); //等待鍵松開
- }
- /*--------------------------------------------------------------------------*/
- if (K2 == 0) // 當在調(diào)時狀態(tài)時就退出調(diào)時
- {
- DelayM(20);
- if(K2 == 0 && w == 1)
- {
- w = 0; //退出調(diào)時
- e = 0; //"下一項"計數(shù)器清0
- }
- if(K2 == 0 && w == 0)
- {
- lcm_clr(); Clean_12864_GDRAM();
- write_com(0x30); write_com(0x06);
- welcome();
- while(K2 == 0);
- }
- lcm_clr(); Clean_12864_GDRAM();
- ds_write(0x0a,0x20); //調(diào)時完畢,開啟時鐘振蕩器
- displaydate();
- displaynl();
- displaytime();
- read_temp();
- ds1820disp();
- while(K2 == 0);
- }
- /*加調(diào)整--------------------------------------------------------------------*/
- if (K3 == 0 && w == 1)
- {
- DelayM(20);
- if(K3 == 0 && w == 1) { Set_time(e); }
- // while(K3 == 0);
- while(! K3 );
- }
- /*減調(diào)整--------------------------------------------------------------------*/
- if (K4 == 0 && w == 1)
- {
- DelayM(20);
- if(K4 == 0 && w == 1) { Set_time(e); }
- // while(K4 == 0);
- while(! K4 );
- }
- /*液晶背光控制,按一下亮,再按一下滅----------------------------------------*/
- if(K5 == 0)
- {
- DelayM(20); q = ~q; //標志位取反
- if(q){BLK = BLK | 1;}
- else {BLK = BLK & 0;}
- while(K5 == 0);
- }
- }
- }
- /*結(jié)束----------------------------------------------------------------------*/
復(fù)制代碼 |