Thông báo

Collapse
No announcement yet.

giao tiếp ic 555 & 89c2051 để thay đổi delay

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

  • giao tiếp ic 555 & 89c2051 để thay đổi delay

    em có một mạch gồm 1 con 89c2051 port 1 kết nối với 8 led để điều khiển nhấp nháy on - off và em dùng một chú 555 tạo xung đưa vào p3.7 để thay đổi tốc độ nhấp nháy của đèn. như em viết chương trình chưa được. Bác nào làm cái này rồi giúp em với.

    org 000h
    start:
    mov p1,#00h
    lcall xung555
    mov p1,#0ffh
    lcall xung555
    sjmp start
    xung555:
    mov r1,#00h
    kt1: jnb p3.7,kt1
    inc r1
    cjne r1,#255,kt1
    ret
    end
    Attached Files

  • #2
    Nguyên văn bởi lenovo_y410 Xem bài viết
    em có một mạch gồm 1 con 89c2051 port 1 kết nối với 8 led để điều khiển nhấp nháy on - off và em dùng một chú 555 tạo xung đưa vào p3.7 để thay đổi tốc độ nhấp nháy của đèn. như em viết chương trình chưa được. Bác nào làm cái này rồi giúp em với.

    org 000h
    start:
    mov p1,#00h
    lcall xung555
    mov p1,#0ffh
    lcall xung555
    sjmp start
    xung555:
    mov r1,#00h
    kt1: jnb p3.7,kt1
    inc r1
    cjne r1,#255,kt1
    ret
    end
    cái project thay đổi delay này của bạn kì ha !
    sáng kiến của bạn ah ! tui chua thấy ai làm kỉu này ù mà thôi cho là làm kiểu zay đi !
    - thì tui đoán phần cứng của bạn có con ic 555 để tạo xung và bạn dùng một cái biến trở để thay đổi tần số của cái xung từ con 555 này đồng thời qua đó sẽ làm thay đổi cái delay trong hàm con delay " xung555" .
    - nhưng nếu mạch không chạy mà bạn cũng không mô tả hiện tượng sao ?
    - tuy nhiên bây giờ bạn lấy một con led + 1 điện trở cỡ 220 ohm mắc riêng vào cái mạch tạo xung ic555 và thay đổi biến trở xem cái con led của bạn mắc ở chân số 3 (hình như thế bạn xem datasheet coi ) nếu tốc độ nhấp nháy của nó thay đổi là ổn !
    - kiểm tra lại phần cứng có ổn không zay !

    Comment


    • #3
      cái này người ta vẫn dùng đầy mà. Bây giờ người ta vẫn dùng cách này để thay đổi tốc độ nháy của led dễ dàng mỗi khi cần. Nếu mà dùng Nút nhấn để thay đổi tốc độ cũng được nhưng mỗi khi mất điện thì chương trình lại bị reset và không dữ được tốc độ nháy như mình muốn.
      Muốn dư được thì lại phải thêm Rom ngoài để lưu với lại nhiều thứ nữa phức tạp lắm. lên cách tốt nhất là đùng 555.
      Mạch à phần mêm tôi up lên rồi mà bạn chạy mô phỏng thử là biết ngay. Nó có thay đổi tốc độ nháy nhưng nó nháy không đều. Mình nghĩ do phần mềm mình viết chưa đúng lên nó bị vậy.
      có bác nào biết giúp em với.

      Comment


      • #4
        đây là chương trình thực tế em chép từ IC của mạch đã chạy ra. Nhưng vấn đề của em là hướng lập trình nó như thế nào thôi ( xung 555 đưa vào chân bất kỳ).
        Attached Files
        Last edited by lenovo_y410; 14-08-2009, 14:32.

        Comment


        • #5
          Xung 555 đưa vào chân bất kỳ.
          Sao kyø vaäy?
          Sao kỳ vậy?

          Comment


          • #6
            xung 555 dua vao chân p3.7 không phải chân ngắt ngoài. Nên mình nghĩ ở đây người ta không cần dùng đến ngắt.
            ở phần mô phỏng xung 555 cho tần số 50hz là quan sát rõ nhất.

            Comment


            • #7
              Nguyên văn bởi lenovo_y410 Xem bài viết
              cái này người ta vẫn dùng đầy mà. Bây giờ người ta vẫn dùng cách này để thay đổi tốc độ nháy của led dễ dàng mỗi khi cần. Nếu mà dùng Nút nhấn để thay đổi tốc độ cũng được nhưng mỗi khi mất điện thì chương trình lại bị reset và không dữ được tốc độ nháy như mình muốn.
              Muốn dư được thì lại phải thêm Rom ngoài để lưu với lại nhiều thứ nữa phức tạp lắm. lên cách tốt nhất là đùng 555.
              Mạch à phần mêm tôi up lên rồi mà bạn chạy mô phỏng thử là biết ngay. Nó có thay đổi tốc độ nháy nhưng nó nháy không đều. Mình nghĩ do phần mềm mình viết chưa đúng lên nó bị vậy.
              có bác nào biết giúp em với.
              uh ! "nháy không đều theo ý bác là sao ?" nhưng mình đoán thế bởi mạch mà dùng ic555 để tạo xung có nhiều dạng và nó phụ thuộc vào cách nối mạch thực tế . nếu căn cứ vào chương trình của bác viết mà mạch nhấp nháy không đều rõ ràng tui đoán cái xung tạo ra từ ic555 không phải là dạng duty 50%. nên mới có hiện tượng lúc delay lâu lúc ngắn nên nhấp nháy không đều ...! nếu tui đoán đúng thì bác tự biết fix nó rùi hen !
              ah mà sao không cho anh em xem cái schem của nó coi thử xem nó simp thế nào nhỉ ! hhi hi !
              Last edited by doctorthanh; 14-08-2009, 14:26.

              Comment


              • #8
                nhưng tui dung bo phat xung vuong trong proteus để đưa vào chân p3.7 bạn nghĩ liệu nó có duty 50% không. bạn đa chay thử cái file thư hai mà tôi gửi lên chưa nếu bạn chạy rùi thì bạn sẽ biết thôi. File đó là file chuẩn chạy rất tốt mà tôi chép từ một mạch thực tế ra đó. Bạn thay đổi tần số đầu vào p3.7 sẽ thấy rõ thôi

                Comment


                • #9
                  ò ! tui không mô phỏng tại cái proteu không hiểu sao cứ bật lên mô phỏng được chút nó tự out liền bực mình ! thiệt bũa giờ chỉ lướt wa nên không để ý kĩ vấn đề đúng là trong chương trình bác viết đây mà !
                  - chương trình này mà không dùng ngắt cũng được thôi ! nhưng nếu mún cho nó chạy có ổn định tốt có lẽ nên dùng bộ timer .
                  - cách khác cũng được cũng không mô phỏng nữa theo ý mình thôi.

                  - rõ ràng nếu thay đổi cái tần số ở phần cứng ic 555 thì nó sẽ làm thay đổi chu kì và bác mún dùng cái này để thay đổi cái delay . do vậy mình sẽ đo chu kì sóng tạo bởi thằng 555 này để làm delay cái hàm delay "xung555" của bác rõ ràng nếu để ý chút sẽ thấy nó chạy càng ngày càng tùm lum -- > sai ý định thiết. kế túm lại chương trình như ý tưởng của mình đề nghị sẽ như sau có gì bác hiệu chỉnh chút hen

                  ban đầu sẽ kiểm tra chân p3.7 xem nó đang ở mức cao hay thấp :


                  main:

                  jnb p3.7,$ ; nếu đang ở mức thấp thì cứ đợi ở đây
                  jb p3.7,$ ; nếu ở mức cao thì cứ đợi ở đây

                  sau hai cái lệnh này sẽ lấy được điểm bắt đầu của chu kì sóng của mình rồi đúng không bác nhỉ ? vậy thì cho led sáng thôi !

                  mov p1,#0 ; cho cái cái đám led có katot nối vào đây để nó sáng lên
                  jnb p3.7,$ ; cứ đợi ở đây - vì sóng của mình đang ở mức thấp
                  jb p3.7,$ ; đợi tiếp - sóng lúc này đã lên mức cao

                  - sau cái lệnh jb p3.7,$ thì mình đã thu đủ một chu kì sóng rồi vậy chỉ cần dùng vòng lặp để cho nó delay theo ý mún thôi .. sau đó lại off đám led đi và lặp lại chương trình .bác thử thực tế xem sao .

                  Comment


                  • #10
                    cảm ơn bác đã nhiệt tình giúp đỡ, em đã viết và chạy mô phỏng thành công rùi. Em mới học vdk lên còn phải học hỏi nhiều có gì mong bác giúp đỡ nhé .Than'k

                    Comment


                    • #11
                      e đọc mấy đêm oy mà hok bik chèn mấy lệnh đó làm sao cho nó hoạt động mấy a pro giúp e với

                      #include <regx51.h>
                      #define led P0
                      void delay(unsigned int ms)
                      {
                      unsigned int i;
                      unsigned char j;
                      for(i=0;i<ms;i++)
                      {
                      for(j=0;j<125;j++)
                      {
                      }
                      }
                      }
                      main()
                      {
                      while(1)
                      {
                      P0=0x00;delay(1000);
                      P0=0x00;delay(1000);
                      P0=0x04;delay(1000);
                      P0=0x08;delay(1000);
                      P0=0x10;delay(1000);
                      P0=0x20;delay(1000);
                      P0=0x40;delay(1000);
                      P0=0x80;delay(1000);
                      }
                      }

                      Comment


                      • #12
                        kko ai chỉ giup e hết vậy

                        Comment


                        • #13
                          anh có thể giải thích bên C được không, chứ bên AS em không hiểu gì hết.
                          em cũng đang làm thử mạch này trên proteus nhưng có thêm ic 555 nên viết code ko đươc ạ, do em tự học C nên cũng chưa hiểu hết các hàm trong C. Mong anh chỉ giúp. em xin cảm ơn !
                          _______________________________!

                          Comment

                          Về tác giả

                          Collapse

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

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

                          Collapse

                          Đang tải...
                          X