Thông báo

Collapse
No announcement yet.

89c52 giao tiếp với sram 6264

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

  • #16
    Nguyên văn bởi congdt Xem bài viết
    chủ yếu là do đam mê thôi. để làm bảng dài với 8051 thì phải kết hợp nhiều thứ khác vào chứ mình e 8051 thì làm ko nổi.con 74hc165 chuyển từ ss sang nối tiếp có lẽ đúng ý bạn. con này cũng có thể kết hợp vào qb đc đấy.
    con 74hc65 này dùng thế nào vậy anh, có thể dùng để đưa 8 bit coi như truyền ss sang 595 được không a (nối xung out của 74hc165 vào chân in của 595), e ghép nó với 595 nhưng mỗi khi dịch 1 bit thì vẫn phải có 1 xung clk, vậy làm thế nào để con 74hc165 kết nối với 595 mà chỉ đặt mức điện áp vào D0->D7 mà nó tự dịch không ạ.

    Code:
    select_row:
    	mov     r5,scan_row     ;scan_row là hàng muốn quét
       mov dptr,#ram_data          ;ram_data = 2000h địa chỉ chọn ram
    row1:	
    	cjne    r5,#1,row2        ;so sánh xem quét hàng mấy
    loop1:
    	movx	a,@dptr              ;đọc từ ram
    	mov	    c,acc.0           ;đưa bit đầu tiên ra 595
    	mov 	ds_, c
    	setb	clk                      ;dịch bit
    	inc     dptr                   ;tăng để đọc byte tiếp theo của ram
    	clr     clk
    	djnz    width,loop1        ;width là số byte muốn truyền
    	ret
    row2:	
    	cjne    r5,#2,row3
    loop2:
    	movx	a,@dptr
    	mov	    c,acc.1
    	mov 	ds_, c
    	setb	clk
    	inc	    dptr
    	clr	    clk
    	djnz    width,loop2
    	ret
    row3:	
    	cjne    r5,#3,row4
    loop3:
    	movx   a,@dptr
    	mov     c,acc.2
    	mov     ds_, c
    	setb    clk
    	inc	    dptr
    	clr	    clk
    	djnz    width,loop3
    	ret
    row4:	
    	cjne    r5,#4,row5
    loop4:
    	movx    a,@dptr
    	mov	    c,acc.3
    	mov 	ds_, c
    	setb    clk
    	inc	    dptr
    	clr	    clk
    	djnz    width,loop4
    	ret
    row5:	
    	cjne    r5,#5,row6
    loop5:
    	movx    a,@dptr
    	mov	    c,acc.4
    	mov 	ds_, c
    	setb	clk
    	inc	    dptr
    	clr	    clk
    	djnz    width,loop5
    	ret
    row6:	
    	cjne    r5,#6,row7
    loop6:
    	movc    a,@dptr
    	mov	    c,acc.5
    	mov     ds_, c
    	setb    clk
    	inc	    dptr
    	clr     clk
    	djnz    width,loop6
    	ret
    row7:
    	cjne    r5,#7,row8
    loop7:
    	movx    a,@dptr
    	mov	    c,acc.6
    	mov     ds_, c
    	setb    clk
    	inc	    dptr
    	clr	    clk
    	djnz    width,loop7
    	ret
    row8:	
    	cjne    r5,#8,end_
    loop8:
    	movx    a,@dptr
    	mov	    c,acc.7
    	mov     ds_, c
    	setb    clk
    	inc	   dptr
    	clr	    clk
    	djnz    width,loop8
    	ret
    end_:
    	ret
    anh xem giúp e luôn đoạn code đọc từ ram như vậy có hợp lý không, em đọc như vậy thì khi chốt con 595 nó không đưa data ra, không biết là lỗi ở ghi vào ram hay đọc ra nữa, e cho ghi đọc các số tù 0-9 và xuất ra led 7 đoạn thì oke mà cho vào như vậy nó không chạy anh à, anh xem rồi sửa giúp em với
    cảm ơn anh

    Comment


    • #17
      Nguyên văn bởi rptdnmqs Xem bài viết
      Kô biết có chip nào shift từ 1 byte ra lẫn lượt từng bit 1 kô.
      Xem lại còn 89S/Cxx kìa. Chế độ cổng nối tiếp mode 0 (SM0=SM1=0 trong thanh ghi SCON) lúc này dữ liệu nối tiếp đi vào qua và đi ra qua RXD, TXD là ngõ xuất xung nhịp dịch. KAKA cái này mà ứng dụng vào dịch data từng bit ra một cách tự động OK nhỉ.
      Ai rãnh thử viết code test mode này thử nha.

      IC 74HC165 8-bit parallel-in/serial out shift register

      Port_out=data
      PL=0;
      PL=1;

      sck=1;( sck = CP(74HC164)=SCK(74HC595), Q7 or Q7 bù (74HC165) -->SER(74HC595) )
      sck=0;
      sck=1;
      sck=0;
      sck=1;
      sck=0;
      sck=1;
      sck=0;
      sck=1;
      sck=0;
      sck=1;
      sck=0;
      sck=1;
      sck=0;
      sck=1;
      sck=0;

      rck=1; RCK (74HC595)
      rck=0;

      Lengo90 dạo này thấy lên tay về ASM nha. Viết code test 74HC165 theo ý tưởng trên thử nha
      AH, ý lengo là không cần xung nhịp sck phải không. Thế thì phải thiết kế clock ngoài nhưng phải kiểm soát được số clock vì như thế mới biết số bit dịch là được bao nhiêu. Nói chung ý tưởng hay nhưng thực hiện hơi khó đấy
      Last edited by tienhuypro; 05-01-2012, 23:35.

      Email:
      Tel: 0983.497.310

      Comment


      • #18
        bạn coi trong ctr xem đã kích xung cho chân 12 của 74hc595 chưa. còn 2 con 74hc165 và 74hc595 thì 2 chân xung của 2 con này nối chung vào nhau theo mình nếu đã phối hợp 2 con này với nhau thì bạn thiết kế một bộ tạo xung clk cho 2 con này và vdk chỉ cần ra 1 lệnh là tự nó tạo ra xung để dịch hết 1 byte từ con 74hc165 sang con 74hc595.

        Comment


        • #19
          vâng. em cảm ơn 2 anh rất nhiều, em thích cái vụ này lắm nên vẫn ngày đêm suy nghĩ về nó ạ. giờ em muốn động não 1 tí tự mình làm ra thì sẽ vui hơn. có gì thắc mắc em lại hỏi các a nhé

          Comment


          • #20
            Thanks! anh tienhuypro.Em cũng tính dÙng USRT.Khi nào rảnh nghịch vậy.Bây giờ đang chán.Lên phá phách chút thôi.
            , , ,

            Comment


            • #21
              các anh ơi em đã đọc ghi được con ram và hiển thị nó lên bảng led rồi nhưng mới hiển thị được nó đứng yên thôi à, em đang tính tiếp cho nó dịch chuyển sang trái or sang phải nhưng đến đây lại có 1 chỗ mắc nữa.

              em nghĩ ra có 2 phương án để lựa chọn là:
              - Tất cả các dữ liệu ngày tháng năm nhiệt độ chữ..... e load vào ram lần nào cũng như vậy rồi đọc ra theo kiểu tăng dptr để dịch chữ, như vậy mỗi lần load vào ram cũng tầm khoảng 2kb dữ liệu, tốn khá nhiều thời gian liệu con 89s52 có đáp ứng được không
              - mỗi lần load vào ram em chỉ load đủ số byte dùng để hiển thị lên bảng led 16*80 2 màu ( tức 16*160 1 màu), dữ liệu load vào ram đã qua xử lí dịch sang trái hay sang phải rồi, lần nào đọc ra hiển thị cũng như nhau bắt đầu đọc từ 00h thì chữ sẽ dịch theo ý muốn.

              vậy 2 cách này thì cách nào khả thi hơn ạ, e vẫn nghĩ dùng cách 2 hay hơn vì nó chỉ ghi 1 số lượng nhỏ byte dữ liệu vào ram => tốn ít thời gian hơn, cho em ý kiến tham khảo đi ạ.

              hơn nữa là e mới chỉ load giờ phút giây lên bảng led 16*80 thôi mà sao nó có các vạch ngang chạy thế này ạ, không biết mạch thật nó có vậy không, hay là do máy tính không đáp ứng được nên vậy, chắc tại cái máy tính của e nó đời cổ quá
              Last edited by lengo90; 06-01-2012, 20:53.

              Comment


              • #22
                matrix

                Nguyên văn bởi rptdnmqs Xem bài viết
                Tất nhiên là ép vào rồi.Kô thì tra sao nổi.Đối với bảng led cỡ nhỏ thì dÙng cách này.Kô dÙng thêm ram ngoài.Bảng led lớn thì phải dÙng avr,arm sài cho nó khỏi phải lăn tăn.Anh tienhuypro kô hiểu cách cuộn ram của em rồi.Khi xuất bit cuối 1 byte là từ động dịch byte trên ram và lấy 1 byte trên rom đè vào byte cuối trên 1 hàng data của buffer.Matrix 128 cột thì sợ ku 8051 kô sơi được.
                ai bào 128 cột 8051 ko làm dc, 200 cột, đối với 8051 chẳng là gì cả, chủ yếu là chúng ta ko đủ trình độ thôi
                không tiếp nhận cuộc gọi qua điện thoại vì đi làm toàn tập, tính khí thất thường, hay nóng võ công lại cao

                Comment

                Về tác giả

                Collapse

                lengo90 Tìm hiểu thêm về lengo90

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

                Collapse

                Đang tải...
                X