Thông báo

Collapse
No announcement yet.

Ai đã thất bại trong việc làm led matrix ....

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #61
    Thêm đi bác ơi. Luồng đang thu hút, rất hay và bổ ích

    Comment


    • #62
      các pác công nhận bổ ích ko
      sao pác mod ko giúp em chuyển về diễn đàn đi em mun nó thật sự có thể giúp các pác khác
      mod yên tâm topic này còn nhìu thứ nữa nó sẽ ko kết thúc một khi em ko còn khả năng
      pác hỉu giúp em đi nhá chỉ mun góp thêm bài cho diễn đàn thôi
      năm trong đây có mấy người xem và nó cũng ko đúng chủ đề nữa xem xet giúp em mod nhé
      8051 là con em viết thành thạo. em sẵn sàng giúp đỡ các pác nếu em có thể
      liên lạc với em qua địa chi email: Mob: 01882.076.989

      Comment


      • #63
        Nguyên văn bởi hoangphat Xem bài viết
        các pác công nhận bổ ích ko
        sao pác mod ko giúp em chuyển về diễn đàn đi em mun nó thật sự có thể giúp các pác khác
        mod yên tâm topic này còn nhìu thứ nữa nó sẽ ko kết thúc một khi em ko còn khả năng
        pác hỉu giúp em đi nhá chỉ mun góp thêm bài cho diễn đàn thôi
        năm trong đây có mấy người xem và nó cũng ko đúng chủ đề nữa xem xet giúp em mod nhé
        chuẩn ko cần chính>>>>>>>>> admin làm luôn đi bác ơi!
        |

        Comment


        • #64
          Đúng đó. Đề nghị bác Mod chuyển về diễn đàn chính giúp anh em đi

          Comment


          • #65
            Ko biết bạn hoangphat xuất dữ liệu bitmap bằng module SPI có sẵn trong vi điều khiển hay tự viết code tạo SPI vậy ?
            Mong bạn hướng dẫn cách xuất dữ liệu bằng module SPI.
            Người nhỏ bé.

            Comment


            • #66
              Bạn HOANGPHAT hình như học lớp 12 thì phải, đúng là tuổi trẻ tài cao !
              Cung cấp Oscilocope , Inverter , Switching , DC power supply , AC millivolt meter ....

              Comment


              • #67
                hehe em mê nên học hỏi nhìu vào diễn đàn h có cơ hội em lại giúp lại các pác khác
                thành công nhất thời chủ yếu là do 2 chữ "ĐAM MÊ" nên
                đam mê nên cái j làm cũng dc cả các pác ủng hộ em nhá
                hi vọng topic thành công em sẽ cố gắng post thêm bài để có cái tham khảo
                8051 là con em viết thành thạo. em sẵn sàng giúp đỡ các pác nếu em có thể
                liên lạc với em qua địa chi email: Mob: 01882.076.989

                Comment


                • #68
                  Bạn hoangphat đúng là tuổi trẻ tài cao. Các bạn hãy ủng hộ cho bạn ấy nhé !

                  Comment


                  • #69
                    Nhờ mọi người xem và hỗ trợ giúp mình. Xem đoạn code này có vấn đề gì không ?
                    ;Walking message display for 2051
                    $mod2051

                    CR EQU 0dh ; carriage return
                    LF EQU 0ah ; line feed


                    BAUD_9600 EQU 0fdh ; 9600 baud


                    ;eeprom equates
                    FADDR EQU 0a0h ; fixed address for AT24Cxx EEPROMs
                    PADDR EQU 0 ; programmable address (0..7)

                    ; Register definitions for serial eeprom

                    zdata EQU r1 ; data register
                    addr_lo EQU r2 ; 2-byte address register
                    addr_hi EQU r3 ;

                    ;register definitions for hex to dec routine

                    memptr equ r0 ;ram memory pointer
                    col equ r4 ;column increment
                    scans equ r5 ;number of time the diplay is multiplexed
                    ;before incrementing
                    count equ r6 ;col count for each char displayed
                    char_count equ r7 ;
                    ;
                    ; Microcontroller connections to AT24Cxx serial bus lines.

                    SCL BIT p3.5 ; serial clock
                    SDA BIT p3.7 ; serial data

                    ;servo connections

                    clear bit p3.4 ;master clear
                    clk bit p3.2 ;clock
                    row bit p3.3 ;row of display on

                    DSEG AT 20H

                    delay_value: ds 1
                    message: ds 48 ;max lenght of string to display
                    ORG 5fH ; stack origin
                    stack: DS 20H ; stack depth



                    CSEG

                    ORG 0000H ; power on/reset vector
                    jmp cold_start

                    ORG 0003H ; external interrupt 0 vector
                    reti ; undefined

                    ORG 000BH ; timer 0 overflow vector
                    reti

                    ORG 0013H ; external interrupt 1 vector
                    reti ; undefined

                    ORG 001BH ; timer 1 overflow vector
                    reti ; undefined

                    ORG 0023H ; serial I/O interrupt vector
                    reti


                    ORG 40H ; begin constant data space

                    menu: DB CR,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF
                    db LF,LF,LF,LF,LF,LF,LF,LF,LF,LF
                    db 'Walking led message display program',LF,CR
                    db '___________________________________',LF,CR
                    db 'Written by Peter Averill',LF,LF,LF,CR
                    db 'Press:-',LF,CR
                    db ' s to load the message from the PC terminated in a $',cr,lf
                    db ' d to display message',CR,LF,LF,LF,0

                    matrix: db 00h,00h,00h,00h,00h ;space
                    db 00h,00h,7dh,00h,00h ;!
                    db 00h,60h,00h,60h,00h ;"
                    db 14h,7fh,14h,7fh,14h ;#
                    db 32h,49h,7fh,49h,26h ;$
                    db 62h,64h,08h,13h,23h ;%
                    db 36h,49h,35h,02h,05h ;&
                    db 00h,00h,00h,50h,60h ;'
                    db 1ch,22h,41h,00h,00h ;(
                    db 00h,00h,41h,22h,1ch
                    db 2ah,1ch,3eh,1ch,2ah ;*
                    db 08h,08h,3eh,08h,08h ;+
                    db 00h,01h,02h,00h,00h ;,
                    db 08h,08h,08h,08h,08h ;-
                    db 00h,00h,01h,00h,00h ;.
                    db 02h,04h,08h,10h,20h ;/
                    db 3eh,45h,49h,51h,3eh ;0
                    db 00h,21h,7fh,01h,00h ;1
                    db 27h,49h,49h,49h,31h ;2
                    db 22h,49h,49h,49h,36h ;3
                    db 0ch,14h,24h,7fh,04h ;4
                    db 7ah,49h,49h,49h,46h ;5
                    db 3eh,49h,49h,49h,26h ;6
                    db 41h,42h,44h,48h,70h ;7
                    db 36h,49h,49h,49h,36h ;8
                    db 32h,49h,49h,49h,3eh ;9
                    db 00h,00h,22h,00h,00h ;:
                    db 00h,01h,22h,00h,00h ;;
                    db 08h,14h,22h,41h,00h ;<
                    db 14h,14h,14h,14h,14h ;=
                    db 00h,41h,22h,14h,08h ;>
                    db 20h,40h,45h,48h,30h ;?
                    db 3eh,41h,4dh,4dh,39h ;@
                    db 1fh,24h,44h,24h,1fh ;A
                    db 7fh,49h,49h,49h,36h ;B
                    db 3eh,41h,41h,41h,22h ;C
                    db 7fh,41h,41h,22h,1ch ;D
                    db 7fh,49h,49h,49h,41h ;E
                    db 7fh,48h,48h,48h,40h ;F
                    db 3eh,41h,41h,45h,26h ;G
                    db 7fh,08h,08h,08h,7fh ;H
                    db 00h,41h,7fh,41h,00h ;I
                    db 42h,41h,41h,7eh,40h ;J
                    db 7fh,08h,14h,22h,41h ;K
                    db 7fh,01h,01h,01h,01h ;L
                    db 7fh,20h,18h,20h,7fh ;M
                    db 7fh,10h,08h,04h,7fh ;N
                    db 3eh,41h,41h,41h,3eh ;O
                    db 7fh,48h,48h,48h,30h ;P
                    db 3ch,42h,46h,42h,3dh ;Q
                    db 7fh,48h,4ch,4ah,31h ;R
                    matrix1: db 32h,49h,49h,49h,26h ;S
                    db 40h,40h,7fh,40h,40h ;T
                    db 7eh,01h,01h,01h,7eh ;U
                    db 78h,06h,01h,06h,78h ;V
                    db 7fh,02h,0ch,02h,7fh ;W
                    db 63h,14h,08h,14h,63h ;X
                    db 60h,10h,0fh,10h,60h ;Y
                    db 43h,45h,49h,51h,61h ;Z

                    USING 0 ; register bank zero
                    cold_start:
                    mov sp, #(stack-1) ; initialize stack pointer
                    call initialize ; initialize controller registers

                    mov p1, #0 ; write zeros to displays
                    clr clear ;clear display
                    clr clk
                    clr row


                    setb TI
                    setb ES

                    mov acc,#07fh
                    call delay_5mS

                    top: jnb ri,m1
                    clr es
                    mov a,sbuf
                    clr ri
                    call setup
                    setb es

                    m1: call get_mess ;loads message from eeprom into ram

                    setb clear
                    m5: mov char_count,#0

                    m3: mov col,#6
                    m4: mov scans,#10
                    m2: mov memptr,#message
                    mov a,memptr
                    add a,char_count
                    mov memptr,a
                    call char_cal
                    call scan_char1
                    inc memptr
                    call char_cal
                    mov count,#5
                    call scan_char
                    inc memptr
                    call char_cal
                    mov count,#5
                    call scan_char
                    inc memptr
                    mov a,@memptr
                    cjne a,#'$',m6
                    jmp m5
                    m6: call char_cal
                    mov count,#3
                    cjne col,#4,m7
                    m7: jnc m8
                    call scan_char
                    m8: djnz scans,m2
                    djnz col,m4
                    inc char_count
                    jmp m3

                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;
                    char_cal:
                    mov a,@memptr
                    clr c
                    subb a,#20h
                    mov b,#5
                    mul ab
                    mov b,a
                    mov c,ov
                    jc greater255
                    mov dptr,#matrix
                    jmp cc1
                    greater255: mov dptr,#matrix1
                    inc dptr
                    cc1: ret

                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;
                    scan_char1:
                    mov a,#6
                    clr c
                    subb a,col

                    sd7: jz sd6
                    inc dptr ;inc dptr to start column
                    dec a
                    jmp sd7
                    sd6:
                    mov a,col
                    mov count,a ;load the number of columns to display
                    dec count
                    mov a,count
                    jz sd3 ;display space column only

                    mov a,b
                    movc a, @a+dptr ; get character
                    sd3: mov p1,a
                    setb row
                    setb clk
                    nop
                    clr clk
                    clr row
                    inc dptr
                    mov a,#60h
                    call delay
                    mov a,count
                    jz sd2
                    sd1: djnz count,sd4
                    jmp sd5 ;last column jmp to display space
                    sd4: mov a,b
                    movc a, @a+dptr
                    mov p1,a
                    setb clk
                    nop
                    clr clk
                    mov a,#60h
                    call delay
                    inc dptr
                    jmp sd1 ;jmp to check if last column
                    sd5: call char_space
                    sd2: ret
                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;
                    char_space: clr a
                    mov p1,a
                    setb clk
                    nop
                    clr clk
                    mov a,#60h
                    call delay
                    ret
                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;
                    scan_char:
                    sc1: mov a,b
                    movc a, @a+dptr
                    mov p1,a
                    setb clk
                    nop
                    clr clk
                    mov a,#60h
                    call delay
                    inc dptr
                    djnz count,sc1
                    call char_space
                    ret


                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;
                    setup:


                    su1: mov dptr, #menu
                    call send_string
                    call getch
                    call send_char

                    su2: cjne a,#'s',su3
                    call store
                    su3: cjne a,#'d',su1

                    ret

                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;
                    store:
                    mov a,#0ah
                    call send_char
                    mov a,#0dh
                    call send_char

                    clr a
                    mov ADDR_LO,a
                    get_next_char: call getch
                    mov zdata,a
                    call send_char
                    clr a
                    call write_byte
                    inc ADDR_LO
                    mov a,zdata
                    cjne a,#024h,get_next_char

                    mov a,#0ah
                    call send_char
                    mov a,#0dh
                    call send_char


                    ret

                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;
                    get_mess:
                    mov memptr,#message
                    clr a
                    mov ADDR_LO,a
                    next_char: clr a
                    call read_random
                    mov @memptr,a
                    inc ADDR_LO
                    inc memptr
                    cjne a,#024h,next_char

                    ret

                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;
                    getch:
                    setb es ;enable reception
                    jnb ri,$ ;wait for key press
                    clr es
                    mov a,sbuf
                    clr ri
                    ret

                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;

                    initialize:

                    ; Initialize controller registers.

                    mov PCON, #0 ; initialize power control register
                    mov IE, #0 ; deactivate all interrupts


                    mov SCON, #01000000b ; serial port mode one
                    mov TMOD, #00100001b ; timer one 8-bit auto-reload,
                    &sp; ; timer zero 16-bit
                    mov TH1, #BAUD_9600 ; timer one reload value
                    mov TCON, #01010000b ; start timer one & zero
                    mov th0,#0b9h
                    mov tl0,#0afh
                    setb et0
                    setb REN ;enable rx int
                    setb EA ;global int enable

                    ret


                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;
                    send_string:

                    ; Transmit string pointed to by DPTR.
                    ; String may be of any length, but must be null-terminated.

                    push acc
                    push dpl
                    push dph
                    ss1:
                    clr a
                    movc a, @a+dptr ; get character
                    jz ss2 ; check for terminator

                    call send_char ; send character

                    inc dptr ; point to next character
                    jmp ss1
                    ss2:
                    pop dph
                    pop dpl
                    pop acc
                    ret


                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;
                    send_char:

                    ; Wait for transmitter to clear, add even parity bit to character
                    ; in accumulator and transmit it. Does not wait for transmitter
                    ; to clear before returning.

                    jnb TI, $ ; wait here for transmitter to clear
                    clr TI ; clear transmit flag
                    push acc ; save char
                    mov SBUF, a ; load character into transmitter
                    pop acc ; restore char
                    ret
                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;
                    delay:
                    push acc
                    push acc

                    djnz acc, $ ; 500 uS @ 12 MHz
                    pop acc
                    djnz acc, $

                    pop acc
                    ret
                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;
                    delay_5mS:

                    ; Delay for 5mS times the value in the accumulator.

                    push acc
                    push b

                    mov b, a
                    ddd:
                    mov a, #0
                    call delay ; 1mS
                    call delay ; 2mS
                    call delay ; 3mS
                    call delay ; 4mS
                    call delay ; 5mS
                    djnz b, ddd

                    pop b
                    pop acc
                    ret
                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;
                    write_byte:

                    ; AT24Cxx Byte Write function.
                    ; Called with programmable address in A, byte address in
                    ; register pair ADDR_HI:ADDR_LO, data in register XDATA.
                    ; Does not wait for write cycle to complete.
                    ; Returns CY set to indicate that the bus is not available
                    ; or that the addressed device failed to acknowledge.
                    ; Destroys A.

                    call start
                    jc x49 ; abort if bus not available

                    rl a ; programmable address to bits 3:1
                    orl a, #FADDR ; add fixed address
                    clr acc.0 ; specify write operation
                    call shout ; send device address
                    jc x48 ; abort if no acknowledge

                    mov a, addr_lo ; send low byte of address
                    call shout ;
                    jc x48 ; abort if no acknowledge

                    mov a, zdata ; get data
                    call shout ; send data
                    jc x48 ; abort if no acknowledge

                    clr c ; clear error flag
                    x48:
                    call stop
                    x49:
                    ret

                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;
                    read_current:

                    ; AT24Cxx Current Address Read function.
                    ; Called with programmable address in A. Returns data in A.
                    ; Returns CY set to indicate that the bus is not available
                    ; or that the addressed device failed to acknowledge.

                    call start
                    jc x45 ; abort if bus not available

                    rl a ; programmable address to bits 3:1
                    orl a, #FADDR ; add fixed address
                    setb acc.0 ; specify read operation
                    call shout ; send device address
                    jc x44 ; abort if no acknowledge

                    call shin ; receive data byte
                    call NAK ; do not acknowledge byte
                    clr c ; clear error flag
                    x44:
                    call stop
                    x45:
                    ret

                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;
                    read_random:

                    ; AT24Cxx Random Read function.
                    ; Called with programmable address in A, byte address in
                    ; register pair ADDR_HI:ADDR_LO. Returns data in A.
                    ; Returns CY set to indicate that the bus is not available
                    ; or that the addressed device failed to acknowledge.

                    push b
                    mov b, a ; save copy of programmable address

                    ; Send dummy write command to set internal address.

                    call start
                    jc x47 ; abort if bus not available

                    rl a ; programmable address to bits 3:1
                    orl a, #FADDR ; add fixed address
                    clr acc.0 ; specify write operation
                    call shout ; send device address
                    jc x46 ; abort if no acknowledge


                    mov a, addr_lo ; send low byte of address
                    call shout ;
                    jc x46 ; abort if no acknowledge

                    ; Call Current Address Read function.

                    mov a, b ; get programmable address
                    call read_current
                    jmp x47 ; exit
                    x46:
                    call stop
                    x47:
                    pop b
                    ret

                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;
                    start:

                    ; Send START, defined as high-to-low SDA with SCL high.
                    ; Return with SCL, SDA low.
                    ; Returns CY set if bus is not available.

                    setb SDA
                    setb SCL

                    ; Verify bus available.

                    jnb SDA, x40 ; jump if not high
                    jnb SCL, x40 ; jump if not high

                    nop ; enforce setup delay and cycle delay
                    clr SDA
                    nop ; enforce hold delay
                    nop ;
                    nop ;
                    nop ;
                    nop ;
                    clr SCL

                    clr c ; clear error flag
                    jmp x41
                    x40:
                    setb c ; set error flag
                    x41:
                    ret

                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;
                    stop:

                    ; Send STOP, defined as low-to-high SDA with SCL high.
                    ; SCL expected low on entry. Return with SCL, SDA high.

                    clr SDA
                    nop ; enforce SCL low and data setup
                    nop
                    setb SCL
                    nop ; enforce setup delay
                    nop ;
                    nop ;
                    nop ;
                    nop ;
                    setb SDA
                    ret

                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;
                    shout:

                    ; Shift out a byte to the AT24Cxx, most significant bit first.
                    ; SCL, SDA expected low on entry. Return with SCL low.
                    ; Called with data to send in A.
                    ; Returns CY set to indicate failure by slave to acknowledge.
                    ; Destroys A.

                    push b
                    mov b, #8 ; bit counter
                    x42:
                    rlc a ; move bit into CY
                    mov SDA, c ; output bit
                    nop ; enforce SCL low and data setup
                    setb SCL ; raise clock
                    nop ; enforce SCL high
                    nop ;
                    nop ;
                    nop ;
                    clr SCL ; drop clock
                    djnz b, x42 ; next bit

                    setb SDA ; release SDA for ACK
                    nop ; enforce SCL low and tAA
                    nop ;
                    setb SCL ; raise ACK clock
                    nop ; enforce SCL high
                    nop ;
                    nop ;
                    nop ;
                    mov c, SDA ; get ACK bit
                    clr SCL ; drop ACK clock

                    pop b
                    ret

                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;
                    shin:

                    ; Shift in a byte from the AT24Cxx, most significant bit first.
                    ; SCL expected low on entry. Return with SCL low.
                    ; Returns received data byte in A.

                    setb SDA ; make SDA an input

                    push b
                    mov b, #8 ; bit count
                    x43:
                    nop ; enforce SCL low and data setup
                    nop ;
                    nop ;
                    setb SCL ; raise clock
                    nop ; enforce SCL high
                    nop ;
                    mov c, SDA ; input bit
                    rlc a ; move bit into byte
                    clr SCL ; drop clock
                    djnz b, x43 ; next bit

                    pop b
                    ret

                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;
                    ACK:

                    ; Clock out an acknowledge bit (low).
                    ; SCL expected low on entry. Return with SCL, SDA low.

                    clr SDA ; ACK bit
                    nop ; enforce SCL low and data setup
                    nop ;
                    setb SCL ; raise clock
                    nop ; enforce SCL high
                    nop ;
                    nop ;
                    nop ;
                    clr SCL ; drop clock
                    ret

                    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;
                    NAK:

                    ; Clock out a negative acknowledge bit (high).
                    ; SCL expected low on entry. Return with SCL low, SDA high.

                    setb SDA ; NAK bit
                    nop ; enforce SCL low and data setup
                    nop ;
                    setb SCL ; raise clock
                    nop ; enforce SCL high
                    nop ;
                    nop ;
                    nop ;
                    clr SCL ; drop clock
                    ret

                    END

                    Comment


                    • #70
                      HIc hic. EM học C nên nhìn vào thằng này như bữc vách. Mà con này ko phải bức vách mà là vạn lý trường thành

                      Comment


                      • #71
                        một số điểm mới trong topic này

                        các pác còn j thắc mặc hay bổ sung cho mạch CPU ko
                        em chuyển qua phần làm khung bảng và kết nối các module với nhau
                        ai còn j thắc mắc thì có thể gửi mail cho em em sẽ trả lời sớm nhất có thể
                        h em xin trình bày lại phần mạch CPU
                        +em vẽ mạch có dùng USB để giao tiếp nên có thể có pác ko mun dùng USB thì dùng RS232 ,mạch em ko vẽ mạch RS232 vì đã có mạch USB rồi nên mun thêm thì làm mạch ngoài cắm jac 3 day vào là dc (ai cần thì nói em cho mạch nguyên lý hợp với cái CPU của em)
                        +về phần Ram cái này ko cần thiết khi làm bảng nhỏ 8x16 nhưng ngược lại nó rất cần khi ta dùng cho bảng 16x64 trở lên nhằm tăng tốc độ chip 89S52 ,mạch này cũng làm ngoài nếu ai cần mach nguyên lý thì bảo em em gửi cho (nếu cần cả file cho PCB thì ok lun)
                        +cũng như Ram em ko vẽ mạch đo nhiệt vì nó ko cần thiết nên em ko vẽ vào mà dùng nó thì cũng tốn chân của vdk nên cái này tạm thời ko dùng (cái này cũng có mạch nguyên lý lun ai càn em send cho lun nhá)
                        +mạch to cũng vì con 154 nên cũng ko nhỏ hơn dc cái này cho wa module sẽ ko tiện vì nó sẽ làm mạch to thêm nên tạm cho nó ở đây
                        pin cho con DS1307 trước em vẽ nhỏ wa nên em bổ sung lại kích thước chính xác chút (cái này pác Xuan giúp em) và em thêm phần nên cho mạch đẹp hơn pro hơn
                        sau đây em cho các pác xem mạch em mới chỉnh sửa lại cũng khá ok rồi có thể đặt lun
                        kích thước mạch như sau:
                        module led là 12X6 cm
                        CPU là 6X9 cm
                        đây là bản thiết kế:
                        Click image for larger version

Name:	CPU BAN THIET KE.JPG
Views:	1
Size:	125.4 KB
ID:	1342430
                        đây là ảnh toàn mạch có linh kiện:
                        Click image for larger version

Name:	CPU.JPG
Views:	1
Size:	80.6 KB
ID:	1342431
                        đây mạch in lớp trên
                        Click image for larger version

Name:	PCB CPU1.JPG
Views:	1
Size:	114.6 KB
ID:	1342432
                        đây là mạch in lớp dưới
                        Click image for larger version

Name:	PCB CPU2.JPG
Views:	1
Size:	88.7 KB
ID:	1342433
                        và mạch của 1 công ty quảng cáo em tìm trên mạng xem nó cũng khá pro và đa năng
                        so với mạch của em thì hơn kém tí vì nó là để cho các pác thực hành còn cái này của cong ty nên phải pro hơn là điều tất nhiên
                        Click image for larger version

Name:	dk_matran2.jpg
Views:	1
Size:	65.8 KB
ID:	1342434
                        chúc vui!!!
                        8051 là con em viết thành thạo. em sẵn sàng giúp đỡ các pác nếu em có thể
                        liên lạc với em qua địa chi email: Mob: 01882.076.989

                        Comment


                        • #72
                          Nguyên văn bởi hoangphat Xem bài viết
                          +em vẽ mạch có dùng USB để giao tiếp nên có thể có pác ko mun dùng USB thì dùng RS232 ,mạch em ko vẽ mạch RS232 vì đã có mạch USB rồi nên mun thêm thì làm mạch ngoài cắm jac 3 day vào là dc (ai cần thì nói em cho mạch nguyên lý hợp với cái CPU của em)
                          Cai này giao tiếp sao lại 3 chân bác ???
                          phải là (TXD , RXD 5V mass) ma` cái này thì giống như chân nạp philip trong cpu rồi

                          Cái giao tiếp USB ni tui chưa biết ne`
                          Cái này mất bao nhiêu chân VDK để giao tiếp thế bác
                          Bác có tài liệu về phần giao tiếp usb này thì sent cho t nghiên cứu với + bác giúp t nua~ nhé. hehe
                          Nguyên văn bởi hoangphat Xem bài viết
                          ok rồi có thể đặt lun
                          kích thước mạch như sau:
                          module led là 12X6 cm
                          CPU là 6X9 cm
                          Email :

                          Comment


                          • #73
                            giao tiếp PC qua USB em dùng chip ATMEGA8 nạp ct vào và cài driver vào là chạy dc(cái này các pác có thể nhờ người ta nạp giúp hoặc có thể call em, em nạp rồi gửi cho các pác)
                            nó nối 2 chân vào cổng nối tiếp của 89S52(RXD,TXD)
                            cái cổng 4 chân là RXD -TXD - +5V-mass là cổng nạp của chip philip
                            cái cổng 6 chân là nạp ISP em có ghi trên PCB đấy
                            cổng 16 chân nối ra module 8X hay 16X
                            cổng out put 6 chân nối vào module để truyền data 1 màu, 2 màu hoặc 3 màu
                            tất cả đều có đầy đủ h ngồi viết code cho cái CPU là ok
                            ai cần call là có
                            8051 là con em viết thành thạo. em sẵn sàng giúp đỡ các pác nếu em có thể
                            liên lạc với em qua địa chi email: Mob: 01882.076.989

                            Comment


                            • #74
                              Tiếp đi bác ơi. Luồng đang hay. Em đang muốn tìm hiểu về giao tiếp máy tính và ROM, RAM ngoài

                              Comment


                              • #75
                                code liên quan (giao tiếp I2C)

                                phần cứu thế là ok rồi nhá em chuyên sang phần chương trình cho nó (phần này là phần mở ko có giới hạn)
                                trước các pác đã có code để chạy cố định cũng ok rồi h em post lun mấy bài liên quan để pa kon ngâm cứu,hiện em đang tìm hỉu và ráp nó thành 1 chương trình có thể áp dụng nó vào code của mình
                                nếu dc em sẽ ráp vào code 8x64 bản cũ để ngâm cứu sau khi thành công thì em post cho các pác ngâm cứu
                                phần tài liệu pác Xuân sẽ giúp em tìm .em sẽ tìm hỉu nó sáu đó sẽ viết ra 1 ct để các pác ngâm cứu
                                sau đây là ct bảng số sử dụng rom 24C64 chạy ok rồi cái này em đang phát triển sang giao tiếp pc để áp dụng nó vào led matrix
                                Code:
                                INCLUDE 89C52.MC
                                	SDA 	BIT	P1.0
                                	SCL 	BIT 	P1.1
                                	EM	BIT	P2.0
                                	CLOCK	BIT	P2.1
                                	LATH	BIT	P2.2
                                	DULIEU  EQU     20H
                                	DEMBIT  EQU    	21H
                                	DEMBYTE EQU     22H
                                	TAM1	DATA	23H
                                	TAM2	DATA	24H
                                	TAM3	DATA	25H
                                	TAM4	DATA	26H
                                	TAM5	DATA	27H
                                	TAM6	DATA	28H
                                	TAM7	DATA	29H
                                	TAM8	DATA	2AH
                                	TAM9	DATA	2BH
                                	TAM10	DATA	2CH
                                	TAM11	DATA	2DH
                                	TAM12	DATA	2EH
                                	TAM13	DATA	30H
                                	ERROR  	BIT    	7FH
                                ;**************************************************
                                ORG 0000H
                                	LJMP 	MAIN
                                ORG 0030H
                                ;**************************************************
                                MAIN:
                                	MOV 	P0,#0FFH
                                	MOV 	P1,#0FFH
                                	MOV 	P2,#0FFH
                                	MOV 	P3,#0FFH
                                	MOV	R0,#0
                                	MOV	R1,#0
                                	MOV	R2,#0
                                	MOV	R3,#0
                                	MOV	R4,#0
                                	MOV	R5,#0
                                	MOV	R6,#0
                                	MOV	R7,#0
                                	MOV	TAM1,#0
                                	MOV	TAM2,#0
                                	MOV	TAM3,#0
                                	MOV	TAM4,#0
                                	MOV	TAM5,#0
                                	MOV	TAM6,#0
                                	MOV	TAM7,#0
                                	MOV	TAM8,#0
                                	MOV	TAM9,#0
                                	MOV	TAM10,#0
                                	MOV	TAM11,#0
                                	MOV	TAM12,#0
                                	MOV	TAM13,#0
                                	
                                ;**************************************************
                                PRO:	ACALL 	READ
                                	CLR	P2.3
                                	CLR	P2.4
                                	CLR	P2.5
                                	CLR	P2.6
                                	CLR	P2.7
                                PRO1:
                                	ACALL	SEND
                                	ACALL 	INT_0
                                	ACALL	INT_1
                                	CJNE 	R0,#0,NHAY
                                	CJNE	R6,#06,PRO1
                                	ACALL	QUIDOI
                                	ACALL	WRITE
                                	MOV	R6,#0
                                	ACALL	DELAYR
                                	ACALL	DELAYR
                                	ACALL	DELAYR
                                	ACALL	DELAYR
                                	ACALL	DELAYR
                                	ACALL	DELAYR
                                	SJMP	PRO1
                                
                                NHAY:	CJNE	R0,#01,TIEP1
                                	SETB	P2.3
                                	ACALL	DELAYR
                                	CLR	P2.3
                                	ACALL	DELAYR
                                	ACALL	DELAYR
                                TIEP1:	CJNE	R0,#02,TIEP2
                                	SETB	P2.4
                                	ACALL	DELAYR
                                	CLR	P2.4
                                	ACALL	DELAYR
                                	ACALL	DELAYR
                                TIEP2:	CJNE	R0,#03,TIEP3
                                	SETB	P2.5
                                	ACALL	DELAYR
                                	CLR	P2.5
                                	ACALL	DELAYR
                                	ACALL	DELAYR
                                TIEP3:	CJNE	R0,#04,TIEP4
                                	SETB	P2.6
                                	ACALL	DELAYR
                                	CLR	P2.6
                                	ACALL	DELAYR
                                	ACALL	DELAYR
                                TIEP4:	CJNE	R0,#05,TIEP
                                	SETB	P2.7
                                	ACALL	DELAYR
                                	CLR	P2.7
                                	ACALL	DELAYR
                                	ACALL	DELAYR
                                
                                TIEP:	ACALL	QUIDOI
                                	SJMP	PRO1
                                ;**************************************************
                                VONG:	MOV	TAM11,#08
                                VONG1:	RRC	A
                                	MOV	EM,C
                                	CLR	CLOCK
                                	NOP	
                                	NOP
                                	SETB	CLOCK
                                	DJNZ	TAM11,VONG1
                                	RET
                                ;**************************************************
                                DELAY:
                                	NOP
                                	RET
                                ;**************************************************
                                SCL_HIGH:
                                	SETB 	SCL
                                	ACALL 	DELAY
                                	RET
                                ;**************************************************
                                SCL_LOW:
                                	CLR 	SCL
                                	ACALL 	DELAY
                                	RET
                                ;**************************************************
                                I2C_START:
                                	SETB 	SDA
                                	SETB 	SCL
                                	CLR 	SDA
                                	ACALL 	DELAY
                                	CLR 	SCL
                                	SETB 	SDA
                                	RET
                                ;**************************************************
                                I2C_STOP:
                                	CLR 	SDA
                                	SETB 	SCL
                                	ACALL 	DELAY
                                	SETB 	SDA
                                	RET
                                ;**************************************************
                                GOI1BYTE:                                       
                                	MOV 	DEMBIT,#8                 	;Bit MSB duoc goi di truoc tien
                                	MOV 	A,DULIEU                                                 
                                LOOP1:	RLC 	A
                                	MOV 	SDA,C
                                	ACALL 	DELAY
                                	ACALL 	SCL_HIGH
                                	ACALL 	SCL_LOW
                                	DJNZ 	DEMBIT,LOOP1
                                	SETB 	SDA				;SDA bi keo xuong thap khi 1 byte duoc gui xong.
                                	ACALL 	SCL_HIGH
                                	MOV 	C,SDA             		;Neu ERROR = 1 thi viec truyen bi loi,can phai goi lenh STOP,neu = 0 thi OK
                                	MOV 	ERROR,C
                                	ACALL 	SCL_LOW
                                	RET
                                ;**************************************************
                                NHAN1BYTE:                                      
                                        MOV 	DEMBIT,#8
                                        SETB 	SDA
                                LOOP3:  ACALL 	SCL_HIGH
                                        ACALL 	DELAY
                                        MOV 	C,SDA
                                        ACALL 	SCL_LOW
                                        RLC 	A
                                        DJNZ 	DEMBIT,LOOP3
                                        MOV 	DULIEU,A
                                        CLR 	SDA
                                        ACALL 	DELAY
                                        ACALL 	SCL_HIGH
                                        ACALL 	SCL_LOW
                                        SETB 	SDA
                                        RET
                                ;**************************************************
                                INT_0:
                                	JB	P3.2,ENTER1
                                	CJNE	R4,#01,DKIEN
                                	RET
                                DKIEN:	INC	R1
                                	CJNE	R1,#200,DKIEN1
                                	AJMP	DKIEN2
                                DKIEN1:	JNB	P3.2,DKIEN
                                	RET
                                	
                                DKIEN2:	MOV 	R1,#00
                                	MOV	R4,#01	
                                	INC 	R0
                                	INC	R6
                                	CJNE	R0,#06,ENTER
                                	MOV	R0,#0
                                ENTER:	RET
                                ENTER1:	
                                	MOV	R4,#00
                                	RET
                                ;**************************************************
                                INT_1:	
                                	JB	P3.3,LAP5
                                KTRA:	INC	R2
                                	CJNE	R2,#250,KTRA1
                                	AJMP	KTRA2
                                KTRA1:	JNB	P3.3,KTRA
                                	RET
                                
                                KTRA2:	MOV 	R2,#00
                                	MOV	R7,#01
                                	CJNE	R0,#01,LAP1
                                	INC	TAM5
                                	MOV	R5,TAM5
                                	CJNE	R5,#0BH,LAP1
                                	MOV	TAM5,#0
                                LAP1:	CJNE	R0,#02,LAP2
                                	INC	TAM4
                                	MOV	R5,TAM4
                                	CJNE	R5,#0BH,LAP2
                                	MOV	TAM4,#0
                                LAP2:	CJNE	R0,#03,LAP3
                                	INC	TAM3
                                	MOV	R5,TAM3
                                	CJNE	R5,#0BH,LAP3
                                	MOV	TAM3,#0
                                LAP3:	CJNE	R0,#04,LAP4
                                	INC	TAM2
                                	MOV	R5,TAM2
                                	CJNE	R5,#0BH,LAP4
                                	MOV	TAM2,#0
                                LAP4:	CJNE	R0,#05,LAP5
                                	INC	TAM1
                                	MOV	R5,TAM1
                                	CJNE	R5,#0BH,LAP5
                                	MOV	TAM1,#0
                                LAP5:	RET
                                ;**************************************************	
                                DELAYR:
                                	MOV	TAM13,#255
                                VE1:	MOV	TAM12,#255
                                	DJNZ	TAM12,$
                                	DJNZ	TAM13,VE1
                                	RET
                                ;**************************************************
                                WRITE:	ACALL 	I2C_START
                                	MOV 	DULIEU,#10100000B
                                	ACALL 	GOI1BYTE
                                	MOV 	DULIEU,#00000001B
                                	ACALL 	GOI1BYTE
                                	MOV 	DULIEU,#00000000B
                                	ACALL 	GOI1BYTE
                                	MOV 	DULIEU,TAM6
                                	ACALL 	GOI1BYTE
                                	MOV 	DULIEU,TAM7
                                	ACALL 	GOI1BYTE
                                	MOV 	DULIEU,TAM8
                                	ACALL 	GOI1BYTE
                                	MOV 	DULIEU,TAM9
                                	ACALL 	GOI1BYTE
                                	MOV 	DULIEU,TAM10
                                	ACALL 	GOI1BYTE
                                	ACALL 	I2C_STOP
                                	RET
                                ;**************************************************
                                READ:
                                	ACALL 	I2C_START
                                	MOV 	DULIEU,#10100000B
                                	ACALL 	GOI1BYTE
                                	MOV 	DULIEU,#00000001B
                                	ACALL 	GOI1BYTE
                                	MOV 	DULIEU,#00000000B
                                	ACALL 	GOI1BYTE
                                	ACALL 	I2C_START
                                	MOV 	DULIEU,#10100001B
                                	ACALL 	GOI1BYTE
                                	ACALL 	NHAN1BYTE
                                	MOV	TAM6,DULIEU
                                	ACALL 	NHAN1BYTE
                                	MOV	TAM7,DULIEU
                                	ACALL 	NHAN1BYTE
                                	MOV	TAM8,DULIEU
                                	ACALL 	NHAN1BYTE
                                	MOV	TAM9,DULIEU
                                	ACALL 	NHAN1BYTE
                                	MOV	TAM10,DULIEU
                                	ACALL 	I2C_STOP
                                	RET
                                ;**************************************************
                                QUIDOI:
                                	MOV	DPTR,#BANGSO
                                	MOV	A,TAM1
                                	MOVC	A,@A+DPTR
                                	MOV	TAM6,A
                                	MOV	A,TAM2
                                	MOVC	A,@A+DPTR
                                	MOV	TAM7,A
                                	MOV	A,TAM3
                                	MOVC	A,@A+DPTR
                                	MOV	TAM8,A
                                	MOV	A,TAM4
                                	MOVC	A,@A+DPTR
                                	MOV	TAM9,A
                                	MOV	A,TAM5
                                	MOVC	A,@A+DPTR
                                	MOV	TAM10,A
                                	RET
                                BANGSO: 
                                	DB 11111101B;11000000B0
                                	DB 01100001B;11111001B1
                                	DB 11011011B;10100100B2
                                	DB 11110011B;10110000B3
                                	DB 01100111B;10011001B4
                                	DB 10110111B;10010010B5
                                	DB 10111111B;10000010B6
                                	DB 11100001B;11111000B7
                                	DB 11111111B;10000000B8
                                	DB 11110111B;10010000B9
                                	DB 00000000B;11111111boff	
                                ;**************************************************
                                SEND:	
                                	MOV	A,TAM6
                                	ACALL	VONG
                                	MOV	A,TAM7
                                	ACALL	VONG
                                	MOV	A,TAM8
                                	ACALL	VONG
                                	MOV	A,TAM9
                                	ACALL	VONG
                                	MOV	A,TAM10
                                	ACALL	VONG
                                	
                                	CLR	LATH
                                	NOP	
                                	NOP
                                	SETB	LATH
                                	RET
                                END
                                em ngâm cứu dc sẽ post cái hoàn hảo hơn các pác ngâm cứu cùng em nhá
                                Good luck!!!
                                8051 là con em viết thành thạo. em sẵn sàng giúp đỡ các pác nếu em có thể
                                liên lạc với em qua địa chi email: Mob: 01882.076.989

                                Comment

                                Về tác giả

                                Collapse

                                hoangphat đam mê về ngành điện tử Tìm hiểu thêm về hoangphat

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X