0

PIC18f4685からHitachiLCD2ラインディスプレイへの4ビットインターフェイスCコードを確実に動作させる人はいますか?Hitachi44780互換のLCDモジュールを備えたNorthmicroプロトボードを使用しています。

PORTBのニブルをD4-7に下げます。E:RA4
RS:RB4
RW:RB5バックライト:RA5

私はグーグルの土地のあちこちを見て、プロセスを通過するはずのものを見つけましたが、私の特定の構成のために書かれたものはありません。私は経験を積み、自分の用途に合わせてそれらを微調整したと思いますが、LCDを初期化することすらできません。MPlabSimを実行すると、タイミングの遅延は問題ないようです。

mcc18 srcフォルダーのライブラリーも使おうとしましたが、うまくいきませんでした。

動作することがわかっているコードを探しているので、それが私のくだらないコーディングなのかボードなのかをトラブルシューティングできます。これまでのところ、バックライトのオンとオフを切り替えることしかできませんでしたが、MOSFETに接続されたピンであり、LCDのオンボードmcuとは関係がないため、実際にはカウントされません。

この1週間、毎日数時間そこにいました... 16時間は、このようなばかげたプロジェクトに費やすのに長い時間ですので、助けていただければ幸いです。

4

1 に答える 1

2

私はcで書かれ、microcコンパイラでコンパイルされた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();
         }
    }
于 2013-01-03T07:18:34.330 に答える