Thông báo

Collapse
No announcement yet.

Hiển thị LCD 16x2 dùng Pic 16F877A với MPLAP IDE

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

  • #16
    Nguyên văn bởi vuxuansyhut Xem bài viết
    Mplab IDE chỉ là môi trường. Bác dùng trình biên dịch cụ thể nào HTPIC, CCS hay Mikro C
    Em tạo một project theo hướng dẫn sau : Video huong dan tao mot project moi trong MPLAB IDE
    [video=youtube;gA_bHL6Ww14]
    Trong mục Project wizard thì phần Active Toolsute chọn là HT-TECH Universal Toolsuite.Còn ô bên dưới là Toolsuite contents chọn là HI-TECH ANSI C Compiler ==> Vậy là trình biên dịch là HI-TECH phải ko ạ ?

    C:\Program Files\HI-TECH Software\PICC\9.71a\bin\picc.exe ( ko biết có phải ***** gì ko? cứ cài IDE là thấy có à )
    Last edited by luongthitu; 23-10-2012, 14:27.

    Comment


    • #17
      Nguyên văn bởi luongthitu Xem bài viết
      Em tạo một project theo hướng dẫn sau : Video huong dan tao mot project moi trong MPLAB IDE

      Trong mục Project wizard thì phần Active Toolsute chọn là HT-TECH Universal Toolsuite.Còn ô bên dưới là Toolsuite contents chọn là HI-TECH ANSI C Compiler ==> Vậy là trình biên dịch là HI-TECH phải ko ạ ?

      C:\Program Files\HI-TECH Software\PICC\9.71a\bin\picc.exe ( ko biết có phải ***** gì ko? cứ cài IDE là thấy có à )
      bạn chuyển qua sài, mikroC hoặc CCS đi, nó có nhiều thư viện và ví dụ hỗ trợ, làm theo là chạy.

      Comment


      • #18
        Nguyên văn bởi luongthitu Xem bài viết
        Em tạo một project theo hướng dẫn sau : Video huong dan tao mot project moi trong MPLAB IDE

        Trong mục Project wizard thì phần Active Toolsute chọn là HT-TECH Universal Toolsuite.Còn ô bên dưới là Toolsuite contents chọn là HI-TECH ANSI C Compiler ==> Vậy là trình biên dịch là HI-TECH phải ko ạ ?

        C:\Program Files\HI-TECH Software\PICC\9.71a\bin\picc.exe ( ko biết có phải ***** gì ko? cứ cài IDE là thấy có à )
        Đúng rồi đó bác ah. HT pic thì phải chịu khó kiếm thuốc (hơi hiếm). Nếu bác quen lập trình trên CCS có thể chọn CCS . Đừng cười em khuyên bàn lùi nhé. Nhưng cá nhân em cũng thích thằng HTPIC hơn CCS vì nó gần với các chương trình biên dịch khác (avr studio, keil C)

        Giải pháp điện tử của bạn

        Comment


        • #19
          Nguyên văn bởi vuxuansyhut Xem bài viết
          Đúng rồi đó bác ah. HT pic thì phải chịu khó kiếm thuốc (hơi hiếm). Nếu bác quen lập trình trên CCS có thể chọn CCS . Đừng cười em khuyên bàn lùi nhé. Nhưng cá nhân em cũng thích thằng HTPIC hơn CCS vì nó gần với các chương trình biên dịch khác (avr studio, keil C)
          Em dùng CCS thì oki rồi nay muốn dùng HI-TECH..để xem thế nào?
          Bác có thể cho em và hướng dẫn em dùng 'THUỐC' ko?

          Comment


          • #20
            Nguyên văn bởi luongthitu Xem bài viết
            Em dùng CCS thì oki rồi nay muốn dùng HI-TECH..để xem thế nào?
            Bác có thể cho em và hướng dẫn em dùng 'THUỐC' ko?
            Tặng bác thuốc cho HT này. Trong đó có hướng dẫn đó.
            Thuoc_cho_HTpic.zip

            Giải pháp điện tử của bạn

            Comment


            • #21
              thật ra thì với nhu cầu của sv thì HT PIC lite hoàn toàn đáp ứng tốt yêu cầu mà, nó miễn phí, không giới hạn code

              Comment


              • #22
                thật ra thì với nhu cầu của sv thì HT PIC lite hoàn toàn đáp ứng tốt yêu cầu mà, nó miễn phí, không giới hạn code, còn nếu muốn nhanh thì có thể dùng MikroC, thư viện hỗ trợ nhiều, help rõ ràng và luôn đi kèm ví dụ minh họa chi tiết

                Comment


                • #23
                  Với ví dụ hướng dẫn ( bài tâp 1 ) + thuốc đàng hoàng cho HT vậy mà vẫn báo lỗi là sao nhỉ? Bác xe đạp xem giúp em với?

                  http://www.dientuvietnam.net/forums/...e-lcd-dtvn.zip
                  Serial number: HCPICP-654321 (PRO)
                  Error [800] lcd18.as; 2. undefined symbol "FCMDIS"
                  Error [800] lcd18.as; 2. undefined symbol "IESODIS"
                  Error [800] lcd18.as; 2. undefined symbol "SWBOREN"
                  Error [800] lcd18.as; 2. undefined symbol "MCLREN"
                  Error [800] lcd18.as; 4. undefined symbol "BORV21"

                  ********** Build failed! **********
                  #include <htc.h>
                  #include "lcd.h"

                  __CONFIG(XT & WDTDIS & PWRTEN & MCLREN & UNPROTECT & SWBOREN &
                  IESODIS & FCMDIS & LVPDIS & DEBUGDIS);
                  __CONFIG(BORV21);

                  #define _XTAL_FREQ 4000000

                  /************************************************** **************
                  * EXTERN
                  ************************************************** **************/

                  /*none...*/

                  /************************************************** ***************
                  GLOBAL VARIABLES
                  ************************************************** ****************/

                  /*none...*/

                  /************************************************** ***************
                  * ROUTINES
                  ************************************************** ****************/

                  /* -- void delay_1s() --------------------------------------------
                  *
                  * Description : delay 1s
                  * Parameters : none
                  * Return : don't care
                  */
                  void delay_1s()
                  {
                  char i;
                  for (i=0; i<10; i++)
                  __delay_ms(100);
                  }


                  /************************************************** **************
                  * MAIN
                  ************************************************** **************/

                  /* -- void main (void) -----------------------------------------
                  *
                  * Description : Display my name & my Student ID on LCD,
                  * and make them "blinky"
                  * Parameters : none
                  * Return : don't care
                  * Notes :
                  */

                  void main(void)
                  {
                  lcd_init();
                  __delay_ms(100);

                  while (1)
                  {
                  lcd_clear();
                  delay_1s();
                  lcd_puts("Name"); //Put "Name" on row 0
                  lcd_gotoxy(0,1); //Go to column 0, row 1
                  lcd_puts("4050xxxx"); //Put Student ID on row 1
                  delay_1s();
                  };

                  }

                  /************************************************** **************
                  * END OF lcd_1_main.c

                  Comment


                  • #24
                    Quang Nhat
                    ---------------------------------------
                    Yahoo :quangnhat85ls
                    Mail :
                    Nhận thiết kế và ép nhựa cho đồ điện tử

                    Comment


                    • #25
                      Nguyên văn bởi luongthitu Xem bài viết
                      Với ví dụ hướng dẫn ( bài tâp 1 ) + thuốc đàng hoàng cho HT vậy mà vẫn báo lỗi là sao nhỉ? Bác xe đạp xem giúp em với?

                      http://www.dientuvietnam.net/forums/...e-lcd-dtvn.zip
                      mình vừa ghost máy nên chưa cài ht pic lại, nhưng theo mình thấy thì lỗi của bạn chắc do dùng phiên bản ht pic cao hơn. dưới file đính kèm là bài thí nghiệm lcd 16x2 mình làm, bạn có thể xem thử, nó dùng ht pic v9.63 thì phải. nếu bạn tải bản v9.81 thì bạn thay 2 dòng config thành

                      Code:
                      __CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & LVP_OFF & DEBUG_OFF &
                      BOREN_OFF & CP_ON & CPD_ON & FCMEN_OFF & IESO_OFF);	//1st config. word
                      __CONFIG(BOR4V_BOR21V);								//2nd config. word
                      Attached Files

                      Comment


                      • #26
                        Cám ơn thành viên : Xe đạp đã giúp đỡ
                        Mình đã làm cho nó chạy được rồi, mình dùng bản :

                        HI-TECH C Compiler for PIC10/12/16 MCUs (PRO Mode) V9.83

                        link down: http://ww1.microchip.com/downloads/e..._9_.83_win.exe
                        hoặc :http://www.mediafire.com/?aqttyxo4ncfwd7b ( mediafire.com/?aqttyxo4ncfwd7b )

                        Thuốc : http://www.mediafire.com/?8tvibt2n3m9lc50

                        Code:
                        main.c
                        /************************************************** ****************************
                        * BAI TAP : SU DUNG LCD 16x2 4BIT MODE
                        *
                        * MCU : PIC16F887
                        * XTAL : 20MHz
                        * AUTHOR : Truong Cong Tri
                        ************************************************** ****************************/

                        /************************************************** ****************************
                        * CONFIGUARE
                        ************************************************** ****************************/
                        #include <htc.h>
                        #include "lcd.h"
                        #include "lcd.c"

                        //ht pic v9.81 or V9.83
                        __CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & LVP_OFF & DEBUG_OFF &
                        BOREN_OFF & CP_ON & CPD_ON & FCMEN_OFF & IESO_OFF); //1st config. word
                        __CONFIG(BOR4V_BOR21V); //2nd config. word

                        //ht pic v9.63
                        //__CONFIG(HS & WDTDIS & PWRTEN & MCLREN & UNPROTECT & DUNPROTECT &
                        //SWBOREN & IESODIS & FCMDIS & LVPDIS & DEBUGDIS); //1st config. word
                        //__CONFIG(BORV21); //2nd config. word


                        /************************************************** ****************************
                        * CHUONG TRINH CON
                        ************************************************** ****************************/

                        //----- delay ----------------------------------------------------------------
                        void delay(unsigned int time)
                        {
                        unsigned int i,j;
                        for(i=0;i<time;i++)
                        {
                        for(j=0;j<time;j++){;}
                        }
                        }


                        /************************************************** ****************************
                        * CHUONG TRINH CHINH
                        ************************************************** ****************************/
                        void main(void)
                        {
                        lcd_init();
                        delay(100);
                        while(1)
                        {
                        lcd_clear();
                        lcd_puts(" CAM ON ");
                        lcd_gotoxy(0,1);
                        lcd_puts("MEMBERS:XE DAP ");
                        while(1);
                        }
                        }
                        Thư viện

                        lcd.h
                        #ifndef _LCD_H_
                        #define _LCD_H_

                        #include <htc.h>

                        #ifndef _XTAL_FREQ
                        #define _XTAL_FREQ 4000000
                        #endif


                        /* Display ON/OFF Control defines */
                        #define DON 0b00001111 /* Display on */
                        #define DOFF 0b00001011 /* Display off */
                        #define CURSOR_ON 0b00001111 /* Cursor on */
                        #define CURSOR_OFF 0b00001101 /* Cursor off */
                        #define BLINK_ON 0b00001111 /* Cursor Blink */
                        #define BLINK_OFF 0b00001110 /* Cursor No Blink */

                        /* Cursor or Display Shift defines */
                        #define SHIFT_CUR_LEFT 0b00000100 /* Cursor shifts to the left */
                        #define SHIFT_CUR_RIGHT 0b00000101 /* Cursor shifts to the right */
                        #define SHIFT_DISP_LEFT 0b00000110 /* Display shifts to the left */
                        #define SHIFT_DISP_RIGHT 0b00000111 /* Display shifts to the right */

                        /* Function Set defines */
                        #define FOUR_BIT 0b00101100 /* 4-bit Interface */
                        #define EIGHT_BIT 0b00111100 /* 8-bit Interface */
                        #define LINE_5X7 0b00110000 /* 5x7 characters, single line */
                        #define LINE_5X10 0b00110100 /* 5x10 characters */
                        #define LINES_5X7 0b00111000 /* 5x7 characters, multiple line */


                        /* Pins mapping */
                        #ifndef LCD_RS
                        #define LCD_RS RD1
                        #define LCD_EN RD3
                        #define LCD_RW RD2
                        #define LCD_DATA4 RD4
                        #define LCD_DATA5 RD5
                        #define LCD_DATA6 RD6
                        #define LCD_DATA7 RD7

                        #define LCD_RS_TRIS TRISD1
                        #define LCD_EN_TRIS TRISD3
                        #define LCD_RW_TRIS TRISD2
                        #define LCD_DATA4_TRIS TRISD4
                        #define LCD_DATA5_TRIS TRISD5
                        #define LCD_DATA6_TRIS TRISD6
                        #define LCD_DATA7_TRIS TRISD7
                        #endif

                        //typedef unsigned char unsigned char; // 8-bit unsigned

                        typedef union _BYTE_VAL
                        {
                        unsigned char Val;
                        struct
                        {
                        unsigned char b0:1;
                        unsigned char b1:1;
                        unsigned char b2:1;
                        unsigned char b3:1;
                        unsigned char b4:1;
                        unsigned char b5:1;
                        unsigned char b6:1;
                        unsigned char b7:1;
                        } bits;
                        } BYTE_VAL;

                        void lcd_init();
                        unsigned char lcd_busy();
                        unsigned char lcd_get_byte(unsigned char rs);
                        void lcd_put_byte(unsigned char a,unsigned char b);
                        void lcd_gotoxy(unsigned char col, unsigned char row);
                        void lcd_putc(char c);
                        void lcd_puts(const char* s);
                        void lcd_clear();
                        #endif
                        lcd.c
                        #include <stdlib.h>
                        #include <ctype.h>
                        #include "lcd.h"

                        void lcd_init(){
                        unsigned char i;
                        LCD_EN_TRIS = 0;
                        LCD_RS_TRIS = 0;
                        LCD_RW_TRIS = 0;
                        LCD_DATA4_TRIS = 0;
                        LCD_DATA5_TRIS = 0;
                        LCD_DATA6_TRIS = 0;
                        LCD_DATA7_TRIS = 0;
                        LCD_EN = 0;
                        LCD_RS = 0;
                        LCD_RW = 0;

                        __delay_ms(100); // delay for power on

                        // reset LCD
                        lcd_put_byte(0,0x30);
                        __delay_ms(50);
                        lcd_put_byte(0,0x30);
                        __delay_ms(50);
                        lcd_put_byte(0,0x32);
                        __delay_ms(100); // delay for LCD reset
                        __delay_ms(100); // delay for LCD reset
                        __delay_ms(100); // delay for LCD reset

                        while(lcd_busy());
                        lcd_put_byte(0,FOUR_BIT & LINES_5X7); // Set LCD type
                        while(lcd_busy());

                        lcd_put_byte(0,DOFF&CURSOR_OFF&BLINK_OFF); // display off
                        while(lcd_busy());
                        lcd_put_byte(0,DON&CURSOR_OFF&BLINK_OFF); // display on
                        while(lcd_busy());

                        lcd_put_byte(0,0x01); // clear display and move cursor to home
                        while(lcd_busy());
                        lcd_put_byte(0,SHIFT_CUR_LEFT); // cursor shift mode
                        while(lcd_busy());
                        lcd_put_byte(0,0x01); // clear display and move cursor to home
                        while(lcd_busy());
                        }
                        unsigned char lcd_busy()
                        {
                        unsigned char busy;

                        LCD_DATA4_TRIS = 1;
                        LCD_DATA5_TRIS = 1;
                        LCD_DATA6_TRIS = 1;
                        LCD_DATA7_TRIS = 1;

                        LCD_RW = 1;
                        LCD_RS = 0;
                        __delay_us(20);
                        LCD_EN = 1;
                        __delay_us(20);

                        busy = LCD_DATA7;

                        LCD_EN = 0;
                        __delay_us(20);
                        LCD_EN = 1;
                        __delay_us(20);
                        LCD_EN = 0;


                        return busy;
                        }

                        unsigned char lcd_get_byte(unsigned char rs)
                        {
                        BYTE_VAL b;

                        LCD_DATA4_TRIS = 1;
                        LCD_DATA5_TRIS = 1;
                        LCD_DATA6_TRIS = 1;
                        LCD_DATA7_TRIS = 1;

                        LCD_RW = 1;
                        LCD_RS = 0;
                        if(rs) LCD_RS = 1;
                        __delay_us(20);
                        LCD_EN = 1;
                        __delay_us(20);

                        b.bits.b7 = LCD_DATA7;
                        b.bits.b6 = LCD_DATA6;
                        b.bits.b5 = LCD_DATA5;
                        b.bits.b4 = LCD_DATA4;

                        LCD_EN = 0;
                        __delay_us(20);
                        LCD_EN = 1;
                        __delay_us(20);
                        b.bits.b3 = LCD_DATA7;
                        b.bits.b2 = LCD_DATA6;
                        b.bits.b1 = LCD_DATA5;
                        b.bits.b0 = LCD_DATA4;
                        LCD_EN = 0;

                        return b.Val;
                        }
                        void lcd_put_byte(unsigned char rs, unsigned char b)
                        {
                        BYTE_VAL temp;

                        LCD_DATA4_TRIS = 0;
                        LCD_DATA5_TRIS = 0;
                        LCD_DATA6_TRIS = 0;
                        LCD_DATA7_TRIS = 0;

                        LCD_RS = 0;
                        if(rs) LCD_RS = 1;

                        __delay_us(20);
                        LCD_RW = 0;
                        __delay_us(20);
                        LCD_EN = 0;

                        temp.Val = b;

                        // send the high nibble
                        LCD_DATA4 = temp.bits.b4;
                        LCD_DATA5 = temp.bits.b5;
                        LCD_DATA6 = temp.bits.b6;
                        LCD_DATA7 = temp.bits.b7;
                        __delay_us(20);
                        LCD_EN = 1;
                        __delay_us(20);
                        LCD_EN = 0;
                        // send the low nibble
                        LCD_DATA4 = temp.bits.b0;
                        LCD_DATA5 = temp.bits.b1;
                        LCD_DATA6 = temp.bits.b2;
                        LCD_DATA7 = temp.bits.b3;
                        __delay_us(20);
                        LCD_EN = 1;
                        __delay_us(20);
                        LCD_EN = 0;
                        }
                        void lcd_putc(char c){
                        switch(c){
                        case '\f':
                        lcd_put_byte(0, 1);
                        while(lcd_busy());
                        break;
                        case '\n':
                        lcd_gotoxy(0, 1);
                        break;
                        default:
                        if(isprint(c)){
                        lcd_put_byte(1, c);
                        while(lcd_busy());
                        }
                        break;
                        }
                        }

                        void lcd_gotoxy(unsigned char col, unsigned char row)
                        {
                        unsigned char address;

                        if(row!=0)
                        address=0x40;
                        else
                        address=0;

                        address += col;
                        lcd_put_byte(0,0x80|address);
                        while(lcd_busy());
                        }
                        void lcd_puts(const char* s)
                        {
                        while(*s){
                        lcd_putc(*s++);
                        }
                        }

                        void lcd_clear()
                        {
                        lcd_put_byte(0,1); // display off
                        while(lcd_busy());
                        }
                        file .hex
                        :100000000A128A11D22D00308A000408840A82075D
                        :1000100000344D3445344D34423445345234533435
                        :100020003A34583445342034443441345034203444
                        :1000300000342034433441344D3420344F344E3472
                        :040040002034003434
                        :100BA40083010A128A11F22DF201F3017108730212
                        :100BB400031DDE2D7008720203180800F401F5010C
                        :100BC40071087502031DE82D700874020318EE2DD8
                        :100BD400F40A0319F50AE22DF20A0319F30AD82DCF
                        :100BE4000A128A1184260A128A116430F000F10173
                        :100BF4000A128A11D6250A128A110A128A11192692
                        :100C04000A128A1111300A128A1126260A128A112E
                        :100C14000030F501F50A0A128A113D260A128A11DA
                        :100C240001300A128A1126260A128A11182E00305F
                        :100C3400F001F00A27270A128A11BD270A128A1125
                        :100C44000038031908001F2EF900790884000A12DD
                        :100C54008A1103200A128A1100380319080079083E
                        :100C640084000A128A1103200A128A1155260A12D4
                        :100C74008A11F90A272EF60075080319442E40300C
                        :100C8400F700452EF7017608F70777088038F0005B
                        :100C9400003027270A128A11BD270A128A11003848
                        :100CA400031908004E2EF8007B2E0030F001F00AE4
                        :100CB40027270A128A11BD270A128A11003803193C
                        :100CC40008005D2E0030F501F50A3D2E7808E8276E
                        :100CD4000A128A11031C08007808F0000130272743
                        :100CE4000A128A11BD270A128A1100380319080052
                        :100CF400742E78080A3A0319642E063A0319572EFB
                        :100D0400682E0800831688118810081108128812AA
                        :100D14000813881383128230881188100811F60092
                        :100D2400DD30F500F50B942EF60B942E992E303011
                        :100D3400F000003027270A128A114130F600EE3005
                        :100D4400F500F50BA32EF60BA32E64003030F00053
                        :100D5400003027270A128A114130F600EE30F500E0
                        :100D6400F50BB22EF60BB22E64003230F0000030D8
                        :100D740027270A128A118230F600DD30F500F50BC0
                        :100D8400C12EF60BC12EC62E8230F600DD30F500E2
                        :100D9400F50BCA2EF60BCA2ECF2E8230F600DD30AC
                        :100DA400F500F50BD32EF60BD32ED82EBD270A1241
                        :100DB4008A110038031DD82E2830F0000030272770
                        :100DC4000A128A11BD270A128A110038031DE42E63
                        :100DD4000830F000003027270A128A11BD270A12B2
                        :100DE4008A110038031DF02E0C30F0000030272744
                        :100DF4000A128A11BD270A128A110038031DFC2E1B
                        :100E04000030F001F00A27270A128A11BD270A12BE
                        :100E14008A110038031D082F0430F0000030272702
                        :100E24000A128A11BD270A128A110038031D142FD1
                        :100E34000030F001F00A27270A128A11BD270A128E
                        :100E44008A11003803190800202FF30083160313B6
                        :100E54000812881208138813831288107308031D5C
                        :100E640088140630F100F10B352F6400FD2706309D
                        :100E74000811F100F10B3C2F6400FD278811700864
                        :100E8400F400740E0139F100710C031C4C2FFD2782
                        :100E940008164E2FFD270812740EF100710C01394B
                        :100EA400F200720C031C592FFD2788165B2FFD27B7
                        :100EB4008812740EF6270A128A11031C642FFD2768
                        :100EC4000817662FFD270813740D740D0139F100FE
                        :100ED400710C031C702FFD278817722FFD278813B0
                        :100EE4000630F100F10B742F6400FD2706308815DD
                        :100EF400F100F10B7B2F6400FD2788117408013980
                        :100F0400F100710C031C892FFD2708168B2FFD2778
                        :100F14000812740C0139F100710C031C942FFD2785
                        :100F24008816962FFD278812740CF100710C013974
                        :100F3400F200720C031CA12FFD270817A32FFD2715
                        :100F44000813740CF6270A128A11031CAC2FFD2710
                        :100F54008817AE2FFD2788130630F100F10BB02F50
                        :100F64006400FD2706308815F100F10BB72F6400EB
                        :100F7400FD2788110800831603130816881608171E
                        :100F840088178312063008158810F000F00BC82F5C
                        :100F94006400FD2706308815F000F00BCF2F6400A5
                        :100FA4000030FD27881B0130F10006308811F00065
                        :100FB400F00BDA2F6400FD2706308815F000F00BE3
                        :100FC400E12F6400FD27881171080800F1007F30CB
                        :100FD400F00171020318F42F20307102031CF42F66
                        :100FE400F001F00A700C0800F100F10C710C0139E9
                        :0C0FF400F200720C0800831203130800C6
                        :04400E0022E0FFFEAF
                        :00000001FF
                        Last edited by luongthitu; 26-10-2012, 17:51.

                        Comment


                        • #27
                          Cho mình xin một câu hỏi nhỏ:

                          Trong chương trình bạn nói là dùng XTAL : 20MHz nhưng trong mô phỏng đặt là 8MHz...nên mình chưa hiểu lắm ? ( nếu mô phỏng mà đặt 20MHz thì ko chạy dc )

                          Còn trong file lcd.h thì lại định nghĩa là #define _XTAL_FREQ 4000000 ( tại sao trong lcd.h lại dùng 4MHz ? )

                          Nếu trong chương trình dùng câu lệnh :
                          #define _XTAL_FREQ 20000000 ( hoặc #define _XTAL_FREQ 20e6 ) //có dc ko?

                          Nếu mình muốn dùng thạch anh ngoài là 20Mhz thì phải làm sao?

                          __CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & LVP_OFF & DEBUG_OFF &
                          BOREN_OFF & CP_ON & CPD_ON & FCMEN_OFF & IESO_OFF); //1st config. word
                          Last edited by luongthitu; 26-10-2012, 17:31.

                          Comment


                          • #28
                            Nguyên văn bởi luongthitu Xem bài viết
                            Cho mình xin một câu hỏi nhỏ:

                            Trong chương trình bạn nói là dùng XTAL : 20MHz nhưng trong mô phỏng đặt là 8MHz...nên mình chưa hiểu lắm ? ( nếu mô phỏng mà đặt 20MHz thì ko chạy dc )
                            Sao ko dùng câu lệnh là : #define _XTAL_FREQ 20000000 ( hoặc #define _XTAL_FREQ 20e6 )
                            Nếu mình muốn dùng thạch anh ngoài là 20Mhz thì phải làm sao?
                            Dùng thạch anh 20M thì trong lệnh __CONFIG chọn HS ( High Speed >4MHz)
                            Khai báo tần số thạch anh bằng lệnh
                            #define _XTAL_FREQ 20000000

                            Trong Proteus thì sửa lại tần số là 20M thôi. Chưa gặp vụ sửa là 20M thì ko chạy @@.

                            Comment


                            • #29
                              Nguyên văn bởi duong_act Xem bài viết
                              Dùng thạch anh 20M thì trong lệnh __CONFIG chọn HS ( High Speed >4MHz)
                              Khai báo tần số thạch anh bằng lệnh
                              #define _XTAL_FREQ 20000000

                              Trong Proteus thì sửa lại tần số là 20M thôi. Chưa gặp vụ sửa là 20M thì ko chạy @@.
                              Trong chương trình trên đã khai báo là HS nghĩa là dùng được với thạch anh 20M ( 20 MHz external oscillator and HS)
                              __CONFIG(FOSC_HS ... )
                              chỉ có điều anh xe đạp mô phỏng dùng có 8Mhz và khi em thay thành 20MHz thì LCD ko hiển thị lên dc ? ( đúng ra là phải chạy dc chứ ? )

                              File mô phỏng: http://www.dientuvietnam.net/forums/...-bai-3-lcd.zip

                              File: Config_Bits_16F876A.inc
                              ;Configuration Bits Settings for Pic 16F876A
                              __CONFIG _CP_OFF&_DEBUG_OFF&_WRT_OFF&_CPD_OFF&_LVP_OFF&_BOD EN_OFF&_PWRTE_OFF&_WDT_OFF&_HS_OSC
                              ; (20 MHz external oscillator and HS)
                              ; Configuration Bits Settings Examples:
                              ; __CONFIG _CP_OFF&_DEBUG_OFF&_WRT_OFF&_CPD_OFF&_LVP_OFF&_BOD EN_OFF&_PWRTE_OFF&_WDT_OFF&_HS_OSC
                              ; __CONFIG B'11111100111010'
                              ; __CONFIG 0x3F3A
                              ;
                              Last edited by luongthitu; 26-10-2012, 17:54.

                              Comment


                              • #30
                                Nguyên văn bởi luongthitu Xem bài viết
                                Trong chương trình trên đã khai báo là HS nghĩa là dùng được với thạch anh 20M ( 20 MHz external oscillator and HS)

                                chỉ có điều anh xe đạp mô phỏng dùng có 8Mhz và khi em thay thành 20MHz thì LCD ko hiển thị lên dc ? ( đúng ra là phải chạy dc chứ ? )

                                File mô phỏng: http://www.dientuvietnam.net/forums/...-bai-3-lcd.zip
                                cái này có lẽ là lỗi của proteus bạn ah, mình trước đây cũng bị như vậy, nhưng mà bạn yên tâm là mạch thật chạy ok, vì mình thường test trên kit thực hành và thạch anh mình dùng là 20Mhz

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X