標(biāo)題: 求思路 單片機(jī)單按鍵控制8個(gè)Led燈亮滅程序,逐1-8燈或者從8-1 [打印本頁(yè)]

作者: mqhmqh    時(shí)間: 2021-10-19 07:49
標(biāo)題: 求思路 單片機(jī)單按鍵控制8個(gè)Led燈亮滅程序,逐1-8燈或者從8-1
請(qǐng)求大俠:用一個(gè)按鍵來分別控制8個(gè)Led燈亮滅,逐1→8燈或者從8→1,方向任意。怎么編程?
作者: 188610329    時(shí)間: 2021-10-19 19:51
你先搞明白 1 等于 亮燈,還是滅燈
再搞明白,按鍵按下 等于 1 還是 0
8個(gè)燈,是一個(gè)總線,還是分布各處。

電路原理搞清楚了,然后再考慮編程。不然隨便給你個(gè)程序,你能成功跑起來的概率 約等于0
作者: xianfajushi    時(shí)間: 2021-10-19 20:24
到我博客找流水燈例子有這樣切換的,用按鍵控制即可,經(jīng)典按鍵代碼:if(k1==0&&++xd==0){k=~k;while(k1==0);}這樣按鍵控制狀態(tài)K即可,其余代碼到我博客去抄寫。https://blog.csdn.net/xianfajushi
作者: zqy181818    時(shí)間: 2021-10-19 20:29
用循環(huán)左移,右移,就可實(shí)現(xiàn)。逐1,逐2點(diǎn)亮也可以,或者多個(gè)也可以。
作者: gz_lt_oo    時(shí)間: 2021-10-19 22:48
要看你燈是怎么接的?也就是電路原理
作者: xianfajushi    時(shí)間: 2021-10-20 10:58


作者: dzc3458    時(shí)間: 2021-10-20 18:42
隨手寫的一個(gè),自己把沒定義的變量和沒寫的函數(shù)補(bǔ)全吧

unsigned int p0=0x01;    //這個(gè)p是小寫
void main()
{
while(1)
{
while(key);    //低電平有效
delay(30);    //延時(shí)30ms
if(p0==0x80) p0=0x01;
else p0=p0<<1;
P0=p0;
}
}
作者: mqhmqh    時(shí)間: 2021-11-3 13:24
xianfajushi 發(fā)表于 2021-10-19 20:24
到我博客找流水燈例子有這樣切換的,用按鍵控制即可,經(jīng)典按鍵代碼:if(k1==0&&++xd==0){k=~k;while(k1==0) ...

在您的博客中沒找到。煩勞大俠復(fù)發(fā)一份
作者: xianfajushi    時(shí)間: 2021-11-3 14:18

  1. sbit k1=P1^0;
  2. void main()
  3. {
  4. uchar xd=0;P0=1;
  5. while(1)
  6. {
  7. if(k1==0&&++xd==0)
  8. {
  9. P0=_crol_(P0,1);
  10. while(k1==0);
  11. }
  12. }
  13. }
復(fù)制代碼

作者: xianfajushi    時(shí)間: 2021-11-3 14:33
我博客有眾多例子代碼,在理解按鍵代碼的基礎(chǔ)上隨意復(fù)制一些代碼都可輕松實(shí)現(xiàn),關(guān)鍵是要理解代碼。
按鍵代碼邏輯當(dāng)檢測(cè)到按鍵按下后再判斷是否過了消抖時(shí)間,只要有一個(gè)不符合就不會(huì)執(zhí)行按鍵里面代碼,一旦2個(gè)條件都成立(按鍵按下并且達(dá)到消抖時(shí)間)執(zhí)行按鍵里面代碼,并且等待按鍵釋放,本例按鍵按下燈移動(dòng)1位,且按鍵釋放后才能執(zhí)行下一次移位。
作者: xianfajushi    時(shí)間: 2021-11-3 14:42
本按鍵代碼下載到板子上實(shí)驗(yàn)正常使用不曾出現(xiàn)抖動(dòng)現(xiàn)象,特別老舊板子上的按鍵沒條件測(cè)試,因?yàn)闆]那樣的板子可用來驗(yàn)證。
作者: xianfajushi    時(shí)間: 2021-11-3 14:47
當(dāng)然,可以加大延時(shí)長(zhǎng)度用int和修改代碼如

  1. if(k1==0&&++xd==0)
  2. {
  3. P0=_crol_(P0,1);
  4. while(k1==0);
  5. }
  6. else xd=0;
復(fù)制代碼

作者: xianfajushi    時(shí)間: 2021-11-3 15:22
本按鍵代碼之所以能跳過抖動(dòng),妙就妙在2個(gè)判斷條件安排的順序上,只有在按鍵穩(wěn)定期間且達(dá)到一定時(shí)間,所以延時(shí)不需要很長(zhǎng)時(shí)間,按鍵非穩(wěn)定期間條件就不會(huì)成立,這樣顯得按鍵靈敏度很好,所以稱為經(jīng)典,不喜歡寫多行代碼。
作者: ankangyu    時(shí)間: 2021-11-3 16:57
在按鍵按下得程序中編寫一個(gè)移位得函數(shù)語(yǔ)句
作者: 累不死的狗    時(shí)間: 2021-11-3 21:50
設(shè)置一個(gè)變量,按下一次按鍵加一次數(shù);然后用位定義,定義小燈,按下一次點(diǎn)亮一個(gè),清除上一個(gè)
作者: xianfajushi    時(shí)間: 2021-11-4 10:37
新官上任三把火(諸葛孔明上任火燒博望坡),新生上學(xué)三蘿卜(還珠格格上學(xué)不求甚解只會(huì)蘿卜,能把蘿卜變成鑼鈸羅帛羅白全靠別人),橫批還想不到,哈哈。。。挺有趣的。
作者: xianfajushi    時(shí)間: 2021-11-4 13:38
午飯時(shí)靈感得橫批:指學(xué)成才。指望別人指點(diǎn)來學(xué)習(xí),指望抄寫別人蒙混過關(guān)。有感提問的人百相。
因此改寫上下聯(lián):上聯(lián),新生上學(xué)三蘿卜,下聯(lián),新官上任三把火,橫批,指學(xué)成才。

作者: 權(quán)威人物    時(shí)間: 2021-11-4 13:56
為什么這么多人回復(fù),網(wǎng)上例子大把!而且一個(gè)簡(jiǎn)單的入門,一看就是小白伸手黨




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