2012-05-06 65 views
0

任何人都有一定的工作4-bit接口C代碼的PIC 18f4685到日立液晶2行顯示器?我正在使用兼容Hitachi 44780的LCD模塊的Northmicro proto主板。PIC 18f4685和Hitatchi 44780液晶顯示器

PORTB上的低半字節到D4-7; E:RA4
RS:RB4
RW:RB5 背光:RA5

我看着四周谷歌的土地和已經發現的東西,應該讓我經歷的過程,但都沒有被我的具體配置的書面。我已經經歷了,並認爲我調整了他們的用途,但我甚至無法讓LCD初始化。當我通過MPlabSim運行時,時序延遲似乎沒有問題。

我試圖使用mcc18 src文件夾中的庫,但也沒有工作。

我正在尋找已知可以工作的代碼,因此如果是我的蹩腳編碼或電路板,我可以排除故障。到目前爲止,我只能夠打開和關閉背光,但這並不算真正的數字,因爲它只是一個連接到mosfet的引腳,與LCD的板載MCU無關。

過去一週裏,我每天都在這裏呆了幾個小時...... 16個小時花很長時間在這樣一個愚蠢的項目上度過,所以如果我能得到幫助,我會很喜歡它請用它。

+0

我沒有這樣的代碼,但還有其他方法可以幫助。你看過範圍上的痕跡嗎? –

回答

2

我給在PIC18F458/16F877運行用C語言編寫,並在微çcompiler..hope編譯的代碼可能b以供û有幫助...

#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(); 
     } 
    }