找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 8445|回復(fù): 17
收起左側(cè)

單片機(jī)怎么實(shí)現(xiàn)閃動(dòng),呼吸和常亮三種模式的LED燈

[復(fù)制鏈接]
ID:278079 發(fā)表于 2018-7-13 17:45 | 顯示全部樓層 |閱讀模式
我做的LED燈想實(shí)現(xiàn)三種模式:閃動(dòng),呼吸和常亮。。通過斷電上電來循環(huán)切換模式,順序是閃動(dòng),呼吸,常亮。電源是220V轉(zhuǎn)5V給電路。
有一個(gè)機(jī)械開關(guān),當(dāng)快速斷開閉合開關(guān),燈就轉(zhuǎn)換模式。比如當(dāng)前是閃動(dòng),快速斷開然后閉合,燈就變?yōu)楹粑J健?br /> 當(dāng)開關(guān)斷開大約1S以上,無論斷開前是什么模式,都會(huì)回到閃動(dòng)模式。
我的想法是,一個(gè)全局變量char data_temp=0;,當(dāng)把IC的電源(5V)快速關(guān)閉,再快速打開,這個(gè)data_temp就會(huì)自加。斷電久一點(diǎn),data_temp就會(huì)變回0;我想到用欠壓中斷來實(shí)現(xiàn)這個(gè)功能,我感覺自己的邏輯沒有錯(cuò),但是效果并不好。。。
有沒有大神有想法的討論一下。。。
回復(fù)

使用道具 舉報(bào)

ID:47286 發(fā)表于 2018-7-13 20:50 | 顯示全部樓層
關(guān)鍵在于檢測(cè)到斷電后要繼續(xù)計(jì)數(shù) 實(shí)際上就是單片機(jī)沒斷電才能做到 我能想到的有2個(gè)方法

用個(gè)巨大的電容斷電后繼續(xù)提供電壓 但這需要你的模塊耗電量很小 不光單片機(jī)還包括外圍電路

另外的方法是用輔助電路在電源斷開后繼續(xù)延時(shí)一段時(shí)間無觸發(fā)再斷開自己 并輔助2樓說的存儲(chǔ)一個(gè)標(biāo)記

我自己在做一些車用模塊時(shí)為了盡量減小滅車后電力消耗用的就是第二個(gè)方法 滅車后等一段時(shí)間完全斷開自己的電源 著車時(shí)被ACC電壓觸發(fā)開始工作 和你這情況類似

何必這么搞 對(duì)于220v供電來說一個(gè)模塊消耗的電力很小基本可以忽略不計(jì) 你就直接給它永遠(yuǎn)供電 只檢測(cè)觸發(fā)狀態(tài)改變led模式不好么

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2018-7-14 04:27 | 顯示全部樓層
初學(xué)者總是以送出01至端口來決定燈的明暗,這是非常低級(jí)的做法。
高級(jí)的做法是,以一個(gè)段位為例:驅(qū)動(dòng)的位段至少用到以下幾點(diǎn):
1、做一個(gè)中斷,每間隔0.3秒反轉(zhuǎn)一次形成一個(gè)標(biāo)記:B_FLASH。
2、做一個(gè)控制位決定用不用閃動(dòng):B_CTAL。
3、決定的燈明暗的驅(qū)動(dòng)位:B_LED。
這時(shí)你才可以輸出:Pxx=B_LED*(B_CTAL*B_FLASH + /B_CTAL)
當(dāng)你需要閃動(dòng)時(shí):置B_CTAL=1
當(dāng)你需常亮常暗時(shí):清B_CTAL=0
當(dāng)然顯示什么,還是由B_LED來決定,這是你原先用來驅(qū)動(dòng)的段碼。
掌握了這個(gè)方法,讓某個(gè)位閃,某個(gè)段閃,都很方便,給相對(duì)應(yīng)B_CTAL送個(gè)0、1即可隨時(shí)讓它閃動(dòng)。我這個(gè)方法妙不妙?

