C言語でPIC18F、SDカードの画像ファイルをLCD(M028C9325TP)に表示

C言語でPIC18F、SDカードの画像ファイルをLCD(M028C9325TP)に表示

aitendoで入手したカラーグラフィックLCD(M028C9325TP (320 x 240ピクセル)には、SDカードのソケットも実装されています。 ここに画像ファイル(BMP)を入れてLCDへの表示をしました。

PIC18F26K22を使用してXC8のCコンパイラ用のプログラムでLCD(M028C9325TP)への表示とSDカードの読み出しとは先日個別にできているので、合体することでSDカード内の画像ファイルを読み出してLCDに表示しました。
PIC18F26K22 XC8 で SDカード内の画像ファイルを LCD(M028C9325TP) に表示
SD関連の結線は前回のそのままですが、LCD関連の結線はRCxからRBxに変更しました。

PICとSDカードの接続
PIC                SDカード(変更なし)
————————————–
RC0               SD_CS   (10kΩの抵抗器でプルアップ)
RC3/SCK1    SD_SCK
RC4/SDI1     SD_OUT (10kΩの抵抗器でプルアップ)
RC5/SDO1    SD_DIN

PICとLCDの接続(RCx→RBxに変更)
PIC        LCD
————————-
RA0               DB8
RA1               DB9
・                ・
・                ・
RA7               DB15
RC0  RB3      RS
RC1  RB2      WR
RC2  RB1      RD
RC6  RB4      CS
RC7  RB5      RST

元々ベースにしたC言語のコードは先日の日記にも記載しているように、
LCD関連: aitendo のサイトのこのLCDのページにあるC言語の参考コード(但しSTM32用)
SD関連:こちらのサイト(Interfacing SD Card With PIC Microcontroller-XC8)
です。 これらに変更を加えた形になっています。

プログラムはSDカード読み書きのものをベースにして、LCD関係のコード(ILI93xx.c (修正したもの), lcd.h(修正したもの), font.h)を組み込み、つじつまをあわせる感じで行いました。)

その上でILI93xx.cにBMPファイルをLCDに表示するために変更しました。
主な変更点は、画像表示RAM(GRAM) アドレス制御の変更 (ILI9325のAMビット=0→1, I/Dビット=11→00)。 (これによってLCD_WR_DATA()を連続で読み出している関数のLCD_Fill()とLCD_Clear()は副作用を受ける。)です。
LCD_Init()関数
LCD_WriteReg(0x0003,(1<<12)|(3<<4)|(0<<3) );//65K
→  LCD_WriteReg(0x0003,(1<<12)|(0b00<<4)|(1<<3) );//65K

LCD_Clear()関数
LCD_SetCursor(0x00,0x0000);//
→      LCD_SetCursor(0x00,LCD_H – 1);

LCD_Fill()関数
#ifdef USE_HORIZONTAL
→      #ifndef USE_HORIZONTAL

さらに、BMPファイルの画像データをLCD_WR_DATA()関数を使用してLCDの画像表示RAM(GRAM)に転送する関数を追加。 main()でf_read()に続いてこれを呼び出します。
上記の変更でBMPファイルデータ順(画像左下始まり、水平方向にスキャン、右上終わり)とLCD_WR_DATA()関数を連続使用したときの画像表示データRAM(GRAM)のアドレス変化の方向が同一になっています(LCD_WR_DATA()で連続転送できる)。 RGBのビット位置合せは必要ですけど。

PIC18FでのC言語の扱いと、カラーグラフィック液晶をどのような感じで使うのかが大体わかった気がします。 このLCDモジュール(M028C9325TP)はタッチスクリーンもついているのですが、試してみるかどうかまだ迷っています。


関連記事
C言語でPIC18F、まずはLチカ (LED点滅
C言語でPIC18F、カラーグラフィックLCD(M028C9325TP) 接続
C言語でPIC18F、カラーグラフィックLCD(M028C9325TP) 接続2
C言語でPIC18F、SDカード読み書き
C言語でPIC18F、SDカードの画像ファイルをLCD(M028C9325TP)に表示

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

ZEROPLUS ロジックアナライザ 【LAP-C(16032)】
価格:14160円(税込、送料別) (2017/3/12時点)

PIC18Fカテゴリの最新記事