#define LCD_BEEP_N Pin(0, 28)
#define Pin(Port32, Pin32) ((Port32 * 32) + Pin32)
enum pinPullMode_ts
{
PULL_UP_MODE = 0,
REPEATER_MODE = 1,
PULL_NONE_MODE = 2,
PULL_DOWN_MODE = 3
};
typedef enum pinPullMode_ts pinPullMode_t;
enum pinDirection_ts
{
IN = 0,
OUT = 1
};
typedef enum pinDirection_ts pinDirection_t;
#define PIN_AS_GPIO 00
#define OFF FALSE
#define ON TRUE
enum BOOLEANS
{
FALSE = 0,
TRUE = 1
};
typedef enum BOOLEANS bool;
#define ConfigPinConnect(Port16, pin_N, pull, func) \
LPC_PINCON->PINMODE##Port16 &= (~Mask16(pin_N, 0x3, 2)); \
LPC_PINCON->PINMODE##Port16 |= Mask16(pin_N, pull, 2); \
LPC_PINCON->PINSEL##Port16 &= (~Mask16(pin_N, 0x3, 2)); \
LPC_PINCON->PINSEL##Port16 |= Mask16(pin_N, func, 2)
#define Mask16(pinN, val, width) (val << ((pinN % 16) * width))
#define ConfigPinGpio(Port32, masc32, od, out, set) \
LPC_PINCON->PINMODE_OD##Port32 &= ~masc32; \
if (od) \
{ \
LPC_PINCON->PINMODE_OD##Port32 |= masc32; \
} \
LPC_GPIO##Port32->FIODIR &= (~masc32); \
if (out) \
{ \
LPC_GPIO##Port32->FIODIR |= masc32; \
} \
LPC_GPIO##Port32->FIOMASK = (~masc32); \
LPC_GPIO##Port32->FIOCLR = masc32; \
if (set) \
{ \
LPC_GPIO##Port32->FIOSET = masc32; \
}
void iniLCD()
{
// LPC_SC->SCS |= 0x00000001; // set GPIOx to use Fast I/O
initPinAsGpio(LCD_BEEP_N, PULL_UP_MODE, FALSE, OUT, ON);
initPinAsGpio(LCD_E1_N, PULL_DOWN_MODE, FALSE, OUT, OFF);
initPinAsGpio(LCD_E2_N, PULL_DOWN_MODE, FALSE, OUT, OFF);
initPinAsGpio(LCD_RS_N, PULL_DOWN_MODE, FALSE, OUT, OFF);
initPinAsGpio(LCD_RW_N, PULL_UP_MODE, TRUE, OUT, ON);
initPinAsGpio(D0_N, REPEATER_MODE, FALSE, OUT, OFF);
initPinAsGpio(D1_N, REPEATER_MODE, FALSE, OUT, OFF);
initPinAsGpio(D2_N, REPEATER_MODE, FALSE, OUT, OFF);
initPinAsGpio(D3_N, REPEATER_MODE, FALSE, OUT, OFF);
initPinAsGpio(D4_N, REPEATER_MODE, FALSE, OUT, OFF);
initPinAsGpio(D5_N, REPEATER_MODE, FALSE, OUT, OFF);
initPinAsGpio(D6_N, REPEATER_MODE, FALSE, OUT, OFF);
initPinAsGpio(D7_N, REPEATER_MODE, FALSE, OUT, OFF);
ihm_Col = Ihm_Start_Column;
ihm_Lin = Ihm_Start_Line + LcdLines; // Inicializa Lcd Superior, linhas 3 e 4
int loopCount = 0; // Contador do loop do while
do
{
lcd_putController(Tab_ResetLcd[loopCount], LcdCmd);
loopCount++;
msDelay(5); // delay > 4ms
}
while (loopCount < ((sizeof Tab_ResetLcd)/(sizeof Tab_ResetLcd[0])));
ihm_Lin = Ihm_Start_Line; // Inicializa Lcd Superior, linhas 1 e 2
loopCount = 0; // Zero o contador para poder iniciar o display de baixo
do
{
lcd_putController(Tab_ResetLcd[loopCount], LcdCmd);
loopCount++;
msDelay(5); // delay > 4ms
}
while (loopCount < ((sizeof Tab_ResetLcd)/(sizeof Tab_ResetLcd[0])));
pihm_Token = &ihm_Token;
}
|