#include < at89C2051.h > /* Include 89C2051 header file */
char num[ ] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void wait (void) /* wait function */
{ ; }
void main( void ){
unsigned char cnt, right;
unsigned int i;
P1 = 0; /* ZERO port P1 & port P3 */
P3 = 0;
for( ;; ){
for (right=0;right<3;right++)
{
P3 = right;
for (cnt=0;cnt<10;cnt++)
{
P1 = num[cnt];
for (i = 0; i < 10000; i++)
{
wait(); /* delay for half second */
}
}
}
}
}
Pemrograman LCD Karakter 2×16 Dengan Mikrokontroler AVR
Berikut ini contoh firmware untuk pemrograman LCD Karakter 2×16.
#include <stdio.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
#include <lcdb.h>
{
// Declare your local variables here
// 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=0×00;
DDRA=0×00;
// 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=0×00;
DDRB=0×00;
// 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=0×00;
DDRC=0×00;
// 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=0×00;
DDRD=0×00;
LCD_Init();
#asm(“sei”)
//=============================================
while(1)
{
LCD_printf(sz);
}
}
#include <delay.h>
#include <stdio.h>
#include <string.h>
#define Home 0×02
#define Entry_Mode 0×04
#define Set_Display 0×08
#define Set_Cursor 0×10
#define Function 0×20
#define Decrement 0×00
#define Increment 0×02
#define Shift_Off 0×00
#define Shift_On 0×01
#define Display_Off 0×00
#define Display_On 0×04
#define Cursor_Off 0×00
#define DCursor_On 0×02
#define Blink_Off 0×00
#define Blink_On 0×01
#define Four_Bits 0×00
#define Eight_Bits 0×10
#define One_Line 0×00
#define Two_Line 0×08
#define Font5x7 0×00
#define Font5x10 0×04
#define LCD_pinRS 0×80 // PA0
#define PORT_LCD_pinRS PORTA
#define LCD_pinRD 0×40 // PA1
#define PORT_LCD_pinRD PORTA
#define LCD_pinEN 0×20 // PA2
#define PORT_LCD_pinEN PORTA
#define LCD_BL_CTRL 0×10 // PA3
#define PORT_LCD_BL_CTRL PORTA
#define SET_LCD_pinRS PORT_LCD_pinRS |= LCD_pinRS
#define RES_LCD_pinRS PORT_LCD_pinRS &= ~LCD_pinRS
#define RES_LCD_pinRD PORT_LCD_pinRD &= ~LCD_pinRD
#define RES_LCD_pinEN PORT_LCD_pinEN &= ~LCD_pinEN
#define RES_LCD_BL_CTRL PORT_LCD_BL_CTRL &= ~LCD_BL_CTRL
{
DDRA = 0xff;
delay_ms(3);
LCD_CmdWrite(Function+Four_Bits+Two_Line+Font5x7);
delay_ms(3);
LCD_CmdWrite(Function+Four_Bits+Two_Line+Font5x7);
delay_ms(3);
LCD_CmdWrite(Function+Four_Bits+Two_Line+Font5x7);
delay_ms(3);
LCD_CmdWrite(Clear_Display);
delay_ms(3);
LCD_CmdWrite(Entry_Mode+Increment+Shift_Off);
delay_ms(3);
LCD_CmdWrite(0x0c); // display on, cursor off, non-blink
delay_ms(3);
LCD_CmdWrite(0×02); // cursor home
{
char DL, DH;
DH=(((uc&0×80)>>7)+((uc&0×40)>>5)+((uc&0×20)>>3)+((uc&0×10)>>1));
DL=(((uc&0×08)>>3)+((uc&0×04)>>1)+((uc&0×02)<<1)+((uc&0×01)<<3));
RES_LCD_pinRD;
PORTA &= 0xf0;
PORTA |= DH; // kirim High Nibble
RES_LCD_pinEN; // beri pulsa LCD EN
LCD_delay_5us();
PORTA &= 0xf0;
PORTA |= DL; // kirim Low Nibble
RES_LCD_pinEN; // beri pulsa LCD EN
LCD_delay_3ms();
{
char DL, DH;
DH=(((uc&0×80)>>7)+((uc&0×40)>>5)+((uc&0×20)>>3)+((uc&0×10)>>1));
DL=(((uc&0×08)>>3)+((uc&0×04)>>1)+((uc&0×02)<<1)+((uc&0×01)<<3));
RES_LCD_pinRD;
PORTA &= 0xf0;
PORTA |= DH; // kirim High Nibble
RES_LCD_pinEN; // beri pulsa LCD EN
LCD_delay_5us();
PORTA &= 0xf0;
PORTA |= DL; // kirim Low Nibble
RES_LCD_pinEN; // beri pulsa LCD EN
LCD_delay_3ms();
}
{
char DL, DH;
DH=(((uc&0×80)>>7)+((uc&0×40)>>5)+((uc&0×20)>>3)+((uc&0×10)>>1));
DL=(((uc&0×08)>>3)+((uc&0×04)>>1)+((uc&0×02)<<1)+((uc&0×01)<<3));
SET_LCD_pinRD;
PORTA &= 0xf0;
PORTA |= DH; // kirim High Nibble
RES_LCD_pinEN; // beri pulsa LCD EN
LCD_delay_5us();
PORTA &= 0xf0;
PORTA |= DL; // kirim Low Nibble
RES_LCD_pinEN; // beri pulsa LCD EN
LCD_delay_3ms();
}
{
unsigned char j;
{
unsigned char i, j;
for(i = 0; i < 30; i++);
}
{
unsigned char i, j;
for(i = 0; i < 50; i++);
}
{
unsigned char i, j;
for(i = 0; i < 100; i++);
}
{
LCD_CmdWrite(0xc0); // 2nd line, 1st position
}
else{
LCD_DataWrite(*pc); // put character
}
}
}
{ unsigned char aaa;
SET_LCD_BL_CTRL;
for(aaa = 0; aaa < 100; aaa++) // delay 1s
LCD_delay_10ms();
RES_LCD_BL_CTRL;
for(aaa = 0; aaa < 50; aaa++) // delay 1s
LCD_delay_10ms();
}
{ unsigned char aaa;
SET_LCD_BL_CTRL;
for(aaa = 0; aaa < 50; aaa++) // delay 1s
LCD_delay_10ms();
}
{ unsigned char aaa;
RES_LCD_BL_CTRL;
for(aaa = 0; aaa < 50; aaa++) // delay 1s
LCD_delay_10ms();
}
Mikrokontroler AVR ATmega128/64
Software Programmer AT89C2051
Pemrograman IC ini dapat dilakukan secara in-system programming (ISP) melalui port 3. Salah satu software programmer yang dapat digunakan untuk tipe ic ini yaitu IC-Prog yang dapat Anda download di sini. Sebaiknya Anda juga mempersiapkan kabel data untuk keperluan tersebut. Untuk lebih sederhana, Anda dapat mempergunakan port paralel pada PC Anda. Skema kabel data programmer dapat Anda download di sini.Cara Mudah Menguasai Mikrokontroler
), itu pun setelah remedial. Hingga pada semester akhir, tiba saatnya untuk mengajukan judul TA (Tugas Akhir). Tentu saja karena alasan tersebut, pada proposal judul TA saya, tidak ada kata “mikrokontroler” di dalamnya. Namun, kemudian dosen pembimbing menyarankan untuk menambahkan komponen mikrokontroler pada judul terakhir yang saya ajukan (setelah 3 kali ganti judul). Akhirnya, dengan sangat terpaksa judul TA itu saya bubuhi kata “mikrokontroler”, sebuah kata yang sangat saya hindari. Untuk itu, saya gali semua informasi yang berhubungan dengan “mikrokontroler” di internet. Tidak tanggung-tanggung, saya minta seorang pakar dari LIPI Bandung untuk menjadi pembimbing.
Software AT89ISP
Tags:
0 komentar:
Posting Komentar