I2C LCD ACM1602NI用プログラム(解析資料)

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で構成する事も可能です。PIC16F687PIC16F6893.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互換ファームウェア(秋月I2C LCD)】

通常はACM1602NI同様の0x50(0xA0)で、5ピンコネクタのRXと記してある部分(PIC12ピンRB5の)をGNDに接続すると第2アドレス0x3d (0x7A)に設定できます。アドレスは電源投入時に確定されるので、途中での設定変更はできません。
promdata.cのEEPROM領域の0x00と0x01に、それぞれ通常アドレスと第2アドレスが書き込まれていますので、書き換えて変更が可能です。

標準の場合
 RX端子をGNDにして起動した場合

電源投入時、この様に表示されます。この表示はI2Cよりコマンドが発生し、LCDの描写等が行われることで消去されます。


【SB1602B互換ファームウェア(ストロベリーリナックス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..


ホーム