Thông báo

Collapse
No announcement yet.

Xin trợ giúp về vấn dề quét Led 7 thanh !!!

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

  • Xin trợ giúp về vấn dề quét Led 7 thanh !!!

    Em có 6 con led 7 đoạn loại A chung được nối với nhau hình dưới.
    Bây giờ em muốn hiển thị số 6-5-4-3-2-1 trên 6 led theo thứ tự từ trái sang phải, mỗi led hiện 1 số. Em có viết chương trình nguồn như dưới đây nhưng không biết sai do đâu mà khi mô phỏng thì không chạy. Nhờ mọi người trong diễn đàn góp ý giúp em với.

    Code:
    ;LED sang khi p2 = 0, p0 = 0
    ;Dung p0 de quet, p2 de xuat ma 7 doan
    ;-------------------------------------
    	org	0h
    	sjmp	main
    ma_so:
    	db	82h, 92h, 99h, 0b0h, 0a4h, 0f9h ; so 6-5-4-3-2-1
    ;-------------------------------------
    main:	mov	p2, #0ffh		; tat cac led
    	clr	a		; xoa thanh ghi a, a = 0
    	mov	dptr, #ma_so	; dat con tro du lieu tai vi tri dau bang
    ;
    start:	mov	r0, #11111110b	; khoi tao gia tri dau tien cho xung quet
    	mov	a, r0		; chep r0 vao a
    loop:	mov	p0, r0		; xuat xung quet
    	rl	a		; quay trai a
    	mov	r0, a		; chep du lieu thay doi o a tro lai r0
    	push	acc
    	clr	a
    	movc	a, @a+dptr	; nap du lieu trong bang vao a
    	mov	p2, a		; xuat du lieu ra led
    	call	delay_1ms	; goi ct lam tre de led sang
    	mov	p0, #0ffh	; xoa xung quet
    	mov	p2, #0ffh	; tat led
    	pop	acc
    	inc	dptr
    	cjne	r0, #10111111b, main	; quet het 6 led thi quay lai quet tu dau
    	sjmp	loop
    ;
    ;-------------------------------------
    delay_1ms:
    ; START: Wait loop, time: 1 ms
    ; Clock: 12000.0 kHz (12 / MC)
    ; Used registers: R0, R1
    	MOV	R6, #002h
    	MOV	R7, #0F7h
    	NOP
    	DJNZ	R6, $
    	DJNZ	R7, $-5
    	NOP
    	NOP
    	NOP
    	ret
    ; Rest: 0
    ; END: Wait loop
    ;-------------------------------------
    	end
    P/S: Sơ đồ mạch và file mô phỏng bằng phần mềm Proteus v7.8 ở đây
    Attached Files

  • #2
    mạch bạn vẽ như vậy không chạy được đâu,cổng P2 phải có trở hạn dòng,đoạn vòng lặp:cjne r0, #10111111b, main ;thì nó nhảy về main khi R0 chưa bằng 10111111b vậy thì sau lệnh này R0 lại được nạp lại giá trị ban đầu,nên chỉ có một led có thể được tích cực bạn xem lại mạch và vòng quét nhé

    Comment


    • #3
      lỗi chọn sai VDK, chú chọn con 89 của philips thì chắc chắc CPU chạy 100% lúc mô phỏng, chọn lại con chỉ có tên 89C51 thôi. Lỗi ko thoát ra khỏi hàm delay đc, lỗi hai lệnh nhảy trong hàm main, xem lại thuật toán để sửa lỗi. Mô phỏng quét led nên dùng LED 7 đoạn khối, LED 7 đoạn đơn nhìu khi quét bị nháy mặc dùng tần số quét cao
      Last edited by chung1608; 23-05-2012, 09:35.

      Comment


      • #4
        Nguyên văn bởi chung1608 Xem bài viết
        lỗi chọn sai VDK, chú chọn con 89 của philips thì chắc chắc CPU chạy 100% lúc mô phỏng, chọn lại con chỉ có tên 89C51 thôi. Lỗi ko thoát ra khỏi hàm delay đc, lỗi hai lệnh nhảy trong hàm main, xem lại thuật toán để sửa lỗi. Mô phỏng quét led nên dùng LED 7 đoạn khối, LED 7 đoạn đơn nhìu khi quét bị nháy mặc dùng tần số quét cao
        Vâng để em xem lại xem thế nào. Có gì không ổn lại nhờ các bác giúp !

        Comment


        • #5
          Em đã sửa lại mạch và code nhưng vẫn chưa hiện được số như mình muốn mà Led hiện toàn số 8. Nhờ các bác chỉ giúp tại sao với.
          Code:
          ;LED sang khi p2 = 0, p0 = 0
          ;Dung p0 de quet, p2 de xuat ma 7 doan
          ;-------------------------------------
          	org	0h
          	sjmp	main
          ma_so:
          	db	82h, 92h, 99h, 0b0h, 0a4h, 0f9h ; so 6-5-4-3-2-1
          ;-------------------------------------
          main:	mov	p2, #0ffh	; tat cac led
          	clr	a		; xoa thanh ghi a, a = 0
          	mov	dptr, #ma_so	; dat con tro du lieu tai vi tri dau bang
          ;
          	mov	a, #11111110b	; khoi tao gia tri dau tien cho xung quet
          outp0:	mov	p0, a		; xuat xung quet
          	rl	a		; quay trai a (a = 11111101b)
          	call	outp2
          	cjne	a, #10111111b, outp0	;tiep tuc neu chua quet het 6 Led
          	sjmp	main
          outp2:	push	acc
          	clr	a
          	movc	a, @a+dptr	; nap du lieu trong bang vao a
          	mov	p2, a		; xuat du lieu ra led
          	call	delay_1ms	; goi ct lam tre de led sang
          	mov	p0, #0ffh	; xoa xung quet
          	mov	p2, #0ffh	; tat led
          	call	delay_1ms
          	pop	acc
          	inc	dptr		;tang con tro de lay ma tiep theo
          	ret
          ;
          ;-------------------------------------
          delay_1ms:
          	push	00
          	push	01
          	MOV	R0, #2
          	MOV	R1, #248
          	DJNZ	R1, $
          	DJNZ	R0, $-4
          	POP	01
          	POP	00
          	ret
          ;-------------------------------------
          	end
          Attached Files

          Comment


          • #6
            mình sửa chạy rùi bạn tải về xem nhé
            Attached Files

            Comment


            • #7
              Nguyên văn bởi dtcn_112 Xem bài viết
              mình sửa chạy rùi bạn tải về xem nhé
              Mình nghĩ rằng điện trở 10k là khá lớn, vì thế coi như chân C của Transistor không được nối đất, nhưng mình không hiểu vì sao khi mình bỏ đi hàng điện trở 10k không nối xuống GND thì Led lại hiện toàn số 8 vậy?
              Bạn có thể giải thích giúp mình được không?

              Comment


              • #8
                theo mạch của bạn thì port 0 được nối qua trở 4.7k mới đến cực B của transistor khi p0=0ffh,p2=0ffh thì Ube của transistor vẫn nhỏ hơn 0 lúc này vẫn có một dòng điện nhỏ chảy qua từ cực E xuống cực C ,tuy rất nhỏ thường không đủ làm sáng led nhưng ở tần số quét lớn thì năng lượng trên cực C tiêu tán chậm,do vậy con điện trở đó có tác dụng tiêu tán lượng năng lượng này(nó được gọi là điện trở hãm),rất nhìu bạn trường mình trược đồ án vì mắc thêm con trở trên cực B(vì đều không hiểu tại sao lại mắc như vậy).đây là mạch khóa điện tử dùng transistor bạn có thể tìm đọc thêm tài liệu về cách mắc transistor này trên tailieu.vn( tài liệu kỹ thuật xung số).

                Comment


                • #9
                  Nguyên văn bởi dtcn_112 Xem bài viết
                  theo mạch của bạn thì port 0 được nối qua trở 4.7k mới đến cực B của transistor khi p0=0ffh,p2=0ffh thì Ube của transistor vẫn nhỏ hơn 0 lúc này vẫn có một dòng điện nhỏ chảy qua từ cực E xuống cực C ,tuy rất nhỏ thường không đủ làm sáng led nhưng ở tần số quét lớn thì năng lượng trên cực C tiêu tán chậm,do vậy con điện trở đó có tác dụng tiêu tán lượng năng lượng này(nó được gọi là điện trở hãm),rất nhìu bạn trường mình trược đồ án vì mắc thêm con trở trên cực B(vì đều không hiểu tại sao lại mắc như vậy).đây là mạch khóa điện tử dùng transistor bạn có thể tìm đọc thêm tài liệu về cách mắc transistor này trên tailieu.vn( tài liệu kỹ thuật xung số).
                  Mình cảm ơn bạn, mình sẽ tìm hiểu thêm do mình không hiểu rõ bản chất nên không biết đúng sai thế nào!

                  Comment


                  • #10
                    có ai ở đà lạt k? nap giúp mình chuong trinh cho con 89C51 voi, ai giúp được thì pm mình với,
                    nick minh la duyngokne329@yahoo.com.vn, cam on nhieu.

                    Comment

                    Về tác giả

                    Collapse

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

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

                    Collapse

                    Đang tải...
                    X