FC2カウンター

現在の訪問者数

現在の閲覧者数:

カレンダー

10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -

プロフィール

剣菱P

Author:剣菱P
剣菱Pと申します。
性別:男
年齢:27
二兎を追って一兎も得られないタイプ

マイコンやプログラミング、ニコニコ動画、雑記等
方向性は見えずとも、ちょっとずつ更新していく予定です!

リンクフリーです。
こんなブログでよかったらよろしくお願いしま~す。

公開メール kenbishiP@gmail.com

検索フォーム

最新記事

最新コメント

カテゴリ

メールフォーム

名前:
メール:
件名:
本文:

月別アーカイブ

最新トラックバック

リンク

ブロとも一覧

ブロとも申請フォーム

ランキング

ランキング参加中です。気が向いたらクリックしてあげてください。


にほんブログ村 その他趣味ブログへ
にほんブログ村 その他趣味ブログ 趣味の工作へ

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PIC LCD2 PIC タイマー0 割り込み»

コメント

コメントの投稿













管理者にだけ表示を許可する

PIC LCD


今回は小型の液晶の使い方を勉強しました。

こんなやつです。
P5110208.jpg
16文字×2行表示できます。表示できるのはカタカナ、アルファベットといくつかの記号のみのようです。

さっそくですが、この液晶装置には14本の端子がついています。上の写真の左端のやつですね。
lcd.jpg
番号はこのようになっていて



No記号機能
1VDD5v
2VSS0V
3Voコントラスト調整
4RSデータ・コマンド切り替え
5R/W読み込み・書き込み切り替え
6Eイネーブル
7DB0データ下位
8DB1データ下位
9DB2データ下位
10DB3データ下位
11DB4データ上位
12DB5データ上位
13DB6データ上位
14DB7データ上位

といったかんじになっています。端子の位置は製品によって若干違いがあったりするので要注意です。

LCD2.jpg
この様にPICと接続して使います。書き忘れましたが、左がPIC、右が液晶です。念のため

上の図を見ていただくとわかりますが、DB0~DB3はGNDにつなげられてしまっています。
雰囲気だけで判断するとPICのポートBの0~7が液晶のDB0~7に直接つながりそうな気配を感じますが、これでいいらしいです。
もちろんその方法でも問題はないのですが、その場合PICの8本のピンを液晶に取られてしまいます。それはもったいないということでこの液晶には8bit制御モードの他に4bit制御モードが備わっています。4bitのデータを二回に分けて送ることで8bit分のデータを送れるのです。
素敵ですね。

Vss、Vddは電源の端子ですね。特に説明は要らないと思います。Vo端子はコントラスト調整となっていてここの端子にGND~電源電圧の間の電圧を加えることで文字の濃さを変えられます。
半固定抵抗などを用いてやります。

残った端子RS R/W Eですが。まずRS
この液晶装置を動かすとなると、PICから命令を送ることになります。
命令の内容には2つあって一つはコマンド、もう一つは文字データです。
つまり、
・文字A(文字データ)をここに表示しなさい(コマンド)
・画面をクリアしなさい(コマンド)
・2行目に移動しなさい(コマンド)

みたいな感じです。

このコマンドとデータは当然ポートBの4~7の端子から送られてくるわけですが、
その値がコマンドなのか文字データなのかの判断をするのにこのRS端子が使われます。

RSが0Vの時DB4~7に入力された信号はコマンド、5Vの時は文字データとなります。
ここは重要です。

次にR/Wですが、これはリードとライトの選択用です。つまりPICから液晶に命令を出すのか、
それとも液晶が発するメッセージをPICで読むのかを切り替えます。
ですが、実際のところ後者はしなくても動かせます。PICから一方的に命令を出すだけで、問題なく使えます。液晶が泣き言を言ってきても聞く必要はありませんww
ただ、液晶が泣き言を言わないようにいたわって命令を出してやる必要があります。
あんまり次々に命令を出すと、
「今、これやってるんだから、それやるのは無理!!」といわれてしまいます。
ですから、命令に合わせて、その実行時間分は待ってあげる必要があります。
ま、何はともあれ、R/Wを切り替える必要はない、ということです。
常にライトモードにしておけばおkです。R/W端子は5Vでリード、0Vでライトモードなので、GND端子の固定しました。


最後にE端子。PICから液晶に向かって、コマンドか文字データの信号が4本の線を使って送られるわけですが、液晶君はどのタイミングで信号が送られてきたことを判断するのでしょうか。
信号線だけでは、これがPICが意図して送ってきたものなのか判断できません。
そこで登場するのがE端子です。
この端子が0から5vに変化した時に命令を回収してもらうのです。

