RuiViana

HC595_2_LCD

Aug 2nd, 2016
154
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // LCD 595
  2. #include <IToOutputModule595.h>
  3. const uint8_t qtd_modules = 2;                // 2 modules or 2 74HC595
  4. IToOutputModule595 outs(3, qtd_modules);      // (pino de data, quantidade de m�dulos)
  5. byte Display0 ;
  6. /*
  7.    HC595 pin
  8.     RS  RW  ENA DB7 DB6 DB5 DB4
  9.     1   2   3   4   5   6   7
  10. */
  11. //------------------------------
  12. void setup()
  13. {
  14.   Serial.begin(9600);                     // Inicialisa Seria monitor
  15.   initLCD();                              // inicialisa LCD
  16.   initLCD2();                             // inicialisa LCD2
  17. }
  18. //------------------------
  19. void loop()
  20. {
  21.   writedata(0x52);                      // Manda  caracter (em Hex)
  22.   writedata(0x55);
  23.   writedata(0x49);
  24.   writedata(0x20);
  25.  
  26.   writedata(0x4C);                      // Manda  caracter (em Hex)
  27.   writedata(0x4F);
  28.   writedata(0x50);
  29.   writedata(0x45);
  30.   writedata(0x53);
  31.   writedata(0x20);
  32.  
  33.   writedata(0x56);                      // Manda  caracter (em Hex)
  34.   writedata(0x49);
  35.   writedata(0x41);
  36.   writedata(0x4E);
  37.   writedata(0x41);
  38.   writedata(0x20);
  39.   writedata(0x20);
  40.  
  41.   //delay(5);
  42.  
  43.   writedata2(0x43);                      // Manda  caracter (em Hex)
  44.   writedata2(0x45);
  45.   writedata2(0x4C);
  46.   writedata2(0x53);
  47.   writedata2(0x4F);
  48.   writedata2(0x20);
  49.  
  50.   writedata2(0x45);                      // Manda  caracter (em Hex)
  51.   writedata2(0x49);
  52.   writedata2(0x4A);
  53.   writedata2(0x55);
  54.   writedata2(0x20);
  55.  
  56.   writedata2(0x49);                      // Manda  caracter (em Hex)
  57.   writedata2(0x54);
  58.   writedata2(0x4F);
  59.   writedata2(0x20);
  60.  
  61.  // delay(5);
  62. }
  63. //----------------------------
  64. void writedata2(byte value2)              // Escreve um caracter
  65. {
  66.   int data = (value2  & 0xF0);           // Separa a parte alta do byte e or com RS
  67.   data = data | 0x02;
  68.   cli();
  69.   outs.SetModule(data, 0);              // Envia dados
  70.   pulse595(data);                       // Pulsa ENA
  71.   sei();
  72.  
  73.   data = (value2  & 0x0F) ;              // Separa a parte baixa do byte e or com RS
  74.   data = data << 4 | 0x02;
  75.   cli();
  76.   outs.SetModule(data, 0);              // Envia dados
  77.   pulse595(data);                       // Pulsa ENA
  78.   sei();                                // Escreve no LCD
  79. }
  80. //---------------------------
  81. void initLCD()
  82. {
  83.   delay(15);                            // Tempo de power on
  84.  
  85.   outs.SetModule(0, 0);
  86.  
  87.   write595(3);                          // Envia Hex 3  Interface 8 bits long ??
  88.   delayMicroseconds(4500);              // wait min 4.1ms
  89.   write595(3);                          // Envia Hex 3  Interface 8 bits long ??
  90.   delayMicroseconds(40);                // wait min 40 us
  91.   write595(3);                          // Envia Hex 3  Interface 8 bits long ??
  92.   delayMicroseconds(40);                // wait min 40 us
  93.   write595(2);                          // Envia Hex 2  Interface 4 bits long
  94.   delayMicroseconds(40);                // wait min 40 us
  95.  
  96.   // 28
  97.   write595(2);                          // Envia Hex 2  Interface 4 bits long
  98.   write595(8);                          // Envia Hex 8  display de 2 linhas
  99.   delayMicroseconds(60);                // wait min 60 us
  100.  
  101.   // 08
  102.   write595(0);                          // Envia Hex 0
  103.   write595(8);                          // Envia Hex 8  ativa display
  104.   delayMicroseconds(60);                // wait min 60 us
  105.  
  106.   // 01
  107.   write595(0);                          // Envia Hex 0
  108.   write595(1);                          // Envia Hex 1  clear LCD
  109.   delay(3);                             // wait min 3ms
  110.  
  111.   // 06
  112.   write595(0);                          // Envia Hex 0
  113.   write595(6);                          // Envia Hex 6  cursor incrementa por 1
  114.  
  115.   // clear  0C
  116.   write595(0);                          // Envia Hex 0
  117.   write595(0x0C);                       // Envia Hex C  liga display
  118.  
  119.   // 01
  120.   write595(0);                          // Envia Hex 0
  121.   write595(1);                          // Envia Hex 1  clear LCD
  122.   delay(3);                             // wait min 3ms
  123. }
  124. //-----------------------------------
  125. void write595(byte value)
  126. {
  127.   cli();
  128.   outs.SetModule(value << 4, 0);        // Envia dados
  129.   pulse595(value << 4);                 // Pulsa ENA
  130.   sei();
  131. }
  132. //-----------------------------------
  133. void pulse595(byte value)                 // Pulsa ENA para entra dados
  134. {
  135.   outs.SetModule((value  | 0x08), 0);
  136.   outs.SetModule((value  | 0x00), 0);
  137. }
  138. //------------------------------
  139. //----------------------------
  140. void writedata(byte value2)              // Escreve um caracter
  141. {
  142.   int data = (value2  & 0xF0);           // Separa a parte alta do byte e or com RS
  143.   data = data | 0x02;
  144.   cli();
  145.   outs.SetModule(data, 1);              // Envia dados
  146.   pulse5952(data);                       // Pulsa ENA
  147.   sei();
  148.  
  149.   data = (value2  & 0x0F) ;              // Separa a parte baixa do byte e or com RS
  150.   data = data << 4 | 0x02;
  151.   cli();
  152.   outs.SetModule(data, 0);              // Envia dados
  153.   pulse5952(data);                       // Pulsa ENA
  154.   sei();                                // Escreve no LCD
  155. }
  156. //---------------------------
  157. void initLCD2()
  158. {
  159.   delay(15);                            // Tempo de power on
  160.  
  161.   outs.SetModule(0, 1);
  162.  
  163.   write5952(3);                          // Envia Hex 3  Interface 8 bits long ??
  164.   delayMicroseconds(4500);              // wait min 4.1ms
  165.   write5952(3);                          // Envia Hex 3  Interface 8 bits long ??
  166.   delayMicroseconds(40);                // wait min 40 us
  167.   write5952(3);                          // Envia Hex 3  Interface 8 bits long ??
  168.   delayMicroseconds(40);                // wait min 40 us
  169.   write5952(2);                          // Envia Hex 2  Interface 4 bits long
  170.   delayMicroseconds(40);                // wait min 40 us
  171.  
  172.   // 28
  173.   write5952(2);                          // Envia Hex 2  Interface 4 bits long
  174.   write5952(8);                          // Envia Hex 8  display de 2 linhas
  175.   delayMicroseconds(60);                // wait min 60 us
  176.  
  177.   // 08
  178.   write5952(0);                          // Envia Hex 0
  179.   write5952(8);                          // Envia Hex 8  ativa display
  180.   delayMicroseconds(60);                // wait min 60 us
  181.  
  182.   // 01
  183.   write5952(0);                          // Envia Hex 0
  184.   write5952(1);                          // Envia Hex 1  clear LCD
  185.   delay(3);                             // wait min 3ms
  186.  
  187.   // 06
  188.   write5952(0);                          // Envia Hex 0
  189.   write5952(6);                          // Envia Hex 6  cursor incrementa por 1
  190.  
  191.   // clear  0C
  192.   write5952(0);                          // Envia Hex 0
  193.   write5952(0x0C);                       // Envia Hex C  liga display
  194.  
  195.   // 01
  196.   write5952(0);                          // Envia Hex 0
  197.   write5952(1);                          // Envia Hex 1  clear LCD
  198.   delay(3);                             // wait min 3ms
  199. }
  200. //-----------------------------------
  201. void write5952(byte value2)
  202. {
  203.   cli();
  204.   outs.SetModule(value2 << 4, 1);              // Envia dados
  205.   pulse5952(value2 << 4);                       // Pulsa ENA
  206.   sei();
  207. }
  208. //-----------------------------------
  209. void pulse5952(byte value2)                 // Pulsa ENA para entra dados
  210. {
  211.   outs.SetModule((value2 | 0x08), 1);
  212.   outs.SetModule((value2 | 0x00), 1);
  213. }
  214. //-----------------------------------
RAW Paste Data