Ir ao conteúdo
  • Cadastre-se

Leandro Rebello

Membro Júnior
  • Posts

    5
  • Cadastrado em

  • Última visita

Reputação

0
  1. Senhores/as Eu tenho um radio da Clarion em meu carro que ao longo do tempo foi diminuindo o brilho do LCD e agora difícil pra ver alguma coisa no LCD durante o dia. Pesquisando na internet consegui o diagrama do radio e parti para desmontar e tentar resolver, mas nao encontrei nenhum componente com problema a principio e no diagrama mostra as tensoes em varios pontos, medi as mesmas e estão todas corretas. Verifiquei também os LEDs do back light e estão os dois acesos, não quis retirar as protecoes do LCD, ai deu mais trab. pra verificar se os LEDs estavam acendendo. Gostaria da ajuda de vocês, pois acho que o problema seja o LCD mesmo, acredito que se tentar trocar a película polarizadora dele, deve resolver, mas não tenho experiencia alguma com reparo de LCD. Gostaria da opinião de vocês. Grato
  2. você esta certa Isadora. Para esse projeto poderi trabalhar com variaveis de 16, eu ja atropelando as coisas pensando no proximo projeto. Bom consegui uma folga hoje , instalei a versaoo 7.1.0 acho queisso, e o codigo complilou. Me sentindo um ze arruela por ter aberto esse topico e o problema ser do software, me desculpem ai. O topico ja pode ser fechado e nao sei como funciona aqui no forum, mas gostaria de postar o andamento do projeto. Grato
  3. Claro Isadora, eu tentando baixar uma nova atualização do Mikro C, pra ver se não e ele o problema. Esse código e e inicio ainda de uma projeto de uma esteira que tem que parar em uma posição bem precisa na casa dos +- 01.mm. Resolvi como desafio, controlar essa posição com motor DC e um encoder e dando tudo certo, usar mesma base desse código para uma maquina CNC, mas isso ainda longe pra mim, vamos devagar. Quanto a usar Float estou tentando evitar para poupar memoria e tempo de processamento visto que usar uma float e depois mais uma conversao FloatToStr ocupa muito espaco e quero usar esssa mesma base de codigo em outro projeto como disse acima. Fique tranquilo que sei como e F.. baixar outro compilador , instalar, as vezes nao estamos acostumados com eles, sei como e , mas e de suma ajuda , voce comentar sobre organização, ideias, como você falou de coisas simples como o uso do #define e codigo mais apresentavel. Durante a semana esta muito corrido, mas dando certo volto aqui pra fechar o post e dar como resolvido. Obrigado pelas dicas
  4. Isadora - O erro e apenas 102 Finished whit erro, sem indicar em qual linha, nada, so esse codigo e mensagem. - Vou mudar para #Define, concordo que fica mais apropriado. - Eu uso variáveis Long porque o counter chegara a mais de 350000, para deslocamento total. Talvez seja algum erro no Mikro c, se puder compilar o código eu agradeço, assim, retiramos umas duvidas, outras sugestões são sempre bem vindas para com código melhor apresentado. Sou novo em programação e sempre aberto a sugestões. Grato pela ajuda Leandro
  5. Pessoal, me ajudem por favor a entender o que realmente acontece com o codigo abaixo que nao complina no MIKRO C PRO 5.61. Estou usando um PIC18F452. Quando removo a linha 62 " Xa = counter1 * enc_const * 1000 ; ", o programa compila, mas foge da ideia de variar o valor de Xa en funcao do valor de Counter. A funcao criada e apenas para exibir numeros com decimais no LCD, sem uso de Float. Obs: Estou usando um LCD I2C, abaixo do codigo vou colar a biblioteca do I2C LCD. Peco ajuda de vocês. Segue codigo: #include "Lcd_I2C_PCF8574A_Lib.h" //============================================================================= // --- Protótipo das Funções --- void display_dec(long decimal); //============================================================================= // --- Variáveis Globais --- char Lcd_I2C_address ; const float enc_const = 0.002778; long counter1, Xa, Xp, decimal; // --- Função Principal --- void main() { ADCON1 = 0x0F; //Apenas entradas digitais TRISB = 0xFF; //RB0 e RB1 como entrada TRISC = 0xF8; //RC2,RC4 E RC5 como saida TRISD = 0xFC; //Todos como entrada counter1 = 10; LATC2_bit = 0x00; // en_pwm LATD0_bit = 0x00; //LATC0_bit do motor 1 LATD1_bit = 0x00; //LATC1_bit do motor 1 LATC0_bit = 0x00; LATC1_bit = 0x00; Lcd_I2C_address = 0x7E; Xp = 288.520 * 1000; // posicao programada em milimetros sem virgula 9,000 mm //Xa = 135.389 * 1000; I2C1_Init(100000); //Inicializa protocolo I2 Lcd_I2C_Init(); Lcd_I2C_Out(1,1,"XP:"); display_dec(Xp); while(1) { Lcd_I2C_Out (3,1,"Xa:"); Xa = counter1 * enc_const * 1000 ; display_dec(Xa); counter1--; delay_ms(200); }//End while } // end main //============================================================================= // --- Desenvolvimento das Funções Auxiliares --- //============================================================================= void display_dec(long decimal) { unsigned int cen, dez, uni, dec1, dec2, dec3; long x1, x2; x1 = labs(decimal); x2 = 1000; cen = (x1 / x2)/100; dez = ((x1 / x2)%100)/10; uni = (x1 / x2)%10; dec1 = ((x1 % x2)*10)/ x2; dec2 =((((x1%x2)*10)%x2)*10)/ x2; dec3 =((((((x1%x2)*10)%x2)*10)%x2)*10)/ x2; if (decimal > 0 ) Lcd_I2C_Chr_Cp ('+'); else Lcd_I2C_Chr_Cp ('-'); Lcd_I2C_Chr_Cp (cen+48); Lcd_I2C_Chr_Cp (dez+48); Lcd_I2C_Chr_Cp (uni+48); Lcd_I2C_Chr_Cp ('.'); Lcd_I2C_Chr_Cp (dec1+48); Lcd_I2C_Chr_Cp (dec2+48); Lcd_I2C_Chr_Cp (dec3+48); }//End display_dec Biblioteca LCD I2C /* Biblioteca Lcd I2C com CI - PCF8574A Autor: Vitor Santos MikroC 6.4v OBS.: Habilitar Biblioteca I2C Modificado por Leandro Rebello para CI PCF8574A PCF8574A Pins P 7 6 5 4 3 2 1 0 LCD Pins D 7 6 5 4 - E RW RS void Lcd_I2C_Init() void Lcd_I2C_Cmd(char out_char) void Lcd_I2C_Chr(char row, char column, char out_char) void Lcd_I2C_Chr_CP(char out_char) void Lcd_I2C_Out(char row, char col, char *text) void Lcd_I2C_Out_CP(char *text) */ extern char Lcd_I2C_address; //char Lcd_I2C_address = 0x40; //A0 - 0, A1 - 0, A2 - 0 #define _LCD_FIRST_ROW 0x80 //Move cursor to the 1st row - ok #define _LCD_SECOND_ROW 0xC0 //Move cursor to the 2nd row - ok #define _LCD_THIRD_ROW 0x94 //Move cursor to the 3rd row - ok #define _LCD_FOURTH_ROW 0xD4 //Move cursor to the 4th row - ok #define _LCD_CLEAR 0x01 //Clear display - ok #define _LCD_RETURN_HOME 0x02 //Return cursor to home position, returns a shifted display to //its original position. Display data RAM is unaffected. - ok #define _LCD_CURSOR_OFF 0x0C //Turn off cursor - ok #define _LCD_UNDERLINE_ON 0x0E //Underline cursor on - ok #define _LCD_BLINK_CURSOR_ON 0x0F //Blink cursor on - ok #define _LCD_MOVE_CURSOR_LEFT 0x10 //Move cursor left without changing display data RAM - ok #define _LCD_MOVE_CURSOR_RIGHT 0x14 //Move cursor right without changing display data RAM - ok #define _LCD_TURN_ON 0x0C //Turn Lcd display on - ok #define _LCD_TURN_OFF 0x08 //Turn Lcd display off - ok #define _LCD_SHIFT_LEFT 0x18 //Shift display left without changing display data RAM #define _LCD_SHIFT_RIGHT 0x1E //Shift display right without changing display data RAM //Enviar um comando para Lcd_I2C-PCF8574 void Lcd_I2C_Cmd(char out_char) {//Inicio do Lcd_I2C_Cmd char I2C_byte; I2C_byte = out_char & 0xF0; I2C1_Start(); I2C1_Wr(Lcd_I2C_address); I2C_byte.F0 = 0; I2C_byte.F2 = 1; I2C1_Wr(I2C_byte); I2C_byte.F2 = 0; I2C1_Wr(I2C_byte); I2C_byte = (out_char << 4) & 0xF0; I2C_byte.F0 = 0; I2C_byte.F2 = 1; I2C1_Wr(I2C_byte); I2C_byte.F2 = 0; I2C1_Wr(I2C_byte); I2C1_Wr(0x08); I2C1_Stop(); }//Final LCD_I2C_Cmd void Lcd_I2C_Cursor(char row, char col) {//Inicio do Lcd_I2C_Out switch(row) { case 1: Lcd_I2C_Cmd(0x80 + (col - 1)); break; case 2: Lcd_I2C_Cmd(0xC0 + (col - 1)); break; case 3: Lcd_I2C_Cmd(0x94 + (col - 1)); break; case 4: Lcd_I2C_Cmd(0xD4 + (col - 1)); break; } ; }//Final do Lcd_I2C_Cursor //Inicializa o Lcd_I2C-PCF8574 void Lcd_I2C_Init() {//Inicio do Lcd_I2C_Init char I2C_byte; I2C1_Start(); I2C1_Wr(Lcd_I2C_address); I2C_byte = 0x30; I2C_byte.F2 = 1; I2C1_Wr(I2C_byte); I2C_byte.F2 = 0; I2C1_Wr(I2C_byte); Delay_ms(10); I2C_byte.F2 = 1; I2C1_Wr(I2C_byte); I2C_byte.F2 = 0; I2C1_Wr(I2C_byte); Delay_us(120); I2C_byte.F2 = 1; I2C1_Wr(I2C_byte); I2C_byte.F2 = 0; I2C1_Wr(I2C_byte); Delay_ms(10); I2C_byte = 0x20; I2C_byte.F2 = 1; I2C1_Wr(I2C_byte); I2C_byte.F2 = 0; I2C1_Wr(I2C_byte); Delay_ms(10); I2C_byte.F2 = 1; I2C1_Wr(I2C_byte); I2C_byte.F2 = 0; I2C1_Wr(I2C_byte); Delay_ms(10); I2C_byte = 0x80; I2C_byte.F2 = 1; I2C1_Wr(I2C_byte); I2C_byte.F2 = 0; I2C1_Wr(I2C_byte); Delay_ms(10); I2C_byte = 0x00; I2C_byte.F2 = 1; I2C1_Wr(I2C_byte); I2C_byte.F2 = 0; I2C1_Wr(I2C_byte); Delay_ms(10); I2C_byte = 0xF0; I2C_byte.F2 = 1; I2C1_Wr(I2C_byte); I2C_byte.F2 = 0; I2C1_Wr(I2C_byte); I2C_byte = 0x00; I2C_byte.F2 = 1; I2C1_Wr(I2C_byte); I2C_byte.F2 = 0; I2C1_Wr(I2C_byte); I2C_byte = 0x10; I2C_byte.F2 = 1; I2C1_Wr(I2C_byte); I2C_byte.F2 = 0; I2C1_Wr(I2C_byte); I2C_byte = 0x00; I2C_byte.F2 = 1; I2C1_Wr(I2C_byte); I2C_byte.F2 = 0; I2C1_Wr(I2C_byte); I2C_byte = 0x60; I2C_byte.F2 = 1; I2C1_Wr(I2C_byte); I2C_byte.F2 = 0; I2C1_Wr(I2C_byte); Delay_ms(10); I2C1_Wr(0x08); I2C1_Stop(); Delay_ms(10); }//Final do I2C_Lcd_Init //Enviar um caracter para Lcd_I2C-PCF8574A void Lcd_I2C_Chr_CP(char out_char) {//Inicio da Lcd_I2C_Chr_CP char byte; byte = out_char & 0xF0; I2C1_Start(); I2C1_Wr(Lcd_I2C_address); byte.F0 = 1; byte.F2 = 1; I2C1_Wr(byte); byte.F2 = 0; I2C1_Wr(byte); byte = (out_char << 4) & 0xF0; byte.F0 = 1; byte.F2 = 1; I2C1_Wr(byte); byte.F2 = 0; I2C1_Wr(byte); I2C1_Wr(0x08); I2C1_Stop(); }//Final da Lcd_I2C_Chr_CP //Enviar um texto para o Lcd_I2C-PCF8574A void Lcd_I2C_Out_CP(char *text) {//Inicio do Lcd_I2C_Out_CP while(*text) { Lcd_I2C_Chr_CP(*text); text++; } }//Final do Lcd_I2C_Out_CP //Enviar um caracter para uma linha e uma coluna Lcd_I2C-PCF8574A void Lcd_I2C_Chr(char row, char col, char out_char) {//Inicio do Lcd_I2C_Chr char byte; Lcd_I2C_Cursor(row, col); Lcd_I2C_Chr_CP(out_char); }//Final do Lcd_I2C_Chr //Enviar um texto para uma linha e uma coluna Lcd_I2C-PCF8574A void Lcd_I2C_Out(char row, char col, char *text) {//Inicio do Lcd_I2C_Out Lcd_I2C_Cursor(row, col); while(*text) { Lcd_I2C_Chr_CP(*text); text++; } }//Final do Lcd_I2C_Out

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...