Ir ao conteúdo
  • Cadastre-se

MplabX - Xc8 - LCD


Posts recomendados

Olá galera, sou novo no fórum, trabalho com eletrônica, recentemente fui promovido para area de engenharia, e esse ano vou começar engenharia na Maua, estou migrando para o MplabX, aprendi no CCS mais como acho que ele é um compilador que faz tudo pra voce, deixei de lado e quero fazer projetos mais na unha, no serviço agente usa o codewarriors para os arm da freescale mais os meus projetos eu uso PIC , estou querendo fazer uma automação residencial coisa basica primeiro para a ver o resultado e depois começar os complementos, vamo a duvida, nao consigo usar a biblioteca do mplabX a XLCD.h alguem já usou ou adptou outra biblioteca com esse compilador?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

mplabx: instalei, fiz um projetinho com ele mas não fui com sua cara. rebobinei pra mplab mesmo. ccs.. esquece. Portanto não vou te ajudar diretamente. Mas me 'digue', qual lcd vai usar? se for deste 16x2 ele é tão tão simples que nem precisa de lib. você pode controlá-lo na unha mesmo como você gosta. Até mesmo alguns simplinhos gráficos p&b dá pra se virar. Agora se for lcd gráfico colorido, hd , touch e tal, aí sim talvez valha a pena pesquisar sobre as funcionalidades de tal lib

Então inicialmente que lcd tem em mente?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Correto amigo. Sua resposta foi tão inteligente quanto óbvia. Neste caso, sim temos algo. Veja isso que faz parte do pacote de um compilador

 

lcd.c

/* *    LCD interface example *    Uses routines from delay.c *    This code will interface to a standard LCD controller *    like the Hitachi HD44780. It uses it in 4 bit mode, with *    the hardware connected as follows (the standard 14 pin *    LCD connector is used): *     *    PORTD bits 0-3 are connected to the LCD data bits 4-7 (high nibble) *    PORTA bit 3 is connected to the LCD RS input (register select) *    PORTA bit 1 is connected to the LCD EN bit (enable) *     *    To use these routines, set up the port I/O (TRISA, TRISD) then *    call lcd_init(), then other routines as required. *     */#ifndef _XTAL_FREQ // Unless specified elsewhere, 4MHz system frequency is assumed #define _XTAL_FREQ 4000000#endif#include    <htc.h>#include    "lcd.h"#define    LCD_RS RA3#define    LCD_RW RA2#define LCD_EN RA1#define LCD_DATA    PORTD#define    LCD_STROBE()    ((LCD_EN = 1),(LCD_EN=0))/* write a byte to the LCD in 4 bit mode */voidlcd_write(unsigned char c){    __delay_us(40);    LCD_DATA = ( ( c >> 4 ) & 0x0F );    LCD_STROBE();    LCD_DATA = ( c & 0x0F );    LCD_STROBE();}/* *     Clear and home the LCD */voidlcd_clear(void){    LCD_RS = 0;    lcd_write(0x1);    __delay_ms(2);}/* write a string of chars to the LCD */voidlcd_puts(const char * s){    LCD_RS = 1;    // write characters    while(*s)        lcd_write(*s++);}/* write one character to the LCD */voidlcd_putch(char c){    LCD_RS = 1;    // write characters    lcd_write( c );}/* * Go to the specified position */voidlcd_goto(unsigned char pos){    LCD_RS = 0;    lcd_write(0x80+pos);}    /* initialise the LCD - put into 4 bit mode */voidlcd_init(){    char init_value;    ADCON1 = 0x06;    // Disable analog pins on PORTA    init_value = 0x3;    TRISA=0;    TRISD=0;    LCD_RS = 0;    LCD_EN = 0;    LCD_RW = 0;    __delay_ms(15);    // wait 15mSec after power applied,    LCD_DATA     = init_value;    LCD_STROBE();    __delay_ms(5);    LCD_STROBE();    __delay_us(200);    LCD_STROBE();    __delay_us(200);    LCD_DATA = 2;    // Four bit mode    LCD_STROBE();    lcd_write(0x28); // Set interface length    lcd_write(0xF); // Display On, Cursor On, Cursor Blink    lcd_clear();    // Clear screen    lcd_write(0x6); // Set entry Mode}

lcd.h

/* *    LCD interface header file *    See lcd.c for more info *//* write a byte to the LCD in 4 bit mode */extern void lcd_write(unsigned char);/* Clear and home the LCD */extern void lcd_clear(void);/* write a string of characters to the LCD */extern void lcd_puts(const char * s);/* Go to the specified position */extern void lcd_goto(unsigned char pos);/* intialize the LCD - call before anything else */extern void lcd_init(void);extern void lcd_putch(char);/*    Set the cursor position */#define    lcd_cursor(x)    lcd_write(((x)&0x7F)|0x80)

maic.c (exemplo de uso)

#include <htc.h> //pic.h#include "lcd.h"voidmain(void){    lcd_init();    lcd_goto(0);    // select first line    lcd_puts("12345678");    lcd_goto(0x40);    // Select second line    lcd_puts("Hello world");    for(;;}

Ler o d.s. também foi uma opção inteligente e óbvia. Creia-me: há quem se recusa a fazê-lo. E creia-me também: depois de dar uma lida, o código acima se iluminará magicamente perante teus olhos

Boa sorte apenas é para os fracos: Pra você ... sucessos!

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Perfeito amigo. +3 acertos: é hitech-c, 16x2, facilmente portável pra qualquer compilador (com algumas 'exccssões') e mc.

 

Lembrando que as linhas são endereçadas de 0x40 em 0x40. Pra facilitar, no seu fonte faça:

#define linha1 0x00#define linha2 0x40#define linha3 0x80#define linha4 0xc0

 
E tente algo como

lcd_goto(linha3+16); //3ª linha, décima sexta coluna

abç

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...