Thông báo

Collapse
No announcement yet.

Lap Trinh Psoc

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

  • Lap Trinh Psoc

    em chào các anh. em mới học lập trình Psoc.em muốn hiển thị một số tăng dần lên LCD nhưng mà nó không tăng cứ đúng yên (0 giá trị khởi đầu ), code của em dây ạ. Các anh giúp em mới ạ. cảm ơn các anh.

    //////////////////////////////////////////////////////////////////////////////////
    #include <m8c.h> // part specific constants and macros
    #include "PSoCAPI.h" // PSoC API definitions for all User Modules
    #include "stdlib.h"
    char buff[6];

    void delay(long y)
    {
    long i;
    for(i=0;y<i;y++)
    {
    ;
    }
    }
    void hien_thi(long i)
    {

    long nghin,tram,chuc,donvi;
    LCD_Start();
    donvi=i%10;
    i=i/10;
    chuc=i%10;
    i=i/10;
    tram=i%10;
    nghin=i/10;
    LCD_Position(0,1);
    itoa(buff,nghin,10);
    LCD_PrString(buff);
    itoa(buff,tram,10);
    LCD_PrString(buff);
    itoa(buff,chuc,10);
    LCD_PrString(buff);
    itoa(buff,donvi,10);
    LCD_PrString(buff);
    }

    void main()
    {
    long i=0;
    i++;
    delay(100000);
    hien_thi(i); // Insert your main routine code here.
    }

  • #2
    Nó đứng yên là đúng,vì khi chương trình chạy bạn không thấy rằng bạn lại lặp lại quá trình khai báo biến i sao,bạn nên cho vòng While !
    Technical Institutes
    Mobile: 0983278725
    Email:

    Comment


    • #3
      Ku Long Bách Khoa HN phải ko ? Ặc, ặc..... viết code vậy chỉ chạy 1 lần duy nhất thôi, nên LCD chi in giá trị ra 1 lần, chạy đến cuối hàm main là kết thúc hết roài.
      Em viết thế này xem
      void main()
      {
      static long i=0;
      while(1)
      {
      i++;
      delay(100000);
      hien_thi(i); // Insert your main routine code here.
      }
      }

      Or call me 0903911109

      Comment


      • #4
        Vang ạ. Anh ah em muốn gui du liệu vào 74LS595 bang SPI của Psoc thì ghép nối mạch như thế nào ạ. đặt cấu hình SPI như thế nào ạ. Anh có thể cho em một đoạn code được không ạ.Cảm ơn anh ạ

        Comment


        • #5
          các anh ạ. em muốn chạy chữ trên LCD thi viêt thế nào ạ. em dung Psoc ạ.
          cảm ơn các anh.

          Comment


          • #6
            Nguyên văn bởi longdt4 Xem bài viết
            các anh ạ. em muốn chạy chữ trên LCD thi viêt thế nào ạ. em dung Psoc ạ.
            cảm ơn các anh.
            Code ở đây anh có làm chữ chạy này :
            Em down ve xem, nhớ là LCD ở port 2 nhé. À em dùng Kít PSoC tự làm hay mua vậy ?

            Or call me 0903911109

            Comment


            • #7
              Em làm được rồi ạ. Cảm ơn anh rất nhiều ạ!
              Anh ah! Đạt cấu hình cho các cổng là tín hiệu vào (như AVR ) thì làm thế nào ạ.
              em muốn nhấn một phín thì led sang và nhấn phín khác led tắt. hai phín nhấn được nối với P1.0 và P1.1 led được nối với cổng P0.0
              Cảm ơn anh rất nhiều. Chúc anh luôn thành công

              Comment


              • #8
                Cac anh ah. em đếm số lần nhấn phín rồi hiển thị lê LCD
                em viết thế này ạ nhưng không chạy được.các anh giúp em mới ạ . cảm ơn các anh.
                //////////////////////////////////
                #include <m8c.h> // part specific constants and macros
                #include "PSoCAPI.h" // PSoC API definitions for all User Modules
                #include "Ports.h"

                void delay(long y)
                {
                long i;
                for(i=0;i<y;i++)
                {
                ;
                }
                }


                void main()
                {
                int dem=0;
                Port1(0);
                while(1)
                {
                LCD_Start();
                if(Port1_1(1))//nếu phín được nhấn
                {
                while(Port1_1(1))//khi phín vẫn nhấn.
                {
                ;
                }
                dem++;
                }
                if(dem==3)
                {
                Port0_0(1);
                }
                LCD_Position(0,0);
                LCD_PrHexInt(dem);



                };

                Comment


                • #9
                  các anh cho em hoi một chút ah.
                  em co doạn code như thế này ạ.
                  ////////////////////////////////////
                  #include <m8c.h> // part specific constants and macros
                  #include "PSoCAPI.h"
                  #include "ports.h"
                  #include "string.h"
                  #include "stdlib.h"
                  void delay(long i )
                  {
                  long y;
                  for(y=0;y<i;i++)
                  {
                  ;
                  }
                  }

                  void lam_mat1(void)
                  {
                  lam_mat_Start();
                  lam_mat_On();
                  }
                  void nhiet_lam_viec(long i)
                  {
                  PWM16_WritePeriod(6000);
                  /* set pulse width to generate a 33% duty cycle */
                  PWM16_WritePulseWidth(i);
                  /* ensure interrupt is disabled */
                  PWM16_DisableInt();
                  /* start the PWM16! */
                  PWM16_Start();
                  }
                  void hien_thi(long i)
                  {
                  char buff[6];
                  LCD_Start();
                  itoa(buff,i,10);
                  LCD_PrString(buff);
                  }




                  void main()
                  {
                  long i=0;
                  bao_dong_Start();
                  lam_mat_Start();
                  lam_mat_Off();
                  bao_dong_Off();
                  while(1)
                  {
                  LCD_Start();
                  i++;
                  LCD_Position(0,0);
                  hien_thi(i);
                  nhiet_lam_viec(i);

                  if(i==100)
                  {
                  bao_dong_On();// chỗ này làm sao y ah nó không thoát được vòng if ạ
                  delay(1);
                  }
                  else
                  {
                  bao_dong_Off();
                  }

                  if(i==200)
                  {
                  i=0;
                  lam_mat1();
                  }
                  else
                  {
                  ;
                  }

                  }




                  // Insert your main routine code here.
                  }

                  nếu em bỏ delay ở vòng if thì nó thoát ra và i tăng lên tiếp tục

                  nhưng nếu để delay ỏ đó thì không thoát được và i đứng yên ạ
                  Các anh giúp em mới ạ. cảm ơn các anh rất nhiều ạ.

                  Comment


                  • #10
                    Đề nghị các thành viên đặt mã nguồn chương trình trong thẻ CODE để giữ nguyên được canh dòng.
                    Phần mềm tự do hoặc không dùng máy tính nữa !.

                    Comment


                    • #11
                      Nguyên văn bởi longdt4 Xem bài viết
                      Cac anh ah. em đếm số lần nhấn phín rồi hiển thị lê LCD
                      em viết thế này ạ nhưng không chạy được.các anh giúp em mới ạ . cảm ơn các anh.
                      //////////////////////////////////
                      #include <m8c.h> // part specific constants and macros
                      #include "PSoCAPI.h" // PSoC API definitions for all User Modules
                      #include "Ports.h"

                      void delay(long y)
                      {
                      long i;
                      for(i=0;i<y;i++)
                      {
                      ;
                      }
                      }


                      void main()
                      {
                      int dem=0;
                      Port1(0);
                      while(1)
                      {
                      LCD_Start();
                      if(Port1_1(1))//nếu phín được nhấn
                      {
                      while(Port1_1(1))//khi phín vẫn nhấn.
                      {
                      ;
                      }
                      dem++;
                      }
                      if(dem==3)
                      {
                      Port0_0(1);
                      }
                      LCD_Position(0,0);
                      LCD_PrHexInt(dem);



                      };
                      Hàm Port1_1(1)) làm gì vậy em? Hàm Port1(0) nữa;

                      Or call me 0903911109

                      Comment


                      • #12
                        Nguyên văn bởi longdt4 Xem bài viết
                        các anh cho em hoi một chút ah.
                        em co doạn code như thế này ạ.
                        ////////////////////////////////////
                        #include <m8c.h> // part specific constants and macros
                        #include "PSoCAPI.h"
                        #include "ports.h"
                        #include "string.h"
                        #include "stdlib.h"
                        void delay(long i )
                        {
                        long y;
                        for(y=0;y<i;i++)
                        {
                        ;
                        }
                        }

                        void lam_mat1(void)
                        {
                        lam_mat_Start();
                        lam_mat_On();
                        }
                        void nhiet_lam_viec(long i)
                        {
                        PWM16_WritePeriod(6000);
                        /* set pulse width to generate a 33% duty cycle */
                        PWM16_WritePulseWidth(i);
                        /* ensure interrupt is disabled */
                        PWM16_DisableInt();
                        /* start the PWM16! */
                        PWM16_Start();
                        }
                        void hien_thi(long i)
                        {
                        char buff[6];
                        LCD_Start();
                        itoa(buff,i,10);
                        LCD_PrString(buff);
                        }




                        void main()
                        {
                        long i=0;
                        bao_dong_Start();
                        lam_mat_Start();
                        lam_mat_Off();
                        bao_dong_Off();
                        while(1)
                        {
                        LCD_Start();
                        i++;
                        LCD_Position(0,0);
                        hien_thi(i);
                        nhiet_lam_viec(i);

                        if(i==100)
                        {
                        bao_dong_On();// chỗ này làm sao y ah nó không thoát được vòng if ạ
                        delay(1);
                        }
                        else
                        {
                        bao_dong_Off();
                        }

                        if(i==200)
                        {
                        i=0;
                        lam_mat1();
                        }
                        else
                        {
                        ;
                        }

                        }




                        // Insert your main routine code here.
                        }

                        nếu em bỏ delay ở vòng if thì nó thoát ra và i tăng lên tiếp tục

                        nhưng nếu để delay ỏ đó thì không thoát được và i đứng yên ạ
                        Các anh giúp em mới ạ. cảm ơn các anh rất nhiều ạ.
                        Thứ nhất em ko nên gọi hàm LCD_Start() trong vòng while. Trong hàm void hien_thi(long i) cũng không nên gọi nó. Chỉ cần gọi một lần ngay sau hàm main là OK rồi. Còn hàm delay() của em sai rồi, nên i kô tăng là đúng. Đây nè
                        void delay(long i )
                        {
                        long y;
                        for(y=0;y<i;i++)
                        {
                        ;
                        }
                        }
                        Phải là for(y=0;y<i;y++) chứ nhỉ ?

                        Mà hàm hien_thi(long i) sao tham số là kiểu long mà trong hàm lại kêu hàm itoa phải dùng ltoa chứ. Hoặc viết lại hàm hien_thi(int i) là OK roài.

                        Or call me 0903911109

                        Comment


                        • #13
                          Cảm ơn anh Xuân. Công việc anh dạo này thế nào. anh àh, lập trình nut bấn như thế nào ạ. Anh cho em doạn code được không ạ. Em muốn đếm số lần nhấn phín từ một cổng nào đó,Cấu hình cho cổng đó như thế nào ạ. Cảm ơn anh rất nhiều.

                          Comment


                          • #14
                            Nếu thiết lập Pin là Pull-Up thì nên nối Pin đó với nút nhấn xuống GND thông qua điện trở khoảng 560 ôm. Đồng thời nối 1 tụ khoảng 100p từ Pin đó lên Vcc để chống rung. Như vậy trạng thái không có phím nhấn của Pin đó là 1, khi nào nhấn là 0. Nếu thiết lập Pull-Down thì config ngượi lại.

                            Or call me 0903911109

                            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