AVR Butterfy kunioのHPへ
いつかは遊んでみたいと思っていたAVR
Butterfyが通販で入手できたのでLCD制御を中心に紹介します。
(外付け電池用スナップとISP用のヘッダーピンを接続した後です)
キットの中身
現物は名刺大の大きさとわかっていたが、パッケージはもっと大きくて簡単なマニアル付いているのかなと思ってましたが
本体よりひとまわり大きいパッケージに本体だけが入ってました。(^^;)
概要のマニアルは、atmelのHPにありますが(日本語訳版がHEROさんのサイトにあり)、詳細は試行錯誤で勉強しろという
ことでしょう。
主な仕様
・CPU atmega169
・LCD H4042-DL 120セグメント、7桁表示(このキットでは全セグメントは表示できない)
・入力装置 5要素ジョイスティック(上・下・右・左・ボタン)
・電池 3Vボタン電池 CR-2450
・その他 温度センサー、圧電ブザー、4Mbitフラッシュメモリ等付属
・ファームウェアが既に書き込まれているので、付属電池ですぐに遊べます。(名前表示・時計・温度測定・メロディー演奏等々)
・拡張するためのI/Oポート等のコネクタが接続出来るようになっているので、ソースの書換えやI/Oの引き出しも容易に出来
ます。
LCDの制御
そもそも、これをほしかったのはatmega169の機能確認、特にLCD制御機能について勉強したかったからであるので、それをまず
やってみた。
atmelのサイトにこれのソースも公開されているがそれを全部読みきれないし、そもそもLCD制御の基礎がわかっていないので、
atmega169およびSK502(LCD解説)およびbutterflyのマニアルを縦横に見て理解しました。
atmega169LCD制御機能
atmega169には、25セグメント×4共通電極(100セグメント)のLCD表示制御ができ、デューティ比、バイアス、フレーム周期、コント
ラスト制御等を簡単に行えます。
LCD制御レジスタ
LCDCRA 制御・状態レジスタA LCD使用許可、省電力、割込み等の設定
LCDCRB 制御・状態レジスタB クロック元、デューティ比、バイアス、セグメント制限の設定
LCDFRR フレームレートレジスタ クロックの分周設定(2段階)
LCDCCR コントラスト制御レジスタ 電極駆動時間・電圧の設定
LCDDR0〜19 データレジスタ 100セグメントに対応するメモリ、詳細なビットの対応は下表のとおり
bit7 |
bit6 |
bit5 |
bit4 |
bit3 |
bit2 |
bit1 |
bit0 |
com0 |
com1 |
com2 |
com3 |
- |
- |
- |
- |
- |
- |
- |
SEGn24 |
LCDDR3 |
LCDDR8 |
LCDDR13 |
LCDDR18 |
SEGn23 |
SEGn22 |
SEGn21 |
SEGn20 |
SEGn19 |
SEGn18 |
SEGn17 |
SEGn16 |
LCDDR2 |
LCDDR7 |
LCDDR12 |
LCDDR17 |
SEGn15 |
SEGn14 |
SEGn13 |
SEGn12 |
SEGn11 |
SEGn10 |
SEGn09 |
SEGn08 |
LCDDR1 |
LCDDR6 |
LCDDR11 |
LCDDR16 |
SEGn07 |
SEGn06 |
SEGn05 |
SEGn04 |
SEGn03 |
SEGn02 |
SEGn01 |
SEGn00 |
LCDDR0 |
LCDDR5 |
LCDDR10 |
LCDDR15 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
seg 番号 |
19,24 |
17 |
15 |
16 |
18 |
13 |
11 |
12 |
14 |
9 |
21 |
20 |
10 |
7 |
23 |
22 |
8 |
5 |
26 |
25 |
6 |
4 |
29 |
28 |
27 |
ピン番号 |
7桁 |
6桁 |
5桁 |
4桁 |
3桁 | 2M | 2P | 2N | 2D | com3 | ||||||||||||||||
2L | 2E | 2G | 2C | com2 | |||||||||||||||||||||
: | 2J | 2F | 2H | 2B | com1 | ||||||||||||||||||||
2K | 1 | S1 | 2A | com0 |