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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3729|回復(fù): 9
收起左側(cè)

求大神指導(dǎo)該如何學(xué)習(xí)?想通過(guò)學(xué)習(xí)完成一個(gè)單片機(jī)流水燈程序

  [復(fù)制鏈接]
ID:892270 發(fā)表于 2021-3-15 18:20 | 顯示全部樓層 |閱讀模式
由于本論壇禁止直接求程序,禁止伸手黨,所以向大家請(qǐng)教一下大致的實(shí)現(xiàn)方法與思路,理清頭緒后我自己來(lái)寫(xiě)程序去實(shí)現(xiàn)

單片機(jī)的PL0~PL7接8個(gè)發(fā)光二極管LOD0~LOD7。編寫(xiě)程序,從中間兩個(gè)燈開(kāi)始亮起(LED3,LED4),向兩邊逐個(gè)點(diǎn)亮,每次亮兩個(gè)燈,當(dāng)LED0和;ED7點(diǎn)亮后,由兩邊向中間逐個(gè)點(diǎn)亮,重復(fù)循環(huán)
回復(fù)

使用道具 舉報(bào)

ID:702386 發(fā)表于 2021-3-15 20:39 | 顯示全部樓層
給你個(gè)簡(jiǎn)單的方案建議,由于亮燈的組合情況只有4種,干脆定義一個(gè)8個(gè)元素的顯示數(shù)組,把來(lái)回一遍亮燈的8種狀態(tài)對(duì)應(yīng)的字節(jié)按順序?qū)懙綌?shù)組中。然后只要在while循環(huán)中搞一個(gè)for循環(huán)就能實(shí)在重復(fù)循環(huán)顯示。

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:230742 發(fā)表于 2021-3-15 23:54 | 顯示全部樓層
對(duì)了。數(shù)組最適合你的想法,可以想讓那個(gè)亮,就讓那個(gè)亮。想亮幾個(gè),就亮幾個(gè)。數(shù)組寫(xiě)個(gè)100組,每組100個(gè)值,你就是點(diǎn)燈大師!

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:892400 發(fā)表于 2021-3-16 00:07 | 顯示全部樓層
想寫(xiě)簡(jiǎn)單還是想寫(xiě)復(fù)雜。可能你基礎(chǔ)還不牢固,寫(xiě)個(gè)容易明白的給你
#include<reg52.h>///////這句程序?qū)⑿酒瑥S(chǎng)家定義的程序拉進(jìn)你的程序,他的作用告訴電腦各引腳連接到第幾個(gè)控制寄存器,因?yàn)橹苯訉?xiě)P0他不知道啥意思,所以這句程序拉進(jìn)來(lái)的頭文件告訴電腦P0=0X80;是指P0連接到了第80號(hào)寄存器,然后電腦進(jìn)去數(shù),數(shù)到第80控制單元就是P0引腳了。了解就可以了。
sbit LEDsbi0=P0^0;
sbit LEDsbi0=P0^0;
sbit LEDsbi0=P0^0;

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:372579 發(fā)表于 2021-3-16 09:16 來(lái)自手機(jī) | 顯示全部樓層
這個(gè)用沙發(fā)的思路,地板的程序結(jié)合起來(lái)就是一個(gè)完美的程序,當(dāng)然前提是你要for循環(huán)和while的用法,這個(gè)可以去本論壇或網(wǎng)上搜索一下應(yīng)該有這種介紹的,結(jié)合這個(gè)東西肯定能做得出來(lái),祝你成功!

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:892492 發(fā)表于 2021-3-16 10:51 | 顯示全部樓層
用一個(gè)for語(yǔ)句,你這里有6個(gè)狀態(tài),34,25,16,07,16,25,循環(huán)執(zhí)行

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:139866 發(fā)表于 2021-3-16 11:57 | 顯示全部樓層
int Array[] = {00011000,00100100,01000010,10000001};

while(1)
{
  for( char i = 0 ; i < 4 ; i ++ ){
    P1 = Array[ i ] ;
    Delay();
  }

  for( char i = 4; i > 0 ; i -- ){
    P1 = Array[ i  -1] ;
    Delay();
  }
}

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:695741 發(fā)表于 2021-3-16 12:05 | 顯示全部樓層
不太能理解數(shù)組的思想,按我的想法就照著最笨的辦法來(lái)。。一條代碼點(diǎn)兩個(gè)燈,延時(shí),關(guān)燈,延時(shí),再點(diǎn)下面兩個(gè)燈,延時(shí),關(guān)燈,延時(shí)。。。。整個(gè)放到for循環(huán)里面。。。

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:801701 發(fā)表于 2021-3-16 15:34 | 顯示全部樓層
其實(shí)流水燈你得明白它的每個(gè)程序是干什么的,他那個(gè)數(shù)組里面存儲(chǔ)的數(shù)據(jù)就是每個(gè)引腳的電平狀態(tài),比如說(shuō),0xff換成二進(jìn)制就是1111 1111,學(xué)過(guò)數(shù)電就知道,我們?cè)陔娮釉?代表高電平,0代表低電平。所以說(shuō)這代表你這邊有八個(gè)引腳是高電平。而再去結(jié)合單片機(jī)led燈硬件連接就可以知道,它一端連的是高電平(也就是我們說(shuō)的共陽(yáng)),另一端是單片機(jī)引腳,led兩端是高電平無(wú)電勢(shì)差,所以是滅的狀態(tài)同理,0x00是全部點(diǎn)亮,你可以先根據(jù)想點(diǎn)亮那個(gè)led燈對(duì)應(yīng)的引腳寫(xiě)0,滅就寫(xiě)1,最后化為16進(jìn)制。就得到所謂的點(diǎn)燈數(shù)組,然后把數(shù)組里的數(shù)據(jù)付給引腳,引腳就有了高低電平。然后就是死循環(huán)執(zhí)行了。

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:883698 發(fā)表于 2021-3-17 19:29 | 顯示全部樓層
去找任何一個(gè)開(kāi)發(fā)板的例程,流水燈都是基礎(chǔ)中的基礎(chǔ)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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