, , .
, VD1. , RC0 1 . for, . . .
void delay(void) //
{
unsigned int i; //
for(i = 0; i < 50000; i++)
;
}
void main(void)
{
PORTC = 0;
TRISC = 0;
while(1)
{
PORTCbits.RC0 = 1;
delay();
PORTCbits.RC0 = 0;
delay();
}
}
, delay . PIC18 1 () TCY, :
TCY = 4/FOSC.
FOSC, 4 TCY = 1 .
for 50000 i 50000. 100000 0,1 .
C18 , . Delay10KTCYx(n), , 10000 TCY.
0,5 , .. 500000 , 4 TCY = 1 n, 500000 / 10000 = 50. , :
Delay10KTCYx(50).
18, delays.h. 1 :
void main(void)
{
PORTC = 0;
TRISC = 0;
while (1)
{
PORTCbits.RC0 = 1; // VD1
Delay10KTCYx(50); // 0,5
PORTCbits.RC0 = 0; // VD1
Delay10KTCYx(50); // 0,
}
}
15. 18 : , , .
PIC18F242, / (PORTA, PORTB, PORTC). .
, ( 1) RC0-RC3 ( 0) RC4-RC7 .
void main(void)
{
PORTC = 0; //
TRISC = 0; //
|
|
PORTC = 0b11110000; // 11110000
while(1) //
;
}
18 . p18f242.h.
, PORTxbits.Rxy,
x (A, B, C); y .
:
PORTAbits.RA0 = 1; // RA0 = 1
PORTBbits.RB1 = 0; // RB1 = 0
void main(void)
{
PORTC = 0;
TRISC = 0;
while(1)
{
PORTCbits.RC0 = 1; // VD1
PORTCbits.RC0 = 0; // VD1
}
}
void main(void)
{
PORTB = 0; //
PORTC = 0; //
TRISB = 0b10000001; // RB0 RB7 ,
TRISC = 0; //
while(1)
{
if(PORTBbits.RB0 == 0)
PORTCbits.RC0 = 1;
else
PORTCbits.RC0 = 0;
}
}
16. - PIC-: -, .
- ( × ): 8×2, 16×1, 16×2, 16×4, 20×1, 20×2, 20×4, 40×2, 40×4. HD44780 -. 14- , , 2 ( ) . . 1.
-
VDD | (+ 5 ) | |
VSS | () | |
VEE | ||
RS | ||
R/W | / | |
E | ||
7-14 | D0-D7 |
HD44780 .
4- 8- , . , . 4- 7- , , 8- .
:
- RS ( ), , ;
- R/W ( / ), (R/W = 1 , R/W = 0 );
- (), .
, . , ..
HD44780 , : (DR), (IR), (DDRAM), (CGRAM), (AC), (BF). DR IR. RS: RS = 0 (IR), RS = 1 (DR).
|
|
DR ( ) (DDRAM) (CGRAM) , (AC). , IR, , .. . IR 7- AC, (BF).
, 80 , , . 40 . . , , , , 80×1 20×4, 40 .
-, , .2. ( ) 00H0FH, - 40H4FH.
BF 1, , 0 . , , , , , BF - .
2.2. -
- Hitachi HD44780 MCC18 , PIC18. xlcd.h. . , , xlcd.h.
4- , 7 . .3 .
3
RS | RB5 |
R/W | RB6 |
E | RB4 |
D4 | RB0 |
D5 | RB1 |
D6 | RB2 |
D7 | RB3 |
:
BusyXLCD | ? |
OpenXLCD | , |
putsXLCD | |
SetDDRamAddr | |
WriteCmdXLCD |
, . :
DelayFor18TCY | 18 |
DelayPORXLCD | 15 |
DelayXLCD | 5 |
.
BusyXLCD() - ? BF Hitachi HD44780. BF = 1, , BF = 0, . :
while(BusyXLCD());
OpenXLCD(unsigned char lcdtype) . ledtype , xlcd.h. , :
OpenXLCD(FOUR_BIT & LINES_5X7);
|
|
FOUR_BIT 4- , LINES_5X7 - 5×7 .
WriteCmdXLCD(unsigned char cmd) , cmd , xlcd.h. :
WriteCmdXLCD(CURSOR_OFF & BLINK_OFF);
CURSOR_OFF , BLINK_OFF .
SetDDRamAddr(unsigned char addr) () . Hitachi HD44780. BusyXLCD(). :
while(BusyXLCD()); //
SetDDRamAddr(0x40); // 0x40
//
17. - PIC-: , 18.
PIC18 - (), 0 UDD ( ) . 10- , . , , PIC18F242 6 . , . , , .
, , . . - (), . , , , , . , , , . , 20 .
, 2, 4, 8, 16, 32 64 . RC- 250 - , SLEEP.
, -.
- : ADRESH ADRESL. , :
- ; - .
ADRESH , - .
ADRESH, ADRESL.
|
|