$programmer = 16 'USBprog Programmer/ AVR ISP mkII (Atmel) ' ' *************************************** ' * PCF8574 I2C LCD アダプターのテスト * ' * (XMEGA用) 2022. 7.12 * ' *************************************** ' $regfile = "xm128a1def.dat" $crystal = 32000000 ' $hwstack = 64 $swstack = 40 $framesize = 40 Config Osc = Enabled , 32mhzosc = Enabled Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1 ' ' * PCF8574 I2C LCD アダプターの設定 (XMEGA用) * ' Const I2c_select = 1 'I2Cインターフェイスの選択。(0:ソフトウェアI2C , 1:ハードウェアTWI) ' #if I2c_select = 0 'ソフトウェアI2Cの場合。 Const Twi_adr = 0 : Const Twi_ch = 0 '[ライブラリ内のダミー] $forcesofti2c 'ソフトウェアI2C/TWIライブラリを強制的に使用する。 $lib "i2c.lbx" 'ソフトウェアI2C用のライブラリを上書きする。 Config I2cdelay = 5 'SCLのクロック周波数 = 約90KHz。(AVRクロック32MHz時) (*最大100KHz) Config Scl = Portc.7 'I2CバスのSCLラインを接続するポートピンを設定。 Config Sda = Portc.6 'I2CバスのSDAラインを接続するポートピンを設定。 I2cinit 'I2CバスのSCL,SDAラインを初期化する。 #else 'ハードウェアTWIの場合。 Dim Twi_start As Byte 'TWIライブラリで使用する変数。 Const Twi_adr = Twic_ctrl 'TWIのポート。TWI_ADR = TWIC_CTRL:(TWIC), TWID_CTRL:(TWID), TWIE_CTRL:(TWIE), TWIF_CTRL:(TWIF) Const Twi_ch = 1 'TWIのチャンネル。TWI_CH = 1:(TWIC), 2:(TWID), 4:(TWIE), 8:(TWIF) Config Twic = 100000 'TWIポート[TWIC, TWID, TWIE, TWIF]のクロック周波数。 (*最大100KHz) I2cinit 'TWIバスのSCL,SDAラインを初期化する。 #endif ' Dim Pcf8574_lcd As Byte : Pcf8574_lcd = &H4E 'PCF8574のスレーブ・アドレス。(&H40,&H42,&H44,&H46,&H48,&H4A,&H4C,&H4E) Dim Backlight As Byte : Backlight = 1 'LCDのバックライト制御。(0:消灯, 1:点灯) $lib "lcd_i2c_PCF8574.LIB" 'I2C LCD PCF8574 Adapterのライブラリを組み込む。 Config Lcd = 20x4 'LCDを20文字4行に設定する。 Initlcd 'LCDを初期化する。 ' ' ************** ' * 表示テスト * ' ************** ' Do Cls 'LCD表示をすべて消去する。 Locate 1 , 1 'タイトルの表示。 Lcd "PCF8574" ' Locate 2 , 2 Lcd "I2C LCD Adapter" ' Deflcdchar 2 , &H02 , &H04 , &H0C , &H1E , &H0F , &H06 , &H04 , &H08 'カスタム文字[雷]をLCDへ書き込む。 Locate 1 , 15 'カスタム文字の表示。 Lcd Chr(2) ; "1" ' Locate 1 , 9 'PCF8574のスレーブ・アドレスを表示。 Lcd "[" ; Hex(pcf8574_lcd) ; "]" Wait 3 ' Backlight = 0 'LCDのバックライトを[消灯]する。 Locate 1 , 1 'バックライトを制御するためにダミーのコマンドを送る。 Wait 2 Backlight = 1 'LCDのバックライトを[点灯]する。 Locate 1 , 1 'バックライトを制御するためにダミーのコマンドを送る。 ' Locate 2 , 16 'カーソルを表示する。 Cursor On , Blink Wait 3 ' Locate 2 , 1 Lcd " < For XMega > " Wait 3 Loop End