Thông báo

Collapse
No announcement yet.

[Help] code MikroC LCD 16x2 lỗi

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

  • [Help] code MikroC LCD 16x2 lỗi

    em dùng mikroC for arm viết chương trình cho con LM3S8962 test cái lcd16x2. chỉ dùng cái sample code của nó, thay lại chỗ định nghĩa chân cẳng nhưng bị lỗi không dịch được, trong khi để như cũ thì ok.

    Code:
    // LCD module connections
    sbit LCD_RS at GPIO_PORTD_DATA.D7;
    sbit LCD_EN at GPIO_PORTD_DATA.D6;
    sbit LCD_D4 at GPIO_PORTD_DATA.D5;
    sbit LCD_D5 at GPIO_PORTD_DATA.D4;
    sbit LCD_D6 at GPIO_PORTB_DATA.B4;
    sbit LCD_D7 at GPIO_PORTB_DATA.B5;
    
    
    sbit LCD_RS_Direction at GPIO_PORTD_DIR.D7;
    sbit LCD_EN_Direction at GPIO_PORTD_DIR.D6;
    sbit LCD_D4_Direction at GPIO_PORTD_DIR.D5;
    sbit LCD_D5_Direction at GPIO_PORTD_DIR.D4;
    sbit LCD_D6_Direction at GPIO_PORTB_DIR.B4;
    sbit LCD_D7_Direction at GPIO_PORTB_DIR.B5;
    // End LCD module connections
    
    char txt1[] = "mikroElektronika";
    char txt2[] = "Stellaris";
    char txt3[] = "Lcd4bit";
    char txt4[] = "example";
    
    char i;                              // Loop variable
    
    void Move_Delay() {                  // Function used for text moving
      Delay_ms(750);                     // You can change the moving speed here
    }
    
    void main(){
      Lcd_Init();                        // Initialize LCD
    
      Lcd_Cmd(_LCD_CLEAR);               // Clear display
      Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off
      Lcd_Out(1,6,txt3);                 // Write text in first row
    
      Lcd_Out(2,6,txt4);                 // Write text in second row
      Delay_ms(2000);
      Lcd_Cmd(_LCD_CLEAR);               // Clear display
    
      Lcd_Out(1,1,txt1);                 // Write text in first row
      Lcd_Out(2,4,txt2);                 // Write text in second row
    
      Delay_ms(2000);
    
      // Moving text
      for(i=0; i<4; i++) {               // Move text to the right 4 times
        Lcd_Cmd(_LCD_SHIFT_RIGHT);
        Move_Delay();
      }
    
      while(1) {                         // Endless loop
        for(i=0; i<7; i++) {             // Move text to the left 7 times
          Lcd_Cmd(_LCD_SHIFT_LEFT);
          Move_Delay();
        }
    
        for(i=0; i<7; i++) {             // Move text to the right 7 times
          Lcd_Cmd(_LCD_SHIFT_RIGHT);
          Move_Delay();
        }
      }
    }
    em chỉ sửa đoạn này
    Code:
    // LCD module connections
    sbit LCD_RS at GPIO_PORTA_DATA.B2;
    sbit LCD_EN at GPIO_PORTA_DATA.B3;
    sbit LCD_D4 at GPIO_PORTA_DATA.B4;
    sbit LCD_D5 at GPIO_PORTA_DATA.B5;
    sbit LCD_D6 at GPIO_PORTA_DATA.B6;
    sbit LCD_D7 at GPIO_PORTA_DATA.B7;
    
    
    sbit LCD_RS_Direction at GPIO_PORTA_DIR.B2;
    sbit LCD_EN_Direction at GPIO_PORTA_DIR.B3;
    sbit LCD_D4_Direction at GPIO_PORTA_DIR.B4;
    sbit LCD_D5_Direction at GPIO_PORTA_DIR.B5;
    sbit LCD_D6_Direction at GPIO_PORTA_DIR.B6;
    sbit LCD_D7_Direction at GPIO_PORTA_DIR.B7;
    // End LCD module connections
    thành thế này
    Code:
    // LCD module connections
    sbit LCD_RS at GPIO_PORTD_DATA.D7;
    sbit LCD_EN at GPIO_PORTD_DATA.D6;
    sbit LCD_D4 at GPIO_PORTD_DATA.D5;
    sbit LCD_D5 at GPIO_PORTD_DATA.D4;
    sbit LCD_D6 at GPIO_PORTB_DATA.B4;
    sbit LCD_D7 at GPIO_PORTB_DATA.B5;
    
    
    sbit LCD_RS_Direction at GPIO_PORTD_DIR.D7;
    sbit LCD_EN_Direction at GPIO_PORTD_DIR.D6;
    sbit LCD_D4_Direction at GPIO_PORTD_DIR.D5;
    sbit LCD_D5_Direction at GPIO_PORTD_DIR.D4;
    sbit LCD_D6_Direction at GPIO_PORTB_DIR.B4;
    sbit LCD_D7_Direction at GPIO_PORTB_DIR.B5;
    // End LCD module connections
    Last edited by xe đạp; 08-06-2013, 01:23.

  • #2
    lcd lib của thằng này bị lỗi không làm việc với 2 PORT đồng thời, không biết bản mới nhất có ok không. Khắc phục bằng cách viết lib của riêng mình thôi
    Từ chối trách nhiệm:
    Mọi thông tin từ ITX cung cấp với hi vọng nó có ích và không đi kèm với bất kì sự bảo đảm nào.
    Blog: http://mritx.blogspot.com

    Comment


    • #3
      Cái này lỗi là do thằng lập trình kém chứ ... lỗi gì cái thư viện với cả phần mềm của nó .

      MikroC từ xưa đến nay bất kỳ dòng nào từ AVR, PIC , ARM .v..v đều qui định ... các bit được đánh số từ B0 đến B15 ( đối với 16 bit ) , B0 đến B7 với 8 bit , B0 đến B31 ( 32 bit )

      và tương tự F0 đến F15 ( loại 16 bit ) , F0 - F31 ( 32 bit) , F0 - F7 ( 8bits )

      --- Tự nhiên lại nảy nòi cho


      // LCD module connections sbit LCD_RS at GPIO_PORTD_DATA.D7; sbit LCD_EN at GPIO_PORTD_DATA.D6; sbit LCD_D4 at GPIO_PORTD_DATA.D5; sbit LCD_D5 at GPIO_PORTD_DATA.D4; sbit LCD_D6 at GPIO_PORTB_DATA.B4; sbit LCD_D7 at GPIO_PORTB_DATA.B5; sbit LCD_RS_Direction at GPIO_PORTD_DIR.D7; sbit LCD_EN_Direction at GPIO_PORTD_DIR.D6; sbit LCD_D4_Direction at GPIO_PORTD_DIR.D5; sbit LCD_D5_Direction at GPIO_PORTD_DIR.D4; sbit LCD_D6_Direction at GPIO_PORTB_DIR.B4; sbit LCD_D7_Direction at GPIO_PORTB_DIR.B5; // End LCD module connections

      thì nó chạy bằng niềm tin ... nó chẳng báo lỗi đỏi chói cho !

      sửa hết chữ D = chữ B xem nó có chạy được không !
      Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

      Comment


      • #4
        Ngay cái đầu file lm3s8962.c nó đã có định nghĩa B0 - B31 rồi đó ...

        không thuộc câu cú thì vào phần defs ở trong thư mục cài đặt mikroC for ARM mở file tương ứng ra tra cứu !

        Click image for larger version

