欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2618|回復(fù): 12
打印 上一主題 下一主題
收起左側(cè)

想通過單片機+紅外控制流水燈的模式切換

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:960619 發(fā)表于 2021-8-30 11:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
外部中斷紅外接收進來進行解碼,根據(jù)解碼的鍵值判斷執(zhí)行哪條程序。
.怎樣一直掃描紅外鍵碼的變動,鍵碼一變就跳轉(zhuǎn)執(zhí)行相應(yīng)代碼,在定時中斷中掃描嗎?


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:776954 發(fā)表于 2021-8-30 13:18 | 只看該作者
如果不是紅外線,而直接是按鍵切換狀態(tài)的話, 你會做嗎?仔細(xì)想想他們的區(qū)別
回復(fù)

使用道具 舉報

板凳
ID:161164 發(fā)表于 2021-8-30 13:44 | 只看該作者
不要用delay,不要用for


  1. while(1){
  2. for(i=0;i<8;i++){
  3. //your code
  4. }
  5. }
復(fù)制代碼

改為
  1. i=0;
  2. while(1)
  3. {
  4. //your code
  5. if(++i>=8)i=0;
  6. }
復(fù)制代碼
回復(fù)

使用道具 舉報

地板
ID:624769 發(fā)表于 2021-8-30 13:44 | 只看該作者
先假定,紅外接收解碼,你已經(jīng)會了,
又假定,根據(jù)外部中斷切換主程序分支,你也會了(一般是定義變量Mode, 然后主程序Switch(mode) 走不同的分支).

那么,把紅外線接受頭的引腳連接在外部中斷口。當(dāng)紅外接受頭收到信號,開始動作,則觸發(fā)外部中斷。
然后,外部中斷程序開啟定時器中斷,并且關(guān)閉自己的外部中斷。
隨后,定時器中斷負(fù)責(zé)處理紅外接受頭收到的信號。處理完畢后,把鍵值保存,并置位標(biāo)志位(主程序根據(jù)標(biāo)志位判斷是否需要進行模式切換)。
同時關(guān)閉定時器,打開外部中斷(為下次接受信號準(zhǔn)備)。
這么寫應(yīng)該能理解吧?
回復(fù)

使用道具 舉報

5#
ID:96072 發(fā)表于 2021-8-30 13:58 | 只看該作者
紅外遙控接收代碼,現(xiàn)成的
回復(fù)

使用道具 舉報

6#
ID:960619 發(fā)表于 2021-8-30 16:58 | 只看該作者
188610329 發(fā)表于 2021-8-30 13:44
先假定,紅外接收解碼,你已經(jīng)會了,
又假定,根據(jù)外部中斷切換主程序分支,你也會了(一般是定義變量Mode, 然 ...

還沒同時用過兩個中斷。我理解的你說的意思是紅外接收是最優(yōu)先中斷0,紅外解碼的程序放到定時中斷1里面執(zhí)行,外部中斷每成功接收一次信號先關(guān)閉外部中斷,等定時中斷處理完解碼再重新打開外部中斷接收下一次信號。然后根據(jù)定時中斷里的標(biāo)志位回到Switch里面走相應(yīng)程序。關(guān)于“把鍵值保存,并置位標(biāo)志位”,根據(jù)不同鍵碼置不同標(biāo)志位,然后賦值給mode嗎
回復(fù)

使用道具 舉報

7#
ID:960619 發(fā)表于 2021-8-30 17:01 | 只看該作者
HEIZI555 發(fā)表于 2021-8-30 13:58
紅外遙控接收代碼,現(xiàn)成的

紅外解碼寫好了,現(xiàn)要用紅外遙控實現(xiàn)不同的功能,包括對電機的控制啊,燈的亮度,燈的狀態(tài)等
回復(fù)

使用道具 舉報

8#
ID:960619 發(fā)表于 2021-8-30 17:03 | 只看該作者
lkc8210 發(fā)表于 2021-8-30 13:44
不要用delay,不要用for


這個好像沒啥關(guān)系吧,執(zhí)行中斷,都能跳出來,或是在循環(huán)里放按鍵掃描功能
回復(fù)

使用道具 舉報

9#
ID:415064 發(fā)表于 2021-8-30 18:06 | 只看該作者
baobao125 發(fā)表于 2021-8-30 17:01
紅外解碼寫好了,現(xiàn)要用紅外遙控實現(xiàn)不同的功能,包括對電機的控制啊,燈的亮度,燈的狀態(tài)等

按鍵的會寫了,紅外的也就會寫了。無外乎把紅外套按鍵的邏輯
回復(fù)

使用道具 舉報

10#
ID:161164 發(fā)表于 2021-8-30 19:48 來自觸屏版 | 只看該作者
baobao125 發(fā)表于 2021-8-30 17:03
這個好像沒啥關(guān)系吧,執(zhí)行中斷,都能跳出來,或是在循環(huán)里放按鍵掃描功能

那還有什么問題?
Just do it~!
回復(fù)

使用道具 舉報

11#
ID:624769 發(fā)表于 2021-8-31 20:42 | 只看該作者
baobao125 發(fā)表于 2021-8-30 16:58
還沒同時用過兩個中斷。我理解的你說的意思是紅外接收是最優(yōu)先中斷0,紅外解碼的程序放到定時中斷1里面執(zhí) ...

額,你可能稍稍有點誤會我的意思了。
我的意思是,沒必要定時器常開一直等待按鍵,紅外接受信號時有個頭信號的,此時會產(chǎn)生一個下降沿,利用這個下降沿觸發(fā)外部中斷,來打開定時器,接受及解碼按鍵。
當(dāng)然,你要嫌麻煩也不怕消耗資源,可以不用這個外部中斷,直接定時器常開24小時等待紅外信號也可以。
然后就是和你理解的差不多,定時器中斷獲取鍵值存入變量Key. 然后main程序根據(jù)這個變量Key,選擇執(zhí)行哪一段代碼。需要注意的是,如果你希望這個操作可以被打斷的話,就要分段執(zhí)行,比如你要跑馬燈右移8次,不要一次就讓他for循環(huán)跑完,你通過一個變量比如 remain , 賦值8,然后每次進入這個分支 if(--remain > 0) 右移一次。那么,你就要8次循環(huán)主程序才會跑完這個右移過程,這個過程中,只要接受到新的按鍵,鍵值改變了,就能在分支入口選擇mode的地方打斷之前那個分支的操作了。理解我的意思不?
回復(fù)

使用道具 舉報

12#
ID:390416 發(fā)表于 2021-9-1 08:22 | 只看該作者
先學(xué)會紅外解碼  
《人人學(xué)會單片機》 第28、第29課講了紅外解碼教程。A站可以觀看、原子哥網(wǎng)也可以免費觀看。
回復(fù)

使用道具 舉報

13#
ID:342954 發(fā)表于 2021-9-1 09:19 | 只看該作者
如果你紅外接收程序能寫出來,那后面的程序應(yīng)不是難事
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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