ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

LCD MODULE CONNECTIONS


Enviado por   •  27 de Noviembre de 2012  •  722 Palabras (3 Páginas)  •  355 Visitas

Página 1 de 3

// LCD module connections

sbit LCD_RS at RB2_bit;

sbit LCD_EN at RB3_bit;

sbit LCD_D4 at RB4_bit;

sbit LCD_D5 at RB5_bit;

sbit LCD_D6 at RB6_bit;

sbit LCD_D7 at RB7_bit;

sbit LCD_RS_Direction at TRISB2_bit;

sbit LCD_EN_Direction at TRISB3_bit;

sbit LCD_D4_Direction at TRISB4_bit;

sbit LCD_D5_Direction at TRISB5_bit;

sbit LCD_D6_Direction at TRISB6_bit;

sbit LCD_D7_Direction at TRISB7_bit;

sbit Data at RA0_bit;

sbit DataDir at TRISA0_bit;

char message1[] = "Temp = 00.0 C";

char message2[] = "RH = 00.0 %";

unsigned short TOUT = 0, CheckSum, i;

unsigned short T_Byte1, T_Byte2, RH_Byte1, RH_Byte2;

void StartSignal(){

DataDir = 0; // Data port is output

Data = 0;

Delay_ms(25); // Low for at least 18us

Data = 1;

Delay_us(30); // High for 20-40 us

DataDir = 1; // Data port is input

}

unsigned short CheckResponse(){

TOUT = 0;

TMR2 = 0;

T2CON.TMR2ON = 1; // Start TMR2 while waiting for sensor response

while(!Data && !TOUT); // If there's no response within 256us, the Timer2 overflows

if (TOUT) return 0; // and exit

else {

TMR2 = 0;

while(Data && !TOUT);

if (TOUT) return 0;

else {

T2CON.TMR2ON = 0;

return 1;

}

}

}

unsigned short ReadByte(){

unsigned short num = 0, t;

DataDir = 1;

for (i=0; i<8; i++){

while(!Data);

TMR2 = 0;

T2CON.TMR2ON = 1; // Start TMR2 from 0 when a low to high data pulse

while(Data); // is detected, and wait until it falls low again.

T2CON.TMR2ON = 0; // Stop the TMR2 when the data pulse falls low.

if(TMR2 > 40) num |= 1<<(7-i); // If time > 40us, Data is 1

}

return num;

}

void interrupt(){

if(PIR1.TMR2IF){

TOUT = 1;

T2CON.TMR2ON = 0; // stop timer

PIR1.TMR2IF = 0; // Clear TMR0 interrupt flag

}

}

void main() {

unsigned short check;

TRISB = 0b00000000;

PORTB = 0;

TRISA = 0b00100001;

CMCON = 7;

INTCON.GIE = 1; //Enable global interrupt

INTCON.PEIE = 1; //Enable peripheral interrupt

// Configure Timer2 module

PIE1.TMR2IE = 1; // Enable Timer2 interrupt

T2CON = 0; // Prescaler 1:1, and Timer2 is off initially

PIR1.TMR2IF =0; // Clear TMR INT Flag bit

TMR2 = 0;

Lcd_Init();

...

Descargar como (para miembros actualizados) txt (3 Kb)
Leer 2 páginas más »
Disponible sólo en Clubensayos.com