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"); |
||
96 | |||
97 | #endif |
Powered by WebSVN v2.8.3