請教如何用7447+紅綠燈七段顯示器 |
缺席
|
ttneurpffnt
一般會員 發表:1 回覆:6 積分:1 註冊:2004-08-16 發送簡訊給我 |
因為為了要交一篇專題報告,而小弟就用簡單的8051來寫紅綠燈 七段顯示器(類似現在的紅綠燈@@),小弟是會寫紅綠燈的程式,但要同時顯示七段顯示器 7447編碼器....小弟就有難題了!
七段顯示器 7447編碼是這段↓
org 00h
mov r3,#00h;r3暫存器設為00顯示
loop: mov p1,r3;把r3的00顯示搬到p1埠顯示出來
mov r2,#30;delay程式
call delay呼叫delay
xch a,r3;r3跟累積器a對換
add a,#01;累積器 1
da a;a作十進制調整
xch a,r3;暫存器跟a對換
jmp loop;跳到loop
delay延遲程式為1秒
↑
這段是從00顯示到99在跳到00的顯示的,而小弟製做的是p1為甲路口的七段顯示器(加7447),p2為乙路口的七段顯示器(加7447),p0為紅綠燈,而綠燈設定為20s,黃燈為5s,紅燈為25s。是用七段顯示器到0時,就變換紅綠燈的輸出值,所以紅綠燈沒有delay程式。
那如果小弟目前想到的如果要讓p1及p2同時顯示器秒數的話!那是否能夠寫這樣↓
mov r3,#00100101b;用2進制顯示25s行不行?還是一定要用十六進制?
mov r4,#00100000b;同樣的,顯示20s
loop:mov p1,r3;把r3內容搬到p1
mov p2,r4;把r4內容搬到p2
mov r2,#30
call delay
xch a,r3
xch a,r4
subb a,#01;把累積器的內容減1
da a
xch a,r3
xch a,r4
jmp loop
這段不知行不行,也就是甲路口為25s,乙路口為20秒,同時都慢慢減1,乙路口減到為0的話就跳成黃燈,從乙路口又顯示5秒開始慢慢減到0到變為紅燈,甲路口也剛好到5秒也是減到0變成綠燈,而這又有一個問題就是...如果剛的程式要讓他成0就跳成另一段...該如何做? 能否請站上要是知道的為小弟講解一下呢?謝謝大家。
|
sadiku
一般會員 發表:0 回覆:15 積分:8 註冊:2004-08-08 發送簡訊給我 |
|
ttneurpffnt
一般會員 發表:1 回覆:6 積分:1 註冊:2004-08-16 發送簡訊給我 |
|
dododo
一般會員 發表:16 回覆:23 積分:12 註冊:2004-04-29 發送簡訊給我 |
|
ttneurpffnt
一般會員 發表:1 回覆:6 積分:1 註冊:2004-08-16 發送簡訊給我 |
以下是我晚上想的,不過還有很多不足的地方
org 00h
jmp g1; 跳到start
g1:
mov p0,#00100001b; p0埠為LED燈,0為滅、1為亮
mov r3,#20h; r3暫存器這定成25,也就是要讓p1埠顯示成25
mov r4,#25h; r4暫存器這定成20,也就是要讓p2埠顯示成25
loop:
mov p1,r3; r3輸出到p1埠,p1埠接上7447編碼 2顆7-LED燈
mov p2,r4; r4輸出到p2埠,p2埠接上7447編碼 2顆7-LED燈
mov r2,#20
call delay; 延遲逼程式
xch a,r3; 累積器及r3暫存器做變換
add a,#99h; 25 99=124,因為只有一個 BYTE,所以值=24H,相當於減一
da a; 做十進制調整
xch a,r3; 累積器及r3暫存器做變換
xch a,r4; 累積器及r4暫存器做變換
add a,#99h; 20 99=119,因為只有一個 BYTE,所以值=19H,相當於減一
da a; 做十進制調整
xch a,r4; 累積器及r3暫存器做變換
jmp loop; 跳到loop又繼續把p1、p2埠的7-LED做減一
y1:
mov p0,#00010001b
mov r3,#05h
mov r4,#05h
loop1:
mov p1,r3
mov p2,r4
mov r2,#20
call delay
xch,r3
add a,#99h
da a
xch a,r3
xch a,r4
add a,#99h
da a
xch a,r4
jmp loop1
r1:
mov p0,#00001100b
mov r3,#25h
mov r4,#20h
loop2:
mov p1,r3
mov p2,r4
mov r2,#20
call delay
xch a,r3
add a,#99h
da a
xch a,r3
xch a,r4
add a,#99h
da a
xch a,r4
jmp loop2
y2:
mov p0,#00001010b
mov r3,#05h
mov r4,#05h
loop3:
mov p1,r3
mov p2,r4
mov r2,#20
call delay
xcha,r3
add a,#99h
da a
xch a,r3
xch a,r4
add a,#99h
da a
xch a,r4
jmp loop3
delay:
mov r1,#20
del:
mov r0,#248
djnz r0,$
djnz r1,del
djnz r2,delay
ret
end
我把我現在寫的程式po上去,只不過這個程式..還少一堆因為還少一個jz...
jz是把累積器a的到0時就跳到另一段的程式....,然而jz我不會用...
我的理想7-LED是這樣子,P1為顯示25,P2顯示20,而P2顯示到0的時候,就變成5秒,而P1剛好也到5秒,兩者繼續倒數到0時,又變成P1顯示為20,P2顯示為25,又重覆下去,最後又跳到G1,而因為JZ我不知要加在哪...這點我就很困擾了!如果有知道的大大們,可否麻煩一下呢?謝謝您。
|
pdcmg
一般會員 發表:3 回覆:22 積分:20 註冊:2004-11-09 發送簡訊給我 |
|
91402035
一般會員 發表:0 回覆:6 積分:1 註冊:2004-12-28 發送簡訊給我 |
|
ttneurpffnt
一般會員 發表:1 回覆:6 積分:1 註冊:2004-08-16 發送簡訊給我 |
|
91402035
一般會員 發表:0 回覆:6 積分:1 註冊:2004-12-28 發送簡訊給我 |
|
91402035
一般會員 發表:0 回覆:6 積分:1 註冊:2004-12-28 發送簡訊給我 |
引言: 你是說要寫紅綠燈在加上讓黃燈可以閃爍嗎....我記得我書上有看過喔!ORG 0000H JMP START START: MOV P2,#11011110B MOV R4,#150 CALL DELAY MOV R3,#10 FLASH1: CPL A MOV R4,#10 CALL DELAY DJNZ R3,FLASH1 MOV P2,#11011101B MOV R4,#30 CALL DELAY MOV P2,#11110011B MOV R4,#150 CALL DELAY MOV R3,#10 FLASH2: CPL A MOV R4,#10 CALL DELAY DJNZ R3,FLASH2 MOV P2,#11101011B MOV R4,#30 CALL DELAY JMP START DELAY: MOV R6,#250 DEL1: MOV R7,#200 DEL2: DJNZ R7,DEL2 DJNZ R6,DEL1 DJNZ R4,DELAY RET END 這是我的程式你可以幫我看一下ㄇ??謝謝你 |
ttneurpffnt
一般會員 發表:1 回覆:6 積分:1 註冊:2004-08-16 發送簡訊給我 |
|
ttneurpffnt
一般會員 發表:1 回覆:6 積分:1 註冊:2004-08-16 發送簡訊給我 |
這是紅綠燈加七段顯示器,但是綠燈就跳到黃燈,在來跳到紅燈。黃燈的話,我就沒做閃爍的動作了
org 00h
jmp start
start:
mov p0,#11011110b
mov r3,#25h
mov r4,#20h
loop:
mov p1,r3
mov p2,r4
mov r2,#20
call delay
mov a,r4
jnz hex_1
mov p0,#11101110b
mov a,#05h
hex_1:
add a,#99h
da a
mov r4,a
mov a,r3
jz start1
add a,#99h
da a
mov r3,a
jmp loop
start1:
mov p0,#11110011b
mov r3,#20h
mov r4,#25h
loop1:
mov p1,r3
mov p2,r4
mov r2,#20
call delay
mov a,r3
jnz hex_2
mov p0,#11110101b
mov a,#05h
hex_2:
add a,#99h
da a
mov r3,a
mov a,r4
jz start
add a,#99h
da a
mov r4,a
jmp loop1
delay:
mov r1,#40
del:
mov r0,#248
djnz r0,$
djnz r1,del
djnz r2,delay
ret
end
|
ttneurpffnt
一般會員 發表:1 回覆:6 積分:1 註冊:2004-08-16 發送簡訊給我 |
ORG 0000H
JMP START
START:
MOV P2,#11011110B
MOV R4,#150
CALL DELAY
MOV R3,#10
FLASH1:
MOV P2,#11011101B
MOV R4,#5
CALL DELAY
MOV P2,#11011111B
MOV R4,#5
CALL DELAY
DJNZ R3,FLASH1
MOV P2,#11110011B
MOV R4,#150
CALL DELAY
MOV R3,#10
FLASH2:
MOV P2,#11101011B
MOV R4,#5
CALL DELAY
MOV P2,#11111011B
MOV R4,#5
CALL DELAY
DJNZ R3,FLASH2
JMP START
DELAY:
MOV R6,#40
DEL1:
MOV R7,#150
DJNZ R7,$
DJNZ R6,DEL1
DJNZ R4,DELAY
RET
END 這是顯示紅燈跟綠燈,等綠燈延時完,就跳至黃燈,而黃燈會閃爍,在來兩者就對調嘍!如果要接上七段顯示的話在整合之前的程式就好了喔!....
|
91402035
一般會員 發表:0 回覆:6 積分:1 註冊:2004-12-28 發送簡訊給我 |
引言: ORG 0000H JMP START START: MOV P2,#11011110B MOV R4,#150 CALL DELAY MOV R3,#10 FLASH1: MOV P2,#11011101B MOV R4,#5 CALL DELAY MOV P2,#11011111B MOV R4,#5 CALL DELAY DJNZ R3,FLASH1 MOV P2,#11110011B MOV R4,#150 CALL DELAY MOV R3,#10 FLASH2: MOV P2,#11101011B MOV R4,#5 CALL DELAY MOV P2,#11111011B MOV R4,#5 CALL DELAY DJNZ R3,FLASH2 JMP START DELAY: MOV R6,#40 DEL1: MOV R7,#150 DJNZ R7,$ DJNZ R6,DEL1 DJNZ R4,DELAY RET END 這是顯示紅燈跟綠燈,等綠燈延時完,就跳至黃燈,而黃燈會閃爍,在來兩者就對調嘍!如果要接上七段顯示的話在整合之前的程式就好了喔!....那我先去試看看!!!謝謝你了歐!!!很感謝妳幫我這一個忙!!謝謝你歐!! |
91402035
一般會員 發表:0 回覆:6 積分:1 註冊:2004-12-28 發送簡訊給我 |
[/quote]對不起歐~~~我那天拜託你的阿~~~是可以出來啦~~~可是我好像把動作順序沒有跟你說清楚ㄟ~~~對不起~~~我想做的是跟陸上的紅綠燈依樣~~~正常時~~綠燈亮會先倒數8秒~~~在跳黃登~~延遲一下~~再跳紅燈~~然後另一般~~有一樣~~但是沒有工作時~~把開關沏過去他會閃黃登~~~一秒閃依下
我的p2.0是接綠的p2.1黃的p2.2紅的p2.3綠的2.4接黃的p2.5紅的蛋七段我還沒有接~~~因為我忘了接腳怎麼算了~~~對不起~~~所以順便想要問你~~~可以ㄇ??
對不起依職麻煩你~~~真的很對不起~~~
|
91402035
一般會員 發表:0 回覆:6 積分:1 註冊:2004-12-28 發送簡訊給我 |
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |