Advertisement
RuiViana

LCD_HC595

Aug 2nd, 2016
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.26 KB | None | 0 0
  1. // LCD 595
  2. #include <IToOutputModule595.h>
  3. const uint8_t qtd_modules = 1; // 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. 6 4 5 3 2 1 15
  10. */
  11. //------------------------------
  12. void setup()
  13. {
  14. Serial.begin(9600); // Inicialisa Seria monitor
  15. initLCD(); // inicialisa LCD
  16. }
  17. //------------------------
  18. void loop()
  19. {
  20. writedata(0x52); // Manda caracter (em Hex)
  21. writedata(0x55);
  22. writedata(0x49);
  23. delay(5);
  24. }
  25. //----------------------------
  26. void writedata(byte value) // Escreve um caracter
  27. {
  28. int data = ((value >> 4 & 0x0F) | 0x40); // Separa a parte alta do byte e or com RS
  29. write595(data); // Escreve no LCD
  30. data = ((value & 0x0F) | 0x40); // Separa a parte baixa do byte e or com RS
  31. write595(data); // Escreve no LCD
  32. }
  33. //---------------------------
  34. void initLCD()
  35. {
  36. delay(15); // Tempo de power on
  37.  
  38. outs.SetModule(0, 0);
  39.  
  40. write595(3); // Envia Hex 3 Interface 8 bits long ??
  41. delayMicroseconds(4500); // wait min 4.1ms
  42. write595(3); // Envia Hex 3 Interface 8 bits long ??
  43. delayMicroseconds(40); // wait min 40 us
  44. write595(3); // Envia Hex 3 Interface 8 bits long ??
  45. delayMicroseconds(40); // wait min 40 us
  46. write595(2); // Envia Hex 2 Interface 4 bits long
  47. delayMicroseconds(40); // wait min 40 us
  48.  
  49. // 28
  50. write595(2); // Envia Hex 2 Interface 4 bits long
  51. write595(8); // Envia Hex 8 display de 2 linhas
  52. delayMicroseconds(60); // wait min 60 us
  53.  
  54. // 08
  55. write595(0); // Envia Hex 0
  56. write595(8); // Envia Hex 8 ativa display
  57. delayMicroseconds(60); // wait min 60 us
  58.  
  59. // 01
  60. write595(0); // Envia Hex 0
  61. write595(1); // Envia Hex 1 clear LCD
  62. delay(3); // wait min 3ms
  63.  
  64. // 06
  65. write595(0); // Envia Hex 0
  66. write595(6); // Envia Hex 6 cursor incrementa por 1
  67.  
  68. // clear 0C
  69. write595(0); // Envia Hex 0
  70. write595(0x0C); // Envia Hex C liga display
  71.  
  72. // 01
  73. write595(0); // Envia Hex 0
  74. write595(1); // Envia Hex 1 clear LCD
  75. delay(3); // wait min 3ms
  76. }
  77. //-----------------------------------
  78. void write595(byte value)
  79. {
  80. cli();
  81. outs.SetModule(value, 0); // Envia dados
  82. pulse595(value); // Pulsa ENA
  83. sei();
  84. }
  85. //-----------------------------------
  86. void pulse595(byte value) // Pulsa ENA para entra dados
  87. {
  88. outs.SetModule((value | 0x20), 0);
  89. outs.SetModule((value | 0x00), 0);
  90. }
  91. //-----------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement