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

                            • tuyennhan
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi tuyennhan
                              Cái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
                              Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .
                              hôm nay, 07:44
                            • vi van pham
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi vi van pham
                              Cám ơn những lời chúc tốt đẹp của em.

                              Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.

                              Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....
                              hôm nay, 02:00
                            • nhathung1101
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi nhathung1101
                              Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.

                              Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.

                              Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...
                              Hôm qua, 22:18
                            • dinhthuong80
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi dinhthuong80
                              Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

                              Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
                              Hôm qua, 14:51
                            • dinhthuong80
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi dinhthuong80
                              Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

                              Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
                              Hôm qua, 14:39
                            • dinhthuong80
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi dinhthuong80
                              Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

                              Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
                              Hôm qua, 14:28
                            • bqviet
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi bqviet
                              Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
                              21-02-2025, 20:26
                            • mèomướp
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi mèomướp
                              Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
                              21-02-2025, 12:32
                            • vi van pham
                              Trả lời cho Tiếng Anh cho người Việt
                              bởi vi van pham
                              Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

                              Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
                              20-02-2025, 21:31
                            • bqviet
                              Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
                              bởi bqviet
                              Thiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.
                              20-02-2025, 17:22
                            Đang tải...
                            X