評(píng)分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:67494 發(fā)表于 2018-7-13 19:44 | 顯示全部樓層
用里面的EEPROM斷電和開機(jī)產(chǎn)生一個(gè)標(biāo)志位,來區(qū)分工作狀態(tài),你的明白

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2018-7-14 04:30 | 顯示全部樓層
掌握了以上方法后,做呼吸也簡(jiǎn)單:自己動(dòng)動(dòng)腦子。
提示:再加呼吸控制位。與一下。
回復(fù)

使用道具 舉報(bào)

ID:278079 發(fā)表于 2018-7-14 08:15 | 顯示全部樓層
dzbj 發(fā)表于 2018-7-13 20:50
關(guān)鍵在于檢測(cè)到斷電后要繼續(xù)計(jì)數(shù) 實(shí)際上就是單片機(jī)沒斷電才能做到 我能想到的有2個(gè)方法

用個(gè)巨大的電容 ...

那是物理開關(guān)唉,一斷開,220V就沒有了,只能靠電源里的電容能夠提供大概0.5秒的時(shí)間。。
你說的第二個(gè)方法怎么實(shí)現(xiàn)呢?
回復(fù)

使用道具 舉報(bào)

ID:278079 發(fā)表于 2018-7-14 08:17 | 顯示全部樓層
yzwzfyz 發(fā)表于 2018-7-14 04:27
初學(xué)者總是以送出01至端口來決定燈的明暗,這是非常低級(jí)的做法。
高級(jí)的做法是,以一個(gè)段位為例:驅(qū)動(dòng)的位 ...

我是用PWM的,16個(gè)IO,16組LED燈。常亮閃動(dòng)呼吸這些都沒問題,是模式切換的問題,想不明白斷電了IC還能持續(xù)工作那么久,都快2秒了。。
回復(fù)

使用道具 舉報(bào)

ID:278079 發(fā)表于 2018-7-14 08:18 | 顯示全部樓層
18790839669 發(fā)表于 2018-7-13 19:44
用里面的EEPROM斷電和開機(jī)產(chǎn)生一個(gè)標(biāo)志位,來區(qū)分工作狀態(tài),你的明白

如果用EEPROM的話,怎么判斷長(zhǎng)時(shí)間掉電,讓模式回到最初?
回復(fù)

使用道具 舉報(bào)

ID:371320 發(fā)表于 2018-7-14 11:07 | 顯示全部樓層
用555定時(shí)器,接成施密特觸發(fā)器。單片機(jī)通電時(shí)施密特觸發(fā)器輸出低電平。斷電后觸發(fā)器中電容開始放電。再次上電時(shí)不向觸發(fā)器供電并判斷觸發(fā)器輸出,若為高電平則說明放電時(shí)間過長(zhǎng),EEPROM中變量清零回最初模式;若為低電平則說明放電時(shí)間不夠,EEPROM中變量加一到相應(yīng)模式模式;判斷觸發(fā)器輸出后向觸發(fā)器供電使其輸出為低電平為下一次檢測(cè)做準(zhǔn)備。利用555定時(shí)器可將待測(cè)電壓限制只能為高或低電平。

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:278079 發(fā)表于 2018-7-14 11:49 | 顯示全部樓層
嗒嘀嗒嗒嘀嘀 發(fā)表于 2018-7-14 11:07
用555定時(shí)器,接成施密特觸發(fā)器。單片機(jī)通電時(shí)施密特觸發(fā)器輸出低電平。斷電后觸發(fā)器中電容開始放電。再次 ...

本人硬件菜鳥,不是很懂大神說的
回復(fù)

使用道具 舉報(bào)

ID:47286 發(fā)表于 2018-7-14 12:52 | 顯示全部樓層
a920366858 發(fā)表于 2018-7-14 08:15
那是物理開關(guān)唉,一斷開,220V就沒有了,只能靠電源里的電容能夠提供大概0.5秒的時(shí)間。。
你說的第二個(gè) ...

完美解決肯定要加線 唯一問題是線是否原來穿好的 就是預(yù)埋在墻里到線盒的 這種情況稍微麻煩一點(diǎn) 要考慮原來的線管是否能再穿進(jìn)去和是否能穿得過去

