LCDにHello.c

この記事は古いです。参考の為に残してます。

LCDにHelloを出力してみる
とりあえず、色々と便利そうなのでLCDを使ってみたい。
しかし、uClinux環境では、どうやってLCDに出力してよいのかわからん。
色々、見ていたら結局、ポートを直接たたいて制御するらしい。
と言うことで、

  • 3069s.hのヘッダファイルをまずGET。
    LCDの制御プログラムを書くのは面倒なので、京大の機械研究会の
    H8用LCD表示プログラム (h8lcd.lzh)を利用させて頂いた。
  • プログラムの作成
    適当なディレクトリ作成して以下のプログラムを作成する。また、3069s.h, lcd.c,lcd.hも
    同じディレクトリに配置する。lcd.cは、P3ポート指定になっているところをP4に修正。

hello.c
#include <stdio.h>
#include “3069s.h”
#include “lcd.c”
int main(void){
init_lcd();
lcd_clear(0);
lcd_write(1,”Hello Hamuken!”);
lcd_write(2,”How are you?”);
return 0;
}

?P3がLCDと接続なっているがこのボードはP4に接続なので、P3をP4と入れ替える。で、”make”してからuClinux-distのromfsディレクトリにコピーして、
uClinux-distディレクトリで”make image”を実行。
後は、ボードにloadして実行。
一応、表示されましたが、一文字目が表示されたり、されなかったりしました。
なので、修正をします。

プログラム修正
原因として、一番怪しいのが、LCDに出す信号のタイミングかな~って事で、
タイミングを修正してみた。深く考えるのもなんなので、
25MHz÷20MHz=1.25ってことで、lcd.cの中のいくつかの値を1.25倍に修正した。

/* Wait 83us */
for (i=0; i<150; i++);????????//20Mhz

for (i=0; i<188; i++);????????//25Mhz
/* Wait 4ms */
for (i=0;i<6500;i++);????????//20Mhz

for (i=0;i<8125;i++);????????//25Mhz

んで、再度makeして挑戦したら、上手くいきました。
修正したファイルをlcd_3069.c、lcd_3069.hとしました。


You may also like...

コメントを残す

メールアドレスが公開されることはありません。


表示されている文字を入力してください! それ以外は任意です。