はじめまして。現在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;
}
SnowShower様 ご回答有難うございます。
ご参考に示していただいたプログラムはフォントとドットマトリクスとの
関連性ができた後の流れなのかなと思っています。
1ドットずつプロットする関数を作成し、g_pucFont[95][5] との係わり合いをプログラム化する作業が先に入ってくるのかと思いますが、C言語が不慣れなため、その部分が作成できていない状態です。。。
一度作ってしまったらなんだこんなもんかなどと思うのでしょうが、経験不足のためパニくっています。。
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** ****」をセットする必要あります。
「ビットシフト」や「論理演算」は大丈夫ですよね?
違うところがわからないのであれば、その部分を書いていただけると回答しやすいです。
ご連絡有難うございます。
前回頂いた回答とビットマップとの関連性を再整理することにより、
無事指定の文字を8x8ドットにて表示させることに成功しました!
といってもポインタの概念を根底から理解しているわけではなく、
とりあえず動作したというレベルですので、まだまだ改良が必要です・・・
ご丁寧にご回答して頂きありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 政治 私の発明した「二階建て漢字」は使えるでしょうか? 3 2023/02/08 16:40
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/03/04 09:54
- その他(インターネット接続・インフラ) Webサイトのフォント・級数変更について 1 2022/10/18 18:08
- CAD・DTP 「機能ブロック図」の描画用フリーソフトを教えてください 1 2022/09/23 16:12
- モニター・ディスプレイ Dell G2422HSのディスプレイの入力信号の切替器やリモコンを教えてください 4 2023/05/30 17:56
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どうしたらアドレスを青色で表...
-
複数アドレスにメール送信した...
-
@live.jpというメールアドレス...
-
@**dion.ne.jp は携帯アドレス...
-
アドレスの語尾 .com .co.jp ...
-
署名の中に自分のアドレスを書...
-
メールがエラーで戻ってきまし...
-
スイッチングハブのMACアドレス...
-
 ̄のアドレス入力方法教えて下さい
-
アウトルックで受信メールが連...
-
hotmailから携帯への送信
-
メール送信エラー。宛先アドレ...
-
ybbメールとyahoo.co.jpメール...
-
ヤフーメールの迷惑メールに困...
-
ヤフーのメールアドレスが何故...
-
MACアドレスをサイトにのせても...
-
@gol.comというメールアドレス...
-
メールアドレスの作り方
-
Beckyのアドレスから一斉送信
-
メールアドレスがばれても悪用...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数アドレスにメール送信した...
-
どうしたらアドレスを青色で表...
-
@live.jpというメールアドレス...
-
空メールが送信されてくるのは?
-
件名と本文なしのメールが多い...
-
アドレスの語尾 .com .co.jp ...
-
電話番号とメルアド、どっちが...
-
@**dion.ne.jp は携帯アドレス...
-
スイッチングハブのMACアドレス...
-
ybbメールとyahoo.co.jpメール...
-
これは本当に 「教えて!goo」 ?
-
Yahooメールアドレスを変更した...
-
@gol.comというメールアドレス...
-
メール送信エラー。宛先アドレ...
-
メールがエラーで戻ってきまし...
-
内定先企業へのアドレス変更連...
-
ヤフーのメールアドレスが何故...
-
メールアドレスがばれても悪用...
-
hotmailから携帯への送信
-
楽天カードの申し込みに対する...
おすすめ情報