AVR2012.02.11 14:32

#include <mega128.h>
#include 
<delay.h>
#include 
<stdio.h>
//
//[lcd1]       [AVR PortA]
//RS (pin4) -----  bit 0
//RD (pin 5) ----- bit 1
//EN (pin 6) ----- bit 2
//사용안함         bit 3
//DB4 (pin 11) --- bit 4
//DB5 (pin 12) --- bit 5
//DB6 (pin 13) --- bit 6
//DB7 (pin 14) --- bit 7
//
#define lcd1_RS  PORTA.0
#define lcd1_E   PORTA.2
#define lcd1_Out PORTA   
// PORTA.4~7 4bits
//
flash char str1[]= " cafe.naver.com ";
flash char str2[]= " circuitsmanual ";
//
void lcd1Data(char d){

    lcd1_RS=1;
    lcd1_Out=(d&0xF0)|1; lcd1_E=1; lcd1_E=0; delay_us(1);
    lcd1_Out=(d<<4)|1;   lcd1_E=1; lcd1_E=0; delay_us(100);
}
//
void lcd1Cmd(char c){
    lcd1_RS=0;
    lcd1_Out=c&0xF0; lcd1_E=1; lcd1_E=0; delay_us(1);
    lcd1_Out=c<<4;   lcd1_E=1; lcd1_E=0; delay_ms(5);
}
//
void lcd1_init(void){
    delay_ms(150); DDRA=0xFF
// lcd port output
    lcd1Cmd(0x28); lcd1Cmd(0x28); lcd1Cmd(0x28);
    lcd1Cmd(0x0C); lcd1Cmd(0x06); lcd1Cmd(0x01); delay_ms(30); 
}
//
void lcd1_gotoxy(char x, char y){
    if(!y)lcd1Cmd(0x80+x);
    else  lcd1Cmd(0xC0+x);
}
//
void lcd1_puts(char *str){ while(*str)lcd1Data(*str++); }
//
void lcd1_putsf(char flash *str){ while(*str)lcd1Data(*str++); }
//
void main(void){
    char buf[30], i;
    int k=1234;
    lcd1_init();
    while(1){
        lcd1_gotoxy(0,0); lcd1_putsf(str1);
        lcd1_gotoxy(0,1); lcd1_putsf(" circuitsmanual ");
        delay_ms(1000);
        for(i=0; i<16; i++)buf[i]=str2[i];
        lcd1_gotoxy(0,0); lcd1_puts(buf);
        sprintf(buf,"test %05d",k);
        lcd1_gotoxy(0,1); lcd1_puts(buf);
        delay_ms(1000);
    }
}

동작 시켜본 것은 아닙니다.

필요한 분은 테스트 해보세요

Posted by 콩알은