Professional Documents
Culture Documents
//
Programa Projeto Tacmetro ( Conta-giros )
//
//
Microcontrolador PIC16f628A
//
//
Compilador mikroC PRO for PIC ver 5.60
//
//
Autor: Jeferson Alves Oliveira
//
//
Site: http://eletricamentefalando.blogspot.com.br/
//
////////////////////////////////////////////////////////////////////////////////
// Declara as Variveis Globais ************************************************
sbit LCD_RS at RB1_bit;
// Determina o bit de instrues ou dado
sbit LCD_EN at RB2_bit;
// Determina o bit de "enable" do LCD
sbit LCD_D4 at RB7_bit;
// Determina pino de dados do LCD
sbit LCD_D5 at RB6_bit;
// Determina pino de dados do LCD
sbit LCD_D6 at RB5_bit;
// Determina pino de dados do LCD
sbit LCD_D7 at RB4_bit;
// Determina pino de dados do LCD
sbit
sbit
sbit
sbit
sbit
sbit
LCD_RS_Direction
LCD_EN_Direction
LCD_D4_Direction
LCD_D5_Direction
LCD_D6_Direction
LCD_D7_Direction
at
at
at
at
at
at
TRISB1_bit;
TRISB2_bit;
TRISB7_bit;
TRISB6_bit;
TRISB5_bit;
TRISB4_bit;
//
//
//
//
//
//
Direo
Direo
Direo
Direo
Direo
Direo
dos
dos
dos
dos
dos
dos
pinos
pinos
pinos
pinos
pinos
pinos
do
do
do
do
do
do
LCD
LCD
LCD
LCD
LCD
LCD
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,5,"Jeferson");
Lcd_Out(2,5,"Projetos");
Delay_ms(2000);
// Limpa o display
// Escreve o texto na primeira linha
// Escreve o texto na segunda linha
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,4,"Tacmetro");
CustomChar(1,7);
Lcd_Out(2,3,"Conta-giros");
Delay_ms(2000);
//
//
//
//
Limpa o
Escreve
Escreve
Escreve
display
o texto na primeira linha
o Caractere
o texto na segunda linha
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,4,"Tacmetro");
CustomChar(1,7);
Lcd_Out(2,3,"RPM = ");
//
//
//
//
Limpa o
Escreve
Escreve
Escreve
display
o texto na primeira linha
o Caractere
o texto na segunda linha
// Loop ************************************************************************
do {
if (timer == 2)
{
timer = 0;
RPM();
}
else if (timer > 2)
{
timer = 0;
PORTB.F0 = 1;
// Em caso de erro de leitura liga o led(pino 6)
Delay_ms(20);
PORTB.F0 = 0;
}
} while(1);
}
// Funes *********************************************************************
void CustomChar(char pos_row, char pos_char){
char i;
Lcd_Cmd(64);
for (i = 0; i<=7; i++) Lcd_Chr_CP(character[i]);
Lcd_Cmd(_LCD_RETURN_HOME);
Lcd_Chr(pos_row, pos_char, 0);
}
void interrupt()
{
if(PIR1.CCP1IF)
{
PIR1.CCP1IF = 0;
pulsos ++;
}
else if(PIR1.TMR1IF)
{
PIE1.TMR1IE = 0;
PIE1.CCP1IE = 0;
TMR1H = 0b00001011;
TMR1L = 0b11011011;
timer ++;
PIR1.TMR1IF = 0;
PIE1.CCP1IE = 1;
PIE1.TMR1IE = 1;
}
}
void RPM()
{
total = pulsos * 60;
WordToStr(total, txt);
Lcd_Out(2,9,"
");
Lcd_Out(2,9,txt);
pulsos = 0;
}