機械社區(qū)
標(biāo)題: DIY定時自動打鈴器 [打印本頁]
作者: 1五湖四海1 時間: 2011-11-20 18:46
標(biāo)題: DIY定時自動打鈴器
DIY定時自動打鈴器
我廠為了搞好軍事化管理,在每個廠房安裝了電鈴。按廠規(guī)定的休息時間打鈴提示。安裝這套裝置需要一個定時自動控制電鈴開啟的裝置。廠子安排我負(fù)責(zé)完成這套裝置。我接下任務(wù)打算自行設(shè)計一套定時打鈴器,我的設(shè)計方案得到廠領(lǐng)導(dǎo)批準(zhǔn)后,我給自己立下軍令狀一周之內(nèi)完成。
在2011年11月20日制作完成了定時自動打鈴器,我利用單片機技術(shù)計時產(chǎn)生秒信號首先完成了數(shù)字電子鐘,在此基礎(chǔ)上加入了繼電器并通過軟件實現(xiàn)了定時控制繼電器。最后加入了鍵盤可以調(diào)整走時時間和設(shè)置多個定時時間。做到這里遇到一個問題,我是采用市電220v變壓整流給單片機板供電的,如果突然停電就會丟失走時時鐘和設(shè)置數(shù)據(jù),所以一定要保證供電連續(xù)性。我想了一個辦法如果停電時采用備用電池供電,停電時它們切換供電在切換過程中加入了10000uf的大電容解決了在切換過程中斷電現(xiàn)象。
在整個制作過程中遇到了許多問題,我需要面對問題去解決遇到的難題。我個人認(rèn)為這是一個鍛煉自己解決問題的好機會。制作中有苦有樂,我將制作方法拿出來和大家一起分享。
下面是我的小型實驗室
(, 下載次數(shù): 164)
上傳
點擊文件名下載附件
下載積分: 威望 -10 點
(, 下載次數(shù): 158)
上傳
點擊文件名下載附件
下載積分: 威望 -10 點
制作過程:2011年11月15日,我走進我的小角落小型實驗室,找出了51單片機開發(fā)板,打開電腦開始寫程序,忙了一天寫好了單片機數(shù)字電子鐘。這套裝置的核心就是電子鐘,所以首先要制作出數(shù)字電子鐘。然后在數(shù)字鐘程序基礎(chǔ)上加入了幾條語句就可以按編寫的時間控制繼電器閉合觸點了,很簡單吧!通過計算機設(shè)定調(diào)整時間設(shè)置定時時間可不行,下一步要加入鍵盤,通過鍵盤調(diào)整走時時間和設(shè)置定時時間。圖上面的三個按鈕分別為設(shè)置鍵,小時調(diào)整鍵,分鐘調(diào)整鍵。第二天完成了鍵盤調(diào)整函數(shù)模塊程序編寫,可以在一天中多了時間段控制電鈴響起。一步一步的調(diào)試改進完成了自動打鈴器,在喜悅中新問題來了,打鈴器工作了一天后出現(xiàn)了走時誤差,經(jīng)過9個小時就會出現(xiàn)60秒的誤差。我開始嘗試了各種方法解決誤差問題,采用自動調(diào)整法比較有效果,實驗測出產(chǎn)生1秒誤差所需用的時間,然后通過程序每過一段時間就將秒變量自動加1或是減1來清除誤差。在電源供電方面考慮實際情況需用改進。單片機正常工作必須保證電能連續(xù)性。如果一旦停電數(shù)據(jù)將會丟失,所以要加入備用電池當(dāng)停電時自動切換到電池供電。我將繼電器接到變壓器輸出端,如果市電有電時繼電器得電工作,停電時繼電器失電,通過繼電器常開常閉觸點控制市電和電池切換,在供應(yīng)電源輸出端加入10000uf大電容起到市電和電池切換瞬間斷電現(xiàn)象。電源電路中加入了一只光耦輸出端送往單片機它起到判斷何種方式供電,如果電池供電單片機板上面的數(shù)碼管關(guān)閉以節(jié)省電能。
下面有電源部分電路原理圖,單片機部分電路原理圖,實物圖和單片機c51程序。
(, 下載次數(shù): 152)
上傳
點擊文件名下載附件
下載積分: 威望 -10 點
(, 下載次數(shù): 158)
上傳
點擊文件名下載附件
下載積分: 威望 -10 點
(, 下載次數(shù): 159)
上傳
點擊文件名下載附件
下載積分: 威望 -10 點
(, 下載次數(shù): 114)
上傳
點擊文件名下載附件
下載積分: 威望 -10 點
(, 下載次數(shù): 158)
上傳
點擊文件名下載附件
下載積分: 威望 -10 點
(, 下載次數(shù): 154)
上傳
點擊文件名下載附件
下載積分: 威望 -10 點
作者: 1五湖四海1 時間: 2011-11-20 18:48
下面是自動打鈴器c程序
#include<reg51.h>
#define shum P1 //數(shù)碼
#define saom P2 //數(shù)碼掃描
#define uchar unsigned char
#define uint unsigned int
char DATA_7SEG[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x90,};
uchar hour=0,min=0,sec=0,tauto=0; //時 分 秒
uchar x=8,y=0,g=11,f=55,o=16,p=30; //x是定時1小時設(shè)定值 y是定時1分設(shè)定值
uchar deda=0;
uchar code xsjsbb[60];
bit d_05s=0;
uchar set=0;
/*-----------------------走時函數(shù)--------------------------*/
void init_timer()
{
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
IE=0x82;
TR0=1;
}
/*-----------------------5ms定時中斷服務(wù)函數(shù)--------------------------*/
void T0_srv(void) interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
deda++ ;
}
/*----------------------時,分,秒單元及走時單元轉(zhuǎn)換-------------------------*/
void conv()
{
if(deda<=100)d_05s=0;
else d_05s=1;
if(deda>=200){sec++;deda=0;}
if(sec==60){min++;tauto++;sec=0;}
if(tauto==9){sec=sec+1;tauto=0;} //自動調(diào)時沒過9分鐘(tauto=9)秒變量sec自增1
if(min==60){hour++;min=0;}
if(hour==24){hour=0;}
}
void display() //數(shù)碼管模塊
{char e,scan;
if(deda<=100)P3_4=0; else P3_4=1;
if(hour==x)a=1; else a=0; //定時設(shè)定值x,y g,f o,p
if(min==y)b=1; else b=0;
if(sec==2)c=1; else c=0;
if(a&b&c) P0_3=0; else P0_3=1;
if(hour==g)la=1; else la=0;
if(min==f)lb=1; else lb=0;
if(sec==2)lc=1; else lc=0;
if(la&lb&lc) P0_3=0; else P0_3=1;
if(hour==o)ia=1; else ia=0;
if(min==p)ib=1; else ib=0;
if(sec==2)ic=1; else ic=0;
if(ia&ib&ic) P0_3=0; else P0_3=1;
disp[3]=hour/10;
disp[2]=hour%10;
disp[1]=min/10;
disp[0]=min%10;
P1=0xff;
scan=0xef;
for(e=0;e<4;e++)
{
shum=0xff;
saom=scan;
if(P3_6==0)
{
if(d_05s==1)
{if(e==2)P1_7=0;else P1_7=1;}
}
else {if(e==2) P1_7=1;}
if(P3_6==0)
P1=DATA_7SEG[disp[e]];
else P1=0xff;
delay(4);
scan>>=1;
}
}
/*-------------------調(diào)整走時時間函數(shù)部分------------------------*/
void set_time()
{uchar m;
if(P3_1==0)delay(1);
if(P3_1==0)hour++;
F1:if(P3_1==0)goto F1;
if(hour==24)hour=0;
for(m=0;m<30;m++)
{
display();
if(d_05s==1)P2_7=0;
else P2_7=1;
delay(1);
}
if(P3_0==0)delay(1);
if(P3_0==0)min++;
F2:if(P3_0==0)goto F2;
if(min==60)min=0;
for(m=0;m<30;m++)
{
display();
if(d_05s==1)P2_7=0;
else P2_7=1;
delay(1);
}
}
}
作者: 1五湖四海1 時間: 2011-11-20 18:49
1五湖四海1 發(fā)表于 2011-11-20 18:48 
下面是自動打鈴器c程序
#include#define shum P1 //數(shù)碼#define saom P2 //數(shù)碼掃描#define uchar unsign ...
void set_t1()
{
uchar m;
if(P3_1==0)delay(1);
if(P3_1==0)x++;
F1:if(P3_1==0)goto F1;
if(x==24)x=0;
if(P3_0==0)delay(1);
if(P3_0==0)y++;
F2:if(P3_0==0)goto F2;
if(y==60)y=0;
for(m=0;m<30;m++)
{
char e,scan;
tdisp[4]=1;
tdisp[3]=x/10;
tdisp[2]=x%10;
tdisp[1]=y/10;
tdisp[0]=y%10;
P1=0xff;
scan=0xef;
for(e=0;e<5;e++)
{
shum=0xff;
saom=scan;
P1=DATA_7SEG[tdisp[e]];
delay(4);
scan>>=1;
}
delay(1);
}
}
void set_t2()
{
uchar m;
if(P3_1==0)delay(1);
if(P3_1==0)g++;
F1:if(P3_1==0)goto F1;
if(g==24)g=0;
if(P3_0==0)delay(1);
if(P3_0==0)f++;
F2:if(P3_0==0)goto F2;
if(f==60)f=0;
for(m=0;m<30;m++)
{
char e,scan;
tdisp[4]=2;
tdisp[3]=g/10;
tdisp[2]=g%10;
tdisp[1]=f/10;
tdisp[0]=f%10;
P1=0xff;
scan=0xef;
for(e=0;e<5;e++)
{
shum=0xff;
saom=scan;
P1=DATA_7SEG[tdisp[e]];
delay(4);
scan>>=1;
}
delay(1);
}
}
void set_t3()
{
uchar m;
if(P3_1==0)delay(1);
if(P3_1==0)o++;
F1:if(P3_1==0)goto F1;
if(o==24)o=0;
if(P3_0==0)delay(1);
if(P3_0==0)p++;
F2:if(P3_0==0)goto F2;
if(p==60)p=0;
for(m=0;m<30;m++)
{
char e,scan;
tdisp[4]=3;
tdisp[3]=o/10;
tdisp[2]=o%10;
tdisp[1]=p/10;
tdisp[0]=p%10;
P1=0xff;
scan=0xef;
for(e=0;e<5;e++)
{
shum=0xff;
saom=scan;
P1=DATA_7SEG[tdisp[e]];
delay(4);
scan>>=1;
}
delay(1);
}
}
/*-------------------按鍵掃描及延時等函數(shù)部分-------------------------*/
/*--------走時時間程序函數(shù)--------*/
void time()
{
conv();
display();
}
/*--------掃描按鍵函數(shù)--------*/
void scan_key()
{
delay(1);
if(P3_2==0)set++;
if(set>=5)set=0;
if(set==1)flag=0x55;
F0:if(P3_2==0)goto F0;
}
/*--------延時函數(shù)-------------*/
void delay(uint k)
{
uint i,j;
for(i=0;j<k;i++)
{
for(j=0;j<121;j++);
}
}
/*-----------------主函數(shù)-------------------------------------*/
void main()
{
init_timer();
while(1)
{if(P3_2==0)scan_key();
switch(set)
{
case 0:time(); break;
case 1:set_time();break;
case 2:set_t1();break;
case 3:set_t2();break;
case 4:set_t3();break;
default:break;
}
}
作者: 往事隨風(fēng)LEO 時間: 2011-11-20 19:38
{:soso_e126:} 打鈴器還要自制啊!!!浪費時間,直接買一個,都是現(xiàn)成的,而且很便宜!
作者: 華山一道 時間: 2011-11-20 20:02
嚴(yán)重不懂為啥要自己做,廉價的現(xiàn)成東西不用?
作者: 水無香 時間: 2011-11-20 21:49
精神可嘉,認(rèn)真鉆研,工作本身也是一種生活,有時候不以金錢論罷
作者: 山寨版 時間: 2011-11-20 21:53
樓主贊一個。。。。。。。。。。
作者: 我在飛 時間: 2011-11-20 22:45
其實對于定時打鈴的辦法很多。比如管理體系健全的企業(yè)一般各個車間和部門都會安裝廣播系統(tǒng)的。利用這個系統(tǒng),在辦公電腦上裝個定時播放音樂的軟件,定時播放鈴聲即可。且電腦的時鐘是可以聯(lián)網(wǎng)校準(zhǔn)的。更不怕斷電產(chǎn)生時鐘混亂。基本就是零投入。
作者: 1五湖四海1 時間: 2011-11-20 22:51
華山一道 發(fā)表于 2011-11-20 20:02 
嚴(yán)重不懂為啥要自己做,廉價的現(xiàn)成東西不用?
我喜歡電子制作,將擅長的單片機技術(shù)應(yīng)用到單位多好了,而且在制作過程中會遇到問題從中會學(xué)到很多東西。
作者: 904842999 時間: 2011-11-20 23:04
有時間自己做也好啊,我可還不會做
作者: syw開門造車 時間: 2011-11-21 01:46
1五湖四海1 友好!
.
學(xué)習(xí)是需要有載體的!就這樣一個小項目接著一個小項目的走下去,路肯定是對的.。
在你的身上,好象看到了我?guī)资昵暗挠白印?br />
別小看這些不起眼的小項目!每當(dāng)你“被迫”接受一項硬性任務(wù)時,就“逼迫你強制性的學(xué)習(xí)”一大堆與該項目有關(guān)的技能。
這種“被迫”、“強制”的學(xué)習(xí)機會非常難得,其會有效的解決你學(xué)習(xí)中的惰性!
當(dāng)一個項目完成后,你就會發(fā)現(xiàn),你又多了一項或幾項解決問題的能力。
當(dāng)你做過的小項目多起來以后,積累也就多了起來,你就有能力將這些技能串聯(lián)起來,就能迎接大項目的挑戰(zhàn)。
.
不信你看下面的鏈接,當(dāng)別人還在為一個問題苦苦想辦法的時候,你卻能輕而一舉的信手拈來。
.
syw 11-11-21 01:47
.
哪位大俠會三個月后 PLC自動鎖住( 催款用)
http://bbs.cmiw.cn/forum.php?mod=viewthread&tid=237251&extra=page%3D1&page=2
.
.
作者: 1五湖四海1 時間: 2011-11-21 18:12
我在飛 發(fā)表于 2011-11-20 22:45 
其實對于定時打鈴的辦法很多。比如管理體系健全的企業(yè)一般各個車間和部門都會安裝廣播系統(tǒng)的。利用這個系統(tǒng) ...
我在飛 你好:
的確實現(xiàn)定時打鈴的方法很多,這種方法是好但不適合我廠,我廠缺少辦公電腦無法安裝定時軟件購買的打鈴器缺少個性化功能不如自制一個打鈴器,而且在制作中積累了一些經(jīng)驗有了不少收獲。
作者: 1五湖四海1 時間: 2011-11-21 18:25
syw開門造車 發(fā)表于 2011-11-21 01:46 
1五湖四海1 友好!
.
學(xué)習(xí)是需要有載體的!就這樣一個小項目接著一個小項目的走下去,路肯定是對的.。
syw開門造車 你好:
謝謝孫老師您對我制作小項目的支持,確實我每做成功一個小項目都會掌握與項目相關(guān)的技能。這次制作中遇到了走時誤差問題9個小時就出現(xiàn)60秒的誤差,我嘗試著各種方法去解決,最后利用自動調(diào)整法清除了走時誤差。類似的例子還有很多,我從中積累了不少經(jīng)驗。
作者: happqiwei 時間: 2011-11-23 15:08
謝謝分享,值得學(xué)習(xí){:soso_e179:}
作者: 702082362 時間: 2012-1-5 10:32
樓主可以嘗試加上專業(yè)的時鐘芯片來提高精度,況且價格不貴。看到樓主桌子上的《電子制作》啦。
作者: ahuangrun2008 時間: 2012-1-5 11:07
不錯,單片機學(xué)了都忘關(guān)了
作者: fg1234pl 時間: 2012-1-5 22:04
你表現(xiàn)非常好{:soso_e179:}{:soso_e181:}
作者: tianqilq 時間: 2012-1-6 22:18
路過………………蹭點積分
作者: tt255302 時間: 2012-1-7 10:03
51 很親切啊 不過有點浪費
作者: guoqingxiang 時間: 2012-1-7 10:15
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
作者: 正達環(huán)保 時間: 2012-1-9 17:40
原來一個自動打鈴也這么麻煩呀
作者: 虎王 時間: 2012-3-31 09:58
精神可嘉,認(rèn)真鉆研,工作本身也是一種生活,有時候不以金錢論罷
作者: changkongceyi 時間: 2012-3-31 13:58
樓主的動手能力真強,羨慕不已...
作者: 何林1008 時間: 2012-3-31 14:11
不錯,精神可嘉
作者: eddyzhang 時間: 2012-3-31 14:46
既然要軍事化管理,干脆有人到點了在車間門口吹號算了
作者: hanshoubao 時間: 2012-3-31 15:32
自己動手!豐衣足食!精神可嘉!
作者: 梁lhcqq 時間: 2012-4-22 13:11
不錯,可惜我不會,我以前工廠就直接用時控開關(guān)來控制電鈴。。。簡單,實用,
作者: 雷厲V風(fēng)行 時間: 2012-5-7 20:15
1五湖四海1 發(fā)表于 2011-11-20 22:51 
我喜歡電子制作,將擅長的單片機技術(shù)應(yīng)用到單位多好了,而且在制作過程中會遇到問題從中會學(xué)到很多東西。
支持樓主 好樣的{:soso_e100:}
作者: czjwpby 時間: 2014-6-18 09:52
如果不需要太準(zhǔn)時,而且是固定時間的話,凸輪行不行?
作者: PoiSonLink 時間: 2014-6-18 14:25
單片機寫程序需要這么麻煩嗎?
作者: fyx161200 時間: 2015-4-17 09:50
太牛了,如何編程那些代碼?
作者: 1五湖四海1 時間: 2015-4-18 10:25
用keill開發(fā)環(huán)境編寫51程序代碼,編譯后用燒寫器下載到單片機中運行。
作者: 一杯熱茶足以 時間: 2015-5-29 18:47
在實踐中學(xué)習(xí),贊一個
作者: artisan2014 時間: 2015-8-11 09:18
904842999 發(fā)表于 2011-11-20 23:04 
有時間自己做也好啊,我可還不會做
精神可嘉,現(xiàn)在會用的人很多,會動手制作的人太少了
作者: jslyg5555 時間: 2015-8-19 16:32
加油,幾十塊錢東西。花那么多時間。干點別的
作者: 自動化小生103 時間: 2015-8-22 12:02
贊
作者: 1心you 時間: 2017-3-25 10:46
70塊錢都不用,買個定時開關(guān),14組時間設(shè)置。按照你這個套路,完全可以滿足,沒有必要自己搞嘛,不過,值得學(xué)習(xí)!
作者: 小李報到 時間: 2017-3-27 08:13
鉆研精神很好,可用來練手,提升設(shè)計水平
作者: 只有快樂 時間: 2017-4-4 14:21
太牛了,膜拜!我想給魚缸做一個自動定時的東西可惜沒有樓主這么強大能力!東西自己做雖然費力不比買的便宜,但是擁有這個打鈴期,樓主經(jīng)歷的是從無到有的“創(chuàng)造”,其中的快樂遠非一個“購得”的成就感可比。
作者: 只有快樂 時間: 2017-4-26 20:36
厲害了,我的神
作者: 1五湖四海1 時間: 2017-4-29 23:36
謝謝你的夸獎,這是興趣的力量
歡迎光臨 機械社區(qū) (http://www.ytsybjq.com/) |
Powered by Discuz! X3.5 |