| Line No. | Rev | Author | Line |
|---|---|---|---|
| 1 | 6 | kaklik | /*! \file lcdconf.h \brief Character LCD driver configuration. */ |
| 2 | //***************************************************************************** |
||
| 3 | // |
||
| 4 | // File Name : 'lcdconf.h' |
||
| 5 | // Title : Character LCD driver for HD44780/SED1278 displays |
||
| 6 | // (usable in mem-mapped, or I/O mode) |
||
| 7 | // Author : Pascal Stang - Copyright (C) 2000-2002 |
||
| 8 | // Created : 11/22/2000 |
||
| 9 | // Revised : 4/30/2002 |
||
| 10 | // Version : 1.1 |
||
| 11 | // Target MCU : Atmel AVR series |
||
| 12 | // Editor Tabs : 4 |
||
| 13 | // |
||
| 14 | // This code is distributed under the GNU Public License |
||
| 15 | // which can be found at http://www.gnu.org/licenses/gpl.txt |
||
| 16 | // |
||
| 17 | //***************************************************************************** |
||
| 18 | |||
| 19 | #ifndef LCDCONF_H |
||
| 20 | #define LCDCONF_H |
||
| 21 | |||
| 22 | // Define type of interface used to access the LCD |
||
| 23 | // LCD_MEMORY_INTERFACE: |
||
| 24 | // To use this mode you must supply the necessary hardware to connect the |
||
| 25 | // LCD to the CPU's memory bus. The CONTROL and DATA registers of the LCD |
||
| 26 | // (HD44780 chip) must appear in the CPU's memory map. This mode is faster |
||
| 27 | // than the port interface but requires a little extra hardware to make it |
||
| 28 | // work. It is especially useful when your CPU is already configured to |
||
| 29 | // use an external memory bus for other purposes (like accessing memory). |
||
| 30 | // |
||
| 31 | // LCD_PORT_INTERFACE: |
||
| 32 | // This mode allows you to connect the control and data lines of the LCD |
||
| 33 | // directly to the I/O port pins (no interfacing hardware is needed), |
||
| 34 | // but it generally runs slower than the LCD_MEMORY_INTERFACE. |
||
| 35 | // Depending on your needs, when using the LCD_PORT_INTERFACE, the LCD may |
||
| 36 | // be accessed in 8-bit or 4-bit mode. In 8-bit mode, one whole I/O port |
||
| 37 | // (pins 0-7) is required for the LCD data lines, but transfers are faster. |
||
| 38 | // In 4-bit mode, only I/O port pins 4-7 are needed for data lines, but LCD |
||
| 39 | // access is slower. In either mode, three additional port pins are |
||
| 40 | // required for the LCD interface control lines (RS, R/W, and E). |
||
| 41 | |||
| 42 | // Enable one of the following interfaces to your LCD |
||
| 43 | //#define LCD_MEMORY_INTERFACE |
||
| 44 | #define LCD_PORT_INTERFACE |
||
| 45 | |||
| 46 | // Enter the parameters for your chosen interface' |
||
| 47 | // if you chose the LCD_PORT_INTERFACE: |
||
| 48 | #ifdef LCD_PORT_INTERFACE |
||
| 49 | #ifndef LCD_CTRL_PORT |
||
| 50 | // port and pins you will use for control lines |
||
| 51 | #define LCD_CTRL_PORT PORTC |
||
| 52 | #define LCD_CTRL_DDR DDRC |
||
| 53 | #define LCD_CTRL_RS 2 |
||
| 54 | #define LCD_CTRL_RW 3 |
||
| 55 | #define LCD_CTRL_E 4 |
||
| 56 | #endif |
||
| 57 | #ifndef LCD_DATA_POUT |
||
| 58 | // port you will use for data lines |
||
| 59 | #define LCD_DATA_POUT PORTA |
||
| 60 | #define LCD_DATA_PIN PINA |
||
| 61 | #define LCD_DATA_DDR DDRA |
||
| 62 | // access mode you will use (default is 8bit unless 4bit is selected) |
||
| 63 | //#define LCD_DATA_4BIT |
||
| 64 | #endif |
||
| 65 | #endif |
||
| 66 | |||
| 67 | // if you chose the LCD_MEMORY_INTERFACE: |
||
| 68 | #ifdef LCD_MEMORY_INTERFACE |
||
| 69 | #ifndef LCD_CTRL_ADDR |
||
| 70 | // CPU memory address of the LCD control register |
||
| 71 | #define LCD_CTRL_ADDR 0x1000 |
||
| 72 | #endif |
||
| 73 | #ifndef LCD_DATA_ADDR |
||
| 74 | // CPU memory address of the LCD data register |
||
| 75 | #define LCD_DATA_ADDR 0x1001 |
||
| 76 | #endif |
||
| 77 | #endif |
||
| 78 | |||
| 79 | |||
| 80 | // LCD display geometry |
||
| 81 | // change these definitions to adapt settings |
||
| 82 | #define LCD_LINES 4 // visible lines |
||
| 83 | #define LCD_LINE_LENGTH 20 // line length (in characters) |
||
| 84 | // cursor position to DDRAM mapping |
||
| 85 | #define LCD_LINE0_DDRAMADDR 0x00 |
||
| 86 | #define LCD_LINE1_DDRAMADDR 0x40 |
||
| 87 | #define LCD_LINE2_DDRAMADDR 0x14 |
||
| 88 | #define LCD_LINE3_DDRAMADDR 0x54 |
||
| 89 | |||
| 90 | // LCD delay |
||
| 91 | // This delay affects how quickly accesses are made to the LCD controller. |
||
| 92 | // If your clock frequency is low, you can reduce the number of NOPs in the |
||
| 93 | // delay. If your clock frequency is high, you may need to add NOPs. |
||
| 94 | // The number of NOPs should be between at least 1 and up to 20. |
||
| 95 | //#define LCD_DELAY asm volatile ("nop\n nop\n nop\n nop\n nop\n nop\n nop\n nop\n"); |
||
| 96 | |||
| 97 | #endif |
Powered by WebSVN v2.8.3