Topics | PICC Pro lite mode | MPLAB XC8 | Actual use | USART | PWM | LCD | Interrupt | PICkit2 | PIC16F687 | PIC16F689 |
ACM1602N1(I2Cで接続できる16桁2行LCD秋月電子通商)はPIC16F689が搭載されてます。プログラムを書き換える事ができますが、元に戻したい場合などがあると思います。同じマイコンを用意しておき、交換してプログラムする方法もありますが、チップがとても小さいので簡単ではありません。そこで、ACM1602NIを購入時に戻す互換ファームウェアを作成しました。チップを張り替えなくても、プログラムを書き換えれば良いだけです。更に付加機能として、ストロベリーリナックスのI2C互換にもなります。
ご注意:元々のLCDモジュール内PICマイコンにはプロテクトが掛かっており、書き込むと元に戻せません。まったく同じ状態に戻したい場合はチップを交換し、新しいPICマイコンに書き込んでください。入手が容易なPIC16F687I-SSなどが使えます。
互換モードの動作は、完全再現を行なっているわけでありませんので、細かい部分で相違が出る場合があります。ご了承ください。
ACM1602NIの回路は解析した一部です。
ACM1602NIのモジュールを使用しなくても、一般的なLCDキャラクターモジュールSC1602BとPIC16F687/689で構成する事も可能です。PIC16F687やPIC16F689、3.3VLCDを組み合わせて製作することもできます。使用していないRB7,RB5を利用して、それぞれ負電源生成用の発振回路とI2Cアドレス設定ピンに割り当てています。負電源を生成することで、5V用のLCDを3.3Vで使用する事ができます。
秋月I2C LCDACM1602NI互換ファームウェア
Date | version | Build | Folder | Device | note |
---|---|---|---|---|---|
new! 2015/5/24 |
1.60 | MPLABX v3.00 MPLAB XC8 complier version 1.34 |
lcd_i2c_16f68x.X | PIC16F689 (PIC16F687) |
コーディングのバグを修正 ご指摘ありがとうございました。 |
2013/9/8 | 1.50 | MPLABX v1.85 MPLAB XC8 complier version 1.20 |
lcd_i2c_16f68x.X | PIC16F689 (PIC16F687) |
SSPSTATbit.R_nW == 1 の時にSSPBUFにダミーでデータ処理を追加。 ご指摘ありがとうございました |
2012/9/28 | 1.40 | MPLABX1.41,MPLAB XC8 ver 1.10 | lcd_i2c_16f68x.X | PIC16F689 (PIC16F687) |
CGRAM初期化と最初にI2Cアドレスと型番を表示するようにしました。RB7ピンに発振出力を設けています。 このファイルからMPLABX IDEを使用しています。 この関係でHEXファイルは\dist\default\production にhexファイルが入っています。 |
2012/7/17 | 1.10 | MPLAB8.85,MPLAB XC8 ver 1.00 | C:\picsrc\xc8\lcd_i2c_16f68x | PIC16F687 PIC16F689 |
HEXファイル同梱 16F687でビルドしていますが、16F689でも使用できます。 |
ストロベリー・リナックスI2C LCD SB1602B/SB1602E互換ファームウェア
Date | version | Build | Folder | Device | note |
---|---|---|---|---|---|
new! 2015/5/24 |
1.60 | MPLABX v3.00 MPLAB XC8 complier version 1.34 |
lcd_i2c_SB1602B_16f68x.X | PIC16F689 (PIC16F687) |
コーディングのバグを修正 ご指摘ありがとうございました。 |
2013/9/8 | 1.50 | MPLABX v1.85 MPLAB XC8 complier version 1.20 |
lcd_i2c_SB1602B_16f68x.X | PIC16F689 (PIC16F687) |
SSPSTATbit.R_nW == 1 の時にSSPBUFにダミーでデータ処理を追加。 ご指摘ありがとうございました |
2012/9/28 | 1.40 | MPLABX1.41,MPLAB XC8 ver 1.10 | lcd_i2c_SB1602B_16f68x.X | PIC16F689 (PIC16F687) |
最初にI2Cアドレスと型番を表示するようにしました。 負電源を生成出来るように、RB7ピンに発振出力を設けています。 このファイルからMPLABX IDEを使用しています。 この関係でHEXファイルは\dist\default\production にhexファイルが入っています。 |
2012/9/17 | 1.20 | MPLABX1.41,MPLAB XC8 ver 1.10 | lcd_i2c_SB1602B_16f68x.X | PIC16F687 PIC16F689 |
SB1602Bでは電源投入時のCGRAMがクリアされている様ですので、仕様をそれに合わせました。 このファイルからMPLABX IDEを使用しています。 この関係でHEXファイルは\dist\default\production に lcd_i2c_SB1602B_16f68x.X.production.hex として入っています。 ソースファイルを使えば従来のMPLAB IDEでもビルドが可能です。 |
2012/7/15 | 1.10 |
MPLAB8.85,MPLAB XC8 ver 1.00 | lcd_i2c_SB1602B_16f68x | PIC16F687 PIC16F689 |
HEXファイル同梱 16F687でビルドしていますが、16F689でも使用できます。 |
秋月I2C LCDACM1602NI
ストロベリー・リナックスI2C LCD SB1602B/SB1602E
のテストを行うハードウェア
8桁2行でキャラクターを順番に表示します。I2Cに複数のデバイスを混在で接続しても動作します。
言語はPICAXEで行っています。 →使用方法や情報はエアーバリアブルブログのPICAXEを参照。
プログラム・ダウンロード → i2clcd(ACM1602N1)test_20150524-021154
通常はACM1602NI同様の0x50(0xA0)で、5ピンコネクタのRXと記してある部分(PIC12ピンRB5の)をGNDに接続すると第2アドレス0x3d (0x7A)に設定できます。アドレスは電源投入時に確定されるので、途中での設定変更はできません。
promdata.cのEEPROM領域の0x00と0x01に、それぞれ通常アドレスと第2アドレスが書き込まれていますので、書き換えて変更が可能です。
標準の場合
RX端子をGNDにして起動した場合
電源投入時、この様に表示されます。この表示はI2Cよりコマンドが発生し、LCDの描写等が行われることで消去されます。
アイコン表示、コントラスト調整のコマンドはサポートされません。LCDコントラスト調整は外部の半固定抵抗で行います。
通常はSB1602B同様の0x3E(0x7C)で、5ピンコネクタのRXと記してある部分(PIC12ピンRB5の)をGNDに接続すると第2アドレス0x4A (0x94)に設定できます。アドレスは電源投入時に確定されるので、途中での設定変更はできません。
promdata.cのEEPROM領域の0x00と0x01に、それぞれ通常アドレスと第2アドレスが書き込まれていますので、書き換えて変更が可能です。
標準の場合
RX端子をGNDにして起動した場合
電源投入時、この様に表示されます。この表示はI2Cよりコマンドが発生し、LCDの描写等が行われることで消去されます。
■ハードウェア
解析資料
ACM1602N1搭載のPIC16F689ピン配列
1:VDD
2:RA5:O:LCD_RW
3:RA4:O:LCD_E
4:RA3:I:(MCLR) モードスイッチに使用。基板内部で10KΩプルアップされている
5:RC5:O:LCD_D5
6:RC4:O:LCD_D4
7:RC3:O:LCD_D3
8:RC6:O:LCD_D6
9:RC7:O:LCD_D7
10:RB7:O:(TX)
20:VSS
19:RA0:O:(ICSPD)
18:RA1:O:(ICSPC)
17:RA2:O:LCD_RS
16:RC0:O:LCD_D0
15:RC1:O:LCD_D1
14:RC2:O:LCD_D2
13:RB4:O:(SDA) 右スイッチに使用
12:RB5:O:(RX)
11:RB6:O:(SCL) 左スイッチに使用
■ソフトウェア
元々のLCDモジュール内PICマイコンにはプロテクトが掛かっており、書き込むと元に戻せません。元に戻す予定がある場合はチップを交換して対応します。LCDの転送モードは8ビットモードで行なっています。LCDのRW信号はLow固定で使用しています。
エアーバリアブルブログ内
秋月I2C LCD ACM1602NI用互換プログラム2種(秋月・ストリナ)バグ修正
秋月I2C接続キャラクタLCDモジュールをシリアル入力タイプに改造
PICカテゴリ
PICAXEカテゴリ
外部リンク
→I2C接続キャラクタLCDモジュール[16x2行]白色バックライト付
→PICマイコン PIC16F687−I/SS
→PIC16F631/677/685/687/689/690 datasheet (pdf)
2015/5/24 プログラムバグフィックス、検証用ツール公開
2013/9/8 プログラムバグフィックス
2012/9/28 個別部品で構成する回路図とファームウェア公開
2012/9/17 ページを分離
2012/4/19 初版作成
(C)2012-2015 air variable All Rights Reserved..