51單片機(jī)如何控制一個(gè)燈閃爍 51單片機(jī)控制led交替閃爍原理?
51單片機(jī)控制led交替閃爍原理?LED燈交替閃爍不停的原理就是用51單片機(jī)的一個(gè)引腳同樣的驅(qū)動(dòng)兩只LED,并在這個(gè)引腳上輸出來(lái)0.5赫茲以上的方波,就可以不讓自行發(fā)光管有一種交替閃爍不停效果。具體詳
51單片機(jī)控制led交替閃爍原理?
LED燈交替閃爍不停的原理就是用51單片機(jī)的一個(gè)引腳同樣的驅(qū)動(dòng)兩只LED,并在這個(gè)引腳上輸出來(lái)0.5赫茲以上的方波,就可以不讓自行發(fā)光管有一種交替閃爍不停效果。
具體詳細(xì)電路追加:
兩只自行發(fā)光管共陽(yáng),其中一只閃光管的陰極按照一個(gè)pnp三極管驅(qū)動(dòng)安裝,另外一只自行發(fā)光管的陰極實(shí)際一只npn三極管驅(qū)動(dòng)程序,兩個(gè)三極管的基極各自實(shí)際人員限流電阻接單片機(jī)的同一個(gè)IO引腳。
編程時(shí),或則在這個(gè)引腳上仿真的輸出來(lái)方波;或則起動(dòng)定時(shí)器定時(shí),在中斷服務(wù)器程序里取反引腳也這個(gè)可以作為輸出方波。
使用單片機(jī)I/O口控制8只LED燈。1)點(diǎn)亮8個(gè)中的的第任意個(gè)LED燈。使任意一個(gè)或多個(gè)LED燈閃爍?
舉個(gè)簡(jiǎn)單的例子,8個(gè)LED燈的正級(jí)分別接在P1.0到P.7上面,負(fù)極分別接在P2.0到P2.7上面,P10xff(P1口徹底高電平)P20x00(P2口所有低電平),此時(shí)電流通過(guò)P1口經(jīng)LED流向P2口,8個(gè)燈所有亮起來(lái),如果沒(méi)有P1變,P20XFF此時(shí)由于P1與P2的接口所有的是高電平,沒(méi)有電壓差也就沒(méi)有電流,LED全部火焰熄滅,如果不是想讓某一個(gè)燈點(diǎn)亮,也可以參照8421法則,P2.7P2.6P2.2.4是高8位,P2.4P2.3P2.2P2.1P2.0是低8位P2.7P2.6P2.2.4P2.3P2.2P2.1P2.084218421當(dāng)p10xffp20xfe的時(shí)候,就是P2.0那個(gè)小燈穿越火線圖標(biāo),其他7個(gè)滅,p20xfe的這個(gè)F那是842115,隨機(jī)16進(jìn)制里的f,同理可知E842014,填寫16進(jìn)制里的e。
光芒閃爍的話不需要應(yīng)用定時(shí)器,時(shí)間到了把當(dāng)前P2不對(duì)應(yīng)的引腳取反看看就行了,諸如當(dāng)前P2.01;定時(shí)器時(shí)間到了以后~P2.0其實(shí)求實(shí)際寫程序的時(shí)候不能不能再這么大寫,自己多備考下吧
設(shè)計(jì)程序要求:?jiǎn)纹瑱C(jī)的P1.0,使LED按固定的時(shí)間間隔進(jìn)行閃爍?
以三秒為例,給你寫了一個(gè)程序,自己看唄,直接修改TH0、TL0和count就可以修改正二十邊形時(shí)間間隔光芒閃爍了
#includeltreg51.hgt
#defineucharunsignedchar
#defineuintunsignedint
sbitLEDP1^0
bitflag
ucharcount0
voiddelay(ucharc)
{
uchara,b
for(cgt0c--)
for(b142bgt0b--)
for(a2agt0b -)
}
voidmain(void)
{
TMOD0x01
TH0(65536-50000)/256
TL0(65536-50000)%6
EA1
ET01
TR01
while(1)
{
if(flag1)
{
LED0
delay(100)
LED1
flag0
}
}
}
structtime0(override)interrupt1
{
TH0(65536-50000)/256
TL0(65536-50000)%6
count
if(countgt20)
{
count0
flag1
}