Em baixo deixo o código já organizado para fazer e chamar um caractere especial (como um smile).
Estes displays dispõem de uns endereços na sua memória para alojar caracteres especiais. O problema aqui é que esses endereços estão numa memória RAM e quando há uma falha de energia, têm de ser "feitos" novamente.
Os caracteres podem ser feitos com base numa matriz de 5x8 pontos (sendo que a ultima linha deve ser deixada em branco). No caso do código que aqui apresento essa matriz é definida como elementos do vector "caracter[]". A função "chamar_especial()" apenas acessa o endereço onde foi previamente escrito o caracter. Aqui de futuro, não agora, ainda devo fazer alterações de modo a que consiga mudar facilmente o endereço do novo caracter especial.
Rotina para fazer e chamar ao display o caracter especial:
void especial(){char endereco;char caracter[8]={0b00000, //Matriz 5x80b01010,0b01010,0b00000,0b10001,0b01110,0b00000,0b00000};PORTB = 0b11000000; //DDRAM__delay_us(50);PORTBbits.RB7=0;__delay_us(50);PORTB = 0b11000000;__delay_us(50);PORTBbits.RB7=0;__delay_us(50);for(endereco=0;endereco<8;endereco++){PORTB = 0b10001000;__delay_us(50);PORTBbits.RB7=0;__delay_us(50);PORTB = ((endereco<<1) & 0b1110) + 0b10000000;__delay_us(50);PORTBbits.RB7=0;__delay_us(50);PORTB = ((caracter[endereco]>>3) & 0b10) + 0b11000000;__delay_us(50);PORTBbits.RB7=0;__delay_us(50);PORTB = ((caracter[endereco]<<1) & 0b11110) + 0b11000000;__delay_us(50);PORTBbits.RB7=0;__delay_us(50);}chamar_especial();}
Rotina para chamar ao display o caracter especial do endereço em que foi gravado:
void chamar_especial(){PORTB = 0b11000000; //DDRAM do crac especial__delay_us(50);PORTBbits.RB7=0;__delay_us(50);PORTB = 0b11000000;__delay_us(50);PORTBbits.RB7=0;__delay_us(100);}
0 Responses so far.
Enviar um comentário