Name:	lm3s8962_c.jpg
Views:	1
Size:	56.6 KB
ID:	1379925
        Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

        Comment


        • #5
          Nguyên văn bởi queduong Xem bài viết
          Cái này lỗi là do thằng lập trình kém chứ ... lỗi gì cái thư viện với cả phần mềm của nó .

          MikroC từ xưa đến nay bất kỳ dòng nào từ AVR, PIC , ARM .v..v đều qui định ... các bit được đánh số từ B0 đến B15 ( đối với 16 bit ) , B0 đến B7 với 8 bit , B0 đến B31 ( 32 bit )

          và tương tự F0 đến F15 ( loại 16 bit ) , F0 - F31 ( 32 bit) , F0 - F7 ( 8bits )

          --- Tự nhiên lại nảy nòi cho


          // LCD module connections sbit LCD_RS at GPIO_PORTD_DATA.D7; sbit LCD_EN at GPIO_PORTD_DATA.D6; sbit LCD_D4 at GPIO_PORTD_DATA.D5; sbit LCD_D5 at GPIO_PORTD_DATA.D4; sbit LCD_D6 at GPIO_PORTB_DATA.B4; sbit LCD_D7 at GPIO_PORTB_DATA.B5; sbit LCD_RS_Direction at GPIO_PORTD_DIR.D7; sbit LCD_EN_Direction at GPIO_PORTD_DIR.D6; sbit LCD_D4_Direction at GPIO_PORTD_DIR.D5; sbit LCD_D5_Direction at GPIO_PORTD_DIR.D4; sbit LCD_D6_Direction at GPIO_PORTB_DIR.B4; sbit LCD_D7_Direction at GPIO_PORTB_DIR.B5; // End LCD module connections

          thì nó chạy bằng niềm tin ... nó chẳng báo lỗi đỏi chói cho !

          sửa hết chữ D = chữ B xem nó có chạy được không !
          Thank bác queduong nhắc bài, quả thực không biết mắt mũi thế nào lại không nhìn ra chỗ này, chỉ nhìn mấy cái PORTD, PORTA ai ngờ.
          Từ chối trách nhiệm:
          Mọi thông tin từ ITX cung cấp với hi vọng nó có ích và không đi kèm với bất kì sự bảo đảm nào.
          Blog: http://mritx.blogspot.com

          Comment


          • #6
            cảm ơn bác queduong nhiều , em cứ quen như cái kiểu HI tech PIC là RD0,.... RB0,... nên giờ qua đây cũng nhầm luôn

            Comment


            • #7
              Hôm nay em thử nạp code vào mạch (đây là mạch của anh LinhNC thiết kế), mạch chạy tần số thạch anh 8Mhz, em cấu hình trong mikroC cũng là 8MHz, tuy nhiên khi chạy thì nó lại có một số ký tự hiện không đúng, hiện sai ký tự. Mạch chạy chip LM3S8962, sau khi biên dịch ra file hex em dùng H-jtag để chuyển sang file bin rồi dùng kit stellaris launchpad để nạp chương trình vào chip

              Comment


              • #8
                một số người phán như đúng rồi. Sợ thiệt. Nghe ngôn từ quá chuyên nghiệp, làm em phát hoảng
                Be quan. Plz contact through email:

                Comment


                • #9
                  Nguyên văn bởi queduong Xem bài viết
                  Ngay cái đầu file lm3s8962.c nó đã có định nghĩa B0 - B31 rồi đó ...

                  không thuộc câu cú thì vào phần defs ở trong thư mục cài đặt mikroC for ARM mở file tương ứng ra tra cứu !

                  [ATTACH=CONFIG]67689[/ATTACH]
                  Anh queduong ơi! anh viết chương trình cho ARM trên Mikro C ah?
                  với cái MikroC này thì mình nạp chương trình cho chip bằng cái gì và nạp như thế nào? Anh chỉ em với nhá! tks anh!

                  Comment


                  • #10
                    Nguyên văn bởi tiengdanxua Xem bài viết
                    Anh queduong ơi! anh viết chương trình cho ARM trên Mikro C ah?
                    với cái MikroC này thì mình nạp chương trình cho chip bằng cái gì và nạp như thế nào? Anh chỉ em với nhá! tks anh!
                    Bạn có thể dùng J-LINK hoặc mạch nạp của bọn mikroC
                    Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                    Comment


                    • #11
                      Nguyên văn bởi queduong Xem bài viết
                      Bạn có thể dùng J-LINK hoặc mạch nạp của bọn mikroC
                      khi em vào cái option để chọn mạch nạp ý ạ thì em thấy nếu chọn JLink thì chỉ nạp được theo JTAG đúng không ạ?? cái mạch nạp em mua nó nạp theo kiểu SWD có 3 dây thôi ah, vậy thì phải làm sao giờ anh
                      Em thấy viết trên MikroC dễ hiểu (vì hồi trc em thường dùng codevision, các câu lệnh cũng gần gióng cái MikroC này) Muốn dùng chỉ tội cái là không biết nạp chương trình kiểu gì _._

                      Comment


                      • #12
                        Nguyên văn bởi tiengdanxua Xem bài viết
                        khi em vào cái option để chọn mạch nạp ý ạ thì em thấy nếu chọn JLink thì chỉ nạp được theo JTAG đúng không ạ?? cái mạch nạp em mua nó nạp theo kiểu SWD có 3 dây thôi ah, vậy thì phải làm sao giờ anh
                        Em thấy viết trên MikroC dễ hiểu (vì hồi trc em thường dùng codevision, các câu lệnh cũng gần gióng cái MikroC này) Muốn dùng chỉ tội cái là không biết nạp chương trình kiểu gì _._
                        đúng vậy , nó chỉ hỗ trợ JTAG mục đích cho debug là chính ( SWD thì phải dùng mạch nạp của nó ).

                        - J-LINK thì bạn dùng phần mềm nạp của hãng SEGGER ( cha đẻ của j-link đó còn gì ).

                        - DÙng mikroC dịch ra file hex hoặc bin , dùng phần mềm nạp của segger ( j-Flash chẳng hạn ) mà nạp cái file hex đó vào chip.
                        Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                        Comment


                        • #13
                          Nguyên văn bởi queduong Xem bài viết
                          đúng vậy , nó chỉ hỗ trợ JTAG mục đích cho debug là chính ( SWD thì phải dùng mạch nạp của nó ).

                          - J-LINK thì bạn dùng phần mềm nạp của hãng SEGGER ( cha đẻ của j-link đó còn gì ).

                          - DÙng mikroC dịch ra file hex hoặc bin , dùng phần mềm nạp của segger ( j-Flash chẳng hạn ) mà nạp cái file hex đó vào chip.
                          Em cám ơn anh!

                          Comment


                          • #14
                            Nguyên văn bởi queduong Xem bài viết
                            đúng vậy , nó chỉ hỗ trợ JTAG mục đích cho debug là chính ( SWD thì phải dùng mạch nạp của nó ).

                            - J-LINK thì bạn dùng phần mềm nạp của hãng SEGGER ( cha đẻ của j-link đó còn gì ).

                            - DÙng mikroC dịch ra file hex hoặc bin , dùng phần mềm nạp của segger ( j-Flash chẳng hạn ) mà nạp cái file hex đó vào chip.
                            những vướng mắc ban đầu giờ đều ổn cả rồi, giờ đi vào học các câu lệnh lập trình. Anh có thể cho em xin thư viện của MikroC với dòng STM32F10xx được ạ! hình như thư viện mặc định của nó khi cài ra bị lỗi đúng không a?? em khai bao cái GPIO_PORTA nhưng nó không hiểu là gì
                            tks anh trc!

                            Comment


                            • #15
                              Nguyên văn bởi tiengdanxua Xem bài viết
                              những vướng mắc ban đầu giờ đều ổn cả rồi, giờ đi vào học các câu lệnh lập trình. Anh có thể cho em xin thư viện của MikroC với dòng STM32F10xx được ạ! hình như thư viện mặc định của nó khi cài ra bị lỗi đúng không a?? em khai bao cái GPIO_PORTA nhưng nó không hiểu là gì
                              tks anh trc!
                              Không biết là bạn xin cái gì ? Vì thư viện của nó đầy 1 đống đã có sẵn ở cái phần mềm đó rồi còn gì !? Mỗi chip cụ thể có những thu viện đặc biệt riêng , dùng cái nào thì đánh dấu vào cái đó ... không biết dùng thế nào thì vào phần help của nó để tìm hiểu ( trong đó có đầy đủ ví dụ mẫu, giải thích, ...)

                              Bạn nghe thông tin ở đâu mà thư viện mặc định của nó cài ra bị lỗi vậy ? , chưa thấy ai nói đến cái này ... và bao nhiêu người dùng chưa ai bị thế !

                              Click image for larger version

Name:	thuvien.jpg
Views:	1
Size:	96.1 KB
ID:	1384809
                              Click image for larger version

Name:	help.jpg
Views:	2
Size:	92.4 KB
ID:	1384810

                              Click image for larger version

Name:	gpio.jpg
Views:	1
Size:	90.5 KB
ID:	1384811

                              Việc khai báo thì bạn phải xem đúng cú pháp hay không !

                              VD đây là 1 khai báo output : // Set GPIOC pins 0 and 1 as digital output
                              GPIO_Digital_Output(&GPIOC_BASE, _GPIO_PINMASK_0 | _GPIO_PINMASK_1);


                              ( Vào phần HELP có ví dụ đó )
                              Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                              Comment

                              Về tác giả

                              Collapse

                              xe đạp Tìm hiểu thêm về xe đạp

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

                              Collapse

                              Đang tải...
                              X