今までの事をまとめてみると次のようになります。
lcd3.jpg
まずDB4~7に伝えたい命令をセットします。
次にそれがコマンドかデータかを伝えるために、RS信号を0か5vにします。上の図では5vになってます。
そしてDBとRSの命令がそろったら、今から命令を送るぞということを液晶にしらせるために、E端子を0Vから5Vに変化させます。これは変化させることに意味があってはじめから5Vではだめです。
さらに、E端子には条件があって
「これが命令だ!!」というE端子のメッセージを液晶が理解するのに450ns以上の時間がかかるのです。ですから5Vの状態を450ns以上は維持しなければなりません。


さて、データとコマンドがあると今まで言ってきましたが、実際には何を液晶に送ればいいのでしょうか。
文字データの場合はシンプルです。文字に相当するキャラクターコードを送ってやればいいのです。
文字にはそれぞれキャラクターコードが割り振られています。
例えば「A」という文字は0x41、二進数で言うと01000001というコードです。
あなたの手元にあるキーボードのAにもこれと同じコードが割り振られているわけです。
8ビット制御の場合はこの01000001をそのままポートBの8本から出してやればいいのですが、
4ビット制御なのではじめに0100 次に0001を送ります。

次にコマンドですが、これはこの液晶のために用意されたコマンドを使用しなければなりません。




DB bit
機能76543210内容実行時間
Clear Display00000001画面を全部消去しカーソルをホームに1.6ms
Cursor At Home0000001*カーソルをホームへ移動 表示内容は変化なし1.6ms
Entry Mode Set000001I/DSメモリ書き込みと表示方法の指定40μs
Display ON/OFF00001DCB表示やブリンクの有無指定40μs
Cursor/Display Shift0001S/CR/L**カーソルと表示の動作40μs
Function Set001DLNF**動作モード指定40μs
CGRAM Address Set01CCRAM Address文字コードメモリアクセス用アドレス指定40μs
DDRAM Address Set1DDRAM Address表示用メモリアドレス指定40μs


表を見るとまず気がつくと思いますが1の位置が徐々に左にずれていきますね、どの位置に1を立てるかでどのコマンドかが判別できるわけですね。
*の部分は何をいれても関係ないという意味です。
では、順番にコマンドを見ていきましょう。

Clear Display : これは液晶の内容を全て削除しカーソルをホームポジションに戻す効果があります。
           0000を出力した後0001を出力してやればこれが実行されます。

Cursor At home : カーソルをホームポジションに移動しますが、表示してる内容は変化しません。
            0000を出力後、0010を出力すれば実行されます。

Entry Mode Set : メモリ書き込みと表示方法の指定
             I/Dが0の時メモリ書き込みで アドレスが-1
             I/Dが1の時メモリ書き込みで アドレスが+1
             Sが1の時表示もシフト
             Sが0の時表示はシフトせず
             この項目は アドレスやらなにやらまだ説明してないことが出てくるので理解できなくても問題ないです。
             パソコンで文字を入力すると、カーソルがどんどん右にずれていって新しい文字が入力できるようになりますよね。そんな感じのことを設定するところです。

Display ON/OFF : 表示やブリンクの有無
              Dを1にすると液晶の表示がON
                0にすると液晶の表示がOFF
              Cを1にするとカーソルが表示
                0にするとカーソルが非表示
              Bを1にするとカーソルがブリンク(点滅)
                0にするとカーソルは点灯したまま

Cursor/Ddisplay Shift: カーソルと表示の動作指定
                S/Cが1で表示とカーソルをシフト
                    0でカーソルのみシフト
                R/Lが1で右シフト
                    0で左シフト

Function Set : DLが1で8bitモード 0で4bitモード
            Nが1で1/6Duty 0で1/8Duty
            Fが1で文字の大きさが5×10 0で5×7ドット

DDRAM Address Set: 表示用メモリアドレス指定
                この液晶には1行につき16文字表示可能で
                それが2桁表示できます。
                人間は1桁目の左から5文字目などといった表現で
                どこに文字を書けばいいか判断できますが、
                コンピュータは出来ません。よって、全ての場所に番号がついてます。
                これがアドレスってやつですね。
             
lcd5.jpg

アドレスは上のようになっていて、1行目は0x00~0x0Fの16 2行目は0x40~0x4Fの16箇所

カーソル移動コマンドを使って指定したアドレスに移動。文字データを送信してその位置に文字を表示させます。

ちょっと長くなってしまったので続きはまた次回ってこと


↑クリックで応援してくれるととても喜びます。
スポンサーサイト

PIC LCD2 PIC タイマー0 割り込み»

コメント

コメントの投稿













管理者にだけ表示を許可する


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。