熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2017-3-24 21:39
正文摘要:題目是通過單片機(jī)來控制繼電器從而達(dá)到通斷電的效果,通過DC12V電壓或者DC5V電壓來控制AC220V的通斷。然后達(dá)到的效果是類似5s通5s斷,之后每1s累加一次,即下一次6s通5s斷,再下一次7s通,5s斷...... 直至40s通,5s ... |
想要樓主的程序 |
原理圖正確,帶上計(jì)時(shí)器按時(shí)間輸出基本就行了 |
dzbj 發(fā)表于 2017-4-11 23:52 謝謝,我已經(jīng)編出來了 ![]() |
dzbj 發(fā)表于 2017-4-11 23:52 請問,用單片機(jī)控制固態(tài)繼電器,再控制高頻電磁閥每秒鐘開關(guān)50次,請問這個(gè)程序應(yīng)該怎么寫 |
三極管驅(qū)動繼電器 |
剛才少看最后一句了 補(bǔ)上 bit flag_one=0; //第一次工作標(biāo)記 uchar num1s=0; //1s計(jì)數(shù)器 uchar n=5; //總秒數(shù)計(jì)數(shù)器 void mast() //主控 { if(flag_one==0) //如果 第一次工作標(biāo)記為0 這里是你要求的第一次5s開5s關(guān) { jk=1; //繼電器吸合 num1s=0; //延時(shí)5s while(num1s<n); jk=0; //繼電器關(guān)閉 num1s=0; //延時(shí)5s while(num1s<n); flag_one=1; //第一次工作標(biāo)記置1 不再運(yùn)行5s間隔的狀態(tài) n++; //總秒數(shù)計(jì)數(shù)器自加 } jk=1; //繼電器吸合 num1s=0; //延時(shí)5+n秒 每次+1S while(num1s<n); n++; //總秒計(jì)數(shù)器自加 jk=0; //繼電器關(guān)閉 num1s=0; //延時(shí)5s 你要求開時(shí)間每次+1S 關(guān)時(shí)間不變 while(n<5); //剛才沒看見你最后一句話沒寫這段 if(n==40) //判斷總次數(shù) 如果總次數(shù)是40 { flag_one=0; //第一次工作標(biāo)記清零 n=5; //總秒數(shù)計(jì)數(shù)器置5 } } void Server_Time0() interrupt 1 //定時(shí)器服務(wù)程序 { TH0 = xx; //重裝定時(shí)初值 1s TL0 = xx; //重裝定時(shí)初值 1s num1s++; //1s計(jì)數(shù)器自加 } void main() { Init_Time(); //定時(shí)器初始化 沒給你寫 基礎(chǔ)程序了 while(1) { mast(); //調(diào)用 主控程序 } } |
Vanessa 發(fā)表于 2017-3-26 18:00 三極管沒有很容易壞 現(xiàn)在有很多集成片子 有UN2008 當(dāng)年沒這些片子的時(shí)候 還不都是三極管干 也沒見幾個(gè)壞的 我喜歡用N-MOS 比三極管好用 不需要電流 51的準(zhǔn)雙向端口直接就能驅(qū)動了 |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎勵(lì)! |
我寫了一個(gè) 不知道對不對 一起學(xué)習(xí)吧 bit flag_one=0; //第一次工作標(biāo)記 uchar num1s=0; //1s計(jì)數(shù)器 uchar n=5; //總秒數(shù)計(jì)數(shù)器 void mast() //主控 { if(flag_one==0) //如果 第一次工作標(biāo)記為0 這里是你要求的第一次5s開5s關(guān) { jk=1; //繼電器吸合 num1s=0; //延時(shí)5s while(num1s<n); jk=0; //繼電器關(guān)閉 num1s=0; //延時(shí)5s while(num1s<n); flag_one=1; //第一次工作標(biāo)記置1 不再運(yùn)行5s間隔的狀態(tài) n++; //總秒數(shù)計(jì)數(shù)器自加 } jk=1; //繼電器吸合 num1s=0; //延時(shí)5+n秒 每次+1S while(num1s<n); n++; //總秒計(jì)數(shù)器自加 jk=0; //繼電器關(guān)閉 num1s=0; //延時(shí)5s 你要求開時(shí)間每次+1S 關(guān)時(shí)間不變 while(n<5); } void Server_Time0() interrupt 1 //定時(shí)器服務(wù)程序 { TH0 = xx; //重裝定時(shí)初值 1s TL0 = xx; //重裝定時(shí)初值 1s num1s++; //1s計(jì)數(shù)器自加 } void main() { Init_Time(); //定時(shí)器初始化 沒給你寫 基礎(chǔ)程序了 while(1) { mast(); //調(diào)用 主控程序 } } |
參與人數(shù) 1 | 黑幣 +40 | 收起 理由 |
---|---|---|
![]() | + 40 | 回帖助人的獎勵(lì)! |
原理圖基本沒錯(cuò)誤,程序中如果能達(dá)到設(shè)計(jì)的那樣,完全可以實(shí)現(xiàn)。加油 |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎勵(lì)! |
用三極管驅(qū)動,繼電器。也可以用可控硅控制。 |
Vanessa 發(fā)表于 2017-3-26 18:01 不是用來做調(diào)光啊,看來我猜錯(cuò)了。調(diào)光把燈的亮度進(jìn)行調(diào)節(jié) |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎勵(lì)! |
Vanessa 發(fā)表于 2017-3-26 18:00 只要在繼電器驅(qū)動線圈兩端并聯(lián)二極管就可。 |
越快樂越墮落 發(fā)表于 2017-3-26 21:09 已經(jīng)改成三極管的了 |
直接用三極管驅(qū)動繼電器,加一個(gè)保護(hù)繼電器的二極管就好了,用ULN2003太浪費(fèi)了 |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎勵(lì)! |
yzwzfyz 發(fā)表于 2017-3-25 01:12 那應(yīng)該怎么改呢? |
yzwzfyz 發(fā)表于 2017-3-25 01:12 能給個(gè)建議改正嗎,有點(diǎn)不太懂,謝謝 |
199419zzq 發(fā)表于 2017-3-26 14:31 正在往出憋程序 ![]() |
imxuheng 發(fā)表于 2017-3-26 11:13 調(diào)光是什么呢 |
zl2168 發(fā)表于 2017-3-25 09:05 三極管接法查的比較容易壞,正在考慮要不要用2003驅(qū)動數(shù)碼管 |
三極管驅(qū)動繼電器會省點(diǎn),繼電器觸點(diǎn)處應(yīng)并上一個(gè)消火花電容 |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎勵(lì)! |
原理圖正確,就看你編程能不能實(shí)現(xiàn)了 |
用三極管驅(qū)動繼電器就行了,給繼電器線圈并聯(lián)一個(gè)二極管來保護(hù)繼電器線圈。如果你要做調(diào)光建議用光耦+可控硅硬件電路,PWM控制方式 |
參與人數(shù) 1 | 黑幣 +40 | 收起 理由 |
---|---|---|
![]() | + 40 | 回帖助人的獎勵(lì)! |
2003驅(qū)動電路7路用了一路,真可惜。沒有性價(jià)比更好的方案嗎? |
基本正確,可以實(shí)現(xiàn)。 但復(fù)按鈕,接法不當(dāng),復(fù)位一次后,C3上的電放不掉。就不能再復(fù)位了。要等電容自放電結(jié)束,這需要很長時(shí)間。 |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎勵(lì)! |
Powered by 單片機(jī)教程網(wǎng)