Thông báo

Collapse
No announcement yet.

Nhấp nháy led

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

  • Nhấp nháy led

    Em chào các anh. Em mới học Psoc. Em muốn nhấp nháy led. led nối với công P0.7 em đặt là device là strong . Em viết một đoạn chương trình như thế này nhưng nạp xuông thì nó không chạy đúng mà led sáng mãi.


    #include <m8c.h> // part specific constants and macros
    #include "PSoCAPI.h" // PSoC API definitions for all User Modules
    void delay(long y)
    {
    long i;
    for(i=0;i<y;i++)
    {
    ;
    }
    }

    void main()
    {

    while(1)
    {
    LED_2_Start();
    LED_2_On;
    delay(1000);
    LED_2_Off;
    delay(1000);

    }

    // Insert your main routine code here.
    }

  • #2
    @longdt4:bạn nên đưa ra code viết cho LED_2_Start(); để mọi người còn biết lối giúp bạn.THêm nữa sơ đồ nguyên lý bạn kết nối thế nào?

    Comment


    • #3
      Từ Version 4.3 mới có thêm module LED2,hẳn là bạn dùng 4.3 trở lên,những cái đơn giản bạn không nên dùng tới module mà code trực tiếp,giao tiếp SPI nhiều khi ta còn code trực tiếp mặc dù trong Designer cũng có.Ví dụ anod LED đấu vào trở lên VCC,katot LED đấu vào P20
      Tắt LED: PRT2DR|=0x01;//Tắt LED
      Bật LED: PRT2DR&=0xFE;//Bật LED
      Rất đơn giản phải không bạn!
      Technical Institutes
      Mobile: 0983278725
      Email:

      Comment


      • #4
        Hi bạn longdt4! Đã lâu mình ko làm với PSoC nên nhận xét có thể ko chính xác lắm, bạn thông cảm nhé!

        Bạn xem lại phần delay của bạn: Có thể tần số nhấp nháy 1000 là chưa đủ để mắt người nhận ra sự thay đổi. Nếu mình nhớ không nhầm thì Chip PSoC hoạt động với tần sóo24MHz, tức là khoảng phần triệu giây, x1000 lên thì được phần nghìn giây. Trong khi đó mắt người chỉ phân biệt dc 24h/s, làm sao có thể nhận biết dc Led đang nhấp nháy .

        PS: Mà hình như trong PSoC designer có sẵn hàm delay thì phải !?
        AC

        Comment


        • #5
          Nguyên văn bởi phuc0709 Xem bài viết
          Hi bạn longdt4! Đã lâu mình ko làm với PSoC nên nhận xét có thể ko chính xác lắm, bạn thông cảm nhé!

          Bạn xem lại phần delay của bạn: Có thể tần số nhấp nháy 1000 là chưa đủ để mắt người nhận ra sự thay đổi. Nếu mình nhớ không nhầm thì Chip PSoC hoạt động với tần sóo24MHz, tức là khoảng phần triệu giây, x1000 lên thì được phần nghìn giây. Trong khi đó mắt người chỉ phân biệt dc 24h/s, làm sao có thể nhận biết dc Led đang nhấp nháy .

          PS: Mà hình như trong PSoC designer có sẵn hàm delay thì phải !?
          Minh cũng làm giống bạn long thì LED nháy bình thường.Đo thì được tần số nhấp nháy là 14Hz

          Comment


          • #6
            Nguyên văn bởi process Xem bài viết
            Từ Version 4.3 mới có thêm module LED2,hẳn là bạn dùng 4.3 trở lên,những cái đơn giản bạn không nên dùng tới module mà code trực tiếp,giao tiếp SPI nhiều khi ta còn code trực tiếp mặc dù trong Designer cũng có.Ví dụ anod LED đấu vào trở lên VCC,katot LED đấu vào P20
            Tắt LED: PRT2DR|=0x01;//Tắt LED
            Bật LED: PRT2DR&=0xFE;//Bật LED
            Rất đơn giản phải không bạn!
            Mình dùng viết thử như bạn mà chẳng được gì cả.Liệu có phải cấu hình P2.0 ở chế độ đặc biệt gì không

            Comment


            • #7
              Cái nháy led này trong Psoc thì đơn giản! Ngày đầu mình mới học làm suốt cái nháy này làm mãi nó cũng thấy chán!
              Em có chương trỉnh này các bạn tham khoa!
              Chọn P0_7 làm LED nháy : Lắp con LED: Anot nối với dương nguồn còn Katot nối với chân 0_7.
              Tạo chương trình chọn drive cho P0_7 là strong.
              Chương trình:
              ..
              unsigned int n;
              void delay(unsigned int t) // tạo trễ
              {
              for(n=1;n<2000;n++)
              {
              for(n=1;n<t;n++)
              }
              {}
              }

              void nhay()
              {
              whlie(1) //lap
              {
              PRT0DR=0xff; // trang thai tat ca deu tat
              PRT0DR=PRT0DR&0x7f; sáng LED
              delay(20000);
              PRT0DR=PRT0DR|0x80; tắt
              }
              }
              ok

              Comment


              • #8
                Nguyên văn bởi longdt4 Xem bài viết
                Em chào các anh. Em mới học Psoc. Em muốn nhấp nháy led. led nối với công P0.7 em đặt là device là strong . Em viết một đoạn chương trình như thế này nhưng nạp xuông thì nó không chạy đúng mà led sáng mãi.


                #include <m8c.h> // part specific constants and macros
                #include "PSoCAPI.h" // PSoC API definitions for all User Modules
                void delay(long y)
                {
                long i;
                for(i=0;i<y;i++)
                {
                ;
                }
                }

                void main()
                {

                while(1)
                {
                LED_2_Start();
                LED_2_On;
                delay(1000);
                LED_2_Off;
                delay(1000);

                }

                // Insert your main routine code here.
                }
                không biết sysclk bạn đặt bằng bao nhiêu chứ nhìn thấy hàm delay của bạn cộng thêm bạn delay(1000) thì nhanh quá làm sao mà thấy led thay đổi trạng thái được. Viết hàm delay giống như bạn biendt là chạy ngon ngay.
                CUNG CẤP PSOC, MẠCH NẠP
                CHUYỂN ĐỔI USB <-> RS485 AutoBaud
                RS232 <-> RS485 MultiBaud
                MẠCH NẠP USBPPI S7-200
                Mobile: 0906076116
                Email:

                Comment


                • #9
                  To Tuaki2311 :P20 bạn phải đặt ở chế độ Strong.
                  Technical Institutes
                  Mobile: 0983278725
                  Email:

                  Comment


                  • #10
                    Nguyên văn bởi biendt Xem bài viết
                    Cái nháy led này trong Psoc thì đơn giản! Ngày đầu mình mới học làm suốt cái nháy này làm mãi nó cũng thấy chán!
                    Em có chương trỉnh này các bạn tham khoa!
                    Chọn P0_7 làm LED nháy : Lắp con LED: Anot nối với dương nguồn còn Katot nối với chân 0_7.
                    Tạo chương trình chọn drive cho P0_7 là strong.
                    Chương trình:
                    ..
                    unsigned int n;
                    void delay(unsigned int t) // tạo trễ
                    {
                    for(n=1;n<2000;n++)
                    {
                    for(n=1;n<t;n++)
                    }
                    {}
                    }

                    void nhay()
                    {
                    whlie(1) //lap
                    {
                    PRT0DR=0xff; // trang thai tat ca deu tat
                    PRT0DR=PRT0DR&0x7f; sáng LED
                    delay(20000);
                    PRT0DR=PRT0DR|0x80; tắt
                    }
                    }
                    ok
                    Bạn xem lại hàm delay:
                    void delay(unsigned int t) // tạo trễ
                    {
                    for(n=1;n<2000;n++)
                    {
                    for(n=1;n<t;n++)
                    }
                    {}
                    }
                    Hàm này có thể kết thúc khi n>= 19999. Nếu n < 19999 thì nó sẽ ko thể thoát ra đc....

                    Chỉ có 1 hàm delay(20000) thì làm sao có thể làm LED nhấp nháy đc...
                    whlie(1) //lap
                    {
                    PRT0DR=0xff; // trang thai tat ca deu tat
                    PRT0DR=PRT0DR&0x7f; sáng LED
                    delay(20000);
                    PRT0DR=PRT0DR|0x80; tắt
                    }
                    mình sửa như thế này ko biết đúng ko:
                    .......
                    unsigned int n;
                    void delay(unsigned int t) // tạo trễ
                    {
                    for(n=1;n<t;n++)
                    {}
                    }

                    void nhay()
                    {
                    whlie(1) //lap
                    {
                    PRT0DR=0xff; // trang thai tat ca deu tat
                    PRT0DR=PRT0DR&0x7f; sáng LED
                    delay(20000);
                    PRT0DR=PRT0DR|0x80; tắt
                    delay(20000);
                    }
                    }
                    ........
                    Last edited by Pluto19; 15-11-2008, 22:42.

                    Comment


                    • #11
                      Pacc à! chương trình này tôi đã làm nhiều rồi! ko có vẫn đề gì đâu.
                      Psoc cái này là khá đơn giản! Vòng for bạn nói ko có vẫn đề gì đâu. Như bạn cũng đựoc và kiểu mình cũng đựoc. MInh chỉ là cho delay nó dài hơn thôi!

                      Comment


                      • #12
                        Nguyên văn bởi biendt Xem bài viết
                        Cái nháy led này trong Psoc thì đơn giản! Ngày đầu mình mới học làm suốt cái nháy này làm mãi nó cũng thấy chán!
                        Em có chương trỉnh này các bạn tham khoa!
                        Chọn P0_7 làm LED nháy : Lắp con LED: Anot nối với dương nguồn còn Katot nối với chân 0_7.
                        Tạo chương trình chọn drive cho P0_7 là strong.
                        Chương trình:
                        ..
                        unsigned int n;
                        void delay(unsigned int t) // tạo trễ
                        {
                        for(n=1;n<2000;n++)
                        {
                        for(n=1;n<t;n++)
                        }
                        {}
                        }

                        void nhay()
                        {
                        whlie(1) //lap
                        {
                        PRT0DR=0xff; // trang thai tat ca deu tat
                        PRT0DR=PRT0DR&0x7f; sáng LED
                        delay(20000);
                        PRT0DR=PRT0DR|0x80; tắt
                        }
                        }
                        ok
                        Chương trình viết ẩu:
                        1. Hàm delay: Biến chạy không nên/không được phép là biến toàn cục (n)
                        2. Hàm delay: 2 vòng for lồng nhau sử dùng cùng một biến lặp (n).
                        3. Không có ; kết thúc câu lệnh ({for... })
                        4. Ngoặc sai: Cặp ngoặc sau câu lệnh for để làm gì vậy? Nó không phải thân câu lệnh for.
                        5. Thiếu trễ sau khi tắt led

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...
                        X