Coding the LCD E block (EB005)

For C and ASSEMBLY users to post questions and code snippets for programming in C and ASSEMBLY. And for any other C or ASM course related questions.

Moderators: Benj, Mods

Post Reply
Exulian
Posts: 1
Joined: Tue Oct 26, 2010 1:44 pm
Contact:

Coding the LCD E block (EB005)

Post by Exulian »

Hello everyone,

I am using the EB005 with the KS006U LCD controller on it. Now I have been trying to program it with avr studios 4. Using an ATmega234P. I have searched far and wide and have not found anything that works for me yet. So could anyone please help me? This is the code i am currently using. I made this code based on PORTA (I am trying to control it trough PORTA) and of of this earlier post http://79.99.43.2/mmforums/viewtopic.ph ... 8d7f0c55e2 The board I am using to program my Controller and LCD on, is the EB019-00-02 ATmel AVR Board

Code:

Code: Select all

#define F_CPU 1000000UL

#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>

int lcd_high4bit, lcd_low4bit, lcd_8bit, RS;
//char character;

void LCD_RawSend(lcd_8bit, RS)
{
	lcd_high4bit = ((lcd_8bit & 0xf0) >>4);
	lcd_low4bit = (lcd_8bit & 0x0f);
	PORTA = 	(lcd_high4bit << 0) | ( RS << 4);
	_delay_us(100);
	PORTA |= 	(1<<5);
	_delay_us(100);
	PORTA &= 	~(1<<5);
	PORTA = 	(lcd_low4bit << 0) | ( RS << 4);
	_delay_us(100);
	PORTA |= 	(1<<5);
	_delay_us(100);
	PORTA &= 	~(1<<5);
	_delay_us(100);
}

void LCD_Clear()
{
	LCD_RawSend(0x01, 0);  //clear display
	_delay_ms(1);
	LCD_RawSend(0x02, 0);  //home
	_delay_ms(1);
}

void LCD_Init()
{
	LCD_RawSend(0x33, 0);  //set to 4-bit mode
	LCD_RawSend(0x32, 0);  //set 4-bit mode (repeat)
	LCD_RawSend(0x2c, 0);  //2-line, 5x11
	LCD_RawSend(0x06, 0);  //move left, no display shift
	LCD_RawSend(0x0f, 0);  //display on, cursor on, cursor blink on.
	LCD_Clear();
}

int main()
{
	DDRA = 0xff;
	DDRD = 0xff;
	PORTD = 0xff;
	_delay_ms(30);
	LCD_Init();
	//character = 0x41 ;
	//LCD_RawSend(character, 0x10);
	while (1)
	{
		
	}
	return 0;
}
The endless while loop is just to make sure nothing happens to the controller after it has been initialized.

Thanks in advance guys!

Exulian

User avatar
Benj
Matrix Staff
Posts: 15312
Joined: Mon Oct 16, 2006 10:48 am
Location: Matrix TS Ltd
Has thanked: 4803 times
Been thanked: 4314 times
Contact:

Re: Coding the LCD E block (EB005)

Post by Benj »

Hello Exulian,

Why not install the demo version of Flowcode for AVR, create a LCD program, Compile to C code and then use the C code for the LCD functions in AVR studio.

While your at it you may also see some of the bonuses of using Flowcode. Eg not having to pour through datasheets and spend days to get a simple thing like an LCD up and running.

Post Reply