vejamos...eu faria algo assim pra não apagar o display todo:
- Código: Selecionar todos
if (x<=20)
{
lcdgotoxy(3,1);//p.ex.
lcdput(' ');lcdput(' '); //apaga só duas posições
delayms(500);
lcdgotoxy(3,1);//p.ex.
lcdput((x/10)+0x30);lcdput((x%10)+0x30);
delayms(500);
}
me lembro vagamente de ter visto um display piscar em reverso. não sei se era inato do hw do display ou por sw mas era bacaninha. só lendo o d.s. mesmo.
off.. não uso (e não gosto de) lcdput nem lcdgoto. Criei há muitos anos uma função personalizada de acesso direto ao hw que faz isso. Pode não ser totalmente inútil (a ti ou a algum incauto navegante do futuro...)
- Código: Selecionar todos
#define lin1 0x80
#define lin2 0xc0
#define LCD_RS RA5
#define LCD_EN RA4
#define LCD_STROBE LCD_EN=1;asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");LCD_EN=0
- Código: Selecionar todos
void lcd_write(unsigned char c)//4 bits
{
PORTC = (PORTC & 0x0f) | (c & 0xf0);
LCD_STROBE;
c <<= 4;
PORTC = (PORTC & 0x0f) | (c & 0xf0);
LCD_STROBE;
delay(200);
}
- Código: Selecionar todos
void lcd_dec(unsigned char li,unsigned char co,unsigned char nd,unsigned int dado)
{
unsigned char j=0;
unsigned char d[5];
LCD_RS=0; //comandos
lcd_write(li+co);//posiciona cursor
LCD_RS=1; //dados
//if (dado>9999) dado=9999;
d[0]=d[1]=d[2]=d[3]=d[4]=0;
while(dado)
{
d[j]=dado%10;
dado/=10;
j++;
}
while (nd--) lcd_write(d[nd]+0x30);
}
uso
- Código: Selecionar todos
unsigned int a=1234;/p.ex.
lcd_dec(lin2,12,4,a);//linha,coluna,número de dígitos,dado
enjoy