- N +

單片機(jī)c語言編程流水燈?單片機(jī)led流水燈編程

大家好,關(guān)于單片機(jī)c語言編程流水燈很多朋友都還不太明白,不過沒關(guān)系,因?yàn)榻裉煨【幘蛠頌榇蠹曳窒黻P(guān)于單片機(jī)led流水燈編程的知識(shí)點(diǎn),相信應(yīng)該可以解決大家的一些困惑和問題,如果碰巧可以解決您的問題,還望關(guān)注下本站哦,希望對(duì)各位有所幫助!

單片機(jī)中的流水燈,花樣燈,跑馬燈

沒什么實(shí)質(zhì)的區(qū)別只是各人說法不一樣,像流水燈程序也有人叫跑馬燈,說個(gè)簡單的例子,比方說一個(gè)亮點(diǎn)不斷的左循環(huán)就叫流水燈。

從中間亮兩個(gè)點(diǎn),從左右兩邊流動(dòng)就叫花樣。

單片機(jī)匯編語言流水燈程序延時(shí)0.5秒,一共四個(gè)燈循環(huán)

4只LED為共陽極連接,即單片機(jī)輸出端為低電平時(shí)即可點(diǎn)亮LED。;用最直接的方式實(shí)現(xiàn)流水燈ORG0000HSTART:MOVP1,#01111111B;最下面的LED點(diǎn)亮LCALLDELAY;延時(shí)60秒LCALLDELAY;延時(shí)60秒MOVP1,#10111111B;最下面第二個(gè)的LED點(diǎn)亮LCALLDELAY;延時(shí)60秒LCALLDELAY;延時(shí)60秒MOVP1,#11011111B;最下面第三個(gè)的LED點(diǎn)亮(以下省略)LCALLDELAYLCALLDELAY;延時(shí)60秒MOVP1,#11101111BLCALLDELAYLCALLDELAY;延時(shí)60秒MOVP1,#11110111BLCALLDELAYLCALLDELAY;延時(shí)60秒MOVP1,#11111011BLCALLDELAY;延時(shí)60秒LCALLDELAY;延時(shí)60秒LCALLDELAY;延時(shí)60秒LCALLDELAY;延時(shí)60秒LCALLDELAY;完成第一次循環(huán)點(diǎn)亮,延時(shí)約0.25秒AJMPSTART;反復(fù)循環(huán);延時(shí)子程序,12M晶振延時(shí)約250毫秒DELAY:;大約值:2us*256*256*2=260ms,也可以認(rèn)為為250msPUSHPSW;現(xiàn)場(chǎng)保護(hù)指令(有時(shí)可以不加)MOVR4,#240L3:MOVR2,#00HL1:MOVR3,#00HL2:DJNZR3,L2;最內(nèi)層循環(huán):(256次)2個(gè)周期指令(R3減一,如果比1大,則轉(zhuǎn)向L2)DJNZR2,L1;中層循環(huán):256次DJNZR4,L3;外層循環(huán):240次POPPSWRETEND

at89c51單片機(jī)流水燈原理是什么

本流水燈系統(tǒng)使用AT89C51單片機(jī)來實(shí)現(xiàn)流水燈的控制的設(shè)計(jì)原理是:P1的八個(gè)接口P1.0~P1.7,都通過限流電阻的連接著LED燈的陽極,所有LED燈的陰極的連接在0V,要讓接在P1.0口的LED1亮起來,那么只要把P1.0口的電平變?yōu)楦唠娖骄涂梢粤恕?/p>

單片機(jī)流水燈由兩邊向中間流再由中間向兩邊流的程序怎么寫

如果你的點(diǎn)燈是低電平那么編碼如下:0x7e,0xbd,0xdb,0xe7;這四個(gè)編碼實(shí)現(xiàn)從兩邊向中間流0xdb,0xbd,0x7e;由上面的四個(gè)編碼加上下面的四個(gè)編碼就達(dá)到了從中間向兩邊顯示的效果了循環(huán)顯示這七個(gè)編碼就OK

單片機(jī)流水燈C語言程序(8個(gè)燈,依次點(diǎn)亮每個(gè)燈,延時(shí)500MS)

單片機(jī)流水燈C語言程序(8個(gè)燈,依次點(diǎn)亮每個(gè)燈,延時(shí)500MS)源代碼如下:

#include<reg51.h>

#defineucharunsignedchar//定義無符號(hào)的字符

#defineuintunsignedint//定義無符號(hào)的整數(shù)

voiddelay(uint);//聲明延時(shí)函數(shù)

voidmain(void)

