【PIC24FJ64GA002】秋月300円液晶(LTA042B010F)をつかってみる。
◆PIC24FJ64GA002で秋月300円液晶をつかってみます。今回は単色のチャレンジです。
参考サイト
なる研さんで各ポート、タイミングチャートを勉強させてもらいました。
ポート設定と接続
PORTBを全部使えば16ビットカラーに出来るんですが
ポートの節約のため256色8ビットにしました。
今回はPORTBの下位8ビットを下記の表のように接続しました。
function | LTA042B010F | PIC24FJ64GA002 |
赤2 | R5<22> | RB7<16> |
赤1 | R4<23> | RB6<15> |
赤0 | R3<24> | RB5<14> |
緑2 | G5<15> | RB4<11> |
緑1 | G4<16> | RB3<7> |
緑0 | G3<17> | RB2<6> |
青2 | B5<8> | RB1<5> |
青1 | B4<9> | RB0<4> |
タイミングチャート
CLKが立下りのときにサンプリングされるので
CLK=1のときに色をセットしておいて、CLK=0にするだけです。
実行中の秋月300円液晶の様子
ソース
赤色をセットしてクロックをパタパタだけです。
プログラムの例はこちら↓
//========================================================= // 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つで負電圧(電源電圧のマイナス版)を作れるので楽です。
ディスカッション
コメント一覧
まだ、コメントがありません