Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define LCD_CLEARDISPLAY 0x01
- #define LCD_RETURNHOME 0x02
- #define LCD_ENTRYMODESET 0x04
- #define LCD_DISPLAYCONTROL 0x08
- #define LCD_CURSORSHIFT 0x10
- #define LCD_FUNCTIONSET 0x20
- #define LCD_SETCGRAMADDR 0x40
- #define LCD_SETDDRAMADDR 0x80
- // flags for display entry mode
- #define LCD_ENTRYRIGHT 0x00
- #define LCD_ENTRYLEFT 0x02
- #define LCD_ENTRYSHIFTINCREMENT 0x01
- #define LCD_ENTRYSHIFTDECREMENT 0x00
- // flags for display on/off control
- #define LCD_DISPLAYON 0x04
- #define LCD_DISPLAYOFF 0x00
- #define LCD_CURSORON 0x02
- #define LCD_CURSOROFF 0x00
- #define LCD_BLINKON 0x01
- #define LCD_BLINKOFF 0x00
- // flags for display/cursor shift
- #define LCD_DISPLAYMOVE 0x08
- #define LCD_CURSORMOVE 0x00
- #define LCD_MOVERIGHT 0x04
- #define LCD_MOVELEFT 0x00
- // flags for function set
- #define LCD_8BITMODE 0x10
- #define LCD_4BITMODE 0x00
- #define LCD_2LINE 0x08
- #define LCD_1LINE 0x00
- #define LCD_5x10DOTS 0x04
- #define LCD_5x8DOTS 0x00
- //----------------------------
- void LCDbegin(byte HC595)
- {
- delay(15); // Tempo de power on
- outs.SetModule(0, HC595); // Zera saida do 595
- write595(3, HC595); // Envia Hex 3 Interface 8 bits long ??
- delayMicroseconds(4500); // wait min 4.1ms
- write595(3, HC595); // Envia Hex 3 Interface 8 bits long ??
- delayMicroseconds(40); // wait min 40 us
- write595(3, HC595); // Envia Hex 3 Interface 8 bits long ??
- delayMicroseconds(40); // wait min 40 us
- write595(2, HC595); // Envia Hex 2 Interface 4 bits long
- delayMicroseconds(40); // wait min 40 us
- // 28
- write595(LCD_FUNCTIONSET, HC595);
- write595(LCD_2LINE, HC595); // Envia Hex 8 display de 2 linhas
- delayMicroseconds(60); // wait min 60 us
- // 08
- write595(0, HC595); // Envia Hex 0
- write595(LCD_DISPLAYCONTROL, HC595); // Envia Hex 8 ativa display
- delayMicroseconds(60);
- // 0C
- write595(0, HC595); // Envia Hex 0
- write595(LCD_2LINE | LCD_DISPLAYON | LCD_CURSOROFF, HC595); // Envia Hex 2 linlhas cursor off Lcd on
- // 01
- write595(0, HC595); // Envia Hex 0
- write595(LCD_CLEARDISPLAY, HC595); // Envia Hex 1 clear LCD
- delay(3); // wait min 3ms
- }
- //-----------------------------------
- void write595(byte value, byte HC595)
- {
- cli();
- outs.SetModule(value , HC595); // Envia dados
- pulse595(value, HC595 ); // Pulsa ENA
- sei();
- }
- //-----------------------------------
- void pulse595(byte value, byte HC595) // Pulsa ENA para entra dados
- {
- outs.SetModule((value | 0x10), HC595); // Adciona Ena
- outs.SetModule((value | 0x00), HC595); // Remove Ena
- }
- //------------------------------
- void LCDwrite(byte value, byte HC595) // Escreve um caracter
- {
- byte data = (value >> 4 & 0x0F); // Separa a parte alta do byte e or com RS
- data = data | 0x40; // Aciona RS no dado
- cli(); // Desabilita inerrupt
- outs.SetModule(data, HC595); // Envia dados
- pulse595(data, HC595); // Pulsa ENA
- sei(); // Habilita inerrupt
- data = (value & 0x0F) ; // Separa a parte baixa do byte e or com RS
- data = data | 0x40; // Aciona RS no dado
- cli(); // Desabilita inerrupt
- outs.SetModule(data, HC595); // Envia dados
- pulse595(data, HC595); // Pulsa ENA
- sei(); // Habilita inerrupt
- }
- //---------------------------------------------------
- void LCDsetCursor(byte value, byte line, byte HC595)
- {
- LCDHome(HC595);
- line = line * 40;
- for (int i = 0; i < (value - 1 + line); i++)
- {
- write595(LCD_ENTRYSHIFTINCREMENT, HC595); // Envia Hex 10
- write595(LCD_MOVERIGHT, HC595); // Envia Hex 4
- }
- }
- //---------------------------------------------------
- void LCDClear (byte HC595)
- {
- write595(0, HC595); // Envia Hex 0
- write595(LCD_CLEARDISPLAY, HC595); // Envia Hex 1 clear LCD
- delay(3); // wait min 3ms
- }
- //-------------------------------------------------
- void LCDHome(byte HC595)
- {
- write595(0, HC595); // Envia Hex 0
- write595(LCD_RETURNHOME, HC595); // Return to home
- }
- //----------------------------------------------------
- void LCDCursorOn(byte HC595)
- {
- write595(0, HC595); //
- write595((LCD_2LINE | LCD_DISPLAYON | LCD_CURSORON), HC595);
- }
- //----------------------------------------------------
- void LCDCursorOff(byte HC595)
- {
- write595(0, HC595); //
- write595((LCD_2LINE | LCD_DISPLAYON | LCD_CURSOROFF), HC595);
- }
- //--------------------------------------------
- void LCD_BlinkOn(byte HC595)
- {
- write595(0, HC595); //
- write595((LCD_2LINE | LCD_DISPLAYON | LCD_BLINKON), HC595);
- }
- //--------------------------------------------
- void LCD_BlinkOff(byte HC595)
- {
- write595(0, HC595); //
- write595((LCD_2LINE | LCD_DISPLAYON | LCD_BLINKOFF), HC595);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement