RuiViana

LCD _PinToPin

Aug 2nd, 2016
153
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // LCD PinToPIN  
  2.  
  3. #define  RS 6                           // Port RS para o LCD
  4. #define  RW  7                          // Port RW para o LCD
  5. #define  ENA 8                          // Port ENA para o LCD
  6. #define  DB7  9                         // Port DB7 para o LCD
  7. #define  DB6  10                        // Port DB6 para o LCD
  8. #define  DB5  11                        // Port DB5 para o LCD
  9. #define  DB4  12                        // Port DB4 para o LCD
  10. //------------------------------
  11. void setup()
  12. {
  13.   Serial.begin(9600);                   // Inicialisa Seria monitor
  14.   pinMode( RS , OUTPUT);                // Port como output
  15.   pinMode( RW , OUTPUT);
  16.   pinMode(ENA, OUTPUT);
  17.   pinMode( DB7 , OUTPUT);
  18.   pinMode( DB6 , OUTPUT);
  19.   pinMode( DB5 , OUTPUT);
  20.   pinMode( DB4 , OUTPUT);
  21.   initLCD();                             // inicialisa LCD
  22. }
  23. //------------------------
  24. void loop()
  25. {
  26.   writedata(0x61);                      // Manda um caracter (em Hex)
  27. }
  28. //----------------------------
  29. void writedata(byte value)              // Escreve um caracter
  30. {
  31.   digitalWrite(RS , HIGH);              // Habilita dados
  32.   int data = value >> 4 & 0x0F;         // Separa a parte alta do byte
  33.   write4bits(data);                     // Escreve no LCD
  34.   data = value & 0x0F;                  // Separa a parte baixa do byte
  35.   write4bits(data);                     // Escreve no LCD
  36.   digitalWrite(RS , LOW);               // Desabilita dados
  37. }
  38. //---------------------------
  39. void initLCD()
  40. {
  41.   delay(15);                            // Tempo de power on
  42.   digitalWrite( ENA, LOW);              // Desabilita enable
  43.   digitalWrite( RS , LOW);              // Desabilita dados                    
  44.   digitalWrite( RW , LOW);              // Desabilita RW
  45.  
  46.   write4bits(3);                        // Envia Hex 3  Interface 8 bits long ??
  47.   delayMicroseconds(4500);              // wait min 4.1ms
  48.   write4bits(3);                        // Envia Hex 3  Interface 8 bits long ??
  49.   delayMicroseconds(40);                // wait min 40 us
  50.   write4bits(3);                        // Envia Hex 3  Interface 8 bits long ??
  51.   delayMicroseconds(40);                // wait min 40 us
  52.   write4bits(2);                        // Envia Hex 2  Interface 4 bits long
  53.   delayMicroseconds(40);                // wait min 40 us
  54.  
  55.   // 28
  56.   write4bits(2);                        // Envia Hex 2  Interface 4 bits long
  57.   write4bits(8);                        // Envia Hex 8  display de 2 linhas
  58.   delayMicroseconds(60);                // wait min 60 us
  59.  
  60.   // 08
  61.   write4bits(0);                        // Envia Hex 0  
  62.   write4bits(8);                        // Envia Hex 8  ativa display
  63.   delayMicroseconds(60);                // wait min 60 us
  64.  
  65.   // 2E
  66.   write4bits(0);                        // Envia Hex 0  
  67.   write4bits(1);                        // Envia Hex 1  Home
  68.   delay(3);                             // wait min 3ms
  69.  
  70.   // 06
  71.   write4bits(0);                        // Envia Hex 0                    
  72.   write4bits(6);                        // Envia Hex 6  cursor incrementa por 1
  73.  
  74.   // clear  0C
  75.   write4bits(0);                        // Envia Hex 0  
  76.   write4bits(0x0C);                     // Envia Hex C  liga display
  77.  
  78. }
  79. //-----------------------------------
  80. void write4bits(byte value)
  81. {
  82.   digitalWrite( DB7 , (value ) & 0x01);         // Separa bit 7
  83.   digitalWrite( DB6 , (value >> 1) & 0x01);     // Separa bit 7
  84.   digitalWrite( DB5 , (value >> 2) & 0x01);     // Separa bit 7
  85.   digitalWrite( DB4 , (value >> 3) & 0x01);     // Separa bit 7
  86.   pulseEnable();                                // Chama rotina de entrada dos dados
  87. }
  88. //-----------------------------------
  89. void pulseEnable()                              // Pulsa ENA para entra dados
  90. {
  91.   digitalWrite(ENA, HIGH);                     // ENA HIGH          
  92.   delayMicroseconds(1);                        // delay
  93.   digitalWrite(ENA, LOW);                      // ENA LOW          
  94.   delayMicroseconds(100);                      // delay                      
  95. }
RAW Paste Data