il display lo uso con questa configurazione:
- Alimentazione
- RS -> output micro (PB0)
- E -> output micro (PB1)
- D4, D5, D6, D6 -> ai 4 output (PB2 ... PB5)
RW -> GND (non mi interessa leggere i dati già scritti nel display, quindi lo imposto con scrittura permanente)
in sostanza, voglio usare un solo gruppo di porte ( Gruppo B )
ho scritto uno spezzone di codice, potete darmi un parere? (è possibile che in qualche shift ci sia qualche errore) spero di non aver fatto errori madornali...
- Codice: Seleziona tutto
/*
* ArduinoUnoLCD.c
*
* Created: 30/11/2014 02:34:18
* Author: Daniele
*/
#define F_CPU 16000000L
#include <avr/io.h>
#include <string.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define DDRLCD DDRB
#define PORTLCD PORTB
#define RS_pin 0
#define EN_pin 1
#define bit4 2
#define bit5 3
#define bit6 4
#define bit7 5
#define rs_DATA() PORTLCD |= (1<<RS_pin);
#define rs_CMD() PORTLCD &= ~(1<<RS_pin);
#define e_SCK() PORTLCD |= (1<<EN_pin); \
_delay_us(1); \
PORTLCD &= ~(1<<EN_pin);\
_delay_us(1);
#define buffer(a) PORTLCD = a;
void initLCD(){
DDRLCD |= _BV(RS_pin) | _BV(EN_pin) | _BV(bit4) | _BV(bit5) | _BV(bit6) | _BV(bit7);
PORTLCD = 0x00;
}
void writeChar(uint8_t ln, uint8_t pos, uint8_t c){
cli();
uint8_t offset = ln == 1? 0x80 : 0xC0;
uint8_t oldlcd = PORTLCD;
rs_CMD();
buffer(PORTLCD | ((offset + pos)<<4)>>4);
e_SCK()
buffer(PORTLCD | (offset + pos)>>4);
e_SCK();
rs_DATA();
buffer(PORTLCD | c);
e_SCK()
buffer(4<< (PORTLCD | c));
e_SCK();
PORTLCD = oldlcd;
sei();
}
int main(void)
{
initLCD();
writeChar(1,3,'A');
while(1)
{
}
}

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)





