現在のところLCD画面を、3つの部分に分けています。
![](https://blogimg.goo.ne.jp/user_image/53/0d/63d71b06807c4cadcd1404c9c220d3db.jpg)
最上部の背景色が黄色の部分には音声再生の音量と、電界強度情報を表示しています。電界強度を示すアンテナは、フォントを作成して文字として出力することで表示しています。ただし、最大で6本もアンテナを立たせると横長になってしまうので、8X8ドットでフォントを作成し、2文字を使って表示することにしています。
電界強度の情報はW-SIMのDISP1~DISP3の3端子の出力をPIOで読み取っています。どうやら、この3つの端子は負論理となっており、電界強度が最大の時に 0x0 が出力されるようです。3ビットあるので、全部で8つの状態が表現できるわけですが、W-SIM対応の電話機のアイコンを見る限り、最大ではアンテナ6本です。どのように3端子の出力を解釈すれば良いのかわからないので、現在は次のように実装しています。
「アンテナ0本」では何も表示していません。実際に圏外状態になる場所で実験してみればいいのでしょうが、自宅周辺でそんな場所を探すのも面倒なので、まだ確認できていません。表示は電界強度に変化があった時に描画しなおせばいいので、これら3端子のつながるポートではPin Change割り込みを許可して、割り込みが生じたら状態を読み取って描画しなおすようにしています。
中央の白い部分はメインのスクリーンとし、ここにメニューや発信する番号、着信時の発信者番号を表示します。メニューで用意している機能については、また別途説明することにします。
下部の緑背景色の部分は、W-SIMから受信したATコマンド応答やメッセージを表示する領域として4行分(高さ32ドット)を割り当てています。表示内容はスクロールされていくので、最後の4行分が表示されることになります。使用しているNokia 6610 LCDには、ブロック(高さ4ドット)単位でスクロールする領域を設定できる機能があるので、この機能を利用しています。
![](https://blogimg.goo.ne.jp/user_image/53/0d/63d71b06807c4cadcd1404c9c220d3db.jpg)
最上部の背景色が黄色の部分には音声再生の音量と、電界強度情報を表示しています。電界強度を示すアンテナは、フォントを作成して文字として出力することで表示しています。ただし、最大で6本もアンテナを立たせると横長になってしまうので、8X8ドットでフォントを作成し、2文字を使って表示することにしています。
電界強度の情報はW-SIMのDISP1~DISP3の3端子の出力をPIOで読み取っています。どうやら、この3つの端子は負論理となっており、電界強度が最大の時に 0x0 が出力されるようです。3ビットあるので、全部で8つの状態が表現できるわけですが、W-SIM対応の電話機のアイコンを見る限り、最大ではアンテナ6本です。どのように3端子の出力を解釈すれば良いのかわからないので、現在は次のように実装しています。
DISP3 | DISP2 | DISP1 | 表示 |
---|---|---|---|
0 | 0 | 0 | アンテナ6本 |
0 | 0 | 1 | アンテナ5本 |
0 | 1 | 0 | アンテナ4本 |
0 | 1 | 1 | アンテナ3本 |
1 | 0 | 0 | アンテナ2本 |
1 | 0 | 1 | アンテナ1本 |
1 | 1 | 0 | アンテナ0本 |
1 | 1 | 1 | 圏外表示 |
「アンテナ0本」では何も表示していません。実際に圏外状態になる場所で実験してみればいいのでしょうが、自宅周辺でそんな場所を探すのも面倒なので、まだ確認できていません。表示は電界強度に変化があった時に描画しなおせばいいので、これら3端子のつながるポートではPin Change割り込みを許可して、割り込みが生じたら状態を読み取って描画しなおすようにしています。
中央の白い部分はメインのスクリーンとし、ここにメニューや発信する番号、着信時の発信者番号を表示します。メニューで用意している機能については、また別途説明することにします。
下部の緑背景色の部分は、W-SIMから受信したATコマンド応答やメッセージを表示する領域として4行分(高さ32ドット)を割り当てています。表示内容はスクロールされていくので、最後の4行分が表示されることになります。使用しているNokia 6610 LCDには、ブロック(高さ4ドット)単位でスクロールする領域を設定できる機能があるので、この機能を利用しています。