LCDを1Wで表示
宮前 2011.6〜
履歴
2011.7.26版 UP
2011.7.10版 UP
制御線1本(1W)で、LCD表示が可能になりました。
空いている出力ポートがあれば、LCD表示できます。
(1) 1WでLCD表示
LCDの出番が無いのは、LCDがポートを沢山(最低6個)使用するのが、一番と思いました。
そこでMCUをLCDと一体にして、信号線1本で、表示することにしました。
写真は信号線2本ですが実際に使用しているのは 1本です。 |
|
こちらは送信側(利用する側) |
信号線は1本だけ接続します。 UARTと SUARTが使用できます。 ボーレート:38400bpi |
こちらは、LCD表示側です。 |
|
LCDの左上に5を表示すら場合は、下記のように 使用します。1〜4 |
信号の中身は下記 | 受信側の動きは下記です | |
1. plcd_init(); | I | コマンド I を 読み込み lcd_init(); が実行されます。 | |
2. plcd_putc(’5’); | P35 (35は5の16進表現) | P35 を読み込み、 文字35を変換して5を得ます。 これで lcd_putc(c); 実行します。(cには、’5’ が入る) |
|
1Wライブラリーのソース chanさんのxprintf等からも使用可能 |
1w 38400 2011.7.10
38400版とサンプル4種類
chanさんの
「AVR用組み込みprintfモジュール」は、出力先を任意のモジュールを指定できます。
1Wライブラリーに変更する場合は、
xdev_out(plcd_putc);
とすることで、xprintft等の出力処理を、plcd_putcに変更できます。
http://elm-chan.org/fsw/strf/xprintf_j.html
2011.7.26 2011.7.26
上に加え、
ARM7(LPC2388 雑誌付録)
V850(雑誌付録)
パソコンから制御。
内容は、AVR版と同様です。
提供ライブラリー
chanさんのZZ-LCDライブラリーの各関数の頭にpを付けた関数です
関数の引数は、全く同じです。
chanさのZZ-LCD | 1wライブラリー | 転送サイズ(バイト) | 送信データ |
lcd_init | plcd_init | 1 | I |
lcd_putc | plcd_putc | 3 | Pxx |
lcd_cursor | plcd_cursor | 2 | Cx |
lcd_setcg | plcd_setcg | 3+8*n n:は、登録文字数 | Sxy hhhhhhhhhhhhhhhh*n |
lcd_put_fue | plcd_put_fuel | 3 | Fxy *1 |
lcd_put_bar | plcd_put_bar | 7 | Bxxxyyz *2 |
lcd_put_point | plcd_put_point | 7 | Pxxxyyz *2 |
*1: 5〜-1は、6〜0にシフトして転送
*2: valは、3桁に制限(第一引数)
1. 受信側(LCD側) ソースなど
全機能を実装すると、Aiitny2313の2Kをオーバーするので、公開版は、lcd_put_pointを実装していません。(コメント)
8Mhzで動かしています。
ボーレート:38400
処理しきれなくなると、(データ取りこぼし)表示が乱れたり、停止することもあります。
ここは送信側が、気をつける必要があります。
5V、3.3Vで動作確認しました。
2. 送信側のサンプル
(1) MCU:Atmega168
8Mhz(内臓クロック)で動作。
ボーレート:38400
UARTは、ソフトてもハードでも可能。
割り込み使用していなければ、送信で使用するポートは、出力可能なであれば、どれでも使用できます。
(2) ARM LPC2388 (インターフェース 2008.5月号の付録基板) 2011.7.26
追記
UARTは、ソフトても行っています。
UARTのポートは、CN3-B19から出しています。P0-18 (ここは雑誌の誤植がありますので要注意)
UARTのソースは、chanさんのLチカ通信を流用しています。
内容は、AVRのsamp2とsamp3の移植。
まだソースは不要(ゴミ)だらけです。
各機能を確認 2段目は、棒グラフ |
|
(3) v850se Interface2007.5月号付録基板V850ES/JG2を使用
使用ポートは P9L.0 で CON1の1番から信号が出ます。
USARTの部分は、ARM版とほとんど同じです。
(4) パソコンのソフトから
COM1固定です。
USBシリアルを使用する場合は、ソースを直してください。
COM1 を COMx にするだけです。MinGWを使用。
ソースは、ゴミ(不要部分)だらけです。
--------------------------------------------------------------------------------------------------
送信側は、フォーマットさえあっていれば、ターミナルソフトでも、picでも、H8でもARMでもPCソフトでも何でもOKです。
実際、ターミナルソフトでテストしました。
LCDの表示桁、 MCUの違い動作速度により EZ-LCDモジュールの設定変更が必要になります。
http://elm-chan.org/fsw/ezlcd/00index_j.html
3. 5Vと3.3V動作
5V動作で濃度調整で、シリコンダイオードを使用(0.6V程度)しているのを見てまねをしました。安価で良いですね。
3.3Vは、chanさんが公開しているチャージポンプで昇圧し、5.1K(手持ち)を通すと、-0.9V程度になりました。
又このとき、5Vの調整で使ったダイオードは、OFFするので、在っても問題になりません。
ショートピン(jp1)で、5V動作と3.3V動作の切り替えが出来ました。
D3が、5V動作時の濃度調整。 3.3V動作時は、JP1を閉じるだけ。 |
|
小さい基板を貼り付けています。 橙線がoscの線 白線がVopへの線 青は、Gnd |