Giải thuật dịch chữ trên led 7 đoạn dùng asm cho 8951 ?

nguyenquoctrung-hhk

Thành Viên PIF
em đang lập trình ứng dụng led 7 đoạn, các kiểu hiện chữ, đếm số đều đã làm qua, nhưng còn kiểu chạy chữ giống led ma trận vẫn còn bị bí :o, em nghĩ giải thuật của nó cũng na ná giống led ma trận, ở đây em dùng hợp ngữ, dùng ngắt quét led, ngắt tạo trễ. mong các bạn và anh chị có thể giúp em hướng giải thuật, em xin cám ơn!
 

dinale

Trứng gà
VD: hiện chữ HELLO chạy qua chạy lại
- dùng timer quét led như thường, chữ HELLO cho vào bảng tra
- ban đầu Led1 hiện chữ H, Led2: E, Led3: L.....
- sau 100s thì Led1 hiện chữ E, Led2: L, Led3: L.....
- cứ tiếp tục như vậy thì sẽ ra chữ chạy thôi
Cái này viết C dễ chứ asm hơi loằng ngoằng.
 

nguyenquoctrung-hhk

Thành Viên PIF
sau 100ms hay 100s hả bạn ? hì, như vậy là mình phải thay đổi địa chỉ mở led, còn địa chỉ mã led là vẫn giữ nguyên?
 

dinale

Trứng gà
Nhầm, 100ms, thay đổi sao cho chạy mượt là được. Dịch chữ cũng giống giống như người ta làm phim hoạt hình vậy đó. ghép nhiều hình tĩnh lại với nhau là ra hình động thôi.
 

billnee

Trứng gà

KAKA , ngồi viết code đói quá viết chữ " BILLNEE HI PIF " , viết lộn thành " PIF HI BILLNEE " ka ka
code đây nè :
LED1 EQU 30H
LED2 EQU 31H
LED3 EQU 32H
LED4 EQU 33H
LED5 EQU 34H
LED6 EQU 35H
LED7 EQU 36H
LED8 EQU 37H
LED_POS EQU 38H

ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TIMER0_ISR
ORG 001BH
LJMP DICH_LED
MAIN:

CALL DEFAULT
MOV LED_POS,#01H
MOV R0,#LED1
MOV R1,#50
MOV R6,#8
MOV R3,#0
MOV TMOD,#11H
MOV TH0,#(-200)
MOV TL0,#(-200)
MOV TH1,#(-5000)
MOV TL1,#(-5000)
SETB EA
SETB ET0
SETB ET1
SETB TR0
SETB TR1

JMP $
DEFAULT:
MOV LED1,#0FFH
MOV LED2,#0FFH
MOV LED3,#0FFH
MOV LED4,#0FFH
MOV LED5,#0FFH
MOV LED6,#0FFH
MOV LED7,#0FFH
MOV LED8,#0FFH
RET
;---------------------------------------------
LED_JMP:
MOV A,LED7
MOV LED8,A

MOV A,LED6
MOV LED7,A

MOV A,LED5
MOV LED6,A

MOV A,LED4
MOV LED5,A

MOV A,LED3
MOV LED4,A

MOV A,LED2
MOV LED3,A

MOV A,LED1
MOV LED2,A


INC R3
MOV A,R3
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV LED1,A
CJNE R3,#18,EXIT_JMP
MOV R3,#0
CALL DEFAULT
EXIT_JMP:
RET
MALED: DB 0FFH,86H,86H,0C8H,0C7H,0C7H,0CFH,083H,0FFH,0F9H,08 9H,0FFH,08EH,0F9H,08CH,0FFH,0FFH,0FFH

;---------------------------------------------
TIMER0_ISR:
MOV TH0,#HIGH(-200)
MOV TL0,#LOW(-200)
MOV A,LED_POS
MOV P1,A
RL A
MOV LED_POS,A
MOV A,@R0
MOV P2,A
INC R0
CJNE R0,#LED_POS,EXITTIMER0
MOV LED_POS,#01H
MOV R0,#LED1
EXITTIMER0:
RETI
;-------------------------------------
DICH_LED:

MOV TH1,#HIGH(-5000)
MOV TH1,#LOW(-5000)

DJNZ R1,EXIT_TIMER1
MOV R1,#10
CALL LED_JMP
EXIT_TIMER1:
RETI
END

file .hex nè
:03000000020800F3
:0C080000787FE4F6D8FD75810702000047
:0300000002001EDD
:03000B0002009D53
:10001B000200B71146753801783079327E087B00C3
:10002B00758911758C38758A38758D78758B78D282
:10003B00AFD2A9D2ABD28CD28E80FE7530FF753188
:10004B00FF7532FF7533FF7534FF7535FF7536FF5E
:10005B007537FF22E536F537E535F536E534F535F9
:10006B00E533F534E532F533E531F532E530F5318D
:10007B000BEB90008B93F530BB12047B00114622E7
:10008B00FF8686C8C7C7CF83FFF989FF8EF98CFF20
:10009B00FFFF758CFF758A38E538F59023F538E648
:1000AB00F5A008B83805753801783032758DEC75C8
:0900BB008D78D904790A115F3235
:00000001FF

mình viết trên keil nha ! viết trên protues nó báo lỗi đầy ram

đói meo cả bụng rùi , mún mình giải thích code thì gửi mì gói qua nhá , kakaa
 

nguyenquoctrung-hhk

Thành Viên PIF
trung đọc hiểu rồi, không có mì gói đâu, keke! cường làm ở ngoài có biết delay led ma trận chạy là nhiêu không, nhìn đều hơn, cái này chạy nó giống nhảy quá, hihi, àh cường, lỡ giúp bạn giúp chó chót lun, có tải liệu sử dụng kielC hong, send cho trung lun ih!
 

billnee

Trứng gà
Hic! đói mờ mắt lun ! Đói quá ko đủ sức chỉnh sửa rùi ! nản quá ! Trung cứ ngồi mò thời gian delay nha ! Keil cũng chỉ là phần mềm soạn thảo code thui giống trong proteus! tạo file mới giống trong mplab ide chọn project->new project-> atmel -> 89c51
chọn new file . Save file as có đuôi asm . Add nó vào project
Thui đi ăn khuya đây ! ăn và ngủ ! tí lại cúp điện ko online đc .kaka...
 
Top