réalisation d'un ecran lcd

réalisation d'un ecran lcd - C - Programmation

Marsh Posté le 08-02-2006 à 15:19:37    

salut  
 
je suis entrain de realiser une console de commande pour gerer des feux de tir a l arc!!!!!
et j'aimerai savoir si quelqu un pouvai m'indiquer comment faire le programme pour faire fonctionner un afficheur lcd qui me prend la tete.  
 
l'afficheur est imposé. c'est un 2 lignes 16 caractères.
il est commandé par un pic 16f877 est la programmation ce realise en C. il est connecter sur le port D. avec 4 bit de donné.
 
donc savoir comment on l initialise surtout quelle sont les commande de base pour l'affichage.  
 
merci beaucoup.
 

Reply

Marsh Posté le 08-02-2006 à 15:19:37   

Reply

Marsh Posté le 08-02-2006 à 15:58:00    

1) ya pas assez d'info pour resoudre le probleme
2) les demandes d'exercices sont interdites

Reply

Marsh Posté le 08-02-2006 à 16:22:59    

c est pas un exercice c est un projet. y a tout les a coté a gere est si quelqu un aurai pu m aider pour juste le lcd sa aurai ete simpas.
 
et pour les infos demande moi et je repondrai sans aucun souci

Reply

Marsh Posté le 08-02-2006 à 18:47:49    

"commandé par un pic 16f877" : c'est déjà programmé et il faut interfacer ce pic, ou le but est d'écrire le code du pic ??

Reply

Marsh Posté le 09-02-2006 à 00:35:55    

le pic est vierge de tout programme. et pour l interfacer, c ' est a dire le connecter, la carte est presque fini.  
 
le truc c' est que je ne voit pas du tout comment programmer le lcd.

Reply

Marsh Posté le 09-02-2006 à 01:05:29    

Je te laisse le modifier a ta guise, faut quand meme que tu bosses un peu !
Ce code gere l'afficheur en mode 4 bits.
Par contre je te conseille de trouver la datasheet de ton ecran pour comprendre comment et pourquoi ca marche.
 
 
 
lcd.c :
 

Code :
  1. #define LCD_RS RB5
  2. #define LCD_EN RB6
  3. #define LCD_DATA PORTA
  4. #define LCD_STROBE()    ((LCD_EN = 1),(LCD_EN=0))
  5. static void lcdWrite ( BYTE c)
  6. {
  7. DelayUs( 40 );
  8. LCD_DATA = ( ( c >> 4 ) & 0x0F );
  9. LCD_STROBE();
  10. LCD_DATA = ( c & 0x0F );
  11. LCD_STROBE();
  12. }
  13. void _lcdClear ( void )
  14. {
  15. LCD_RS = 0;
  16. lcdWrite( 0x1 );
  17. DelayMs( 2 );
  18. }
  19. void _lcdPuts ( const char * s )
  20. {
  21. LCD_RS = 1;     // write characters
  22. while( *s )
  23.   lcdWrite( *s++ );
  24. }
  25. void _lcdPutch ( char c )
  26. {
  27. LCD_RS = 1;     // write characters
  28. lcdWrite( c );
  29. }
  30. void _lcdGoto ( BYTE x, BYTE y )
  31. {
  32. LCD_RS = 0;
  33. lcdWrite( BIT7 + ((y-1)*0x40) + (x-1) );
  34. }
  35. void _lcdCursorOn ( void )
  36. {
  37. LCD_RS = 0;
  38. lcdWrite( BIT3 + BIT2 + BIT1 );
  39. }
  40. void _lcdCursorOff ( void )
  41. {
  42. LCD_RS = 0;
  43. lcdWrite( BIT3 + BIT2 );
  44. }
  45. void _lcdInit ( void )
  46. {
  47. char init_value;
  48. // ADCON1 = 0x06;  // Disable analog pins on PORTA
  49. init_value = 0x3;
  50. // TRISA=0;
  51. //        TRISD=0;
  52. DelayMs( 15 );    // wait 15mSec after power applied,
  53. LCD_RS = 0;
  54. LCD_EN = 0;
  55. DelayMs( 15 );    // wait 15mSec after power applied,
  56. LCD_DATA         = init_value;
  57. LCD_STROBE();
  58. DelayMs( 5 );
  59. LCD_STROBE();
  60. DelayUs( 200 );
  61. LCD_STROBE();
  62. DelayUs( 200 );
  63. LCD_DATA = 2;   // Four bit mode
  64. LCD_STROBE();
  65. lcdWrite( 0x28 ); // Set interface length
  66. lcdWrite( BIT3 + BIT2 ); // Display On, Cursor Off, Blink off
  67. _lcdClear();    // Clear screen
  68. lcdWrite( 0x6 ); // Set entry Mode
  69. }


Message édité par nlc le 09-02-2006 à 01:10:41
Reply

Marsh Posté le 09-02-2006 à 09:43:18    

merci pour le code je vai m'y pencher dessu.
et ne te fait pas de souci je vai bosser!!!! lol  
parceque le lcd c'est le dessu de l icerberg de ce qui m attend
 

Reply

Sujets relatifs:

Leave a Replay

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