Monday, September 29, 2008

AVR ATmega to LCD

LCD is very important in programming because we can’t use debug program. We need to display the result of calculation, variable or other to the LCD to know the program processing that we make. LCD can displaying the result data from the sensor, and can be interaction between microcontroler with the human.

The type LCD that we use is M1632. This LCD have when each row using 16 characteristic. This device is easy to operate and need the low power. For interfacing circuit, LCD don’t need a much of the support component. We need only one resistor and resistor variable to give the contrast voltage to the matrix of LCD.
This is the table of the pin LCD:



This the LCD circuit to microcontroller:



When we want to display the string to the LCD is easy. We are need a tool to compile our listing with CodeVision AVR. You can having with download from the site http://www.hpinfotech.ro. You must install this program and set this program like picture inside:



In menu setting, choose programmer and make setting programmer in Programmer setting and doing changing this setting like this



After those, make a new project that appropriate with the listing that will make. Attention this block program:


//Alphanumeric LCD Module functions
#asm
.equ _lcd_port=0x15 ;PORTC
#endasm
#include

The block must be participate if we ‘ll make Generate file way….and automatically its will done. The meaning of the instruction block above is to set LCD to the PORT C and then linking in library lcd.h that the inside of those provide the instructions for access to the LCD.
This is the listing program that can be to practice our skill:

#include
//Alphanumeric LCD Module functions
#asm
.equ _lcd_port=0x15 ;PORTC
#endasm
#include
// Declare your global variables here
Void main (void)
{
// Declare your local variables here
// Input / Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// PORT B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// PORT C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// PORT D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
//OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: normal top=FFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: normal top=FFh
//OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt (s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input capture by Timer/Counter 1: Off
ACSR=0x00;
SFIOR=0x00;

// LCD module initialization
Lcd_init(16); //inisialisasi LCD
Lcd_gotoxy(0,0); //menempatkan posisi di 0,0
//kolom 0, baris 0
lcd_putsf(“Halo..”): //menampilkan string Halo..
lcd_gotoxy(0,1); //menempatkan posisi
//kolom 0, baris1
Lcd_putsf(“Nama saya Joni”); //menampilkan string
While (1)
{
// Place your code here
}
}
Lets to practice and Good Luck.
The End.