有機ELディスプレイの制御について質問

このQ&Aのポイント
  • NECの78Kシリーズのマイコンを使って有機ELディスプレイの表示をさせるための制御方法について困っています。
  • 128X64のドットマトリクスを使い指定の文字を制御させる事ができずに困っています。
  • C言語のプログラムで文字をディスプレイに表示させる方法を教えていただきたいです。
回答を見る
  • ベストアンサー

有機ELディスプレイの制御

はじめまして。現在NECの78Kシリーズのマイコンを使って有機ELディスプレイの表示をさせるため、悪戦苦闘しています。制御ドライバーは「SH1101A」という台湾メーカー?のものを使って制御させようとしています。 イニシャルをかけ、ディスプレイに画像を表示させるところまではできました。しかし、128X64のドットマトリクスを使い指定の文字を制御させるという事がどうしてもできずに困っています。 フォントはMicro chipのPIC18F4XK20 Starter Kit から参考にして rom unsigned char g_pucFont[95][5] = { { 0x00, 0x00, 0x4f, 0x00, 0x00 }, // ! 0x21 { 0x00, 0x07, 0x00, 0x07, 0x00 }, // " 0x22 というような配列を流用して8X5ドットにて文字フォントを作成する ところまではできました。 その文字フォントを使って、ディスプレイ表示関数に「Hello World!」などの文字を入力したら、ディスプレイにその文字を反映させるという事がしたいのです。 下記はイメージです。 void Display(*pd) のような関数をつくり Display(Hello Wolrd!); という命令が来たらディスプレイに文字を 表示させるという流れです。 要は関数で指定した文字を表示させたいだけなのです。。 C言語のプログラムでご指導していただけると幸いです。 サンプルプログラムと同じ環境PIC18FXK20であればすんなり動くのでしょうが、78Kに移植しなければいけないのでうまくいっておりません。 まわりでも出来る人がいなく、ネットで検索をかけてもSH1101Aサンプルプログラムなどの情報が少なく困っています。申し訳ありませんが、ご教授お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>C言語のプログラムでご指導していただけると幸いです。 は本気でソースを書くとかなりメンドイので概略だけ。 font_tbl[256];    // フォントテーブル(ASCII:0x00-0xff) int sample( char *a_str ) {  // 一応バッファの確認  if( a_str == NULL )   return 1;  // 文字列の終端までループ  //(オーバーフロー対策として、データ長チェックもつけると安全度が増す)  while( *a_str != '\0' )  {   // font_tbl[*a_str]のマップデータを表示する処理   a_str++;  // 次のデータ位置へ  }  return 0; }

shro0614
質問者

お礼

SnowShower様 ご回答有難うございます。 ご参考に示していただいたプログラムはフォントとドットマトリクスとの 関連性ができた後の流れなのかなと思っています。 1ドットずつプロットする関数を作成し、g_pucFont[95][5] との係わり合いをプログラム化する作業が先に入ってくるのかと思いますが、C言語が不慣れなため、その部分が作成できていない状態です。。。 一度作ってしまったらなんだこんなもんかなどと思うのでしょうが、経験不足のためパニくっています。。

その他の回答 (1)

回答No.2

No.1です。 確認させてください。 >イニシャルをかけ、ディスプレイに画像を表示させるところまではできました。 >というような配列を流用して8X5ドットにて文字フォントを作成する ところまではできました。 ということなので、LCDのドットと表示データのドットの関係が理解できていると思っていたのですが、ひょっとしてこの部分を理解されてない状態ですか? No.1はそこは理解しているうえでの回答だったのですが…… 使用するドライバーによって制御方式は多種多様なのでこの部分がわからないとどうしようもないのですが、 代表的な「アドレスマッピング」型であれば、左上や左下等の一点から8bitもしくは16bitのサイズでアドレスが割り当てられています。 例えば、左上が開始点で8bit単位のデータサイズであれば、 1行目:アドレス 0~15(128/8bit=16) 2行目:アドレス16~31  | 64行目:アドレス1008~1023 となります。 左上(0,0)に表示するなら、「アドレス0に[0]のデータ、アドレス16に[1]のデータ……」という形です。 ここで問題となるのが、表示位置が8bit単位「以外」の場合です。 この場合は、そのままデータを送るのではなく、ビットをずらして設定する必要があります。 「abcd efgh」というビットを「左から2ビット目」から表示する場合には アドレス0に「**ab cdef」、アドレス1に「gh** ****」をセットする必要あります。 「ビットシフト」や「論理演算」は大丈夫ですよね? 違うところがわからないのであれば、その部分を書いていただけると回答しやすいです。

shro0614
質問者

お礼

ご連絡有難うございます。 前回頂いた回答とビットマップとの関連性を再整理することにより、 無事指定の文字を8x8ドットにて表示させることに成功しました! といってもポインタの概念を根底から理解しているわけではなく、 とりあえず動作したというレベルですので、まだまだ改良が必要です・・・ ご丁寧にご回答して頂きありがとうございました!!

関連するQ&A

  • 有機ELディスプレイへの画像表示

    PICマイコンを使って有機ELディスプレイに画像を表示しようとしています。そのサンプルプログラムの中で以下の記述があるのですが、何をしようとしているのか分かりません。 if((buff >> n) & 0x80 == 0x80){ (プログラムの全容は添付画像に載せさせていただきました) buffを右シフトして0x80(10000000)との積をとっても0x80にしかならないと考えているのですが、何が間違っているのでしょうか。 拙い内容で申し訳ないのですが、ご教授いただけば幸いです。 ※OKWAVEより補足:「技術の森( ソフトウェア)」についての質問です。

  • PICを同期させて制御する方法を教えてください。

    PICを同期させて制御する方法を教えてください。 PIC16F84Aを使用して、複数個をLEDを制御したいと考えています。 LEDの制御基盤を複数作り、同じプログラムを入れてもLEDの点灯タイミングが 同期して動きません。 複数個のPICを同期させて制御するにはどうしたらいいのですか? 5個以上のPICを使用したいと考えています。 教えてください。 よろしくお願いします。

  • グラフィックLCD SG12232の制御

    グラフィックLCD SG12232(122×32ドット)の制御についてですが0ページを指定してデータを書き込むと2ページにも同じものが書き込まれてしまいます。(場所はページどおり) 1ページを指定して書き込むと3ページに同じ内容が書き込まれてしまいます。 これは何が問題なのでしょうか?開始ラインは00hですし同時に書き込まれることなんてあるのでしょうか? 制御はPICで80系です。

  • COBOLで「WORKING-STORAGE SECTION.」と「L

    COBOLで「WORKING-STORAGE SECTION.」と「LINKAGE SECTION.」を 使用して、呼び出そうとしていますが以下のエラーが発生してしまいます。 「line12,column 6:""SAMPLE-02""文法が間違っています。」 です。 どのように文法が間違っているのでしょうか? 以上、よろしくお願いします。 「SAMPLE_01.COB」 ---------------------------------------------- *文字列の表示 IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE-01. * ENVIRONMENT DIVISION. * DATA DIVISION. WORKING-STORAGE SECTION. 01 HELLO PIC X(12) VALUE "Hello World!". * PROCEDURE DIVISION. CALL "SAMPLE-02" USING HELLO. STOP RUN. 「SAMPLE_02.COB」 ---------------------------------------------- *項目に値を入れる IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE-02. * ENVIRONMENT DIVISION. * DATA DIVISION. LINKAGE SECTION. 01 HELLO PIC X(12). * PROCEDURE DIVISION USING HELLO. DISPLAY HELLO. STOP RUN.

  • PICでサーボモータ制御(C言語)

    個人的PICでのにサーボ制御をしてみようとしています。 まず、動作確認をしてみようとPIC(16F84A)を用いて、PICの基本回路を構成してあります。 次にサーボ制御をしてみようという事で、信号をRB1から得る事にします。 (電源、グランドはしっかり接続してあります) そこで、以下のプログラムを走らせてみました。 ※コンパイラはHI-TECH社の無料版を使っています。 #include<pic.h> #include<delay.h> main(void){ int a, b;    TRISA = 0x00;    TRISB = 0x00; while(1){ RB1=1; for(a=0;a<16;a++)DelayUs(100); //PointA RB1=0; for(b=0;b<186;b++)DelayUs(100); //PointB } } ※DelayUs関数はμsecの待ち発生関数です。 サーボが約20secのパルスということなので、動作確認のために組みました。 PointA,Bと記述した部分をいくら変動させても動作がかわらず一定の角度方向にしか動きません。 ただ、確認のために組んだプログラムなのですが、これではだめなのでしょうか?

  • マルチディスプレイ環境のとき、指定したディスプレイにファイルを表示させる方法

    ご存知の方、教えてください。 マルチディスプレイ環境のときに、指定したディスプレイにファイルを表示させるプログラムを作成したいと思っています。 C&C++でWindows APIを利用して、そのプログラムを作成したいと思っています。 そこで質問なのですが、ShellExecute関数又はCreateProcess関数を利用してファイルを表示させるとき、指定したディスプレイに表示させるには、どのようにすればよろしいのでしょうか? 以上、ご返答くださいますよう、よろしくお願いいたします。

  • PIC18でのPWM制御について

    PICで充放電の制御をしているのですが、PICのPWMモードで12V、1kHzの信号を出す必要が出てきました。 PWMモードは触ったことがなく、調べながら作る時間も余りないので、厚かましいとは思いますが、 どなたかアセンブラまたはc言語でのプログラムを教えていただけませんでしょうか。 使用チップはPIC18F2580です。 よろしくお願いします。

  • マウスによるモータ制御

    駄文で申し訳ありません。 現在PICを介してサーボモータの制御を行っているのですが、マウスを左に動かせば左回転、右に動かせば右回転するようなプログラムを作りたいのですが、いまいち方法が分かりません。 どなたか詳しい方教えて頂けないでしょうか? ちなみに、言語はJavaで、現在はキーボードより文字を送り、PICによりその文字に対応した信号をモータに送信し動作させています。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • 16ピンのPIC16F819のサーボモータなどのBASICプログラム

    16ピンのPIC16F819のPICを利用してサーボモータや光電センサー、ディスプレイを制御したいのですがBASICのプログラムが分かりません  サーボモータは Futaba S3002 を使用 ・計7個のサーボモータ使用 ・ボタンを押して入力したものをサーボモータに出力〔右に90度⇒左に90度〕 光電センサーは鏡とセンサーの間を通過するのを検出するもので omron E3R-R2E4 を使用 ・コインを検出してカウントする ・6個使用 ディスプレイは数字と文字の両方を表示したいです まとめると、コインを光電センサで検出してその検出したコインをディスプレイに表示する。たまボタンを押すとサーボモータが回転 するものを作りたいです。 この動作をBASICのブログラムで制御させるには、どのようなプログラムにすればいいですか

  • LCDに表示するためのフォントデータ

    マイコンでLCDに文字を表示するようなプログラムを作成しています。 現在使用している基板のアドレス0x400000番地から0x480000番地のフラッシュROMの空間に文字コード順に並んだフォントのドットデータが入っているそうで、文字コードを指定して、そのメモリからデータを引き出して、LCDに表示できるようになっています。 このフォントデータは1文字ごとに24バイトのデータとなっていることがわかりました。 なので、21,845文字程度のデータが入っていて表示することが可能のようです。 このようなフォントデータというのはネット上でフリーでダウンロードできるものとかありますでしょうか? またこのような文字のどっとデータをバイナリとしてダウンロードすることが可能なサイトなどご存じでしたら、是非教えて頂きますようお願い致します。 どうぞ、よろしくお願い致します。