adjusted lcd.c to match this board
This commit is contained in:
parent
bb36d903d0
commit
9771416756
37
lcd.c
37
lcd.c
@ -16,18 +16,31 @@
|
||||
#include "timer.h"
|
||||
#include "lcd.h"
|
||||
|
||||
//#define WAIT_250_ns() _delay_us(1)
|
||||
#if (F_CPU <= 4000000UL)
|
||||
#define WAIT_250_ns() _NOP()
|
||||
#elif (F_CPU <= 8000000UL)
|
||||
#define WAIT_250_ns() _NOP();_NOP()
|
||||
#elif (F_CPU <= 12000000UL)
|
||||
#define WAIT_250_ns() _NOP();_NOP();_NOP()
|
||||
#elif (F_CPU <= 16000000UL)
|
||||
#define WAIT_250_ns() _NOP();_NOP();_NOP();_NOP()
|
||||
#elif (F_CPU <= 20000000UL)
|
||||
#define WAIT_250_ns() _NOP();_NOP();_NOP();_NOP();_NOP()
|
||||
#else
|
||||
#include <util/delay.h>
|
||||
#define WAIT_250_ns() _delay_us(1)
|
||||
#endif
|
||||
|
||||
#define LCD_DATA_MODE() (PORTC |= (1<<PC4))
|
||||
#define LCD_CMD_MODE() (PORTC &= ~(1<<PC4))
|
||||
#define LCD_DATA_MODE() (PORTD |= (1<<PD6))
|
||||
#define LCD_CMD_MODE() (PORTD &= ~(1<<PD4))
|
||||
|
||||
#define LCD_SET_ENABLE() (PORTC |= (1<<PC5))
|
||||
#define LCD_RESET_ENABLE() (PORTC &= ~(1<<PC5))
|
||||
#define LCD_SET_ENABLE() (PORTD |= (1<<PD5))
|
||||
#define LCD_RESET_ENABLE() (PORTD &= ~(1<<PD5))
|
||||
|
||||
// !!!!!!!
|
||||
#define LCD_SET_READ() DDRC &= ~(0x0f);PORTC &= ~(0x0f);PORTB |= (1<<PB0)
|
||||
#define LCD_SET_WRITE() PORTB &= ~(1<<PB0);DDRC |= 0x0f
|
||||
#define LCD_BUSY_FLAG (0x80)
|
||||
#define LCD_SET_READ() DDRA &= ~(0x0f);PORTA &= ~(0x0f);PORTD |= (1<<PD7)
|
||||
#define LCD_SET_WRITE() PORTD &= ~(1<<PD7);DDRA |= 0x0f
|
||||
// !!!!!!!
|
||||
|
||||
|
||||
@ -45,7 +58,7 @@ static inline uint8_t lcd_read_byte(uint8_t RS)
|
||||
|
||||
LCD_SET_ENABLE();
|
||||
WAIT_250_ns();
|
||||
byte = (PINC<<4);
|
||||
byte = (PINA<<4);
|
||||
LCD_RESET_ENABLE();
|
||||
|
||||
WAIT_250_ns();
|
||||
@ -53,7 +66,7 @@ static inline uint8_t lcd_read_byte(uint8_t RS)
|
||||
|
||||
LCD_SET_ENABLE();
|
||||
WAIT_250_ns();
|
||||
byte |= PINC & 0x0f;
|
||||
byte |= PINA & 0x0f;
|
||||
LCD_RESET_ENABLE();
|
||||
|
||||
return byte;
|
||||
@ -66,7 +79,7 @@ static inline void lcd_wait_while_busy(void)
|
||||
uint8_t byte;
|
||||
do {
|
||||
byte = lcd_read_byte(0);
|
||||
} while (byte & LCD_BUSY_FLAG);
|
||||
} while (byte & 0x80);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -74,7 +87,7 @@ static inline void lcd_wait_while_busy(void)
|
||||
static inline void send_nibble(uint8_t nibble)
|
||||
{
|
||||
LCD_SET_WRITE();
|
||||
PORTC = (PORTC & 0xf0) | (0x0f & nibble);
|
||||
PORTA = (PORTA & 0xf0) | (0x0f & nibble);
|
||||
LCD_SET_ENABLE();
|
||||
WAIT_250_ns();
|
||||
LCD_RESET_ENABLE();
|
||||
@ -136,7 +149,7 @@ void lcd_cursor(uint8_t blink)
|
||||
|
||||
void lcd_init(void)
|
||||
{
|
||||
/* Initialize both ATmega and Dsiplay
|
||||
/* Initialize both ATmega and Display
|
||||
* After return from this function,
|
||||
* display we be set to 4-bit data mode
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user