Thông báo

Collapse
No announcement yet.

Tạo xung vuông bằng vdk

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

  • Tạo xung vuông bằng vdk

    Thấy các pác làm việc với xung vuông thích quá hôm nay em post lên một bài làm thử mọi người tham khảo nhé
    // chương trình tạo xung vuông 1kHz qua chân P2.0, sử dụng thạch anh 12 MHz
    // Biên dịch và lập trình bằng chương trình 8501:


    #include<reg52.h> // Thư viện chuẩn
    sbit F=P2^0; // gán địa chỉ port 2 vào biến F (tần số)
    void main (void) // Chương trình chính
    { TMOD=0x10; // sử dụng bộ định thời TIMER 1 chế độ 0
    while(1) // lặp vô hạn
    {
    TH1=65035/256; // sẽ giải thích ở cuối chương trình
    TL1=65035%256;
    while (TF1==0);
    TR1=0;
    TF1=0;
    F=~F; // đảo xung
    }
    }


    // giải thích thêm:
    Thạch anh của VDK khi qua bộ chia tần trong VDK thì tần số là 1MHz =>> chu kì T=1/f =10^-6 (s)
    xung cần tạp là F=1KHz=1000Hz =>> T=10^-3 (s) =>> T/2=5.10^-4 (s)
    Vậy để tạo được xung là 1KHZ thì ta phải đếm 500 lần rồi đảo chiều xung.
    Ta nạp vào thanh ghi :65035
    by:nguyensiluan@gmail.com

  • #2
    Dùng timer2 có phải hay hơn không! Nó chính xác và tự động hơn. Ta không phải chờ cờ bận TF làm gì, do đó sẽ có thời gian để làm việc khác ở trong chương trình chính.
    !e

    Comment


    • #3
      Nguyên văn bởi zemen Xem bài viết
      Dùng timer2 có phải hay hơn không! Nó chính xác và tự động hơn. Ta không phải chờ cờ bận TF làm gì, do đó sẽ có thời gian để làm việc khác ở trong chương trình chính.
      Cái đó thì tùy bạn thôi TIMER nào mà chr được mà liên quan đến tạo xung mà không cần cờ tràn ah? bạn làm thử cho tui xem dc không? cái này hay đấy!

      Comment


      • #4
        Nguyên văn bởi lee_nguyen Xem bài viết
        Cái đó thì tùy bạn thôi TIMER nào mà chr được mà liên quan đến tạo xung mà không cần cờ tràn ah? bạn làm thử cho tui xem dc không? cái này hay đấy!
        Bạn đọc kĩ về timer2 chưa? Nó có nhiều cái hay lắm, hơn hẳn timer0,1; trong đó có khoản tạo dao động một cách tự động (giống như tạo baudrate ấy). Mà mình nói là "không chờ cờ" chứ không phải là "không cần cờ".

        Programmable Clock Out
        A 50% duty cycle clock can be programmed to come out on P1.0, as shown in Figure 12-1. This
        pin, besides being a regular I/O pin, has two alternate functions. It can be programmed to input
        the external clock for Timer/Counter 2 or to output a 50% duty cycle clock ranging from 61 Hz to
        4 MHz (for a 16-MHz operating frequency).
        To configure the Timer/Counter 2 as a clock generator, bit C/T2 (T2CON.1) must be cleared and
        bit T2OE (T2MOD.1) must be set. Bit TR2 (T2CON.2) starts and stops the timer.
        The clock-out frequency depends on the oscillator frequency and the reload value of Timer 2
        capture registers (RCAP2H, RCAP2L), as shown in the following equation.

        Clock-Out Frequency = Oscillator Frequency / (4 x [65536-(RCAP2H,RCAP2L)] )
        !e

        Comment


        • #5
          Nguyên văn bởi zemen Xem bài viết
          Bạn đọc kĩ về timer2 chưa? Nó có nhiều cái hay lắm, hơn hẳn timer0,1; trong đó có khoản tạo dao động một cách tự động (giống như tạo baudrate ấy). Mà mình nói là "không chờ cờ" chứ không phải là "không cần cờ".
          hi hi thi tui bao là post lên tham khảo thui mà!
          tại thấy mấy huynh đệ rầm rộ quá , em kém miếng không chịu được

          Mà bạn gửi cho tôi cái gì đây??? đọc chả hiểu
          trich:
          Lập trình đồng hồ Out
          A 50% nhiệm vụ chu kỳ có thể được lập trình để đi ra vào P1.0, như trong hình 12-1. Cái này
          pin, ngoài việc là một tôi thường xuyên / O pin, có hai chức năng thay thế. Nó có thể được lập trình để nhập vào
          đồng hồ bên ngoài cho Timer / Counter 2 hoặc đầu ra cho một đồng hồ 50% chu kỳ nhiệm vụ khác nhau, từ 61 Hz đến
          4 MHz (cho 16-MHz hoạt động tần số).
          Để cấu hình Timer / Counter 2 như một máy phát điện đồng hồ, C/T2 bit (T2CON.1) phải được dọn sạch và
          bit T2OE (T2MOD.1) phải được thiết lập. Bit Tr2 (T2CON.2) bắt đầu và dừng việc hẹn giờ.
          Đồng hồ-ra tần số phụ thuộc vào tần số Dao động và tải lại giá trị của Timer 2
          nắm bắt đăng ký (RCAP2H, RCAP2L), như thể hiện trong phương trình sau đây.

          Clock-Out Frequency = Oscillator Frequency / (4 x [65.536 - (RCAP2H, RCAP2L)])

          Comment


          • #6
            cơ_hôi_cho_A-E_sinh viên

            Đại Học Quốc Gia TPHCM tổ chức cuộc thi về Thiết kế vi mach Analog dành cho đối tượng là sinh viên các trường đại học trên toàn quốc(kế hoạch đính kem).

            Cuộc thi tổ chức tại 3 thành phố lơn Hà Nội Hồ Chí Minh, Đà Nẵng. Khoá đào tạo và phần trung kết được tổ chức tại TP HCM. Đại Học Quốc Gia TPHCM sẽ tổ chức buổi họp báo"giới thiệu va fá \f động cuộc thi thiết kế vi mạch Analog" vào ngày 22/01/2010

            Comment


            • #7
              vậy F=10khz thì làm như thế nào ạ

              Comment


              • #8
                Bạn đọc quyển 8051 của Tống Văn On, có bài tạo xung 10khz đấy nhé.

                Comment


                • #9
                  Nguyên văn bởi lee_nguyen Xem bài viết
                  Thấy các pác làm việc với xung vuông thích quá hôm nay em post lên một bài làm thử mọi người tham khảo nhé
                  // chương trình tạo xung vuông 1kHz qua chân P2.0, sử dụng thạch anh 12 MHz
                  // Biên dịch và lập trình bằng chương trình 8501:


                  #include<reg52.h> // Thư viện chuẩn
                  sbit F=P2^0; // gán địa chỉ port 2 vào biến F (tần số)
                  void main (void) // Chương trình chính
                  { TMOD=0x10; // sử dụng bộ định thời TIMER 1 chế độ 0
                  while(1) // lặp vô hạn
                  {
                  TH1=65035/256; // sẽ giải thích ở cuối chương trình
                  TL1=65035%256;
                  while (TF1==0);
                  TR1=0;
                  TF1=0;
                  F=~F; // đảo xung
                  }
                  }


                  // giải thích thêm:
                  Thạch anh của VDK khi qua bộ chia tần trong VDK thì tần số là 1MHz =>> chu kì T=1/f =10^-6 (s)
                  xung cần tạp là F=1KHz=1000Hz =>> T=10^-3 (s) =>> T/2=5.10^-4 (s)
                  Vậy để tạo được xung là 1KHZ thì ta phải đếm 500 lần rồi đảo chiều xung.
                  Ta nạp vào thanh ghi :65035
                  by:nguyensiluan@gmail.com
                  Bạn thử lấy xung vuông đó làm xung nhịp cho đồng hồ coi có đúng không?! Sai số bao nhiêu %?

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  Đang tải...
                  X