HD44780 LCD 모듈의 전원 초기화


10

HD44780 클론 LCD 모듈 인 KS0066U를 사용하고 있습니다. 장치의 전원을 빠르게 껐다 켜는 경우를 제외하고 모듈에서 모든 것이 정상적으로 작동합니다 (on-> off-> on). 어떤 이유로 전원이 매우 짧으면 디스플레이 모듈이 2 라인 LCD 디스플레이 대신 1 라인 LCD로 잘못 초기화됩니다. 이 행동의 원인은 무엇입니까? 소프트웨어에서이를 방지 할 수있는 방법이 있습니까?

편집 : 8 비트 모드가 아닌 4 비트 모드에서 디스플레이 컨트롤러를 사용하고 있습니다.


아무도 귀하의 질문에 투표권이 있다고 생각합니다.
Kortuk

일부 HD44780 클론의 데이터 시트는 잘 작성되지 않았습니다. 내 목표는 대화를 초기화하는 적절한 방법이 무엇인지 대화하는 것입니다. 어쩌면 4 비트 모드에서 사용하는 데 문제가있는 유일한 사람 일 수 있습니다.
mjh2007

아니, 나는 지금 4 비트 모드에서 실행중인 동일한 문제를 겪고있다. 간단한 문자 LCD를 마지막으로 프로그래밍 한 지 약 15 년이 지났으며 학교에있을 때 다시 디버깅하기가 어려웠던 것을 기억합니다. 그래도 나는 당신에게 멀지 않습니다. 단일 문자를 표시 할 수 없기 때문에 초기화를 올바르게 할 수도 없습니다. :)
Dave

답변:


4

초기화 코드를 변경하여 function set 명령의 상위 4 비트 니블을 두 번 보냈습니다. 그런 다음 상위 4 비트 니블 다음에 하위 4 비트 니블을 다시 보냅니다. 이것은 상위 4 비트 니블을 보낸 다음 기능 설정 명령 상위 4 비트를 보낸 다음 하위 4 비트를 보낼 수 있음을 나타내는 데이터 시트와 일치하지 않습니다.

// 때때로 의사 코드로 작동
port = 0x20;
e = 1; e = 0;
포트 = 0x20;
e = 1; e = 0;
포트 = 0xC0;
e = 1; e = 0;

// 항상 작동합니다 의사 코드
port = 0x20;
e = 1; e = 0;
e = 1; e = 0;
포트 = 0x20;
e = 1; e = 0;
포트 = 0xC0;
e = 1; e = 0;


2

내 생각 엔 초기화 시퀀스에서 필요한 지연이 누락되었을 것입니다. 명령을 보내려고 할 때 디스플레이가 사용 중이면 해당 명령은 무시됩니다. 프로 시저를 시작할 때 디스플레이가 4 비트 모드에 있고 명령의 전반으로 "0000"이 표시된 경우 "0011"에 클럭하면 전체 명령이 "00000011"로 표시됩니다. 디스플레이가 최대 1.6ms 동안 사용중 상태가됩니다.

또한, "0011"명령이 디스플레이로 전송 될 때, 디스플레이에 의해 보여지는 전체 8 비트가 모드 세트 명령을 형성하는 방식으로 디스플레이에서 하위 데이터 와이어를 배선하는 것이 가능하다면 좋다 사용중인 디스플레이 유형에 맞습니다. 이미 사용중인 디스플레이를 재설정 할 때 디스플레이 고장을 피하는 데 도움이됩니다 (디스플레이가 주기적으로 결함없이 수행 될 수있는 경우 디스플레이를 주기적으로 재설정하는 것이 좋습니다. 그 자체).


1

문제에 대한 해결 방법을 찾았습니다.

LCD 컨트롤러를 초기화 / 구성하기 전에 시작시 1000 밀리 초 지연을 추가했습니다. 그것은 나를 위해 아주 잘 작동했습니다.

더 낮은 지연 (100, 200ms)은 잘 작동하지 않습니다. 참고 사항 : 그것은 4 비트 데이터 버스에서만 발생했습니다.

행운을 빕니다!


0

코드에 지연을 삽입하면 스위치를 켤 때 LCD가 시작될 때 초기화 할 수있을만큼 시간이 오래 걸립니다. 최대 수백 밀리 초.

LCD 전원을 마이크로 컨트롤러에 연결하고 시동 후 1 초 동안 LCD 전원을 끌 수도 있습니다.


시작시 100ms 지연
mjh2007

다른 제안을 해보십시오. 핀에서 LCD 전원을 직접 제어 할 수도 있습니다. 몇 mA를 넘지 않아야합니다.
Thomas O

실제로 최대 허용 지연이 있습니까? 이 LCD의 가장 중요한 점은 최소 금액을 기다리는 것이지만 타이밍이 맞지 않으면 안전하게 재생할 수 있고 더 오래 기다릴 수 있다고 생각했습니다.
Dave

@Dave, 당신은 "최대 지연"을 잘못 해석했을 수도 있습니다. 그것은 제가 추천 할만한 합리적인 지연 일뿐입니다. 예를 들어, 몇 시간을 기다리는 것은 약간 극단적 일 것입니다.
Thomas O

롤! 글쎄, 그것이 당신이 의미하는 바라고 생각했지만 아직 LCD를 초기화하지 않았기 때문에 뭔가 빠진 것이 없도록하고 싶었습니다. 나는 여기에 나를 조이고있는 대비가 아닌지 확인하기 위해 냄비를 잡아야하는지 궁금합니다. :)
Dave

0

이것이 전혀 도움이되는지 확실하지 않지만 Arduino 프로젝트에서 KS0066U를 망쳤습니다. 여기 링크가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.