(ツール) |
||||||||||||||
LCDキャラクターディスプレイ表示 (2004.01.18) |
||||||||||||||
LCD表示温度計を作ろうと思ったのだが、 「あれっ、LCDのソフトタイミングってどうだったっけ」という感じで、すぐに思い出せない。LCD表示関係の自分で最後に作ったプログラムを参照しようと思ったのだが、2年以上前のようで 、リストをみてもなかなか思い出せなかった。 また、信号送信タイミングがよく分からないけど表示できていたのでOKにしちゃったところもあった。 そこで、できるだけテスト確認しながら、しばらく後でもわかりやすいように、まとめておくことにした。 LCDキャラクターディスプレイとは? |
||||||||||||||
決められたタイミングで8ビットのコードを受け付けると、そのコードに対応した英数字カナ文字など(キャラクター)が液晶表示される。 また、ドットを自由に配置して、自作デザインのキャラクター登録をすることもできる。 これを使えるようになるとPICの活用範囲が格段に広がる。 入手先は秋月電子通商で、16文字x2行または20文字x4行のもの。いずれもバックライト付きと無しがあるが、バックライト付きの方が断然カッコイー。価格は750円〜2,000円 くらい。 |
||||||||||||||
キャラクターパターン表 |
||||||||||||||
16文字x2行 SUNLIKE社 SC1602BSLB」の秋月データーシートをスキャナーしたもの。 コードは16進数表記なので、分かりやすいように青字で2進数などを追加した。 GIF 600x900 71.1KB |
||||||||||||||
秋月データーシート |
||||||||||||||
秋月電子通商から買うと、超縮小コピーのデーターシートが付属してくる。しかしそれが重要だったりするのだが、当初付属してきたものは日本語で接続例なども載っていたのに、後からのものはほとんど英語だし、接続例など省略されている。 日本語のものはセイコー電子工業で、英語のものはSUNLIKE社のよう。基本的には同じように使えるはずなのだが、よく 見比べると少し違うところもあるので、気が付いた点は掲載するようにする。 なお、上のキャラクターパターン表は英語の方で、上位0001、1000、1001のコードが空白で、割り当て無しということが分かりやすかったので採用した。(日本語の方は2進数表記であるが、その列は省略されている。) |
||||||||||||||
接続ピン |
||||||||||||||
フル接続では、電源とグランド、LCD濃度調整の線を別として、PICとは11本の線で接続することが必要。 しかし、4ビットモードで使用することにより、7本の線(-4本)でも可能になる。 その場合、データーを4ビット2回に分けるため、ソフトが少し面倒になる。 さらに、ビジー状態チェックなどが不要であれば、もう1本省略(RW)して、6本接続でも可能。 |
||||||||||||||
左横2列タイプのLCD接続端子 |
||||||||||||||
GIF 300x300 43.8KB |
「16文字x2行 SUNLIKE社 SC1602BSLB」 (バックライト付き)の秋月データーシートによるもの。 (バックライト端子は反対側にある。) 「16文字x2行 セイコー電子工業 M1632-0A」も 同じ配置。 しかし、 「20文字x4行 SUNLIKE社 SC2004C」の場合は、 Vdd と Vss が逆! になっているので、要注意。 (それ以外の端子配置は同じ。また、基板のシルク 文字が天地逆さまになっている。) |
|||||||||||||
左上(下)1列タイプのLCD接続端子 |
||||||||||||||
GIF 300x300 42.0KB |
かなり前に秋月電子通商の店頭で購入したもの なので参考として掲載。 「20文字x4行 セイコー電子工業 L2034」 (バックライト付き)の秋月データーシートによるもの。 端子は上下にあるが、同じ配列で、どれに結線して もOK。(基板内でパターンがつながっている。) これに添付してきた秋月データーシートによると SUNLIKE社 SC2004Aも同配置。 ただし、端子は上のみで、下端子は無いようだ。 (バックライトも無いようだ。) |
|||||||||||||
構成と回路図 1 |
||||||||||||||
まずはソフト上の確実な確認をするため、配線本数が多くなってしまうがフル接続でやってみる。 LCDビジー信号(忙しい)の確認もしておきたいので、RWも接続しておく。 PICは16F819を使用して、オシレーターは内蔵RCとして、部品数やその他の接続はできるだけ少なくする。 参考だが、僕のテスト環境ではパスコン(0.1μ)が無くても問題なかった。 また、#3、4、15、16ピンは無接続だが、浮遊状態で問題なかった。(面倒でなければ10kΩくらいの抵抗でグランドに接続しておくのが無難かもしれない。) LCDの電源はPICからONするようにする。これは1つのポイントになるが、LCDの電源ON自動初期設定を確認するため。 GIF 600x300 7.42KB ※コントラスト調整ボリュームは無し。 Vo(またはVlc表記)をグランドに接続すると、最も濃くなる。 濃すぎて見えづらい場合は、この回路図のようにダイオードを入れると、少し薄くなる。 ポリスイッチはヒューズとして、念のため入れてある。 |
||||||||||||||
電源 |
||||||||||||||
JPEG 300x150 10.3KB |
今回のテスト確認では秋月電子通商の 「超小型ACアダプタ 5V1A 」\700を使用した。 このACアダプターは、見た瞬間とても小さく感じられ、 とても気に入った。 写真左は単3電池との大きさ比較用で、写真右は フタを無理矢理こじ開けた状態。 (部品がぎっちりと詰まっている。) ACアダプタの無負荷消費電流は1mA程度だった。 |
|||||||||||||
インストラクション一覧 |
||||||||||||||
この表は秋月データーシートの日本語の方(たぶんセイコー電子工業)を打ち直したものだが、見やすいように着色したり、設定内容を行間に挿入したりした。 GIF 600x730 24.7KB |
||||||||||||||
GIF 300x100 1.07KB |
||||||||||||||
英語の方(たぶんSUNLIKE社)のインストラクション一覧では、実行時間が次の通り多少異なる。 ・1.52ms→1.64ms ・0μs→40μs ・37μs→40μs (10)、(11)の実行時間 tADDは記載なし。 2004.01.31 追記 (6)ファンクションセットの「N」が重要であるということが分かった。秋月データーシートでは「M1632ではN=1にセットしてください。」とある。 デューティの意味が分からないのだが(他の機種では何かあるのか?)、自動初期設定ではN=0になってしまうので、N=1に設定し直す必要がある。そうしないと、なぜか2行目への表示ができなくなった。 (Fについては、「N=1にセットするとFは無効のビットになりますので、M1632ではF=0または1にセットしてください。」とある。?どっでもよいみたいなのでゼロにする。) 秋月データーシートによるファンクションセットの自動初期設定状態を追記する。 DL=1、N=0、F=0、D=0、C=0、B=0、I/D=1、S=0。 |
||||||||||||||
LCDへの信号送信タイミング |
||||||||||||||
次の図も、秋月データーシートを描き直したもので、2種類ある。(タイミングポイントは同じようだが、SUNLIKE社の方が、セイコー電子工業よりも
タイミング時間が早くてもOKのようだ。) 僕にとっては難解だが、自分なりに解釈して着色した。 青数字は、それ以上の時間が必要だということ。数字の後ろの「ns」は「ナノセコンド」で、1ns=0.000000001秒。1000nsだと0.000001秒になる。 E は動作起動信号で、LCDに何か送信するときは必要な信号。 RS はキャラクターパターンを表示させるときに必要な信号。 RS が必要じゃないという場合(EとDBのみ)は、表示クリアやカーソルホームなどの各種設定時。(インストラクションの(1)〜(8)) @… E を入れる前に、RS を入れ、R/WはLoでなければいけないという意味だと思った。 A… E がHiになっている必要時間。 B…難解ですが、E がLoになる直前のデーターを受け付けるという解釈をした。 C… E がLo後、RSとDBを少しの間保持しておく必要があるということだと思う。 D…次の E 送信までの間隔だと思うのだが、これは要注意。(下のPIC動作クロックの項参照) SUNLIKE社?のタイミング |
||||||||||||||
GIF 300x300 3.62KB |
RSとDBは、電圧を変化させる方向がどちら側から でもよいということなのか?山谷がある。 後で分かりづらくなってしまうと思うので、信号送信 しないときは、すべて「Lo」ということにする。 (反対方向(谷)の場合はグレー表示にした。) LCDへの信号送信ではR/Wを使用しないが、電圧が Loになっている必要がある範囲のことだと思う。 Eの電圧立ち上がり、立ち下がり時間は25ns以下と いうことになっている。 しかし、僕の環境では測定できないし、どうすることも できないので、「問題なくOKである」っということにして 無視する。 |
|||||||||||||
セイコー電子工業?のタイミング |
||||||||||||||
GIF 450x300 3.89KB |
||||||||||||||
PIC動作クロック |
||||||||||||||
ここでPICの動作クロック周波数を確認しておく。 16F819の内蔵RCオシレーターを使用するが、それの最高スピードは8MHzである。 その場合、1÷8000000x4=0.0000005で、1命令500nsになるが、上のタイミングで500nsで問題になりそうなところはない。 たとえば、RSをON、E と DB を同時ON、E をOFF、 RS と DB を同時OFFのタイミングとしても、それぞれの間隔は500nsだからOK。セイコー電子工業の E Aにあまり余裕が無い程度。 また、次の E までは2000ns以上になりますので問題なーし!と思ったら大間違い!!ここに落とし穴があった。 LCDの「実行時間」というのが意外に長い。LCDへの送信完了後、次の受付OKまで通常最大37μs(または40μs)必要。 表示クリアとカーソルホーム命令の2つについては、最大1.52ms(または1.64ms)必要ということになっているので要注意。(インストラクション一覧表 の右端参照。) 通常の37μsの場合でちょっと考えてみると、1μs=0.000001秒だから、nsに単位を合わせると37000ns。 8MHzのPIC命令数換算だと、74命令分にもなる。 したがって、連続送信する場合は、LCD送信プログラムにウエイトを入れるか、LCDのビジーチェックが必要ということになる。 ここで他のクロックではどうなのか、PIC1命令の実行時間を計算してみた。 4MHzでは?…1÷1000000x4=0.000001[秒]→1μs 1MHzでは?…1÷1000000x4=0.000004[秒]→4μs 500kHzでは?…1÷500000x4=0.000008[秒]→8μs 250kHzでは?…1÷250000x4=0.000016[秒]→16μs 125kHzでは?…1÷125000x4=0.000032[秒]→32μs 31.25kHzでは?…1÷125000x4=0.000128[秒]→128μs 連続送信する場合で、E から次のE までを仮に4命令処理とすると、LCDの実行時間を気にせずにプログラムできるクロックは、250kHz以下ということになる。 |
||||||||||||||
プログラム a |
||||||||||||||
前置きが長かったと思うが、ここで簡単な表示をしてみる。 次のプログラムは、8MHzで「123ABCアイウ」を表示する。 1キャラクター分のデーター送信後はPICに無駄な処理を実行させるウエイトを入れている。 *表示テストプログラム LCD819a.src 6.66 KB …ダウンロード |
||||||||||||||
JPEG 300x150 11.9KB |
これはテスト状況。 PIC周りはソルダーレスブレッドボードに、ちょい ちょいっと仮組した。 この写真のLCDは、セイコー電子工業 M1632-0Aを 使用。(16文字x2行) |
|||||||||||||
LCD側銅箔の基板は、テスト確認用として作ったもの だが、後々も使えそう。 ユニバーサル基板の手持ちが無かったので、生基板 を使用した。 LCDのピン配列が2列で分かり難いので、1列に配置し 直してラベルを貼っただけ。 下面は空中配線のハンダ付け。 R/WとDB0〜DB3は、未使用時、Vssに接続しやすい ように配線してある。 Vo(コントラスト調整)もこのようにしておけば良かった と後で気付いた。 下方のショートピンは、VssとVddの入れ替え用。 |
JPEG 300x225 18.6KB |
|||||||||||||
ポイント1 自動初期設定を確認してみた。秋月データーシートによると、電源投入条件として、0.2Vから4.5Vになるまでの時間が 0.1ms〜10ms の範囲内であれば、自動初期設定される。(ただし、うまく自動初期設定されたとしても、多少のモード変更が必要。) もし、自動初期設定が行われなかった場合は、とても面倒な手順で初期設定をする必要がある。 ちなみに、インストラクションによる初期設定は次の通り。(秋月データーシートを打ち直したもの。) 電源条件が合わず自動初期設定が実行されない場合には、インストラクションにより初期設定を行います。この場合、電源投入直後はインターフェイスデータ長が何ビットに設定されているかわかりませんので、ファンクションセットを2回行って、一度8ビットに設定します。その後のファンクシュンセットで使用条件に合ったインターフェイスデータ長を設定してください。 GIF 500x450 6.59KB PICとLCDの電源を各々取り出して同時に電源投入されるようにした場合、PICの立ち上がり最中には、LCDの各ピンが不安定状態で あり、うまく初期設定されないと思う。今回はLCDの電源をPICから供給するようにして、LCDの各ピンはLo状態で電源投入する。 ポイント2 自動初期設定に問題がないとして、LCDの電源ON直後にLCDが準備OKになるかどうかテストしてみたのだが、結果はNOだった。 それではどのくらいの時間が必要か、少しずつ数値を変えて何回もテストしてみたところ、13msくらい必要だということが分かったのだが、メーカーや型番によって は、30msくらい必要なものもあった。 その結果より、30msに余裕を付加して50ms(0.05秒)くらいにした。 ポイント3 LCD実行時間の確認をしてみた。やはり、限界値として36μs程度必要だった。これも5割ほどの余裕を付加することにした。 ポイント4 データー送信毎のDBクリア不要の確認をした。タイミング図Bの確認。1キャラクターデーター送信後はDBもクリアする必要があるかどうかだが、やはり E がLoになる直前のDBをチェックしているようで、いちいちクリアしなくても問題はなかった。 ポイント5 文字がそのまま使える。「1、2、A、B、ア、イ」は2進数で指定したが、「3、C、ウ」は「'」で囲った文字指定にしている。 アセンブラが判定して コードに変換してくれるようで、LCDにちゃーんと表示される。(ちなみに全角文字を指定するとアセンブルエラーになる。) 英数字はともかく、英語のアセンブラなのにカタカナもOKとは、なんかうれしい。 |
||||||||||||||
LCDからの信号受信タイミング |
||||||||||||||
SUNLIKE社?のタイミング GIF 300x300 3.77KB |
今度はLCDからの信号を受信してみる。 この図も送信と同様、秋月データーシートを描き 直したもの。 R/W信号とRS、E信号をあるタイミングで送信すると LCDから信号がでる。 LCDへの信号送信タイミングと似ているが、E がHiに なってから、少し遅れて有効データーが出る。 しかし、PIC動作クロックで確認した通り、8MHzでも 1命令500nsなので、問題にはならないだろう。 ただし、12MHz超えで、セイコー電子工業製LCDの 場合は要注意ということになる。 |
|||||||||||||
セイコー電子工業のタイミング GIF 450x300 3.99KB |
||||||||||||||
プログラム b |
||||||||||||||
今度はLCDのビジー信号チェックで「123ABCアイウ」の表示をやってみる。 LCDが内部動作中(忙しい)の場合、DB7がHiになるので、それに対応するPICピンのRB.7は入力ピン設定に切替え、Lo(ゼロ)信号になるまで待つ。 Lo信号になったら再び出力ピン設定に切替え、新しいキャラクター信号を送信する。 ビジーチェックの切替えは単純だが、何回も面倒なのでサブルーチンにしてある。 *表示テストプログラム LCD819b.src 6.66 KB …ダウンロード ポイント1 LCDの電源ON直後にビジーチェックが可能かテストしてみた。 3種類試して1つだけしかOKにならなかったので、(M1632-0A)電源ON直後の部分はソフトウエイトを使うことにした。 おまけ せっかくなので、ビジー時間をPICでカウントして、LCDの2行目に表示させてみた。 時間の計測方法は「B」送信後にPICの内部タイマー値をクリアして、ビジー信号が消えた直後にタイマー値をメモリーする。 内部タイマーはRCオシレーターなので、あまり正確ではない。 *おまけプログラム LCD819bx.src 6.66 KB …ダウンロード 不良品? 余談だが、上のプログラムの動作確認で、3種類のLCDの内1つが正常表示されない問題があった。 プログラムのどこかが悪いと思い、何回もチェックしたが分からない。ビジーチェックをしなければ正常表示されるのでDB7の接点不良かと思い、ハンダ付けをやり直したりしたが直らない。 その後、予備を買っておいたのを思い出して、それを使用したところOKという結果になった。ビジー信号が正常出力されない故障だったようだ。 |
||||||||||||||
内部アドレス |
||||||||||||||
下図は秋月データーシートの値に80(16進)を加算して作り直したもので、アドレス指定するときのDBデーターとして、そのまま指定できるようにしたもの。 たとえば2行目の5文字目の場合、秋月データーシートだと44(16進)で、2進数にすると01000100。 PICからDBデーターとして送信するときは、8ビット目を1にする必要がある。(インストラクション一覧の(8)) すなわち11000100を送信するのだが、16進だとC4になる。 |
||||||||||||||
GIF 400x350 6.47KB |
16文字x2行 20文字x4行 |
|||||||||||||
キャラクター登録 |
||||||||||||||
GIF 100x150 1.18KB |
1つの例として、「↑」をデザインして、登録と表示をしてみる。 (キャラクターパターン表に「→」と「←」はあるが、上下の矢印は無い。) 自作キャラクターは8個まで登録することができる。(電源を切ると消える。) ドットは横5個と縦8個で40個あるが、1番下の段はカーソルとタブるので、使わない方がよい ようだ。 |
|||||||||||||
GIF 300x400 6.34KB |
デザインを考え、決まったら登録してみる。 1つのキャラクターを登録するためには、PICから1段ごとのドット配置をLCDに送信する。 ここでは分かりやすいように、CG RAMの(6)へ登録することにして説明する。 (2進で101) 小さい数順として最上段から並べてみた。(段順通りである必要はない。) @a…始めにCG RAMのアドレスセットを指定する。 (インストラクション一覧の(7)参照) @b…次にドットデーターを送信する。 (インストラクション一覧の(10)参照) Aa…2段目。 以下同文。 表示方法 他のキャラクター表示と同じ。DBデーターに登録したb入れるだけ。 |
|||||||||||||
次のプログラムは、8MHzで「123ABCアイウ」と、自作登録した「↑」を表示する。 データー送信後はPICに無駄な処理を実行させるウエイトを入れている。(先のプログラム a と同様。) *表示テストプログラム LCD819au.src 11.9 KB …ダウンロード ポイント1 LCDの2行目1桁から順に、CGRAM (1)〜(8)を表示させてみた。 自作登録した(6)は「↑」が表示さたが、他はすべて「■」だった。初期状態では、すべてビット1になっていることが分かった。 ポイント2 偶然分かったのだが、AaBa…Gaまでのアドレスセット指定は不要である。(もちろん指定しても問題なし。) アドレスセット指定をしないでドットデーターを送信しても、自動的に次の段になる。さらに、8段目以降もアドレス指定しないでドットデーターを送信したらどうなるか試してみたところ、ちゃーんと次の登録bフ上段からになった。 ポイント3 上のプログラムでは、「123…ウ」表示の後に、自作キャラクターを登録し、その後に登録b送信したのだが表示されない。(ウの後ろに表示されると思っていたのに。) 登録の後は、インストラクション(8)DDRAMアドレスセットの、LCD表示位置の指定が必要。 ポイント4(参考) 自作キャラクターを登録して表示した後に、そのドットデーターを書き替えた場合は、瞬時に反映される。(再表示不要。)しかし、ということは、同時に表示できる自作キャラクターは8個までということになる。 アニメーション 自作キャラクターを駆使すると、ちょっとしたアニメーション表示もできる。 |
||||||||||||||
構成と回路図 2 |
||||||||||||||
4ビット動作 LCDへのデーター信号は8ビットが基本だが、上位4ビットと下位4ビットに分けて送信使用するモードがある。 たとえば「N」の文字だと、2進数8ビットでは「01001110」だが、「0100」と「1110」の4ビットずつに分けて送信する。ソフトは面倒なことになるが、PICのピンを4本も節約できる。 GIF 600x200 5.40KB |
||||||||||||||
プログラム c |
||||||||||||||
次のプログラムは4ビットモード8MHzで、「123ABCアイウ」を表示する。1キャラクター分のデーター送信後はPICに無駄な処理を実行させるウエイトを入れている。(4ビットモードの違いのみで、その他はプログラム
a と同様。) *表示テストプログラム LCD819c.src 8.83 KB …ダウンロード ポイント1 LCDの電源やRS、RW、E信号とDBを、同じRBポートにしたので、よく考えて設定送信する必要がある。たとえば、RBポートのビットを一括送信する場合、LCDの電源にあたるビットは必ず「1」を入れておかないと、LCDの電源が切れてしまう。 DBを1ビットずつ送信する方法もあるが、上のプログラムは、DBの4ビットを一括送信する方式。 ポイント2 4ビットモードに設定するのは、たったの2行。 ポイント3 上位4ビット送信直後に下位4ビットを送信しても問題ないのか試してみたところOKだった。(実行時間が必要ないかどうかの確認。) 信号送信タイミング図によると、E送信から次のE送信まで1000ns。(セイコー電子工業と思われる方) インストラクションのRS送信無しの場合で、EとDBを同時送信にすると、E間隔が最短になるが、8MHzPICでちょうど1000nsになる。 テストはしていないが、PICのオシレーターが8MHzを超えると、1000ns未満になってしまうので、その場合は要注意だと思う。 ポイント4 「3、C、ウ」はプログラムaと同様に「'」で囲った文字指定にしたが、1度メモリーに入れることで対応した。 and命令は、ゼロが入っているビットに対応するビットをゼロにする。(1が入っているビットに対応するビットは変更されない。) or命令は、1が入っているビットに対応するビットがゼロだったら1を立てる。(ゼロが入っているビットに対応するビットは変化しない。) swap命令は上位4ビットと下位4ビットを入れ替える。 ちょっと面倒なプログラムだが、メモリー上でビットを整えてから、1度にRBを送信するようにしている。 |
||||||||||||||
まとめ |
||||||||||||||
今回このページを作成しながら、いろいろとテスト確認したが、「よく分からないけどOKにしちゃっていた」ところがまーまー明確にでき、また、自分的新発見もあったので、とてもよかったと思っている。 今までのプログラムは、テスト確認用なので、分かりやすくするために、基本的にはcall命令などを使わないようにしてきた。また、プログラム数を少なくすることなどは考えていない。 実際に何かのプログラムと組み合わせて使用することを考えた場合は、コンパクトでプログラム数が少ない方が良い。(しかし後で分かり難いのはダメ。) 次のプログラムは、実際の使用を考えて、使いやすいように作ってみた。 (汎用実施バージョンのつもり。) ・LCDは4ビットモード用。 ・ビジーチェックを行う。 1行目は正常な「 NAO TECHNOHUT」表示で、2行目には鏡で映したような「 NAO TECHNOHUT」表示をしてみた。 *表示テストプログラム LCD819x.src 10.5 KB …ダウンロード LCD819x.hex 2.31 KB …ダウンロード ポイント1 PICからLCDへは、1ビットずつ送信する方式に変更している。4ビットが出揃った時点で E 信号をLoにして問題なかった。(プログラムaのポイント4のところで、 E 信号がLoになる直前のデーターを有効データーにしているということを確認済み。) これにより、DB送信時のE、RS、LCD電源の保持処理が不要になり、プログラムがスッキリした。 snb(スキップノットビット)の命令は、ビットが無ければ次の行を飛ばしなさいということ。 ポイント2 「N」「A」「T」「U」の4種類について、天地逆さま自作キャラクターを登録してある。PICからは、登録0の初段のみアドレスセットを送信し、その後はドット配置データーの連続送信。 ポイント3 インストラクションの(4)表示オン/オフコントロールはカーソルオフの設定。 |
||||||||||||||
JPEG 300x90 9.31KB |
|
|||||||||||||
|
||||||||||||||
アニメーション表示 (2005.01.02) |
||||||||||||||
GIF 90x126 3.64KB |
←はパソコンのGIFアニメーションソフトで作成したものだが、LCDキャラクターディスプレイ でも同じように表示することができる。 LCDキャラクターディスプレイでの表示を説明をするために、パソコンのGIFアニメーションソ フトで作成したもの。 (実際の動きよりも、少し遅く表示してある。) |
|||||||||||||
原理は簡単で、パラパラマンガと同様。 下図は1コマ目から順番に並べている状態。実際にはこれを、約0.125秒間隔の1秒間に8コマで表示しているのだが、ちゃんとアニメーションっぽく見える。 GIF 600x180 8.89KB |
||||||||||||||
実写版はこんな感じ。 |
[ このアニメーションのストーリー ] 2行LCDの下段左端から砲台が現れ、ミサイル(ビーム)で上段の1文字を破壊する。 文字が破壊消滅されると、文字全体が1文字分左寄せされる。 再びミサイル(ビーム)で上段の文字を破壊する。 これの繰り返しだが、文字間に空白があった場合は、1文字分だけ左寄せする。 2文字以上の空白があった場合でも、1文字分だけしか左寄せさせないので、 その場合はすき間が空いてしまい、ミサイル(ビーム)のハズレパターンとなる。 ハズレた場合、砲台は退去する。 |
|||||||||||||
[ プログラム ] 予めLCDに自作パターンを沢山登録しておいて、登録b切り替えて使いたいところだが、LCDには自作パターンを8個までしか登録しておけない。 そこで、ちょっと面倒で分かり難いかもしれないが、1つの登録bノ、その都度、PIC→LCDへパターンを送信し直すという方式にした。 上図のコマの例で説明すると、登録9には、予めすべて「0」を登録しておく。(すなわち空白となる。) 1コマ目では、上から7段目(110)に10000を送信する。 2コマ目では、上から7段目(110)に11000を送信する。 3コマ目では、上から5段目(100)に10000を、6段目(101)にも10000を、7段目(110)には11100を送信する。 このように、必要な段だけのデーター送信でOK。文字の表示位置の再指定は必要ない。登録したキャラクターがLCD上に表示されていれば、段データー送信後は瞬時に書き変わる。 次のプログラムはパソコン5インチベイ用LCD表示パネル用を作成し直したもの。 そのため、前回のLCDキャラクターディスプレイ表示(パート1)の回路と少し違う、PICは84使用なので、参考の参考としての掲載とする。 ■PICプログラム 5LCD110.src 20.3 KB …ダウンロード |
||||||||||||||
自作キャラクター集 |
||||||||||||||
今までデザインしたものを集めてみた。 |
||||||||||||||
GIF 90x126 2.31KB |
GIF 90x126 2.30KB |
GIF 90x126 2.36KB |
GIF 90x126 2.26KB |
GIF 90x126 2.25KB |
GIF 90x126 2.20KB |
|||||||||
左から、「 V 」、「 Enterマーク 」、「 電池空マーク 」、「 ゚ の右寄せ 」(温度の゚Cに使用)、「 爆発1 」、「 爆発2 」 |
||||||||||||||
GIF 90x126 2.30KB |
GIF 90x126 2.30KB |
GIF 90x126 2.25KB |
||||||||||||
左から、「 顔文字左半分の ( ^ 」、「 顔文字右半分の ^ ) 」、「 小さい v 」。 文字数節約の顔文字用。 (^ ^)v |
||||||||||||||
|
||||||||||||||
バイクでフローターフィッシングとキャンプ > ツール > PIC(ワンチップマイコン) > LCD表示 |
||||||||||||||
<< トップヘージへ |