標(biāo)題: 單片機(jī)實(shí)戰(zhàn)項(xiàng)目中怎樣讓一個(gè)燈閃爍3S 求思路 [打印本頁]

作者: 245793280    時(shí)間: 2022-12-9 15:07
標(biāo)題: 單片機(jī)實(shí)戰(zhàn)項(xiàng)目中怎樣讓一個(gè)燈閃爍3S 求思路
目前在做一個(gè)電飯煲項(xiàng)目,要選者煮飯按鍵時(shí)對(duì)應(yīng)的led燈要閃爍3S,3S后常亮并且進(jìn)入煮飯模式,目前while主循環(huán)4MS進(jìn)入一次,怎樣實(shí)現(xiàn)這個(gè)功能?
定時(shí)器是125us進(jìn)入一起,希望大家給個(gè)思路

作者: yzwzfyz    時(shí)間: 2022-12-9 17:53
1、定義閃一次:亮0.3s,暗0.2s。需要兩個(gè)計(jì)時(shí)器,分別:LT=0.3s=0.3s/125us=2400;AT=0.2s=0.2s/125us=1600。
2、閃三次。需要一個(gè)計(jì)時(shí)器,TT=3。
3、燈明亮用一個(gè)標(biāo)記:B_LAMP。
現(xiàn)在可以寫程序了:
鍵按下后做下例事件:
1、初化:LT、AT、TT、燈亮,
2、對(duì)依序?qū)T、AT、TT中<>0的進(jìn)行計(jì)時(shí),=0的則跳過。
中斷服務(wù)程序:
1、LT =0,進(jìn)入下一步(不在亮燈時(shí)間內(nèi))
   LT<>0,做LT-1<>0時(shí):跳過以下各步。(燈亮還未結(jié)束,繼續(xù)計(jì)時(shí))
            LT-1 =0時(shí):關(guān)燈B_LAMP=0。(燈亮結(jié)束)跳過以下各步。
2、AT =0,進(jìn)入下一步(不在暗燈時(shí)間內(nèi))
   AT<>0,做AT-1<>0時(shí):跳過以下各步。(燈暗還未結(jié)束,繼續(xù)計(jì)時(shí))
            AT-1 =0時(shí):亮燈B_LAMP=1。(燈暗結(jié)束)跳過以下各步。
3、TT =0, 三次全部分過程結(jié)束了,跳出。
   TT<>0,做TT-1,復(fù)位LT=2400,AT=1600,亮燈B_LAMP=1(三次未到,繼續(xù)再來)。
作者: wulin    時(shí)間: 2022-12-9 20:20
見此貼的回復(fù),示例中用到閃爍功能,可以借鑒。
http://www.torrancerestoration.com/bbs/forum.php?mod=viewthread&tid=225635
作者: Y_G_G    時(shí)間: 2022-12-9 21:44
大哥,你是認(rèn)真的嗎?
你都接手項(xiàng)目了,閃燈3秒鐘的程序都寫不了,那電飯煲后繼的程序怎么辦?
作者: 245793280    時(shí)間: 2022-12-10 08:51
Y_G_G 發(fā)表于 2022-12-9 21:44
大哥,你是認(rèn)真的嗎?
你都接手項(xiàng)目了,閃燈3秒鐘的程序都寫不了,那電飯煲后繼的程序怎么辦?

其他的都搞完了,客戶那邊要加這個(gè)閃爍,我現(xiàn)在想的是在4ms主循環(huán)里面放多一個(gè)時(shí)間函數(shù) 每進(jìn)入一次主循環(huán)就記錄一次,然后再弄個(gè)燈閃爍的子函數(shù)看看,燈閃爍的子函數(shù)里面主要是燈的取反
作者: wulin    時(shí)間: 2022-12-10 10:51
此函數(shù)放在4ms主循環(huán)中運(yùn)行
  1. bit LED_make=0;//煮飯按鍵使能位

  2. void LED_flicker()
  3. {
  4.         static unsigned int count=0;//4ms計(jì)數(shù)
  5.         static bit flicker=0;//閃爍標(biāo)志
  6.         static bit sec_3=0;//3秒標(biāo)志

  7.         if(LED_make)//煮飯使能
  8.         {
  9.                 if((++count>=750) && !sec_3)
  10.                 {
  11.                         sec_3=1;
  12.                         flicker=0;
  13.                 }
  14.                 if(count%25==0)//閃爍周期200ms
  15.                 {
  16.                         flicker=~flicker;
  17.                 }
  18.                 if(!sec_3 && !flicker)
  19.                 {
  20.                         LED=0;//滅
  21.                 }
  22.                 else LED=1;//亮
  23.         }
  24.         else
  25.         {
  26.                 LED=0;//滅
  27.                 count=0;//復(fù)位清0
  28.                 flicker=0;//復(fù)位清0
  29.                 sec_3=0;//復(fù)位清0
  30.         }
  31. }
復(fù)制代碼

作者: 245793280    時(shí)間: 2022-12-10 14:00
wulin 發(fā)表于 2022-12-10 10:51
此函數(shù)放在4ms主循環(huán)中運(yùn)行

好我試一下,謝謝大神




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1