【PIC24FJ64GA002】秋月300円液晶(LTA042B010F)をつかってみる。

2021年2月21日

◆PIC24FJ64GA002で秋月300円液晶をつかってみます。今回は単色のチャレンジです。

参考サイト

なる研さんで各ポート、タイミングチャートを勉強させてもらいました。

ポート設定と接続

PORTBを全部使えば16ビットカラーに出来るんですが
ポートの節約のため256色8ビットにしました。
今回はPORTBの下位8ビットを下記の表のように接続しました。

functionLTA042B010FPIC24FJ64GA002
赤2R5<22>RB7<16>
赤1R4<23>RB6<15>
赤0R3<24>RB5<14>
緑2G5<15>RB4<11>
緑1G4<16>RB3<7>
緑0G3<17>RB2<6>
青2B5<8>RB1<5>
青1B4<9>RB0<4>
LTA042B010FとPIC24F64GA002との接続表

タイミングチャート

CLKが立下りのときにサンプリングされるので
CLK=1のときに色をセットしておいて、CLK=0にするだけです。

実行中の秋月300円液晶の様子

73c2da65.jpg

ソース

赤色をセットしてクロックをパタパタだけです。
プログラムの例はこちら↓

//=========================================================
//  TEST
//=========================================================
//== ヘッダファイル ============================================
#include <p24FJ64GA002.h>
#include <stdio.h>
//== define ===========================================================
#define akiLCD_CLK    PORTAbits.RA2
#define akiLCD_HS    PORTAbits.RA3
#define akiLCD_VS    PORTAbits.RA4
//== configuration ======================================================
_CONFIG1( JTAGEN_OFF    //JTAGポート:OFF
& GCP_OFF        //汎用セグメントプログラムメモリコード保護:OFF
& GWRP_OFF        //汎用セグメントフラッシュメモリ書き込み保護:OFF
& BKBUG_OFF        //バックグラウンドデバッカ:OFF
& COE_OFF        //クリップオンエミュレート:OFF
& ICS_PGx1        //ICDピン選択:PGC1、PGD1を選択
& FWDTEN_OFF)    //WDT:OFF   
//== 8MHz×PLL4=32MHz =================================================================
_CONFIG2( IESO_OFF        //2段階起動:OFF
& FNOSC_FRCPLL    //発振選択:内部発振、PLL使用
& FCKSM_CSDCMD    //クロック切り替え、モニタ:切り替えOFF、モニタOFF
& OSCIOFNC_ON    //OSCOピン:ON→IO OFF→Fosc/2
& IOL1WAY_OFF    //RPレジスタプロテクト:OFF
& I2C1SEL_PRI    //I2C1ピン:主選択
& POSCMOD_NONE)    //主発振:無効
//== function_prototype =================================================================
//== MyTimer =====================================================================
void delay_us(unsigned int usec);            //Timer1を利用したusec関数
void delay_ms(unsigned int msec);            //msec関数
//== main ==================================================================
int main(void)
{
//== クロックの設定 ========================================================
CLKDIV = 0;                    //PLL設定 1:1
//== AD切り替え ==========================================================
AD1PCFG = 0xffff;            //全digital
//=== TRISA ===========================================================
TRISA = 0x0000;                //initial_
//== TRISB =============================================================
TRISB = 0x0000;                //input:
//TRISBbits.TRISB3 = 1;        //SD_WE
//TRISBbits.TRISB4 = 1;        //SD_CD
//TRISBbits.TRISB6 = 1;        //SDI
//== SPI設定 ============================================================
//RPOR5bits.RP10R = 7;        //SDO1:RP10
//RPOR5bits.RP11R = 8;        //SCK1OUT:RP11
//RPINR20bits.SDI1R = 6;        //SDI:RP6
//== TIMER1設定 =========================================================
T1CONbits.TON = 0;            //Timer1_OFF
T1CONbits.TSIDL = 1;        //アイドルモード:Sleep中は停止
T1CONbits.TGATE = 0;        //ゲート積算時間:OFF
T1CONbits.TCKPS = 0B00;        //PS1:1
T1CONbits.TCS = 0;            //クロックソース:内部
IEC0bits.T1IE = 0;            //割り込み拒否
IPC0bits.T1IP = 0;            //優先レベル0
//== 割り込み許可 =========================================================
//== 前処理 =============================================================
delay_ms(200);
akiLCD_HS = 0;
akiLCD_VS = 0;
//== while文 ===========================================================
while(1)
{
akiLCD_CLK = 1;
PORTB = 0b11100000;        //RED
akiLCD_CLK = 0;
}//while
}//int main(void)
//== CN_Interrupt =========================================================================

回路図

バックライト用に負電源が必要なので、これまた秋月のLT1054を使いました。
電解コンデンサ2つで負電圧(電源電圧のマイナス版)を作れるので楽です。
e7064089.png

よろしければバナーをクリックお願いします!