2012-05-06 2 views
0

누구나 히타치 LCD 2 라인 디스플레이에 PIC 18f4685를위한 4 비트 인터페이스 C 코드를 사용해야합니까? 저는 Northmicro 프로토 보드와 Hitachi 44780 호환 LCD 모듈을 사용하고 있습니다.PIC 18f4685 및 히타치 44780 LCD

PORTB에서 D4-7 로의 하위 니블; E : RA4
RS : RB4
RW : RB5 백라이트 : RA5는

나는 구글 땅 주위를 검토 ​​한 과정을 통해 저를 받아야하지만 아무도 내 특정 구성을 위해 작성되어 있지 않은 그 물건을 발견했다 . 나는 끝까지 갔고 내가 사용하기 위해 그들을 조정했다라고 생각한다. 그러나 나는 심지어 초기화하는 LCD를 얻을 수 없다. 타이밍 지연은 MPlabSim을 통해 실행할 때 괜찮은 것처럼 보입니다.

mcc18 src 폴더에서도 라이브러리를 사용하려고했지만 그 중 하나가 작동하지 않았습니다.

내 허위 코딩이나 보드 인 경우 문제를 해결할 수 있도록 알려진 코드를 찾고 있습니다. 지금까지는 백라이트 만 켜고 끌 수 있었지만 실제로는 MOSFET에 연결된 핀일 뿐이므로 LCD의 온보드 LCD와 아무 관련이 없습니다.

저는 지난 주 동안 매일 몇 시간 씩 그렇게했습니다 ... 16 시간은 이렇게 바보 같은 프로젝트에 오래 머무를 수있어서 도움의 손길을 얻을 수 있다면 좋겠어요. 제발 그걸로.

+0

나는 그런 코드가없는, 그러나 우리가 도울 수있는 다른 방법이 있습니다. 범위의 흔적을 보았습니까? –

답변

2

내가 그것을 U에 도움이 ㄱ 있습니다 C로 작성 및 마이크로 C의 compiler..hope 컴파일 PIC18F458/16F877에서 실행되는 코드를주는거야 ...

#define rs PORTB.F0 
#define rw PORTB.F2 
#define en PORTB.F1 
#define lcd PORTD 


    void delay() 
    { 
     int i; 
     for(i=0;i<500;i++); 

    } 


    void lcd_cd(unsigned char c) 
    { 
     rs=0; 
     lcd = (lcd & 0x0F) | (c & 0xF0); 
     en=1; 
     delay(); 
     en=0; 
     lcd = (lcd & 0x0F) | (c <<4); 
     en=1; 
     delay(); 
     en=0; 

    } 



    void lcd_data(char *c) 
    { 
     rs=1; 
     while(*c!='\0') 
     { 

      lcd = (lcd & 0x0F) | (*c &0xF0); 
      en=1 ; 
      delay(); 
      en=0; 
      lcd = (lcd & 0x0F) | (*c <<4); 
      en=1; 
      delay(); 
      en=0; 
      c++; 
     } 
    } 



    void lcd_int() 
    { 

     lcd_cd(0x02); 
     delay(); 
     lcd_cd(0x28); 
     delay(); 
     lcd_cd(0x80); 
     delay(); 
     lcd_cd(0x01); 
     delay(); 
     lcd_cd(0x0e); 
     delay(); 
    } 




    void main() 
    { 
     rw=0; 
     TRISB=0X00; 
     TRISD=0X00; 

     while(1) 
     { 
       lcd_int(); 
       delay(); 
       lcd_data("HELLO INDIA"); 
       delay(); 
       lcd_cd(0xc2); 
       lcd_data("HELLO INDIA"); 
       delay(); 
     } 
    }