English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

ORG00H
AJMPSTART
ORG0BH
AJMPTIMER0
START:MOVSP,#60H
MOVTMOD,#2
SETBEA
SETBET0
MOVTH0,#6
MOVTL0,#6
MOVR0,#16
MOVR1,#0
MOVR2,#0
MOVR3,#4
MOVDPTR,#MSG
SETBTR0
CLRP1.4
CLRP1.5
SJMP$

TIMER0:PUSHA
CLRTR0
DJNZR3,EXIT
MOVR3,#4
MOVA,R1
MOVCA,@A+DPTR
MOVP2,A
SETBP1.4
CLRP1.4
INCR1
MOVA,R1
MOVCA,@A+DPTR
MOVP2,A
SETBP1.5
CLRP1.5
INCR1
MOVA,R2
MOVP1,A
INCR2
DJNZR0,EXIT
MOVR0,#16
MOVR1,#0
MOVR2,#0
EXIT:SETBTR0
POPA
RETI
MSGDB11111011B,11111111B;1
DB11111011B,11111011B;2
DB11111011B,11110111B;3
DB10111011B,11101111B;4
DB11001011B,10011111B;5
DB11111000B,01111111B;6
DB11111011B,11111111B;7
DB00000011B,11111111B;8
DB11111011B,11111111B;9
DB11111000B,00000111B;10
DB11101011B,11111011B;11
DB11011011B,11111101B;12
DB10111011B,11111101B;13
DB10111011B,11000001B;14
DB11111011B,11111111B;15
DB11111011B,11111111B;16
END


上面是我用的顯示程式16X16 請問我想要顯示3個字 程是要改哪裡阿@@? 我想到破頭了 請高手解救ˊˇˋ

2007-02-02 12:47:46 · 2 個解答 · 發問者 阿評 1 in 電腦與網際網路 程式設計

那大概要改哪裡@@? 可以提示我一下嗎?

2007-02-07 07:49:49 · update #1

這樣不行阿 他會全部把msg1 msg2 msg3都抓到 會變成全亮
我大概知道要用迴圈來用 不過就是想不到要怎樣做
你會嗎= =? 教我一下

2007-02-08 13:59:27 · update #2

2 個解答

你沒有附上程式解釋比較沒辦法提供你好的意見 = =


不過根據我的推敲,你的16x16點矩陣led使用頻率是1kHz,P2是接到兩顆74LS244,由P1.4跟P1.5來做選擇要哪一顆74LS244,這樣就可以輸出16bit的資料;再利用P1.0~P1.3接到74LS154來控制16x16點矩陣led,這樣就可以選擇要顯示哪一行~~~應該沒錯吧 呵呵



然後你再複製MSG的內容,複製三份,改成MSG1、MSG2、MSG3再把內容改成你要的字

程式部份還需要加個Delay來控制換字的速度,而如何換字呢~!

只要在START的部分再加個MOV R7,#01H,MOVDPTR,#MSG
殺掉,然後把SJMP $換成LOOP迴圈再把Delay程式丟到END的上面,這樣你設的三個字就會一直循環下去,此設計應該就可以達到你的要求了~!!!^ ^



LOOP迴圈部份
LOOP:
MOV A,R7
JB A.0,JPG1
JB A.1,JPG2
JB A.2,JPG3

JPG1:
MOV DPTR,#MSG1;第一個字
MOV R7,#02H;換下一個字
CALL DELAY1S53;延遲1.5秒
JMP LOOP

JPG2:
MOV DPTR,#MSG2;第一個字
MOV R7,#04H;換下一個字
CALL DELAY1S53;延遲1.5秒
JMP LOOP

JPG3:
MOV DPTR,#MSG3;第一個字
MOV R7,#01H;換回第一個字
CALL DELAY1S53;延遲1.5秒
JMP LOOP



Delay延遲部分
DELAY1S53:
MOV R4,#255
DA:MOV R5,#20
DB:MOV R6,#150
DJNZ R6,$
DJNZ R5,DB
DJNZ R4,DA
RET

2007-02-09 17:38:43 · answer #1 · answered by ? 2 · 0 0

你這程式看起來像是只顯示一個16X16固定的字,若要顯示三個字,那要先複製出三個MSG DB內容,再改成MSG1,MSG2,MSG3,DB裡面的0應是點亮的點,你要編出想要顯示圖形的亮點,最後在你的主程式內依序變換MSG1,MSG2,MSG3去顯示出三個字。
你的實驗電路應該準備好了吧,不然很難驗證程式的。

2007-02-07 15:39:30 補充:
就如我所說的ㄚ,要先複製出三個MSG DB內容,再改成MSG1,MSG2,MSG3,DB裡面的0應是點亮的點,你要編出想要顯示圖形的亮點,主程式在MOVDPTR,#MSG這裡要改成MOVDPTR,#MSG1然後CALL DELAY再MOVDPTR,#MSG2然後CALL DELAY再MOVDPTR,#MSG3然後CALL DELAY,重複循環
實驗電路要準備好,不然怎麼知道程式可不可以

2007-02-09 21:14:39 補充:
怎麼會呢?你改成怎麼樣了? 我已經給你指示了,做了不成,我一定會指導你的,貼上來我幫你看看

2007-02-12 13:17:37 補充:
主程式
MOVDPTR,#MSG拿掉
SETBTR0
CLRP1.4
CLRP1.5
SJMP$拿掉
加入
LOOP:
MOV DPTR,#MSG1
CALL DELAY
MOV DPTR,#MSG2
CALL DELAY
MOV DPTR,#MSG3
CALL DELAY
JMP LOOP
再加個DELAY 副程式(參考樓下的提示即可)

2007-02-12 13:25:43 補充:
MSG1:
.....

MSG2:
.....

MSG3:
.....

END
你要編出MSG內想要顯示圖形的亮點,0是點亮的點

2007-02-06 03:44:22 · answer #2 · answered by 有兩把刷子的ㄚ超 5 · 0 0

fedest.com, questions and answers