標(biāo)題: STC15F204EA加ds1302制作的電子時鐘 [打印本頁]
作者: whsbk 時間: 2016-9-6 10:01
標(biāo)題: STC15F204EA加ds1302制作的電子時鐘
淘寶買來的套件帶的源碼,還沒有學(xué)會,與大家分享, 附件里有源碼,說明書和原理圖。
無標(biāo)題.jpg (112.76 KB, 下載次數(shù): 216)
下載附件
2016-9-6 09:59 上傳
名稱 | | | | |
數(shù)碼管 | | | | |
三極管 | | | |
|
電阻 | | R1/R2/R3------ R10/R11/R12 | | |
電阻 | | | | |
熱敏電阻 |
| | |
|
光敏電阻 |
| | |
|
輕觸開關(guān) |
| | |
|
單片機 | | | | |
電源接口 |
| | |
|
蜂鳴器 |
| | |
|
芯片座 | | | | |
芯片座 | | | | |
時鐘芯片 | | | | |
晶振 | | | |
|
紐扣電池座 | | | |
|
焊接清單(編號對應(yīng)PCB元件絲印):
名稱 | | | | |
數(shù)碼管 | | | | |
三極管 | | | | |
電阻 | | R1/R2/R3------ R10/R11/R12 | | |
電阻 | | | | |
熱敏電阻 | | | | |
光敏電阻 | | | | |
輕觸開關(guān) | | | | |
單片機 | | | | |
電源接口 | | | | |
蜂鳴器 | | | | |
芯片座 | | | | |
芯片座 | | | | |
時鐘芯片 | | | | |
晶振 | | | | |
紐扣電池座 | | | | |
實物圖(先焊接背面元件,再焊接數(shù)碼管哦,一定要記得哦!焊接的時候,從最矮的開始):
0.png (326.84 KB, 下載次數(shù): 191)
下載附件
2016-9-8 00:25 上傳
0.png (238.46 KB, 下載次數(shù): 192)
下載附件
2016-9-8 00:25 上傳
1、按一下1號按鍵,2號顯示區(qū)閃爍:表示可以調(diào)節(jié)時間的分,這個時候按2號按鍵即可以調(diào)節(jié)時間的分。
2、再按一下1號按鍵,1號顯示區(qū)閃爍:表示可以調(diào)節(jié)時間的時,這個時候按2號按鍵即可以調(diào)節(jié)時間的時。
3、再按一下1號按鍵,2號顯示區(qū)閃爍:表示可以調(diào)節(jié)鬧鐘的分,這個時候按2號按鍵即可以調(diào)節(jié)鬧鐘的分。
4、再按一下1號按鍵,1號顯示區(qū)閃爍:表示可以調(diào)節(jié)鬧鐘的時,這個時候按2號按鍵即可以調(diào)節(jié)鬧鐘的時。
5、再按一下1號按鍵,1號顯示區(qū)和2號區(qū)要么顯示全1,要么顯示全0,這個時候按2號按鍵即可以開啟光控或者關(guān)閉光控(所謂光控就是顯示屏能根據(jù)環(huán)境光強弱改變顯示亮度)。
6、再按一下1號按鍵,1號顯示區(qū)和2號區(qū)要么顯示全1,要么顯示全0,這個時候按2號按鍵即可以開啟或者關(guān)閉鬧鐘功能。
7、再按一下1號按鍵,返回正常顯示界面。
8、鬧鐘響時,按一下2號按鍵可以關(guān)掉鬧鐘。
0.png (55.04 KB, 下載次數(shù): 238)
下載附件
2016-9-8 00:23 上傳
-
-
新款時鐘.rar
2016-9-6 10:00 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
4.84 MB, 下載次數(shù): 726, 下載積分: 黑幣 -5
時鐘源碼和原理圖說明書
作者: admin 時間: 2016-9-8 00:26
主程序源碼:
- #include "STC15F2K.h"
- #include "intrins.h"
- #include <math.h>
- #define uchar unsigned char
- #define uint unsigned int
- sfr ADC_LOW2 = 0xBE; //ADC低2位結(jié)果
- #define ADC_POWER 0x80 //ADC電源控制位
- #define ADC_FLAG 0x10 //ADC完成標(biāo)志
- #define ADC_START 0x08 //ADC起始控制位
- #define ADC_SPEEDLL 0x00 //540個時鐘
- #define ADC_SPEEDL 0x20 //360個時鐘
- #define ADC_SPEEDH 0x40 //180個時鐘
- #define ADC_SPEEDHH 0x60 //90個時鐘
- sbit DS1=P3^4;
- sbit DS2=P3^5;
- sbit DS3=P3^6;
- sbit DS4=P3^7;
- sbit set=P3^0;
- sbit jia=P3^1;
- sbit bell=P1^7;
- uchar dat1[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,0X80,0X90,0xff,0xc6};
- uchar dat2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0X00,0X10,0xff};//有小數(shù)點
- uchar dat3[]={0x40,0x4F,0x24,0x06,0x0B,0x12,0x10,0x47,0X00,0X02,0xff};//有小數(shù)點
- uchar dat4[]={0xC0,0xCF,0xA4,0x86,0x8B,0x92,0x90,0xC7,0X80,0X82,0xff};//
-
- uchar table[4]={0};
- unsigned int temp[2];
- extern void init_ds1302_io();
- extern void init_ds1302();
- extern void read_time();
- extern void write_time();
- extern void read_nao();
- extern int fen;
- extern int shi;
- extern int nfen;
- extern int nshi;
- //extern int ri;
- //extern int yue;
- //extern int week;
- void Delayms(uint t)
- {
- uchar i;
- while(t--)
- for(i=0;i<123;i++);
- }
-
- char flag=1;
- int ld;
- void display()
- {
- DS1=0;
- DS2=1;
- DS3=1;
- DS4=1;
- P2=dat1[table[0]];
- Delayms(1);
- if(flag>0)
- {
- DS1=1;
- DS2=0;
- DS3=1;
- DS4=1;
- P2=dat2[table[1]];
- Delayms(1);
- DS1=1;
- DS2=1;
- DS3=0;
- DS4=1;
- P2=dat3[table[2]];
- Delayms(1);
- }
- else
- {
- DS1=1;
- DS2=0;
- DS3=1;
- DS4=1;
- P2=dat1[table[1]];
- Delayms(1);
- DS1=1;
- DS2=1;
- DS3=0;
- DS4=1;
- P2=dat4[table[2]];
- Delayms(1);
- }
- DS1=1;
- DS2=1;
- DS3=1;
- DS4=0;
- P2=dat1[table[3]];
- Delayms(1);
- DS1=1;
- DS2=1;
- DS3=1;
- DS4=1;
- }
- void init()
- {
- TMOD= 0x10;
- TL1 = (65536-50000)/256; //設(shè)置定時初值
- TH1 = (65536-50000)%256; //設(shè)置定時初值
- ET1 = 1;
- TR1 = 1;
- EA = 1;
- }
- char menu=0;
- bit gk=0;//光控開標(biāo)志
- bit nk=0;//鬧鐘開標(biāo)志:受設(shè)置影響
- void key()
- {
- if(nk==1 && jia==0)
- {
- while(jia==0);nk=0;
- }
- if(set==0)
- {
- Delayms(5);
- if(set==0)
- {
- bell=0;
- menu++;
- if(menu==3){read_nao();}
- if(menu==7){menu=0;ET1 = 1;write_time();}
- while(set==0);
- bell=1;
- }
- }
- if(menu==1)
- {
- if(jia==0)
- {
- Delayms(5);
- if(jia==0)
- {
- bell=0;
- if(fen >= 0x60)
- fen = 0;
- fen=fen+0x01;
- if((fen & 0x0f) >= 0x0a)
- fen = (fen & 0xf0) + 0x10;
- while(jia==0);
- bell=1;
- }
- }
- }
- if(menu==2)
- {
- if(jia==0)
- {
- Delayms(5);
- if(jia==0)
- {
- bell=0;
- shi+=0x01;
- if((shi & 0x0f) >= 0x0a)
- shi = (shi & 0xf0) + 0x10;
- if(shi >= 0x24)
- shi = 0;
- while(jia==0);
- bell=1;
- }
- }
- }
- if(menu==3) //鬧鐘
- {
- if(jia==0)
- {
- Delayms(5);
- if(jia==0)
- {
- bell=0;
- if(nfen >= 0x60)
- nfen = 0;
- nfen=nfen+0x01;
- if((nfen & 0x0f) >= 0x0a)
- nfen = (nfen & 0xf0) + 0x10;
- while(jia==0);
- bell=1;
- }
- }
- }
- if(menu==4)
- {
- if(jia==0)
- {
- Delayms(10);
- if(jia==0)
- {
- bell=0;
- nshi+=0x01;
- if((nshi & 0x0f) >= 0x0a)
- nshi = (nshi & 0xf0) + 0x10;
- if(nshi >= 0x24)
- nshi = 0;
- while(jia==0);
- bell=1;
- }
- }
- }
-
- if(menu==5)
- {
- if(jia==0)
- {
- while(jia==0);
- gk=!gk;
- }
- }
- if(menu==6)
- {
- if(jia==0)
- {
- while(jia==0);
- nk=!nk;
- }
- }
- }
- void InitADC()
- {
- P1ASF = 0x7f; //Open channels ADC function 0100 0000 p1.6使用AD功能
- ADC_RES = 0; //Clear previous result
- ADC_LOW2 = 0;
- ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
- }
- void GetADCResult(unsigned char ch,unsigned int *value)
- {
- ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
- _nop_(); //Must wait before inquiry
- _nop_();
- _nop_();
- _nop_();
- _nop_(); //Must wait before inquiry
- _nop_();
- while(!(ADC_CONTR & ADC_FLAG));//Wait complete flag
- ADC_CONTR &= ~ADC_FLAG; //Close ADC
- *value = 0;
- *value = ADC_RES;
- *value = ((*value)*4 + ADC_LOW2); //Return ADC result.×¢êíμ?′????ò·μ??8??ADC?á1?
- }
- void ADC_convert(void)
- {
- GetADCResult(2,&temp[0]);
- temp[0] = (unsigned int) ( ( 3950.0 / ( 11.33657 + log( 6.04 * (float)temp[0] / ( 1024.0 - (float)temp[0] ) ) ) - 278.15) * 100 );//273.15
- }
- char t=0;
- int t1;
- void main()
- {
- init();
- InitADC();
- init_ds1302_io();
- init_ds1302();
- read_nao();
- while(1)
- {
- key();
- if(menu==0)
- {
- if(t1>300 && t1<315){flag=0;table[0]=10;table[1]=10;table[2]=10;table[3]=temp[0]/1000;}
- if(t1>315 && t1<330){flag=0;table[0]=10;table[1]=10;table[2]=temp[0]/1000;table[3]=temp[0]%1000/100;}
- if(t1>330 && t1<450)
- {
- ADC_convert();
- table[0]=10;
- table[1]=temp[0]/1000;
- table[2]=temp[0]%1000/100;
- table[3]=11;
- flag=0;
- }
-
- if(t1>0 && t1<15) {table[0]=10;table[1]=10;table[2]=10;table[3]=shi/16;}
- if(t1>15 && t1<30){table[0]=10;table[1]=10;table[2]=shi/16;table[3]=shi%16;}
- if(t1>30 && t1<45){table[0]=10;table[1]=shi/16;table[2]=shi%16;table[3]=fen/16;}
- if(t1>45 && t1<300)
- {
- read_time();
- table[0]=shi/16;
- table[1]=shi%16;
- table[2]=fen/16;
- table[3]=fen%16;
- // table[3]=temp[1]%1000%100%10;
- // table[2]=temp[1]%1000%100/10;
- // table[1]=temp[1]%1000/100;
- // table[0]=temp[1]/1000;
- }
- }
- else
- {
- if(menu==1)
- {
- if(flag>0)
- {
- table[2]=fen/16;
- table[3]=fen%16;
- }
- else
- {
- table[2]=10;
- table[3]=10;
- }
- table[0]=shi/16;
- table[1]=shi%16;
- }
- if(menu==2)
- {
- table[2]=fen/16;
- table[3]=fen%16;
- if(flag>0)
- {
- table[0]=shi/16;
- table[1]=shi%16;
- }
- else
- {
- table[0]=10;
- table[1]=10;
- }
- }
- if(menu==3)
- {
- if(flag>0)
- {
- table[2]=nfen/16;
- table[3]=nfen%16;
- }
- else
- {
- table[2]=10;
- table[3]=10;
- }
- table[0]=nshi/16;
- table[1]=nshi%16;
- }
- if(menu==4)
- {
- table[2]=nfen/16;
- table[3]=nfen%16;
- if(flag>0)
- {
- table[0]=nshi/16;
- table[1]=nshi%16;
- }
- else
- {
- table[0]=10;
- table[1]=10;
- }
- }
- if(menu==5)
- {
- table[0]=gk;
- table[1]=gk;
- table[2]=gk;
- table[3]=gk;
- }
- if(menu==6)
- {
- table[0]=nk;
- table[1]=nk;
- table[2]=nk;
- table[3]=nk;
- }
- }
- if(gk==1)//開光控
- {
- if( temp[1]<100)ld=2;
- if( temp[1]>100 && temp[1]<300)ld=7;
- if( temp[1]>300 && temp[1]<500)ld=25;
- if( temp[1]>500 && temp[1]<600)ld=70;
- if( temp[1]>600 && temp[1]<700)ld=110;
- if( temp[1]>700 && temp[1]<800)ld=150;
- if( temp[1]>800 && temp[1]<900)ld=180;
- if( temp[1]>900)ld=210;
- }
- else ld=2;
- display();
- Delayms(ld);
- }
- }
- void InitTimer1() interrupt 3 // 1毫秒@11.0592MHz
- {
- TL1 = (65536-50000)/256; //設(shè)置定時初值
- TH1 = (65536-50000)%256; //設(shè)置定時初值
- t++;
- t1++;
- if(t==20)
- {
- GetADCResult(3,&temp[1]);
- t=0;
- if(menu==0){if(t1>45 && t1<300)flag=!flag;else flag=0;}
- if(menu==1 || menu==2 || menu==3 || menu==4) flag=!flag;
- if(menu==5 || menu==6)flag=0;
- if(nk==1)//開鬧鐘
- {
- if(shi==nshi && fen==nfen)bell=!bell;
- }
- else bell=1;
-
- }
- if(t1>450)t1=0;
- }
復(fù)制代碼
作者: cdz5303 時間: 2016-11-21 11:40
我買的套件是廈門大學(xué)的,基本上和你這個差不多,就是多了一組(8個)510歐電阻,現(xiàn)在已經(jīng)組裝完成,可以正常使用了。
作者: middfat 時間: 2016-11-21 12:06
好東西
作者: jms523 時間: 2016-11-27 17:07
cdz5303 發(fā)表于 2016-11-21 11:40
我買的套件是廈門大學(xué)的,基本上和你這個差不多,就是多了一組(8個)510歐電阻,現(xiàn)在已經(jīng)組裝完成,可以正 ...
我也是但沒有光控,能增加嗎?
作者: cdz5303 時間: 2016-11-28 10:34
20161128_102548.jpg (2.07 MB, 下載次數(shù): 180)
下載附件
2016-11-28 10:33 上傳
20161128_102631.jpg (2.44 MB, 下載次數(shù): 167)
下載附件
2016-11-28 10:33 上傳
這是電路圖和元件表,你可以參考一下。
作者: jms523 時間: 2016-11-28 11:18
正需要謝謝樓主
作者: faze 時間: 2016-12-6 23:41
我也買了一個,可是這個的proteus仿真怎么做?
作者: niuchuangang111 時間: 2017-3-13 15:48
可以。
作者: lyc1355 時間: 2017-5-31 11:23
共享資料的黑幣獎勵!
作者: lsy531 時間: 2017-7-27 23:29
感謝樓主共享資料。
作者: 129wht 時間: 2017-9-11 18:49
做畢業(yè)設(shè)計.只要實現(xiàn)溫度和時間顯示怎么調(diào)程序
作者: 人工智能威力 時間: 2017-9-11 21:43
下載來看看!有時間么仿一個
作者: zhao58 時間: 2017-9-21 21:29
謝謝分享 學(xué)習(xí)了
作者: gxlin 時間: 2017-10-5 15:14
我在淘寶買來這樣一套件,可是SD1302和晶振誤差每天6秒左右,很不理想。只是玩玩。
作者: 0o平平凡凡o0 時間: 2017-10-7 17:42
正在找原理圖,想搞來玩玩。謝樓主
作者: wu136ss 時間: 2017-10-28 17:48
正在找源碼,很有用,3Q
作者: wxxl 時間: 2017-10-28 21:57
這個我去年買了10個,單價9元多,后來再買就17塊了,沒殼的,沒源代碼!謝謝樓主!
作者: 浮沉aaa 時間: 2017-11-9 08:42
找了好久剛剛找到原理圖
作者: fangfangw 時間: 2017-11-15 17:54
為什么那個源碼我運行的有錯誤。
作者: 利快商貿(mào) 時間: 2017-11-20 00:24
謝謝分享,正在學(xué)習(xí)單片機
作者: fly_apple 時間: 2017-11-20 18:26
我也買了這個套件,程序是燒錄好的
作者: 山山山 時間: 2018-1-13 19:13
想學(xué)單片機知識!
作者: bhjyqjs 時間: 2018-2-9 09:08
支持樓主的這種無私奉獻(xiàn)精神
作者: 317635648 時間: 2018-3-24 15:04
能不能把原理發(fā)出來呀
作者: A17094430 時間: 2018-4-14 19:30
萬分感謝樓主的無私,解決了我的大難題
作者: jo1014 時間: 2018-4-23 15:31
能不能把說明書放出來啊。。。黑幣不夠 啊
作者: HSGhxq 時間: 2018-4-27 20:39
也想制作一個
作者: qqyh 時間: 2018-4-28 10:55
挺好的,就是積分不夠哈
作者: dpj01 時間: 2018-5-3 15:14
感謝樓主的無私
作者: L_earner 時間: 2018-5-9 22:52
有STC15F2K.h的庫嗎
作者: 小小白1997 時間: 2018-5-19 20:06
cdz5303 發(fā)表于 2016-11-21 11:40
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****
我也買了,而且也成功了,但想知道工作原理,你有源碼嗎?
作者: TKJT 時間: 2018-6-4 07:39
感謝分享
作者: F__706 時間: 2018-6-4 13:55
數(shù)碼管買成共陰極了,電路硬件修改好,代碼不會改,能指導(dǎo)一下嗎
作者: kmtbm 時間: 2018-6-15 11:40
謝謝你了,無私奉獻(xiàn)
作者: 帥氣小帥羽 時間: 2018-6-15 19:31
路過支持看看
作者: dpj01 時間: 2018-8-18 17:00
正在找原理圖,想搞來玩玩。謝樓主
作者: 天佑 時間: 2018-8-25 18:11
什么意思呀,還要來
作者: dpj01 時間: 2018-8-25 21:10
正在找原理圖,想搞來玩玩。謝樓主
作者: 天佑 時間: 2018-8-26 18:06
時鐘源碼和原理圖說明書
作者: gdx 時間: 2018-8-28 17:44
謝謝樓主分享
作者: 小冬家電維修 時間: 2018-9-2 21:12
正在找這個資料,感謝樓主無私奉獻(xiàn),論壇有你更精彩。
作者: lwtwm890 時間: 2018-9-29 19:19
想學(xué)學(xué),就是積分不夠
作者: 新佳影 時間: 2018-10-22 20:46
有源程序太好了,謝謝
作者: 新佳影 時間: 2018-10-23 20:38
有仿真電路嗎?
樓主發(fā)的源程序,為什么運行好多的警告,這樣可以用嗎?
希望高手們把源程序注釋一下,
作者: peng007ge008 時間: 2018-11-5 12:07
買了想改一個功能,正需要源碼
作者: slydian 時間: 2018-12-13 21:38
感謝分享!找這個很久了!
作者: 15266268100 時間: 2018-12-14 16:02
下載學(xué)習(xí)一下
作者: Li平 時間: 2018-12-21 22:04
我也買了一個,時間有點誤差,和賣家聯(lián)系了,說重新下載程序慢慢調(diào),現(xiàn)在時間誤差也比較小了。顯示亮度太亮,改了程序,稍微暗了一點,并且改為默認(rèn)開光控了。
作者: tyk143245 時間: 2019-3-13 17:16
感謝樓主分享 謝謝
作者: luting 時間: 2019-4-28 20:20
我也搞了一個剛裝好;咨詢可否改寫程序;
-
時鐘1.jpg
(3.77 MB, 下載次數(shù): 485)
下載附件
2019-4-28 20:20 上傳
-
時鐘2.jpg
(3.19 MB, 下載次數(shù): 488)
下載附件
2019-4-28 20:20 上傳
作者: 非?蓸稩II 時間: 2019-5-21 12:51
這個蜂鳴器引腳定義好像有問題,看原理圖應(yīng)該是P3^3吧
作者: gemxie 時間: 2019-6-27 16:30
下載下來看看先了,謝謝樓主分享了
作者: wan3721yx 時間: 2019-8-10 20:24
進(jìn)來看看
作者: wan3721yx 時間: 2019-8-10 20:25
有高手進(jìn)來解說下嗎
作者: 越南超級人類 時間: 2019-8-15 08:54
編譯不通過
作者: a616778230 時間: 2019-9-13 23:40
我也買了一個,可是這個的proteus仿真怎么做啊?
作者: yfpc2006 時間: 2019-9-19 17:22
某寶買的,先天不足,顯示有鬼影,很別扭。正好可以優(yōu)化一下淘來的小時鐘!
作者: yfpc2006 時間: 2019-9-19 18:23
你這個也有鬼影,最后的一位顯示值,隱約出現(xiàn)在第一位上,這是程序上的問題。
作者: yfpc2006 時間: 2019-10-2 04:55
我可以幫你修改程序,現(xiàn)在顯示明顯有鬼影,也就是掃描顯示的時候,掃描時間間隔從中斷定時,掃描的時候關(guān)閉位選后,在修改8位要顯示的數(shù)據(jù),然后再打來位選,就沒有鬼影了。
作者: litao1688 時間: 2019-10-10 11:32
感謝分享
作者: lgx7091709 時間: 2020-1-15 23:01
源碼有帶日期的,被注釋了,不知道能不能開出來
作者: wasg68 時間: 2020-2-18 17:04
找時鐘源碼和原理圖說明書
作者: wasg68 時間: 2020-2-18 19:19
謝謝,學(xué)習(xí)了
作者: xbox007 時間: 2020-2-24 08:58
源碼有問題工作一會就黑屏了
作者: q16599355 時間: 2020-3-8 16:04
來看看這個設(shè)計啊啊。。
作者: ban布 時間: 2020-4-6 21:01
謝謝樓主分享
作者: ban布 時間: 2020-4-6 21:02
有興趣入門,見到好資料,謝謝樓主
作者: Xyn.. 時間: 2020-4-19 13:48
有源程序嗎
作者: qysj22 時間: 2020-5-13 19:38
為什么我燒錄進(jìn)去不成功
作者: wsd0419zyj 時間: 2020-10-12 22:02
下載來看看!有時間么仿一個
作者: 13473156912 時間: 2020-10-16 16:43
感謝樓主共享資料,正是我想找的資料!
作者: bgcfb 時間: 2021-8-10 18:48
支持一下 手頭的板子好像就是這個
作者: 小小凡jj 時間: 2022-5-4 09:48
按照樓主給的程序燒錄好了,程序不對的!分鐘區(qū)如秒鐘的走!然后顯示不到一分鐘左右就全部自動滅了
作者: SURUBU1976 時間: 2022-5-5 08:33
有種想法是用vfd來做是否高級?
作者: syj1975 時間: 2022-9-11 16:53
請教一下,STC15F204EA燒寫時IRC頻率怎么選擇
-
CK45NI)M3VKW3SZ%Z[~M`XR.png
(103.61 KB, 下載次數(shù): 361)
下載附件
2022-9-11 16:53 上傳
作者: lclbf 時間: 2022-11-4 09:29
char flag=1;是什么標(biāo)志?char menu=0;這個變量啥作用?
作者: 雍儲 時間: 2022-11-6 20:38
啥時候能學(xué)到這程度
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |