Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string.h>
- // Conexões do LCD
- sbit LCD_RS at RB4_bit;
- sbit LCD_EN at RB5_bit;
- sbit LCD_D4 at RB0_bit;
- sbit LCD_D5 at RB1_bit;
- sbit LCD_D6 at RB2_bit;
- sbit LCD_D7 at RB3_bit;
- sbit LCD_RS_Direction at TRISB4_bit;
- sbit LCD_EN_Direction at TRISB5_bit;
- sbit LCD_D4_Direction at TRISB0_bit;
- sbit LCD_D5_Direction at TRISB1_bit;
- sbit LCD_D6_Direction at TRISB2_bit;
- sbit LCD_D7_Direction at TRISB3_bit;
- // Caracteres Especiais
- const char character0[] = {0,7,5,7,0,0,0,0};
- void grau(char pos_row, char pos_char) {
- char i;
- Lcd_Cmd(64);
- for (i = 0; i<=7; i++) Lcd_Chr_CP(character0[i]);
- Lcd_Cmd(_LCD_RETURN_HOME);
- Lcd_Chr(pos_row, pos_char, 0);
- }
- const char character[] = {0,0,14,17,17,10,27,0};
- void ohm(char pos_row, char pos_char) {
- char i;
- Lcd_Cmd(72);
- for (i = 0; i<=7; i++) Lcd_Chr_CP(character[i]);
- Lcd_Cmd(_LCD_RETURN_HOME);
- Lcd_Chr(pos_row, pos_char, 1);
- }
- // Criação de variáveis
- unsigned temperatura; // Leitura do ADC para temperatura
- unsigned voltagem; // Leitura do ADC para voltagem (tensão)
- unsigned amperagem; // Leitura do ADC para amperagem (corrente)
- unsigned resistencia; // Leitura do ADC para resistência
- float temp;
- float volt;
- float amp;
- float res;
- char txt[50];
- char tela_temp[3];
- char tela_volt[6];
- char tela_amp[6];
- char tela_res[5];
- void main() {
- TRISA = 0b00001111; // Configuração do portA - bit 0 a 3 como entradas e as demais saída
- ANCON0 = 0b00001111; // Configuração RE0 (5) temp; RA5 (4) volt como analógicos
- PORTA = 0; // Limpa a portA
- // Limpeza de variáveis e inicialização de processos
- temperatura=0;
- voltagem=0;
- amperagem=0;
- resistencia=0;
- temp=0;
- volt=0;
- amp=0;
- res=0;
- LCD_Init(); // Inicialização do LCD
- ADC_Init(); // Inicialização ADC
- Lcd_Cmd(_LCD_CLEAR); // limpa o Display
- Lcd_Cmd(_LCD_CURSOR_OFF); // Desliga o Cursor
- // Loop Infinito
- while (1) {
- temperatura = ADC_Read(3); // Faz a aquisição dos dados do sensor de temperatura
- temp = temperatura*0.1221; // 5/(4095*0,01)
- voltagem = ADC_Read(1);
- volt=voltagem*0.001221; // 5/4095
- amperagem = ADC_Read(0);
- amp = amperagem*0.001221; // 5/4095 - res de 1ohm
- resistencia = ADC_Read(2);
- res=resistencia*0.001221; // 5/4095
- res=(50/res)-10;
- FloatToStr(temp,txt);
- strncpy(tela_temp,txt, 2);
- Lcd_out(1,1,"T=");
- Lcd_out(1,3,tela_temp);
- grau(1,5);
- Lcd_out(1,6,"C V=");
- delay_ms(100);
- FloatToStr(volt,txt);
- strncpy(tela_volt, txt, 5);
- Lcd_out(1,10,tela_volt);
- Lcd_out(1,15,"V ");
- delay_ms(100);
- FloatToStr(amp,txt);
- strncpy(tela_amp, txt, 5);
- Lcd_out(2,1,"I=");
- Lcd_out(2,3,tela_amp);
- Lcd_out(2,8,"A R=");
- delay_ms(100);
- FloatToStr(res,txt);
- strncpy(tela_res, txt, 4);
- Lcd_out(2,12,tela_res);
- ohm(2,16);
- delay_ms(100);
- };
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement