PIC 68:Controller for LCD (I2C)U

 [ミニLCDのコントロール]の続きで応用編です。
 4:I2C_LCD カスタム・キャラクタ作り(自作アイコンもどき)
 5:ドット[キャラクター]の表示
 6:SLEEPを使って、電源スイッチを略す(前回の応用)。
 7:タイマ・ソフト


4: 自作アイコンを作る!
 キャラクター作りを利用して、アイコンを試しに作ってみました。

 ミニI2C式のLCDは「以前のLCDを小形にしてコントロールをI2Cにした物」です。従来から使われているICと同じなので内臓のRAMエリアにDATAを書き込めます。
 これによって、5X7ドットの文字が作れますが絵なども同様に作れます。RAMは全体で8個まで作って保存(転送、アドレス0-7)出来ます。

 写真は大形の表示器です、同じ動作なのでこれを出して接続してみました。「●と…」です、意味ありませんが…。

 使い方
1.5X7ドットの図を作ります、Max8個。
2.使いたい時は、普通の文字や数字と同じです。

 例えば、[1]なら[0x30]を転送すれば表示出来ますが、RAMエリア0番地に送ったものなら[0]を送れば良い。もちろん何度呼び出してもかまわない。

--------0
--------0
----***-14
---*****31
---*****31
----***-14
--------0
--------0

 保存(転送)方法
 出来たキャラクターDATAをRAMへ保存します。これはLCDの初期設定した直後に送ると良い。
 コマンドのアドレスが[0x40]でDATAが上の行から8個順に送ります。アドレスも送るのですが、同じ場合自動で+1されるのでDATAだけをドンドン送れば良いのです。
 次のキャラクターもドンドン送るか、アドレスを[0X48]と8を加えてから送り、DATAを順に転送します。後は方法は同じです。

 前の3bitは使わないのと、一番下はカソールをコントロールすると消えるので使わない方が良い。

 キャラクターはmikroCのコンパイラにおまけにツールが入っているので利用出来ます[π]。但し普通のLCD用のプログラムが出て来るのでこれは使わず、DATAだけを利用します。

 サンプル・プログラム
const char character0[] = {0,0,14,31,31,14,0,0}; //
void CustomChar() {
 char i;
 Lcd_Comd(0x40);

// Start Address
  for (i = 0; i <= 7; i++)
   Lcd_Data (character1[i]); // Data 0
}



5: ドット[キャラクター]の表示

 数字をドットに変換し視覚的に表す。
 このセットはタイマーにしたので、秒を表す道具として使いました。

 実際は0-9までをドットにとして表示します、ちようど「0」の時は全てのドットをクリヤーして見易くしている。

 上の写真下側に並んでいる●と…の部分です。規格外のキャラクターを作った一寸とした遊びです。これは1秒おきに●が出て来るものです。

 サンプル・プログラム
Lcd_Comd(0xC0); //set Line 2 dot display
 for (cnt=0x30; cnt < 0x39; cnt++) {
  if (R0==0x39)
   Lcd_Data(0x20); //
  else {
   if (cnt <=R0)
     Lcd_Data(0x00); //"*"
   else
     Lcd_Data(0x20); //
   }
  }



6: SLEEPを使って、電源スイッチを略す(前回の応用)

 現在の動作は2.6Vの電池(NI-MH:充電後の状態)で全電流0.56mAで動作しています。これを[SLEEP動作]させると1μA以下になりSWは必要ありません(私のテスターでは測定不能:これ以上はパソコンを動かさないと出来ません)。
 電池は2.4V600mAを使っているので単純計算で1000時間以上、連続で45日以上持つはずです(もっと小形な電池が欲しい)。

 外部にボタンを追加していますが、これで電源スイッチの代わりです。


7: タイマ・ソフト

 単に「画面に出た程度では寂しい!」という事でTimerを作ってみました。1秒をカウントアップして10秒、そして1分・10分・1時間の表示です。説明するほどの事も無いと思います。
 1秒→10秒→(60)1分→10分→(60)1時間→(9時間)まで

 ただ、時間を内臓発振に頼っていますので精度は取れません。1時間に1分以下の誤差は認め「ある程度の時間が分かれば良い」というといどの使い道です。

 一番上の写真は[2分7秒]の表示と7秒分の[●]の表示が出ています。

 この辺までの実験で、PIC12F629を使って690バイトですから後300ぐらいの余裕があります。ここまでの[Soft]はこれです。


2010/12/24 作成   



 [MENU] [MAIN MENU]

inserted by FC2 system