{

uinti;

uchartemp;

while(1)

{

temp=0x01;

for(i=0;i<8;i++)//8個(gè)流水燈逐個(gè)閃動(dòng)

{

P1=~temp;

delay(100);//調(diào)用延時(shí)函數(shù)

temp<<=1;

}

temp=0x80;

for(i=0;i<8;i++)//8個(gè)流水燈反向逐個(gè)閃動(dòng)

{

P1=~temp;

delay(100);//調(diào)用延時(shí)函數(shù)

temp>>=1;

}

temp=0xFE;

for(i=0;i<8;i++)//8個(gè)流水燈依次全部點(diǎn)亮

{

P1=temp;

delay(100);//調(diào)用延時(shí)函數(shù)

temp<<=1;

}

temp=0x7F;

for(i=0;i<8;i++)//8個(gè)流水燈依次反向全部點(diǎn)亮

{

P1=temp;

delay(100);//調(diào)用延時(shí)函數(shù)

temp>>=1;

}

voiddelay(uintt)//定義延時(shí)函數(shù)

{

registeruintbt;

for(;t;t--)

for(bt=0;bt<255;bt++);

}

拓展資料:

單片機(jī)又稱單片微控制器,它不是執(zhí)行特定邏輯功能的芯片,而是將計(jì)算機(jī)系統(tǒng)集成到芯片上的芯片,相當(dāng)于一個(gè)微型的計(jì)算機(jī)。與計(jì)算機(jī)相比,單片機(jī)缺少I/O設(shè)備。

總的來說,是一塊芯片變成了一臺(tái)計(jì)算機(jī)。它體積小、重量輕、價(jià)格低廉、為學(xué)習(xí)、應(yīng)用和開發(fā)都提供了便利條件。同時(shí),學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原理與結(jié)構(gòu)的一個(gè)最佳選擇。

如何設(shè)計(jì)一個(gè)單片機(jī)可控的循環(huán)流水燈

首先在硬件方面,我們使用了最經(jīng)典的選型用AT89S51單片機(jī)作為主控芯片,

LED電路選用共陽極接法:8路紅色LED燈正極接5V電源、各路串聯(lián)一個(gè)限流電阻,保護(hù)發(fā)光二極管不被燒壞,同時(shí)控制LED工作電流控制在10mA以內(nèi);根據(jù)I=U/R,則選用1K大小電阻。陰極分別接到P1.0~P1.7口,組成LED發(fā)光二極管驅(qū)動(dòng)電路

按鍵選用獨(dú)立按鍵方式。選用10K電阻與按鍵串聯(lián),一端接5V,一端接單片機(jī)IO口P2.0,如下圖所示:

我們來看一下軟件部分:

首先包含頭文件,調(diào)用51單片機(jī)寄存器定義。第二行的sbit是用來定義一個(gè)引腳值(即P2.0用KEY來表示);

這是一個(gè)延時(shí)的調(diào)用函數(shù),我們?cè)谶@個(gè)函數(shù)里,定義兩個(gè)變量,然后我們用兩個(gè)for循環(huán),內(nèi)部的j函數(shù)作為基礎(chǔ)延時(shí)單位,傳參tim代表具體延時(shí)時(shí)長。

這類延時(shí)函數(shù),具體的延時(shí)時(shí)間,可以通過延時(shí)函數(shù)對(duì)IO口進(jìn)行翻轉(zhuǎn),使用示波器查看翻轉(zhuǎn)時(shí)間周期,就可以確定這個(gè)延時(shí)函數(shù)的真實(shí)延時(shí)時(shí)間了。

這部分是按鍵處理函數(shù),首先檢測(cè)是否有按鍵按下,采用Delayms延時(shí)消抖,再等待按鍵松開,再對(duì)狀態(tài)變量進(jìn)行切換。

上圖所示,在while(1)中,每次循環(huán)1ms,則num每加1,num數(shù)目代表ms數(shù)目,

mode==1時(shí),led全部亮

mode==2時(shí),led全滅

mode==3或者mode==4,led數(shù)碼管間隔亮

mode==5,mode==6led兩種led流水亮滅

按鍵按下,切換不同的led燈流水燈效果

以上是對(duì)本題目進(jìn)行的回答,難免會(huì)有遺漏或者錯(cuò)誤,

歡迎大家留言,轉(zhuǎn)發(fā),點(diǎn)贊,關(guān)注!

謝謝大家

好了,文章到這里就結(jié)束啦,如果本次分享的單片機(jī)c語言編程流水燈和單片機(jī)led流水燈編程問題對(duì)您有所幫助,還望關(guān)注下本站哦!

返回列表
上一篇:
下一篇: