اطلاعیه

Collapse
No announcement yet.

عدم نمایش lcd

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    عدم نمایش lcd

    من این برنامه رو برای راه اندازی lcd نوشتم اما چیزی روی lcd نمایش داده نمیشه
    به نظرتون مشکل چیه؟
    کامپایلر xc16
    کد:
     #include <xc.h>
    #include <p33FJ64GS606.h>
    #include <stdio.h>
    #include <stdlib.h>
    #define FOSC  (7370000ULL)
     #define FCY   (FOSC/2)
    #include <libpic30.h>
    #include <string.h>
    
    
    // FBS
    #pragma config BWRP = WRPROTECT_OFF   // Boot Segment Write Protect (Boot Segment may be written)
    #pragma config BSS = NO_FLASH      // Boot Segment Program Flash Code Protection (No Boot program Flash segment)
    
    // FGS
    #pragma config GWRP = OFF        // General Code Segment Write Protect (General Segment may be written)
    #pragma config GSS = OFF        // General Segment Code Protection (General Segment Code protect is disabled)
    
    // FOSCSEL
    #pragma config FNOSC = FRC       // Oscillator Source Selection (Internal Fast RC (FRC))
    #pragma config IESO = ON        // Internal External Switch Over Mode (Start up device with FRC, then switch to user-selected oscillator source)
    
    // FOSC
    #pragma config POSCMD = NONE      // Primary Oscillator Source (Primary Oscillator disabled)
    #pragma config OSCIOFNC = OFF      // OSC2 Pin Function (OSC2 is clock output)
    #pragma config FCKSM = CSDCMD      // Clock Switching Mode bits (Both Clock switching and Fail-safe Clock Monitor are disabled)
    
    // FWDT
    //#pragma config WDTPOST = PS32768    // Watchdog Timer Postscaler (1:32,768)
    //#pragma config WDTPRE = PR128      // WDT Prescaler (1:128)
    #pragma config WINDIS = OFF       // Watchdog Timer Window (Watchdog Timer in Non-Window mode)
    #pragma config FWDTEN = OFF       // Watchdog Timer Enable (Watchdog timer enabled/disabled by user software)
    
    // FPOR
    #pragma config FPWRT = PWR128      // POR Timer Value (128ms)
    #pragma config ALTSS1 = ON       // Enable Alternate SS1 pin bit (SS1A is selected as the I/O pin for SPI1)
    #pragma config ALTQIO = ON       // Enable Alternate QEI1 pin bit (AQEA1, AQEB1, and AINDX1 are selected as inputs to QEI1)
    
    // FICD
    #pragma config ICS = PGD1        // Comm Channel Select (Communicate on PGC1/EMUC1 and PGD1/EMUD1)
    #pragma config JTAGEN = OFF       // JTAG Port Enable (JTAG is disabled)
    
    
    
    #define rs         LATDbits.LATD8    /* PORT for E */
    #define rw        LATDbits.LATD9    /* PORT for RW */
    #define en        LATDbits.LATD10   /* PORT for RS */
    
    #define TRIS_E        TRISDbits.TRISD8  /* TRIS for E */
    #define TRIS_RW        TRISDbits.TRISD9  /* TRIS for RW */
    #define TRIS_RS        TRISDbits.TRISD10  /* TRIS for RS */
    
    //LCD Data pins
    #define lcdport LATE
    
    void lcd_ini();
    void lcdcmd(unsigned char);
    void lcddata(unsigned char);
    unsigned char data[20]="EngineersGarage";
    unsigned int i=0;
    
    void main(void)
    {
      PTCONbits.PTEN =0;
      TRIS_E=0;
        TRIS_RW =0;
        TRIS_RS =0;
        
      TRISE=0;    // Configure Port E as output port
      LATE=0;
      lcd_ini();    // LCD initialization
      while(data[i]!='\0')
      {
        lcddata(data[i]);  // Call lcddata function to send characters
              // one by one from "data" array
        i++;
        __delay_ms(300);
      }
    
    }
    void lcd_ini()
    {
      lcdcmd(0x38);    // Configure the LCD in 8-bit mode, 2 line and 5x7 font
      lcdcmd(0x0C);    // Display On and Cursor Off
      lcdcmd(0x01);    // Clear display screen
      lcdcmd(0x06);    // Increment cursor
      lcdcmd(0x80);    // Set cursor position to 1st line, 1st column
    }
    
    void lcdcmd(unsigned char cmdout)
    {
      lcdport=cmdout;    //Send command to lcdport=PORTB
      rs=0;
      rw=0;
      en=1;
      __delay_ms(10);
      en=0;
    }
    
    void lcddata(unsigned char dataout)
    {
      lcdport=dataout;  //Send data to lcdport=PORTB
      rs=1;
      rw=0;
      en=1;
      __delay_ms(10);
      en=0;
    }

    #2
    پاسخ : عدم نمایش lcd

    نوشته اصلی توسط yadegari
    من این برنامه رو برای راه اندازی lcd نوشتم اما چیزی روی lcd نمایش داده نمیشه
    به نظرتون مشکل چیه؟
    کامپایلر xc16
    کد:
     #include <xc.h>
    #include <p33FJ64GS606.h>
    #include <stdio.h>
    #include <stdlib.h>
    #define FOSC  (7370000ULL)
     #define FCY   (FOSC/2)
    #include <libpic30.h>
    #include <string.h>
    
    
    // FBS
    #pragma config BWRP = WRPROTECT_OFF   // Boot Segment Write Protect (Boot Segment may be written)
    #pragma config BSS = NO_FLASH      // Boot Segment Program Flash Code Protection (No Boot program Flash segment)
    
    // FGS
    #pragma config GWRP = OFF        // General Code Segment Write Protect (General Segment may be written)
    #pragma config GSS = OFF        // General Segment Code Protection (General Segment Code protect is disabled)
    
    // FOSCSEL
    #pragma config FNOSC = FRC       // Oscillator Source Selection (Internal Fast RC (FRC))
    #pragma config IESO = ON        // Internal External Switch Over Mode (Start up device with FRC, then switch to user-selected oscillator source)
    
    // FOSC
    #pragma config POSCMD = NONE      // Primary Oscillator Source (Primary Oscillator disabled)
    #pragma config OSCIOFNC = OFF      // OSC2 Pin Function (OSC2 is clock output)
    #pragma config FCKSM = CSDCMD      // Clock Switching Mode bits (Both Clock switching and Fail-safe Clock Monitor are disabled)
    
    // FWDT
    //#pragma config WDTPOST = PS32768    // Watchdog Timer Postscaler (1:32,768)
    //#pragma config WDTPRE = PR128      // WDT Prescaler (1:128)
    #pragma config WINDIS = OFF       // Watchdog Timer Window (Watchdog Timer in Non-Window mode)
    #pragma config FWDTEN = OFF       // Watchdog Timer Enable (Watchdog timer enabled/disabled by user software)
    
    // FPOR
    #pragma config FPWRT = PWR128      // POR Timer Value (128ms)
    #pragma config ALTSS1 = ON       // Enable Alternate SS1 pin bit (SS1A is selected as the I/O pin for SPI1)
    #pragma config ALTQIO = ON       // Enable Alternate QEI1 pin bit (AQEA1, AQEB1, and AINDX1 are selected as inputs to QEI1)
    
    // FICD
    #pragma config ICS = PGD1        // Comm Channel Select (Communicate on PGC1/EMUC1 and PGD1/EMUD1)
    #pragma config JTAGEN = OFF       // JTAG Port Enable (JTAG is disabled)
    
    
    
    #define rs         LATDbits.LATD8    /* PORT for E */
    #define rw        LATDbits.LATD9    /* PORT for RW */
    #define en        LATDbits.LATD10   /* PORT for RS */
    
    #define TRIS_E        TRISDbits.TRISD8  /* TRIS for E */
    #define TRIS_RW        TRISDbits.TRISD9  /* TRIS for RW */
    #define TRIS_RS        TRISDbits.TRISD10  /* TRIS for RS */
    
    //LCD Data pins
    #define lcdport LATE
    
    void lcd_ini();
    void lcdcmd(unsigned char);
    void lcddata(unsigned char);
    unsigned char data[20]="EngineersGarage";
    unsigned int i=0;
    
    void main(void)
    {
      PTCONbits.PTEN =0;
      TRIS_E=0;
        TRIS_RW =0;
        TRIS_RS =0;
        
      TRISE=0;    // Configure Port E as output port
      LATE=0;
      lcd_ini();    // LCD initialization
      while(data[i]!='\0')
      {
        lcddata(data[i]);  // Call lcddata function to send characters
              // one by one from "data" array
        i++;
        __delay_ms(300);
      }
    
    }
    void lcd_ini()
    {
      lcdcmd(0x38);    // Configure the LCD in 8-bit mode, 2 line and 5x7 font
      lcdcmd(0x0C);    // Display On and Cursor Off
      lcdcmd(0x01);    // Clear display screen
      lcdcmd(0x06);    // Increment cursor
      lcdcmd(0x80);    // Set cursor position to 1st line, 1st column
    }
    
    void lcdcmd(unsigned char cmdout)
    {
      lcdport=cmdout;    //Send command to lcdport=PORTB
      rs=0;
      rw=0;
      en=1;
      __delay_ms(10);
      en=0;
    }
    
    void lcddata(unsigned char dataout)
    {
      lcdport=dataout;  //Send data to lcdport=PORTB
      rs=1;
      rw=0;
      en=1;
      __delay_ms(10);
      en=0;
    }
    باسلام
    تو برنامه نوشته شده ات کریستال رو تعین نکردی(مثلا 4mhz)باید تعیین کنی و همون کریستال رو به کار ببری
    منم مشکلی دقیقا شبیه مشکل تو داشتم.به خیال اینکه کامپایلر کریستال رو پیش فرض4mhzدر نظرگرفته دیگه تو برنامه کریستال و تعیین نکردم
    بعد پروگرام ای سی هرکاری کردم ال سیدی چیزی نشون ندادرفتم تو برنام نوشته شده وکریستال رو تعیین کردم(4mhz)و ای سی رو دوباره پروگرام کردم که بعد پروگرام تاای سی رو رومدار قرار دادم ال سیدی راه افتاد
    البته به این ادرس هم برو وتو پست چهارم نوشته ی با فونت بزرگ رو بخون
    http://www.eca.ir/forum2/index.php?topic=77349.15
    راستی مدارت رو تو پروتوس چک کردی؟تو پروتوس جواب داد؟
    اگريك فلج مادر زاد در مسابقه دو ماراتون نفراول نشود مقصر فقط وفقط خودش است...

    دیدگاه


      #3
      پاسخ : عدم نمایش lcd

      نوشته اصلی توسط yadegari
      من این برنامه رو برای راه اندازی lcd نوشتم اما چیزی روی lcd نمایش داده نمیشه
      به نظرتون مشکل چیه؟
      کامپایلر xc16
      کد:
       #include <xc.h>
      #include <p33FJ64GS606.h>
      #include <stdio.h>
      #include <stdlib.h>
      #define FOSC  (7370000ULL)
       #define FCY   (FOSC/2)
      #include <libpic30.h>
      #include <string.h>
      
      
      // FBS
      #pragma config BWRP = WRPROTECT_OFF   // Boot Segment Write Protect (Boot Segment may be written)
      #pragma config BSS = NO_FLASH      // Boot Segment Program Flash Code Protection (No Boot program Flash segment)
      
      // FGS
      #pragma config GWRP = OFF        // General Code Segment Write Protect (General Segment may be written)
      #pragma config GSS = OFF        // General Segment Code Protection (General Segment Code protect is disabled)
      
      // FOSCSEL
      #pragma config FNOSC = FRC       // Oscillator Source Selection (Internal Fast RC (FRC))
      #pragma config IESO = ON        // Internal External Switch Over Mode (Start up device with FRC, then switch to user-selected oscillator source)
      
      // FOSC
      #pragma config POSCMD = NONE      // Primary Oscillator Source (Primary Oscillator disabled)
      #pragma config OSCIOFNC = OFF      // OSC2 Pin Function (OSC2 is clock output)
      #pragma config FCKSM = CSDCMD      // Clock Switching Mode bits (Both Clock switching and Fail-safe Clock Monitor are disabled)
      
      // FWDT
      //#pragma config WDTPOST = PS32768    // Watchdog Timer Postscaler (1:32,768)
      //#pragma config WDTPRE = PR128      // WDT Prescaler (1:128)
      #pragma config WINDIS = OFF       // Watchdog Timer Window (Watchdog Timer in Non-Window mode)
      #pragma config FWDTEN = OFF       // Watchdog Timer Enable (Watchdog timer enabled/disabled by user software)
      
      // FPOR
      #pragma config FPWRT = PWR128      // POR Timer Value (128ms)
      #pragma config ALTSS1 = ON       // Enable Alternate SS1 pin bit (SS1A is selected as the I/O pin for SPI1)
      #pragma config ALTQIO = ON       // Enable Alternate QEI1 pin bit (AQEA1, AQEB1, and AINDX1 are selected as inputs to QEI1)
      
      // FICD
      #pragma config ICS = PGD1        // Comm Channel Select (Communicate on PGC1/EMUC1 and PGD1/EMUD1)
      #pragma config JTAGEN = OFF       // JTAG Port Enable (JTAG is disabled)
      
      
      
      #define rs         LATDbits.LATD8    /* PORT for E */
      #define rw        LATDbits.LATD9    /* PORT for RW */
      #define en        LATDbits.LATD10   /* PORT for RS */
      
      #define TRIS_E        TRISDbits.TRISD8  /* TRIS for E */
      #define TRIS_RW        TRISDbits.TRISD9  /* TRIS for RW */
      #define TRIS_RS        TRISDbits.TRISD10  /* TRIS for RS */
      
      //LCD Data pins
      #define lcdport LATE
      
      void lcd_ini();
      void lcdcmd(unsigned char);
      void lcddata(unsigned char);
      unsigned char data[20]="EngineersGarage";
      unsigned int i=0;
      
      void main(void)
      {
        PTCONbits.PTEN =0;
        TRIS_E=0;
          TRIS_RW =0;
          TRIS_RS =0;
          
        TRISE=0;    // Configure Port E as output port
        LATE=0;
        lcd_ini();    // LCD initialization
        while(data[i]!='\0')
        {
          lcddata(data[i]);  // Call lcddata function to send characters
                // one by one from "data" array
          i++;
          __delay_ms(300);
        }
      
      }
      void lcd_ini()
      {
        lcdcmd(0x38);    // Configure the LCD in 8-bit mode, 2 line and 5x7 font
        lcdcmd(0x0C);    // Display On and Cursor Off
        lcdcmd(0x01);    // Clear display screen
        lcdcmd(0x06);    // Increment cursor
        lcdcmd(0x80);    // Set cursor position to 1st line, 1st column
      }
      
      void lcdcmd(unsigned char cmdout)
      {
        lcdport=cmdout;    //Send command to lcdport=PORTB
        rs=0;
        rw=0;
        en=1;
        __delay_ms(10);
        en=0;
      }
      
      void lcddata(unsigned char dataout)
      {
        lcdport=dataout;  //Send data to lcdport=PORTB
        rs=1;
        rw=0;
        en=1;
        __delay_ms(10);
        en=0;
      }
      باسلام
      تو برنامه نوشته شده ات کریستال رو تعین نکردی(مثلا 4mhz)باید تعیین کنی و همون کریستال رو به کار ببری
      منم مشکلی دقیقا شبیه مشکل تو داشتم.به خیال اینکه کامپایلر کریستال رو پیش فرض4mhzدر نظرگرفته دیگه تو برنامه کریستال و تعیین نکردم
      بعد پروگرام ای سی هرکاری کردم ال سیدی چیزی نشون ندادرفتم تو برنام نوشته شده وکریستال رو تعیین کردم(4mhz)و ای سی رو دوباره پروگرام کردم که بعد پروگرام تاای سی رو رومدار قرار دادم ال سیدی راه افتاد
      البته به این ادرس هم برو وتو پست چهارم نوشته ی با فونت بزرگ رو بخون
      http://www.eca.ir/forum2/index.php?topic=77349.15
      راستی مدارت رو تو پروتوس چک کردی؟تو پروتوس جواب داد؟
      اگريك فلج مادر زاد در مسابقه دو ماراتون نفراول نشود مقصر فقط وفقط خودش است...

      دیدگاه


        #4
        پاسخ : عدم نمایش lcd

        نوشته اصلی توسط yadegari

        کد:
         
        #define FOSC  (7370000ULL)
         #define FCY   (FOSC/2)
        سلام دوست گرامی
        من از اسیلاتور داخلی میکرو استفاده میکنم که در اول برنامه فرکانس اون تعریف شده
        بعد من با dspic33fj64gs606 دارم کار میکنم که توی پروتیوس نیست
        ضمنا من به طریقی با استفاده از تابع xlcd در مد 8بیتی جواب گرفتم اما وقتی پورت دیتا رو عوض میکنم و یا اون رو چهار بیتی میکنم جواب نمیده، این اشکال رو در یک پست دیگه مطرح کردم که دوستان کم لطفی کرده و جواب ندادن
        http://www.eca.ir/forum2/index.php?topic=77667.0

        دیدگاه


          #5
          پاسخ : عدم نمایش lcd

          نوشته اصلی توسط yadegari
          سلام دوست گرامی
          من از اسیلاتور داخلی میکرو استفاده میکنم که در اول برنامه فرکانس اون تعریف شده
          بعد من با dspic33fj64gs606 دارم کار میکنم که توی پروتیوس نیست
          ضمنا من به طریقی با استفاده از تابع xlcd در مد 8بیتی جواب گرفتم اما وقتی پورت دیتا رو عوض میکنم و یا اون رو چهار بیتی میکنم جواب نمیده، این اشکال رو در یک پست دیگه مطرح کردم که دوستان کم لطفی کرده و جواب ندادن
          http://www.eca.ir/forum2/index.php?topic=77667.0
          دوست عزیز جناب yadegari ! آخه عزیز من داری با میکرویی کار میکنی که دست هرکسی نیست، توی شهرستان ها شماره های PIC معمولی با چه زوری پیدا میشه خدا میدونه! حالا این شماره ای که فرمودین تو پروتئوس هم نیست!! نه تو رو خدا چیکار کنیم؟! لااقل با XC8 کار کن تا هم 4 نفر یادبگیرن(مخصوصا خودم! :rolleyes: ) هم اینکه دستمون واسه انتخاب میکرو باز میشه اینطوری. :nerd:

          دیدگاه


            #6
            پاسخ : عدم نمایش lcd

            نوشته اصلی توسط شاهرخ
            دوست عزیز جناب yadegari ! آخه عزیز من داری با میکرویی کار میکنی که دست هرکسی نیست، توی شهرستان ها شماره های PIC معمولی با چه زوری پیدا میشه خدا میدونه! حالا این شماره ای که فرمودین تو پروتئوس هم نیست!! نه تو رو خدا چیکار کنیم؟! لااقل با XC8 کار کن تا هم 4 نفر یادبگیرن(مخصوصا خودم! :rolleyes: ) هم اینکه دستمون واسه انتخاب میکرو باز میشه اینطوری. :nerd:
            به خاطر یک پروژه خاص مجبورم از این میکرو استفاده کنم
            بعد فکر نمیکنم راه اندازی lcd به نوع میکرو زیاد ربط داشته باشه، شما کتابخانه xlcd رو هم برای xc8 دارید هم برای xc16

            دیدگاه

            لطفا صبر کنید...
            X