Thông báo

Collapse
No announcement yet.

các ứng dụng của 8051 vào thực tế

Collapse
This topic is closed.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #91
    khi đã có chương trình rồi thì bạn dịch nó ra file hex , còn muốn nạp nó xuống vdk thì bạn fai có mạch nạp >>> có rất nhiều loại mạch nạp khác nhau >>> cái dùng cổng COM , cái dùng cổng LPT , cái dùng cổng USB... Bạn vào chỗ Vi điều khiển cho người mới bắt đầu >>> rồi chịu khó đọc >>> trong đó tương đối chi tiết đấy >>> vấn đề là bạn phải chịu khó thôi
    Chúc thành công

    Comment


    • #92
      Chieu quay the hien o thu tu xuat hien xung dau ra cua encoder

      Nguyên văn bởi kinhaxac Xem bài viết
      Chào các bác. Em đang làm về Encoder để đk tốc độ động cơ 1 chiều , có cả đk chiều quay. bác nào đã làm rồi thì cho em cái thuật toán . Vì em chưa biết sẽ phải xử lý 2 xug A,B thế nào để biết được chiều quay.
      Thanks
      Thông thường các encoder sẽ có 3 loại tín hiệu: A, B và Z. Trong đó A, B là các tín hiệu xung thể hiện độ phân giải của encoder, còn Z là tín hiệu báo encoder đã quay trọn 1 vòng. Ví dụ đơn giản thế này, nếu bạn mua được 1 encoder có độ phân giải 100 xung, khi encoder quay được 1 vòng, ở các đầu ra A, B sẽ đếm được 100 xung/đầu, đầu ra Z chỉ được 1 xung.
      Người ta dùng 2 đầu ra tín hiệu A và B để xác định chiều quay như sau: bản thân A và B đã được thiết kế để lệch pha nhau, thường là 90 độ. Khi quay theo chiều này thì các xung ở đầu ra A sẽ sớm pha hơn ở phía đầu B và ngược lại.

      Vấn đề của bạn là viết được thuật toán nhận biết tín hiệu nào sớm pha trong 2 tín hiệu trên. Có thể chỉ đơn giản là khi phát hiện ra sườn lên của một trong hai tín hiệu thì ta kiểm tra trạng thái ngay lúc đó của tín hiệu còn lại (là cao hay thấp?).

      Thân mến,
      blackmoon
      Last edited by blackmoon; 27-02-2008, 23:49.

      Comment


      • #93
        Chào các bác. Em đang làm về Encoder để đk tốc độ động cơ 1 chiều , có cả đk chiều quay. bác nào đã làm rồi thì cho em cái thuật toán . Vì em chưa biết sẽ phải xử lý 2 xug A,B thế nào để biết được chiều quay.
        Thanks
        Có thể chỉ đơn giản là khi phát hiện ra sườn lên của một trong hai tín hiệu thì ta kiểm tra trạng thái ngay lúc đó của tín hiệu còn lại (là cao hay thấp?).
        Đây chính xác là cách xác định chiều quay bằng encoder. Bạn nên dùng thêm timer với chế độ nhận xung bên ngoài để đếm xung của encoder. Dùng tín hiệu ngắt ngoài INT0 để check tín hiệu từ Z, khi có ngắt tức đã đc một vòng quay. Cần dùng thêm 1 bộ timer nữa để tạo thời gian chuẩn cho việc đo tốc độ động cơ.
        Chúc thành công.
        Ethernet-RS232, PIC Webserver, RFID Reader
        CallerID, Cảnh báo BTS, ...
        0988006696
        linhnc308@gmail.com
        http://linhnc308.blogspot.com

        Comment


        • #94
          Rất cảm ơn các bác>>> em đã hình dung được thuật toán rôi >>> em nói lại xem có đúng không nhé :Mình cho xung A vào chân counter , xung B vao ngắt ngoài >>> thêm một bộ timer để định thời gian xác định số xung đếm được ở xung A(tất nhiên thời gian timer fai nhỏ hơn thời gian để bộ đếm tràn) => số vòng quay/ ph >>> còn với xung B sẽ tạo ngắt >>>khi có ngắt tức là có sườn lên từ xung B ta sẽ kiểm tra trạng thái của xung A =>chiều quay của động cơ >>>Tạm thời bỏ qua xung Z///
          Last edited by kinhaxac; 28-02-2008, 09:10.

          Comment


          • #95
            Giúp em với!!!

            Chào tất cả các Bác!
            Em là thành viên mới của diễn đàn, em muốn làm một cái khóa mã số sử dụng 89C51. Xin các Bác ra tay giúp đỡ em với.
            Xin đa tạ!!!

            Comment


            • #96
              Cao Thu matrix led Help...

              :Em đang làm bài tập dài về quang báo,thầy yêu cầu có sản phẩm thực bài tập của em la hiển thị 1 đoạn tin trên led matrix 8x96, Em dùng 89s52,quét cột dùng 74hc138 (2 con 74138 dùng điều khiển chọn chân cho 12 con 74138 còn lai)Em dung P0 để điều khiển quét cột, P2 xuất dữ liệu ra hàng,Dưới đây là mã chương trình Em dùng Em đã thủ với 2 matrix 8x8 thi chay ổn nhưng chạy 12 con 8x8 thi led nhay ko điều chỉnh được mong các cao thủ giup đỡ
              Chương trình của Em là:

              ;+++++++++By DUCTDH2+++++++++++++
              ORG 0000H
              LJMP MAIN
              ORG 0030H
              MAIN:
              MOV DPTR,#MYLOVE
              HIENTHI:
              MOV R4,#65
              MOV R5,#40
              PLAY:
              MOV R3,#0
              MOV R2,#0
              LOOP:
              MOV A,R3
              MOVC A,@A+DPTR
              MOV P2,A;XUAT DU LIEU RA HANG
              MOV P0,R2;QUET COT
              ACALL DELAY
              MOV P0,#00000000B
              ACALL DELAY1
              INC R3
              INC r2
              CJNE R3,#96,LOOP
              DJNZ R5,PLAY
              INC DPTR
              MOV R5,#40
              DJNZ R4,PLAY
              NOP
              STOP_2:
              MOV P2,#00000000B
              MOV P0,#00000000B
              ACALL DELAY
              LJMP MAIN
              DELAY:
              MOV R7,#2
              LOOP1:
              MOV R6,#127
              LOOP2:
              NOP
              NOP
              NOP
              NOP
              NOP
              NOP
              NOP
              NOP
              NOP
              NOP
              DJNZ R6,LOOP2
              DJNZ R7,LOOP1
              RET
              DELAY1:
              MOV R7,#4
              DJNZ R7,$
              RET
              ;$$$$$$$$$$$ DU LIEU $$$$$$$$$$$$
              MYLOVE:
              DB 11111111B,11111111B,11111111B,11111111B,11111111B; NOT
              DB 11100000B,11101110B,11101110B,11101110B,11110001B
              DB 11111111B
              DB 11100001B,11111110B,11111110B,11111110B,11100001B
              DB 11111111B
              DB 11110001B,11101110B,11101110B,11101110B,11110101B
              DB 11111111B
              DB 11100110B,11111010B,11111010B,11111010B,11100001B
              DB 11111111B
              DB 11100000B,11101010B,11101010B,11101010B,11101010B
              DB 11111111B
              DB 11100001B,11111110B,11111110B,11111110B,11100001B
              DB 11111111B
              DB 11100000B,11110111B,11111011B,11111101B,11100000B
              DB 11111111B
              DB 11110001B,11101110B,11101110B,11101010B,11101000B
              DB 11111111B
              DB 11111100B,11110011B,11101011B,11110011B,11111100B
              DB 11111111B
              DB 11100000B,11110111B,11111011B,11111101B,11100000B
              DB 11111111B
              END
              |

              Comment


              • #97
                Nguyên văn bởi minhhieu Xem bài viết
                mình mới up lên trong hòm mail một số tài liệu và ví dụ cho người mới học 89xxx. Mọi người đừng xoá nhé. Cảm ơn nhiều
                Mình đang làm bài tập lớn mạch hiện thị và cảnh báo nhiệt độ dùng 8051 và hiện thị trên LCD, cảm biến nhiệt LM335. Mình thấy Hiếu có rất nhiều tài liệu hay. Bạn có thể gửi cho mình tài liệu về phần này không? Email của mình là : giangthuhoai@gmail.com Cảm ơn Hiếu nhiều.

                Comment


                • #98
                  Nguyên văn bởi ductdh2 Xem bài viết
                  :Em đang làm bài tập dài về quang báo,thầy yêu cầu có sản phẩm thực bài tập của em la hiển thị 1 đoạn tin trên led matrix 8x96, Em dùng 89s52,quét cột dùng 74hc138 (2 con 74138 dùng điều khiển chọn chân cho 12 con 74138 còn lai)Em dung P0 để điều khiển quét cột, P2 xuất dữ liệu ra hàng,Dưới đây là mã chương trình Em dùng Em đã thủ với 2 matrix 8x8 thi chay ổn nhưng chạy 12 con 8x8 thi led nhay ko điều chỉnh được mong các cao thủ giup đỡ
                  Chương trình của Em là:

                  ;+++++++++By DUCTDH2+++++++++++++
                  ORG 0000H
                  LJMP MAIN
                  ORG 0030H
                  MAIN:
                  MOV DPTR,#MYLOVE
                  HIENTHI:
                  MOV R4,#65
                  MOV R5,#40
                  PLAY:
                  MOV R3,#0
                  MOV R2,#0
                  LOOP:
                  MOV A,R3
                  MOVC A,@A+DPTR
                  MOV P2,A;XUAT DU LIEU RA HANG
                  MOV P0,R2;QUET COT
                  ACALL DELAY
                  MOV P0,#00000000B
                  ACALL DELAY1
                  INC R3
                  INC r2
                  CJNE R3,#96,LOOP
                  DJNZ R5,PLAY
                  INC DPTR
                  MOV R5,#40
                  DJNZ R4,PLAY
                  NOP
                  STOP_2:
                  MOV P2,#00000000B
                  MOV P0,#00000000B
                  ACALL DELAY
                  LJMP MAIN
                  DELAY:
                  MOV R7,#2
                  LOOP1:
                  MOV R6,#127
                  LOOP2:
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  DJNZ R6,LOOP2
                  DJNZ R7,LOOP1
                  RET
                  DELAY1:
                  MOV R7,#4
                  DJNZ R7,$
                  RET
                  ;$$$$$$$$$$$ DU LIEU $$$$$$$$$$$$
                  MYLOVE:
                  DB 11111111B,11111111B,11111111B,11111111B,11111111B; NOT
                  DB 11100000B,11101110B,11101110B,11101110B,11110001B
                  DB 11111111B
                  DB 11100001B,11111110B,11111110B,11111110B,11100001B
                  DB 11111111B
                  DB 11110001B,11101110B,11101110B,11101110B,11110101B
                  DB 11111111B
                  DB 11100110B,11111010B,11111010B,11111010B,11100001B
                  DB 11111111B
                  DB 11100000B,11101010B,11101010B,11101010B,11101010B
                  DB 11111111B
                  DB 11100001B,11111110B,11111110B,11111110B,11100001B
                  DB 11111111B
                  DB 11100000B,11110111B,11111011B,11111101B,11100000B
                  DB 11111111B
                  DB 11110001B,11101110B,11101110B,11101010B,11101000B
                  DB 11111111B
                  DB 11111100B,11110011B,11101011B,11110011B,11111100B
                  DB 11111111B
                  DB 11100000B,11110111B,11111011B,11111101B,11100000B
                  DB 11111111B
                  END
                  Bạn DUCTDH2 thân mến, theo mình nghĩ thuật giải hiển thị như bạn viết như vậy là không ổn, vì mỗi cột LED chỉ sáng được 1/96 thời gian, thời gian còn lại nhờ cho những cột khác. Như vậy bạn sẽ không thể nhìn thấy được LED sáng. Thông thường người ta chỉ cho quét tối đa là từ 5~8 cột mà thôi. Bạn nên chia số cột của bạn thành nhiều nhóm cột, giả sử là 96/8=12 nhóm cột. Như vậy thời gian 1 cột LED sáng là 1/8, bạn sẽ nhìn thấy được độ sáng của LED.1/8 thời gian đầu tiên bạn cho cột thứ nhất của tất cả 12 nhóm cột sáng, 1/8 thời gian kế tiếp bạn cho cột thứ 2 của tất cả 12 nhóm cột sáng và tiếp tục như vậy cho đến cột thứ 8 và trở lại từ đầu. Thuật giải này sẽ tốn nhiều phần cứng.
                  Chúc vui!

                  Comment


                  • #99
                    Nguyên văn bởi pvkhai Xem bài viết
                    Bạn DUCTDH2 thân mến, theo mình nghĩ thuật giải hiển thị như bạn viết như vậy là không ổn, vì mỗi cột LED chỉ sáng được 1/96 thời gian, thời gian còn lại nhờ cho những cột khác. Như vậy bạn sẽ không thể nhìn thấy được LED sáng. Thông thường người ta chỉ cho quét tối đa là từ 5~8 cột mà thôi. Bạn nên chia số cột của bạn thành nhiều nhóm cột, giả sử là 96/8=12 nhóm cột. Như vậy thời gian 1 cột LED sáng là 1/8, bạn sẽ nhìn thấy được độ sáng của LED.1/8 thời gian đầu tiên bạn cho cột thứ nhất của tất cả 12 nhóm cột sáng, 1/8 thời gian kế tiếp bạn cho cột thứ 2 của tất cả 12 nhóm cột sáng và tiếp tục như vậy cho đến cột thứ 8 và trở lại từ đầu. Thuật giải này sẽ tốn nhiều phần cứng.
                    Chúc vui!
                    Cám ơn Bác PVKHAI đã góp ý,theo cách của bác có phải chia nhiều modul nhỏ rồi ghép lại phải không ạ(Em cũng làm cách này chạy tạm ổn (Em Chia làm 2 môddul 48x8 rồi ghép lại(có nghĩa là cho nó quét 48 cột va thay thạch anh 12 --> 24,) mà theo như bác nói vậy sẽ tốn thêm nhiều con 89s52,,Mà Em kô hiểu "...Như vậy thời gian 1 cột LED sáng là 1/8, bạn sẽ nhìn thấy được độ sáng của LED.1/8 thời gian đầu tiên bạn cho cột thứ nhất của tất cả 12 nhóm cột sáng, 1/8 thời gian kế tiếp bạn cho cột thứ 2 của tất cả 12 nhóm cột sáng và tiếp tục như vậy cho đến cột thứ 8 và trở lại từ đầu...." vậy với cách xuất dữ liệu như thế nào ạ,chứ cứ xuất như Em vd như hiển thị chữ D thi cả 12 nhóm nhỏ đó sẽ hiển thị chữ D mất
                    |

                    Comment


                    • Nguyên văn bởi Echip Xem bài viết
                      Chào tất cả các Bác!
                      Em là thành viên mới của diễn đàn, em muốn làm một cái khóa mã số sử dụng 89C51. Xin các Bác ra tay giúp đỡ em với.
                      Xin đa tạ!!!
                      Em muốn khóa của em có máy ký tự? có mấy nút thật và mấy nút giả?
                      Khi ấn nhầm vào nút giả Khoá sẽ clean và reset về trạng thái ban đầu.

                      Comment


                      • Nguyên văn bởi Echip Xem bài viết
                        Chào tất cả các Bác!
                        Em là thành viên mới của diễn đàn, em muốn làm một cái khóa mã số sử dụng 89C51. Xin các Bác ra tay giúp đỡ em với.
                        Xin đa tạ!!!
                        Nếu sử dụng IC số thì PM
                        Khóa số nhị phân 8 bit
                        More friends more foods

                        Comment


                        • Nguyên văn bởi trần xuân Xem bài viết
                          Em muốn khóa của em có máy ký tự? có mấy nút thật và mấy nút giả?
                          Khi ấn nhầm vào nút giả Khoá sẽ clean và reset về trạng thái ban đầu.
                          Trước tiên em xin cảm ơn vì đã chiếu cố đến em, em muốn làm khóa có 12 phím(có thể là phím ma trận), trong đó có 4 hoặc 5 phím là mã mình cài sẵn, còn lại là giả.
                          Khi ấn nhầm phím bất kỳ thì sẽ bị reset về trạng thái ban đầu. Nhưng khóa phải được làm bằng họ 89Cxxx, bởi vì em đã làm được khóa bằng IC số rồi, nó dễ bị dò ra mã lắm. Mong Bác giúp em với!!!

                          Comment


                          • Echip làm khóa bằng IC số thì dễ dò mã thì phải rồi, mình lúc trước cũng làm mạch khóa bằng IC số khi mới học môn kĩ thuật số, mình cũng làm khóa bằng 89c51 rồi, nhưng chưa có làm phần cứng, nhưng khi mình đưa code cho người bạn của mình thì chạy cũng khá ok, mạch khóa làm bằng vi điều khiển thì hay hơn IC số nhiều, mình có thể thay đổi password và báo động khi nhập sai password liên tục vài lân. Mình lập trình cho nó hiển thị lên LCD, mình có làm thêm cái khóa bằng IC số để nâng cao tính năng bảo mật. Thuật giải là khi bạn nhập phím khi tạo password thì cái mã tương ứng sẽ được đem cất ở bộ nhớ Ram, và khi bạn nhập password để mỡ khóa thì cái mã của phím nhập sẽ được đem so sánh với mã tương ứng chứa trong Ram, nếu nhập đúng thì cho phép mở cửa. Nhưng vấn đề là dữ liệu được ghi trong Ram nếu bị mất điện thì dữ liệu đó sẽ bị mất hết, vì vậy bạn cần tạo cho nó một bộ nguồn back up hoặc bạn có thể sử dụng NV-Ram để ghi dữ liệu vì vậy dữ liệu sẽ không bị mất. Dùng 8951 thì số mã có thể lên đến vài chục hoặc hơn nữa nếu bộ nhớ Ram của bạn lớn hơn. Chúc bạn thành công!

                            Comment


                            • Nguyên văn bởi Echip Xem bài viết
                              Trước tiên em xin cảm ơn vì đã chiếu cố đến em, em muốn làm khóa có 12 phím(có thể là phím ma trận), trong đó có 4 hoặc 5 phím là mã mình cài sẵn, còn lại là giả.
                              Khi ấn nhầm phím bất kỳ thì sẽ bị reset về trạng thái ban đầu. Nhưng khóa phải được làm bằng họ 89Cxxx, bởi vì em đã làm được khóa bằng IC số rồi, nó dễ bị dò ra mã lắm. Mong Bác giúp em với!!!
                              cái này ko khó . đã dùng MCU thì cần gì phím giả hay ko giả , ma trận phím 4x4 đủ mật mã cho u rùi . Tui có 1 bài về khóa mã trong luồng PIC . u vào đó mà xem . Dùng 89hay PIC cũng như nhau cả thui ! u hỉu đc giải thuật thì viết lại cho 89 nhanh thui mà

                              Comment


                              • Gửi ECHIP
                                Nêu em co mạch nap PIC thi làm theo hình này . Muốn mở khóa em phải nhấn đúng thứ tự các phím 1,2,3,4,5.

                                Các phím 6~10 la nút giả. ấn nhầm là mạch reset về trạng thái ban đầu ngay.
                                Khi làm khóa thi bỏ các den LED đi. cái nay anh làm mô phỏng để dạy hoc trò cho dễ hiểu thôi.
                                Đèn led D5 chinh là cuộn hút của rơle mở khóa đấy.
                                Anh sẽ viết code cho 8951 gửi cho em sau. em học sang PIC đi hay hơn AVR đấy.
                                Attached Files

                                Comment

                                Về tác giả

                                Collapse

                                minhhieu 4 vợ + 10 con + 5 bồ bịch Tìm hiểu thêm về minhhieu

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

                                Collapse

                                Đang tải...
                                X