另一種思路是 220v的燈開關(guān)對(duì)燈供電標(biāo)準(zhǔn)要求是控火 這樣關(guān)燈后燈頭無電 更換燈泡安全 那么你的開關(guān)里肯定有一根是火線 有些220v轉(zhuǎn)5v的模塊可以支持無零線工作 我自己家里的舊開關(guān)就是這么干的 給舊開關(guān)面板加指示燈 和你這意思一樣只是沒你這么多花樣 也是220v模塊直接干上去的 然后采集輸出線是否高電位就行了

第二種方法是用一個(gè)帶使能端的穩(wěn)壓芯片 使能端被外部觸發(fā)和單片機(jī)同時(shí)控制 外部斷電后 單片機(jī)采集到斷電但不關(guān)閉自己給使能端的觸發(fā)電壓 直到滿足要求才關(guān)閉 這事兩路觸發(fā)都沒了 自己就斷電了 再開燈外部觸發(fā)高就有給自己供電 相當(dāng)于一個(gè)或邏輯 兩個(gè)輸入有一個(gè)是1輸出就是1

評(píng)分

參與人數(shù) 1黑幣 +60 收起 理由
admin + 60 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:371559 發(fā)表于 2018-7-14 16:39 | 顯示全部樓層
設(shè)置等的頻率來視線啊
回復(fù)

使用道具 舉報(bào)

ID:219796 發(fā)表于 2018-7-14 19:32 來自手機(jī) | 顯示全部樓層
呼吸燈,可分為三個(gè)階段,漸亮,亮,漸滅,漸亮漸滅過程可用pwm脈寬依次增大或者減小來控制
回復(fù)

使用道具 舉報(bào)

ID:308437 發(fā)表于 2018-7-14 20:47 | 顯示全部樓層
看了評(píng)論區(qū)。我覺得您是不是想錯(cuò)了?為什么一定要斷電檢測(cè)呢?你加一個(gè)紐扣電池,備用就好了。
回復(fù)

使用道具 舉報(bào)

ID:308437 發(fā)表于 2018-7-14 20:50 | 顯示全部樓層
“ 用里面的EEPROM斷電和開機(jī)產(chǎn)生一個(gè)標(biāo)志位,來區(qū)分工作狀態(tài),你的明白”樓上這個(gè)說的也是可以的。但是所謂的常時(shí)間斷電。和短時(shí)間斷電。就應(yīng)該不可以的。你單片機(jī)都停止了。怎么可能還會(huì)檢測(cè)?是吧,想想都覺得不可能。我覺得,你如果是想是現(xiàn)這個(gè)功能,就加一個(gè)備用電源吧。如果是想鍛煉邏輯,那就隨你了~~當(dāng)然,你如果想到好的,也希望你跟我分享一下,共同進(jìn)步~·

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:278079 發(fā)表于 2018-7-16 08:12 | 顯示全部樓層
yousunny 發(fā)表于 2018-7-14 20:50
“ 用里面的EEPROM斷電和開機(jī)產(chǎn)生一個(gè)標(biāo)志位,來區(qū)分工作狀態(tài),你的明白”樓上這個(gè)說的也是可以的。但是所 ...

沒有備用電池。。關(guān)鍵是有人實(shí)現(xiàn)了,想不明白他是怎么實(shí)現(xiàn)的。。。
回復(fù)

使用道具 舉報(bào)

ID:278079 發(fā)表于 2018-7-16 08:13 | 顯示全部樓層
sldx 發(fā)表于 2018-7-14 19:32
呼吸燈,可分為三個(gè)階段,漸亮,亮,漸滅,漸亮漸滅過程可用pwm脈寬依次增大或者減小來控制

我不是問呼吸的實(shí)現(xiàn)哦。。。
回復(fù)

使用道具 舉報(bào)

ID:278079 發(fā)表于 2018-7-18 09:05 | 顯示全部樓層
段智超 發(fā)表于 2018-7-14 16:39
設(shè)置等的頻率來視線啊

這個(gè)不太理解是啥意思
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表