Como disse no artigo anterior, a solução acabaria por fazer a mina própria biblioteca, assim este artigo é sobre o estado em que se encontra a mesma.
Consegui fazer com que os primeiros caracteres aparecessem no ecrã.
Daí dei um jeito no código "em bruto", para ficar mais flexível e fácil de usar no futuro.
Basicamente o que estou a fazer é a inicialização do LCD, a colocação do cursor num endereço e a escrita de caracteres com incremento automático do endereço do cursor.
Código para utilização do LCD com comunicação a 4 bits.Rotina de configuração do LCD:
void config_lcd(){// E RS RW D7 D6 D5 D4// RB7 RB6 RB5 RB4 RB3 RB2 RB1char i;char config[7]={0b10000100, //1ª config - 4bits0b10000100, //4bits; 2linhas; 5x8pontos + E0b10010000, //4bits; 2linhas; 5x8pontos + E0b10000000, //E + display ON; mostra cursor; cursor pisca0b10011110, //E + display ON; mostra cursor; cursor pisca0b10000000, //E + cursor incrementa; sem display shift0b10001100, //E + cursor incrementa; sem display shift};for(i=0;i<7;i++){PORTB = config[i];__delay_us(50);PORTBbits.RB7=0;__delay_us(50);}}
Rotina de posição do cursor:
void cursor_lcd_pos(char posicao){/** 00h -> linha 1* 40h -> linha 2*/PORTB = ((posicao>>3) & 0b1110) + 0b10010000;__delay_us(50);PORTBbits.RB7=0;__delay_us(50);PORTB = ((posicao<<1) & 0b11110) + 0b10000000;__delay_us(50);PORTBbits.RB7=0;}
Rotina de escrita no display:
void escrever_lcd(char texto[]){char length, i;length=strlen(texto);for(i=0;i<length;i++){PORTB = ((texto[i]>>3) & 0b11110) + 0b11000000;__delay_us(50);PORTBbits.RB7=0;__delay_us(50);PORTB = ((texto[i]<<1) & 0b11110) + 0b11000000;__delay_us(50);PORTBbits.RB7=0;__delay_us(50);}}
Exemplo de código main();
void main(){PIC_init();config_lcd();cursor_lcd_pos(3);escrever_lcd("Ola mundo ");}
Bom dia teria como você postar o cabeçalho ? pois estou tendo dificuldade, para compilar a biblioteca, desde já agradeço e parabenizo-o pelo ótimo trabalho.
se puder enviar o cabeçalho por e-mail ou postar no blog eu agradeço.
reinoso360@gmail.com
Olá.
Em que parte está a ter problemas?
Não sei o que entende por "cabeçalho", mas estas são funções que, após configurar o PIC, chamo a partir do main().
No final eu tenho um exemplo de programa main(). Não há nenhum "include" especial... é somente isto que está em cima.
Configure o processador, inicialize o micro e depois é somente copiar as funções e cola-las no programa.
Possivelmente não estou a ajudar muito, pois não estou a ver muito bem o que pretende com "cabeçalho"... :(.
Cumps, e obrigado
Pro favor eu necessito de quais #include é necessário para este programa,
e o mesmo necessita da biblioteca xlcd?
Olá.
Não necessitou de biblioteca alguma...
Consegui so faltava colocar colocar as portas como TRIS = 1; deu certo
Obrogado
Agora como eu imprimo no LCD uma variavel?
O ciclo é o mesmo...
Só enviar o numero em ASCII para esse ciclo e ele imprime no LCD.
OI David. Seu site é muito bom, parabéns. Gostaria de saber a sua opinião (comarativa) sobre o XC8 e o C18. Estou querendo migrar para um dos dois, cansei de CCS.
Andei usando um pouco o XC8 e conversando com outros programadores, me disseram que este é bom, mas tem poucas exemplos ou rotinas prontas.
Obrigado
Olá.
Sim, exemplos são muito poucos e bibliotecas nenhumas... mas é o futuro.
Eles agora só desenvolvem XC e deixaram o C18, o hi-tech, etc.
Demora um pouco até ganhar hábito a trabalhar com o MPLAB XC mas depois de algum tempo começamos a perceber as melhorias e uma proximidade maior com a "máquina".
Aposte em XC8 ;)
Abraço