$programmer = 26 'MCS UPDI programmer ' ' ****************************************** ' * MCP23017 I2C G-LCD アダプターのテスト * ' * (XMEGA・XTINY 用) * ' * 2021. 7. 7 * ' ****************************************** ' $regfile = "mx4809.dat" '使用するAVRを設定。 $crystal = 20000000 'AVRクロックを設定。 ' $hwstack = 64 'ハードウェア・スタックの容量を設定。 $swstack = 10 'ソフトウェア・スタックの容量を設定。 $framesize = 24 'フレーム領域の容量を設定。 Config Sysclock = 20mhz , Prescale = 1 'システムクロックの設定。 Config Com1 = 9600 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8 ' ' * PCF8574 I2C LCD アダプターの設定 * ' Const I2c_select = 1 '0:ソフトウェアI2C , 1:TWI ' Dim Twi_start As Byte 'TWIライブラリで使用する変数。 Const Twi_adr = Twi0_ctrla : Const Twi_ch = 1 '使用するTWIインターフェースとTWIチャンネルの定数を設定する。 ' #if I2c_select = 0 '------[ソフトウェアI2C用]------ $forcesofti2c 'ソフトウェアI2C/TWIライブラリを強制的に使用する。 $lib "i2c.lbx" 'ソフトウェアI2C用のライブラリを上書きする。 Config I2cdelay = 10 'SCLのクロック周波数 = 約42KHz。(AVRクロック16MHz時) (*最大100KHz) Config Scl = Porta.5 'I2CバスのSCLラインを接続するポートピンを設定。 Config Sda = Porta.4 'I2CバスのSDAラインを接続するポートピンを設定。 I2cinit 'I2CバスのSCL,SDAラインを初期化する。 '------------------------------- #else '------[TWI用]------------------ Config Twi0 = 100000 'I2Cバスのクロック = 100KHz I2cinit 'I2CバスのSCL,SDAラインを初期化する。 '------------------------------- #endif Const Glcd_address = &H40 'MCP23017のスレーブ・アドレス。(&H40,&H42,&H44,&H46,&H48,&H4A,&H4C,&H4E) Dim Backlight As Byte : Backlight = 1 'LCDのバックライト制御。(0:消灯, 1:点灯) Dim Dummy As Byte : I2creceive &H00 , Dummy '[_I2C_READ]ルーチンを組み込むためのダミー命令。 $lib "glcdKS108_I2C_MCP23017.lib" 'KS0108チップ用のライブラリを組み込む。 Config Graphlcd = 128 * 64sed 'グラフィックLCDの画面設定。 ' ' * 描画のテスト * ' Dim Y As Byte ' Do Cls 'グラフィックLCDの全画面を消去する。 Setfont Font8x8 'フォントを設定する。 Lcdat 1 , 1 , "MCP23017 I2C" '文字列を表示。 Lcdat 2 , 20 , "G-LCD adapter" , 1 '文字列を反転表示。 ' For Y = 23 To 63 Step 5 Line(3 , 23) -(35 , Y) , 1 '直線を描画。 Next Y ' Box(45 , 30) -(80 , 55) , 1 'ボックスを描画。 Cls 6 , 53 , 73 , &HCA 'ブロック消去のテスト。 ' Circle(105 , 40) , 16 , 1 '円を描画。 Pset 105 , 40 , 1 '円の中心に点を描画。 ' Wait 3 ' ' * バックライト制御のテスト * ' Backlight = 0 : Glcdcmd &H3E , 1 : Glcdcmd &H3E , 2 'LCD画面とバックライトをオフにする。 Wait 2 Backlight = 1 : Glcdcmd &H3E , 1 : Glcdcmd &H3E , 2 'バックライトをオンにする。 Wait 2 Backlight = 1 : Glcdcmd &H3F , 1 : Glcdcmd &H3F , 2 'LCD画面とバックライトをオンにする。 Wait 2 ' ' * SHOWPIC命令のテスト * ' Cls 'グラフィックLCDの全画面を消去する。 Showpic 0 , 0 , Plaatje 'BGFファイルを描画する。 ' Wait 3 ' Loop ' End 'プログラムの終了。 ' $include "font8x8.font" 'フォント・ファイルを組み込む。 ' Plaatje: 'BGFファイルのラベル名。 $bgf "KS108.bgf"