- () , .
, , , , , . . , . , , HD44780 Hitachi. (, , ). , .
, , DR (Data Register), IR (Instruction Register), DDRAM (Display Data RAM), CGRAM (haracter Generator RAM), (Address Counter) BF (Busy Flag).
ASCII- DR DDRAM , . , 80 , , . 40 , , . DDRAM, , . 3.17.
. 3.17. DDRAM |
, . , . . , DDRAM.
. DDRAM 40 , 0 39 (0x27), 40 64 (0x40) 103 (0x67). DDRAM 4063 (0x28...0x3F) .
, IR, . IR , BF.
|
|
, , , 40 , . BF, BF. , , , , , .
HD44780 11 , (DB0DB7) , (RS, R/W, E) .
RS (Register Select) , IR DR, . R/W : (R/W = 0) (R/W = 1). (Enable) , . 1 0.
RS, R/W IR, . 3.8.
3.8
RS | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
( 0) | ||||||||||
* | ( 0). DDRAM . | |||||||||
I/D | S | (I/D = 0/1) DDRAM. (S = 1) | ||||||||
D | C | B | - (D = 1/0) . - (C = 1/0) . (B = 1) | |||||||
S/C | R/L | * | * | (S/C = 0) (S/C = 1) (R/L = 1) (R/L = 0) | ||||||
DL | N | F | * | * | 4 8 (DL = 0/1), (N = 0/1), 5 × 7 5 × 10 (F = 0/1) | |||||
AG | AG | AG | AG | AG | AG | CGRAM. | ||||
AD | AD | AD | AD | AD | AD | AD | DDRAM. | |||
BF | AC | AC | AC | AC | AC | AC | AC | busy- BF AC | ||
DDRAM CGRAM | ||||||||||
DDRAM CGRAM |
WH1602C-YGH Winstar, 16 . . 3.18.
|
|
. 3.18. |
, (. . 3.8):
DL = 1 8;
N = 0 ;
F = 0 5 × 7 ;
B = 0 ;
C = 0 ;
D = 0 ;
I/D = 1 ;
S = 0 .
, (, ). , , , 10 . .
8- .
15 , - 0.10.2 . RS = 0, R/W = 0 0x30, 4.1 0x30. , 100 , 0x30. , . BF, 100200 .
:
1. 100200 0x38
RS | R/W | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 | |
DL | N | F |
DL = 1 (8- ); N = 1 (2 ); F = 0 ( 5 × 7 ).
2. 100200 0x0E
RS | R/W | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 | |
D | C | B |
D = 1 ( .); C = 1 ( .); B = 0 ( .).
3. 100200 0x06
RS | R/W | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 | |
I/D | S |
I/D = 1 ( ); S = 0 ( ).
,
#define RS 7 //
#define E 6 //
void LCD_cmd(unsigned char cmd) {
//[]--------------------------------------------------[]
//| : |
//| : cmd - |
//[]--------------------------------------------------[]
DDRC = 0xFF; // PORTC
DDRD |= ((1<<E)|(1<<RS));// PORTD
PORTD &= ~(1<<RS); // RS=0
PORTC = cmd; // PORTC
PORTD |= (1<<E); // \
delay_us(5); // | E 1-0
PORTD &= ~(1<<E); // /
delay_ms(100); //
}
.
void LCD_init(void) {
//[]--------------------------------------------------[]
|
|
//| : |
//[]--------------------------------------------------[]
DDRC = 0xFF; // PORTC
DDRD |= ((1<<E)|(1<<RS)); // PORTD
delay_ms (100); //
//
LCD_cmd(0x30); // \
LCD_cmd(0x30); // |
LCD_cmd(0x30); // / 0x30
LCD_cmd(0x38); // 8 ., 2 , 5 × 7
LCD_cmd(0x0E); // ,
LCD_cmd(0x06); // ,
LCD_cmd(0x01); // ,
}
, ASCII . , , .
unsigned char TabCon[] =
{0x41,0xA0,0x42,0xA1,0xE0,0x45,0xA3,0xA4,0xA5,0xA6,0x4B, 0xA7,0x4D,0x48,0x4F,0xA8,0x50,0x43,0x54,0xA9,0xAA,0x58,