PIC32 et EXPLORER16

PIC32 et EXPLORER16 - C - Programmation

Marsh Posté le 09-05-2008 à 11:59:51    

Bonjour,
 
J’ai en ma possession un PIC32MX460F512L et d’un carte Explorer 16 de microchip.
 
J’ai téléchargé les programmes de microchip pour cette carte avec le PIC 24
J’ai tenté de les reprendre et de les adapter a mon PIC32 mais en vain !
Et dans le programme il y a des "Nop".. et il me fait  des erreurs avec les nop....
 
Vous ne pourriez pas m’aider pour la programmation du LCD, pour que je puisse afficher un texte ?
 
Je laisse ci joint les programmes du PIC24 pour le LCD.
 
 

Code :
  1. #include "p24HJ256GP610.h"
  2. #include "lcd.h"
  3. #include "delay.h"
  4. /*  
  5.    For Explorer 16 board, here are the data and control signal definitions
  6.    RS -> RB15
  7.    E  -> RD4
  8.    RW -> RD5
  9.    DATA -> RE0 - RE7   
  10. */
  11. // Control signal data pins  
  12. #define  RW  LATDbits.LATD5       // LCD R/W signal
  13. #define  RS  LATBbits.LATB15      // LCD RS signal
  14. #define  E   LATDbits.LATD4       // LCD E signal  
  15. //#define  E   LATFbits.LATF1       // LCD E signal
  16. // Control signal pin direction  
  17. #define  RW_TRIS TRISDbits.TRISD5
  18. #define  RS_TRIS TRISBbits.TRISB15
  19. #define  E_TRIS  TRISDbits.TRISD4
  20. //#define  E_TRIS  TRISFbits.TRISF1
  21. // Data signals and pin direction
  22. #define  DATA      LATE           // Port for LCD data
  23. #define  DATAPORT  PORTE
  24. #define  TRISDATA  TRISE          // I/O setup for data Port
  25. /****************************************************************************/
  26. /***** LCD SUBROUTINE  *****/
  27. void Init_LCD( void )             // initialize LCD display
  28. {
  29. // 15mS delay after Vdd reaches nnVdc before proceeding with LCD initialization
  30. // not always required and is based on system Vdd rise rate
  31. Delay(Delay_15mS_Cnt);                  // 15ms delay
  32. /* set initial states for the data and control pins */
  33. LATE &= 0xFF00;
  34.     RW = 0;                       // R/W state set low
  35. RS = 0;                       // RS state set low
  36. E = 0;                        // E state set low
  37. /* set data and control pins to outputs */
  38. TRISE &= 0xFF00;
  39.  RW_TRIS = 0;                  // RW pin set as output
  40. RS_TRIS = 0;                  // RS pin set as output
  41. E_TRIS = 0;                   // E pin set as output
  42. /* 1st LCD initialization sequence */
  43. DATA &= 0xFF00;
  44.     DATA |= 0x0038;
  45.     E = 1;
  46.     Nop();
  47.     Nop();
  48.     Nop();
  49.     E = 0;                        // toggle E signal
  50.     Delay(Delay_5mS_Cnt);         // 5ms delay
  51.      
  52. /* 2nd LCD initialization sequence */
  53. DATA &= 0xFF00;
  54.     DATA |= 0x0038;
  55.     E = 1;
  56.     Nop();
  57.     Nop();
  58.     Nop();
  59.     E = 0;                        // toggle E signal
  60.     Delay_Us( Delay200uS_count ); // 200uS delay
  61. /* 3rd LCD initialization sequence */
  62. DATA &= 0xFF00;
  63.     DATA |= 0x0038;
  64.     E = 1;
  65.     Nop();
  66.     Nop();
  67.     Nop();
  68.     E = 0;                        // toggle E signal
  69.     Delay_Us( Delay200uS_count ); // 200uS delay
  70.     lcd_cmd( 0x38 );              // function set
  71.     lcd_cmd( 0x0C );              // Display on/off control, cursor blink off (0x0C)
  72.     lcd_cmd( 0x06 );     // entry mode set (0x06)
  73. }
  74. void lcd_cmd( char cmd )          // subroutiune for lcd commands
  75. {
  76. // TRISD &= 0xFF00;              // ensure RD0 - RD7 are outputs
  77. DATA &= 0xFF00;               // prepare RD0 - RD7
  78.     DATA |= cmd;                  // command byte to lcd
  79. RW = 0;                       // ensure RW is 0
  80.     RS = 0;
  81.     E = 1;                        // toggle E line
  82.     Nop();
  83.     Nop();
  84.     Nop();
  85.     E = 0;
  86.     Delay(Delay_5mS_Cnt);         // 5ms delay
  87. }
  88. void lcd_data( char data )        // subroutine for lcd data
  89. {
  90. // TRISD &= 0xFF00;              // ensure RD0 - RD7 are outputs
  91. RW = 0;            // ensure RW is 0
  92.     RS = 1;                       // assert register select to 1
  93. DATA &= 0xFF00;               // prepare RD0 - RD7
  94.     DATA |= data;                 // data byte to lcd
  95.     E = 1;
  96.  Nop();
  97.     Nop();
  98.     Nop();
  99.     E = 0;                       // toggle E signal
  100.     RS = 0;                      // negate register select to 0
  101.     Delay_Us( Delay200uS_count ); // 200uS delay
  102.     Delay_Us( Delay200uS_count ); // 200uS delay
  103. }
  104. void puts_lcd( unsigned char *data, unsigned char count )
  105. {
  106.    while ( count )
  107. {
  108.  lcd_data( *data++ );
  109.  count --;
  110. }
  111. }


 
et le lcd.h
 

Code :
  1. /****** LCD FUNCTION PROTOYPES ******/
  2. void Init_LCD( void );          // initialize display  
  3. void lcd_cmd( char cmd );         // write command to lcd
  4. void lcd_data( char data );      // write data to lcd
  5. void puts_lcd ( unsigned char *data, unsigned char count );
  6. /***** LCD COMMAND FUCNTION PROTOTYPES  *****/
  7. #define cursor_right()  lcd_cmd( 0x14 )
  8. #define cursor_left()   lcd_cmd( 0x10 )
  9. #define display_shift() lcd_cmd( 0x1C )
  10. #define home_clr()      lcd_cmd( 0x01 )
  11. #define home_it()       lcd_cmd( 0x02 )
  12. #define line_2()        lcd_cmd( 0xC0 ) // (0xC0)


 Merci
 
et le Delay.h
 

Code :
  1. //#define Fcy  14754600
  2. #define Fcy  16000000
  3. void Delay( unsigned int delay_count );
  4. void Delay_Us( unsigned int delayUs_count );
  5. #define Delay200uS_count  (Fcy * 0.0002) / 1080
  6. #define Delay_1mS_Cnt   (Fcy * 0.001) / 2950
  7. #define Delay_2mS_Cnt   (Fcy * 0.002) / 2950
  8. #define Delay_5mS_Cnt   (Fcy * 0.005) / 2950
  9. #define Delay_15mS_Cnt    (Fcy * 0.015) / 2950
  10. #define Delay_1S_Cnt   (Fcy * 1) / 2950

Reply

Marsh Posté le 09-05-2008 à 11:59:51   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed