اطلاعیه

Collapse
No announcement yet.

مشکل با کتابخانه xlcd

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

    مشکل با کتابخانه xlcd

    سلام، من با میکرو dspic33fj64gs606 دارم کار میکنم، با نرم افزار mplabx و کامپایلر xc16
    من از کتابخانه xlcd برای راه اندازی lcd 16*2 استفاده کردم
    مشکلی که من دارم اینه که این کتابخانه در مد 8 بیتی خوب کار میکنه اما وقتی به مد 4 بیتی میبری چیزی روی lcd نمایش نمیده
    یا اگر در همون مد 8 بیتی که در حالت default از پورت d برای دیتا استفاده میکنه اگه پورت رو عوض کنی باز چیزی نمیبینی
    کسی با مشکل من روبرو شده
    کتابخانه xlcd رو اینجا میزارم
    کد:
     /********************************************************************/ 
     /*      Header for XLCD module library functions       */ 
     /*                                 */ 
     /********************************************************************/ 
     
     #if defined(__dsPIC30F__) 
     #include <p30Fxxxx.h> 
     #elif defined(__dsPIC33F__) 
     #include <p33Fxxxx.h> 
     #elif defined(__dsPIC33E__) 
     #include <p33Exxxx.h> 
     #elif defined(__PIC24H__) 
     #include <p24Hxxxx.h> 
     #elif defined(__PIC24E__) 
     #include <p24Exxxx.h> 
     #endif 
     
     
     #if defined(_RD10) 
     
     #ifndef _XLCD_H 
     #define _XLCD_H 
     
     /* Comment out the following line if 4-bit interface is being used */ 
     #define EIGHT_BIT_INTERFACE 
     
     /* #defines of the data pins and the corresponding tris pins */ 
     /* The READ_PIN_X #defines must match the corresponding DATA_PIN_X defines */ 
     #if defined(__dsPIC30F__) || defined(__dsPIC33F__) || defined(__PIC24H__)  
     
     #define DATA_PIN_7      LATDbits.LATD7 
     #define DATA_PIN_6      LATDbits.LATD6 
     #define DATA_PIN_5      LATDbits.LATD5 
     #define DATA_PIN_4      LATDbits.LATD4 
     
     #define READ_PIN_7    PORTDbits.RD7 
     #define READ_PIN_6    PORTDbits.RD6 
     #define READ_PIN_5    PORTDbits.RD5 
     #define READ_PIN_4    PORTDbits.RD4 
     
     #ifdef EIGHT_BIT_INTERFACE 
     
     #define DATA_PIN_3      LATDbits.LATD3 
     #define DATA_PIN_2      LATDbits.LATD2 
     #define DATA_PIN_1      LATDbits.LATD1 
     #define DATA_PIN_0      LATFbits.LATF0 
     
     #define READ_PIN_3    PORTDbits.RD3 
     #define READ_PIN_2    PORTDbits.RD2 
     #define READ_PIN_1    PORTDbits.RD1 
     #define READ_PIN_0    PORTDbits.RD0 
     
     #endif /* #ifdef EIGHT_BIT_INTERFACE */ 
     
     #define TRIS_DATA_PIN_7    TRISDbits.TRISD7 
     #define TRIS_DATA_PIN_6    TRISDbits.TRISD6 
     #define TRIS_DATA_PIN_5    TRISDbits.TRISD5 
     #define TRIS_DATA_PIN_4    TRISDbits.TRISD4 
     
     #ifdef EIGHT_BIT_INTERFACE 
     
     #define TRIS_DATA_PIN_3    TRISDbits.TRISD3 
     #define TRIS_DATA_PIN_2    TRISDbits.TRISD2 
     #define TRIS_DATA_PIN_1    TRISDbits.TRISD1 
     #define TRIS_DATA_PIN_0    TRISDbits.TRISD0 
     
     #endif /* #ifdef EIGHT_BIT_INTERFACE */ 
     
     #if defined(_RD8) && defined(_RD9) && defined(_RD10) 
     
     /* #defines of the control pins and the corresponding tris pins for 30F */ 
     #define E_PIN         LATDbits.LATD8    /* PORT for E */ 
     #define RW_PIN        LATDbits.LATD9    /* PORT for RW */ 
     #define RS_PIN        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 */ 
     
     #endif /* #ifdef dsPIC30 || dsPIC33F || PIC24H */ 
     
     #endif /* #ifdef _RD10 */ 
     
     /* #defines of the data pins and the corresponding tris pins */ 
     /* The READ_PIN_X #defines must match the corresponding DATA_PIN_X defines */ 
     /* ANSEL bits settings for digital should be done outside LCD library*/ 
     #if defined(__dsPIC33E__) || defined(__PIC24E__) 
     
     #define DATA_PIN_7      LATEbits.LATE7 
     #define DATA_PIN_6      LATEbits.LATE6 
     #define DATA_PIN_5      LATEbits.LATE5 
     #define DATA_PIN_4      LATEbits.LATE4 
     
     #define READ_PIN_7    PORTEbits.RE7 
     #define READ_PIN_6    PORTEbits.RE6 
     #define READ_PIN_5    PORTEbits.RE5 
     #define READ_PIN_4    PORTEbits.RE4 
     
     #ifdef EIGHT_BIT_INTERFACE 
     
     #define DATA_PIN_3      LATEbits.LATE3 
     #define DATA_PIN_2      LATEbits.LATE2 
     #define DATA_PIN_1      LATEbits.LATE1 
     #define DATA_PIN_0      LATEbits.LATE0 
     
     #define READ_PIN_3    PORTEbits.RE3 
     #define READ_PIN_2    PORTEbits.RE2 
     #define READ_PIN_1    PORTEbits.RE1 
     #define READ_PIN_0    PORTEbits.RE0 
     
     #endif /* #ifdef EIGHT_BIT_INTERFACE */ 
     
     #define TRIS_DATA_PIN_7    TRISEbits.TRISE7 
     #define TRIS_DATA_PIN_6    TRISEbits.TRISE6 
     #define TRIS_DATA_PIN_5    TRISEbits.TRISE5 
     #define TRIS_DATA_PIN_4    TRISEbits.TRISE4 
     
     #ifdef EIGHT_BIT_INTERFACE 
     
     #define TRIS_DATA_PIN_3    TRISEbits.TRISE3 
     #define TRIS_DATA_PIN_2    TRISEbits.TRISE2 
     #define TRIS_DATA_PIN_1    TRISEbits.TRISE1 
     #define TRIS_DATA_PIN_0    TRISEbits.TRISE0 
     
     #endif /* #ifdef EIGHT_BIT_INTERFACE */ 
     
     /* #defines of the control pins and the corresponding tris pins for 33E, 24E */ 
     #define E_PIN         LATDbits.LATD4    /* PORT for E */ 
     #define RW_PIN        LATDbits.LATD5    /* PORT for RW */ 
     #define RS_PIN        LATBbits.LATB15   /* PORT for RS */ 
     
     #define TRIS_E        TRISDbits.TRISD4  /* TRIS for E */ 
     #define TRIS_RW        TRISDbits.TRISD5  /* TRIS for RW */ 
     #define TRIS_RS        TRISBbits.TRISB15  /* TRIS for RS */ 
     
     #endif /* #ifdef dsPIC33E || dsPIC24E */ 
     
     
     
     /**********************************/ 
     /* P-tec PCOG1602B LCD controller */ 
     /**********************************/ 
     
     /* Display ON/OFF Control defines */ 
     #define DON            0x0F   /* Display on       */ 
     #define DOFF           0x0b   /* Display off       */ 
     #define CURSOR_ON        0x0f   /* Cursor on        */ 
     #define CURSOR_OFF       0x0d   /* Cursor off       */ 
     #define BLINK_ON         0x0f   /* Cursor Blink      */ 
     #define BLINK_OFF         0x0e   /* Cursor No Blink     */ 
     
     /* Some Command Type defines              */ 
     #define CLEAR_XLCD    0x01    /* Clears the LCD    */ 
     #define RETURN_CURSOR_HOME  0x02    /* Returns the cursor to the HOME position  */ 
     
     
     /* Entry Mode Options  */ 
     #define INCR_MODE    0x07    /* Increment mode    */ 
     #define DECR_MODE    0x05    /* Decrement Mode  */ 
     #define ENTIRE_SHIFT_OFF  0x06    /* Shift Entire Display   */ 
     #define ENTIRE_SHIFT_ON  0x07    /* Dont Shift Entire Display  */ 
     
     /* Cursor or Display Shift defines */ 
     #define SHIFT_CUR_LEFT    0x13 /* Cursor shifts to the left  */ 
     #define SHIFT_CUR_RIGHT    0x17 /* Cursor shifts to the right */ 
     #define SHIFT_DISP_LEFT    0x1b /* Display shifts to the left */ 
     #define SHIFT_DISP_RIGHT   0x1f /* Display shifts to the right */ 
     
     /* Function Set defines */ 
     #define FOUR_BIT       0x2f /* 4-bit Interface */ 
     #define EIGHT_BIT       0x3f /* 8-bit Interface */ 
     
     /* defines for no of lines */ 
     #define SINGLE_LINE      0x37 /* Single line display */ 
     #define TWO_LINE       0x3F /* Two line display */ 
     
     /* defines for segment data transfer direction */ 
     #define SEG1_50_SEG51_100   0x39 /* SEG1->SEG50 ,SEG51->SEG100 */ 
     #define SEG1_50_SEG100_51   0x3d /* SEG1->SEG50 ,SEG100->SEG51 */ 
     #define SEG100_51_SEG50_1   0x3b /* SEG100->SEG51,SEG50->SEG1 */ 
     #define SEG100_51_SEG1_50   0x3f /* SEG100->SEG51,SEG1->SEG50 */ 
     
     /* defines for COM data transfer direction */ 
     
     #define COM1_COM16      0x3e /* Data transfer direction is COM1 to COM16 */ 
     
     #define COM16_COM1      0x3f /* Data transfer direction is COM16 to COM1 */ 
     
     /* Function prototypes */ 
     
     /* OpenXLCD 
     * Configures I/O pins for external LCD 
     */ 
     void OpenXLCD(char) __attribute__ ((section (".libperi"))); 
     
     /* SetCGRamAddr 
     * Sets the character generator address 
     */ 
     void SetCGRamAddr(char) __attribute__ ((section (".libperi"))); 
     
     /* SetDDRamAddr 
     * Sets the display data address 
     */ 
     void SetDDRamAddr(char) __attribute__ ((section (".libperi"))); 
     
     /* BusyXLCD 
     * Returns the busy status of the LCD 
     */ 
     char BusyXLCD(void)  __attribute__ ((section (".libperi"))); 
     
     /* ReadAddrXLCD 
     * Reads the current address 
     */ 
     char ReadAddrXLCD(void) __attribute__ ((section (".libperi"))); 
     
     /* ReadDataXLCD 
     * Reads a byte of data 
     */ 
     char ReadDataXLCD(void) __attribute__ ((section (".libperi"))); 
     
     /* WriteCmdXLCD 
     * Writes a command to the LCD 
     */ 
     void WriteCmdXLCD(char) __attribute__ ((section (".libperi"))); 
     
     /* WriteDataXLCD 
     * Writes a data byte to the LCD 
     */ 
     void WriteDataXLCD(char) __attribute__ ((section (".libperi"))); 
     
     /* putsXLCD 
     * Writes a string of characters to the LCD 
     */ 
     void putsXLCD(char *) __attribute__ ((section (".libperi"))); 
     
     #define putrsXLCD  putsXLCD 
     #define getcXLCD  ReadDataXLCD 
     #define putcXLCD  WriteDataXLCD 
     
     /* prototypes of delay routines used in XLCD functions */ 
     /* 
       1. DelayRSSetupTime - Delay btw RS/RW signal to E signal 
       2. DelayEPulseWidthLow - min E pulse low width 
       3. DelayEPulseWidthLow - min E pulse high width 
       4. DelayDBOutput - Data Output delay from E signal rise 
       5. DelayPORXLCD - Delay for atleast 15msec - Power On Reset 
     */   
     void DelayRSSetupTime() __attribute__((section (".libperi"))); 
     void DelayEPulseWidthLow()  __attribute__ ((section (".libperi"))); 
     void DelayEPulseWidthHigh()  __attribute__ ((section (".libperi"))); 
     void DelayDBOutput() __attribute__ ((section (".libperi"))); 
     void DelayPORXLCD() __attribute__ ((section (".libperi"))); 
     
     /* general purpose delay functions */ 
     /* kept for backwards compatibility & test purposes*/ 
     void DelayXLCD()  __attribute__ ((section (".libperi"))); 
     void DelayEPulseWidth()  __attribute__ ((section (".libperi"))); 
     void Delay600nsXLCD() __attribute__((section (".libperi"))); 
     #endif 
     
     #endif
لطفا صبر کنید...
X