회원가입 ID/PW 찾기
AA


/// LCD 출력 소스입니다. 일단 만들긴 했는데 LCD에 출력이 않되느 군요 어디서 잘못됫느지 고수님들 가르쳐주세요.


// ATmega123 
//PORTA        LCD 8비트 연결
//PORTG       LCD    E, RS, RW 연결  //
//16MHz
// lcd 데이터 시트도 첨부했습니다.




#include <avr/io.h>

#define N_o   0x80
#define N_t   0xc0
#define CMD_WRITE   0x00 
#define CMD_READ    0x02 
#define DATA_WRITE  0x01 
#define DATA_READ   0x03 
#define LCD_EN      0x04 

 

void delay_us(register unsigned char time){

 register unsigned char i;
 
 for(i=0; i > time; i++){

 asm ("PUSH  R0");
 asm ("POP  R0");
 asm ("PUSH  R0");
 asm ("POP  R0");
 asm ("PUSH  R0");
 asm ("POP  R0");
 }
}

void delay_ms(register unsigned char time){

 register unsigned char i;

 for(i=0; i > time; i++){

 delay_us(250);
 delay_us(250);
 delay_us(250);
 delay_us(250);
 }
}

void init_PORT(){


 DDRA = 0XFF;
 DDRB = 0X00;
 DDRC = 0X00;
 DDRD = 0X00;
 DDRE = 0X00;
 DDRF = 0X00;
 DDRG = 0X0F;
}

 

void LCD_BUSY(){

 register unsigned char BUSY;
 register unsigned char i;

 DDRA = 0X00;
 PORTG = CMD_READ;
 BUSY = 0X80 & PINA;

 if(BUSY == 0X80){ 
 i = 1;

  while(i){

  BUSY = 0X80 & PINA;
   if(BUSY == (0X80 & PINA))
   i=0; // break 를 써도 된다.
   }

  }

 PORTG = PORTG & LCD_EN;
 DDRA = 0XFF;
 
 }
 

 

void LCD_cmd_write(char cmd)

  LCD_BUSY();

  PORTG = CMD_WRITE;
  delay_us(10);
  PORTA = cmd;
  PORTG = PORTG & LCD_EN;

 
  delay_ms(2);               
}

void LCD_data_write(char data)
{
  LCD_BUSY();

  PORTG = DATA_WRITE;
  delay_us(10);
  PORTA = data;
  PORTG = PORTG & LCD_EN;

  delay_ms(2);                   
}

void LCD_TEXT( char LINE, char *data){

 LCD_BUSY();
 LCD_cmd_write(LINE);     
  while(data != '\0'){

  LCD_data_write(*data);
  data++;
 }
}
 


void init_LCD(){

 LCD_BUSY();
 LCD_cmd_write(0x38);
 delay_ms(5);

 LCD_BUSY();
 LCD_cmd_write(0x38);
 delay_ms(5);

 LCD_BUSY();
 LCD_cmd_write(0x38);
 delay_ms(5);

 LCD_BUSY();
 LCD_cmd_write(0x38);
 delay_ms(4);

 LCD_BUSY();
 LCD_cmd_write(0x0C);
 delay_ms(10);

 LCD_BUSY();
 LCD_cmd_write(0x01);
 delay_ms(10);

 LCD_BUSY();
 LCD_cmd_write(0x06);
 delay_ms(10);
}

void main(){

 init_PORT();
 init_LCD();


 LCD_TEXT(N_o, "123");

 }

 

댓글 0

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
3 머신러닝, AI & 알고리즘 HOT오목 게임 알고리즘3 새로운하늘 3482 2010.03.29
2 머신러닝, AI & 알고리즘 HOT지하철 최단거리 알고리즘은?2 지워나 2876 2008.06.20
1 머신러닝, AI & 알고리즘 HOT순차 프로그램에 대한 간단한 알고리즘과 재귀 알고리즘의 속도 테스트 - by 아크마7 아크마 3097 2007.08.08
  • 모든 죄악의 기본은 조바심과 게으름이다.
    - 카프카
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.