BASIC4MCU | 질문게시판 | 답변 : Atmega128 LCD 출력이 나오지 않습니다, 코드 확인 부탁드립니다.
페이지 정보
작성자 master 작성일2024-06-25 10:09 조회237회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=23786
본문
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
//
void CLCD_cmd (char c){ PORTD=c; PORTC=0x10; _delay_us(1); PORTC=0; _delay_ms( 3); }
void CLCD_data(char d){ PORTD=d; PORTC=0x14; _delay_us(1); PORTC=4; _delay_us(50); }
//
void LCD_init(void) {
_delay_ms(30);
CLCD_cmd(0x38); CLCD_cmd(0x38); CLCD_cmd(0x38); // FUNCTION_SET
CLCD_cmd(0x0C); // DISPLAY_ON_OFF
CLCD_cmd(0x06); // ENTRY_MODE_SET
CLCD_cmd(0x01); // CLEAR_DISPLAY
}
//
int main(void){
DDRD=0xFF; // data 포트
DDRC=0x1C; // (EN-PC4, R/W-PC3, RS-PC2)
LCD_init();
CLCD_data('A');
while(1){}
}
선연결 제대로 확인해보시고LCD가 고장난 것은 아닌지도 잘 체크 해보세요mcu 포트가 고장날 수도 있으니 포트를 변경해서 돌려보는 것도 필요합니다.CLCD_cmd(0x38); CLCD_cmd(0x38); CLCD_cmd(0x38); // FUNCTION_SET같은 명령을 3번 쓰는 이유는1번만 썼을 때 잘 먹히지 않아서 두세번 쓰는 것으로 해결된 경험이 있어서지금은 관습처럼 사용하게 된 것입니다.
댓글 1
조회수 237코드에막혀님의 댓글
코드에막혀 작성일
답변 감사드립니다. 작성해주신 코드에 데이터 시트에 나와있는 딜레이 시간을 추가하여 해봤지만 아쉽게도 결과가 나오진 않았습니다 ㅎㅎ;;
포트를 전부 다 사용해도 결과가 안나오네요. 일단 코드상 문제가 없다는 것으로 이해하겠습니다. 감사합니다.