// SCLM-P105(カラーLCD) 表示テスト Ver.01 // 〜ひたすらカウントし続けるだけです。 // // 結線 (MSP430G2553) // MSP430 <---> SCLM-P105 // P1.6 <---> CLK // P1.7 <---> CS // P2.0 <---> DB0 // P2.1 <---> DB1 // P2.2 <---> DB2 // P2.3 <---> DB3 // P2.4 <---> DB4 // P2.5 <---> DB5 // P2.6 <---> DB6 // P2.7 <---> DB7 // // LCDの電源は 5V、MSP430は 3V なので注意! // 信号線は直結しても問題無いようです。 // LCDのBUSY信号は無視(接続しない) #include unsigned char d[27], i, m; unsigned int j, k; // main.c void main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop WDT BCSCTL1 = CALBC1_1MHZ; // 内部DCOクロックを DCOCTL = CALDCO_1MHZ; // 1MHz に設定。 P1SEL = 0x00; // P1ポート全BitをI/Oに設定 P1DIR = 0xFF; // P1ポート全Bit出力に設定 P2SEL = 0x00; // P2ポート全BitをI/Oに設定 P2DIR = 0xFF; // P2ポート全Bit出力に設定 P1OUT |= BIT7; // P1ポートBit7を1に (CS = H) P1OUT &= ~BIT6; // P1ポートBit6を0に (CLK = L) k = 0; m = 0; for (j = 0; j < 27; j++) d[j] = 0xE0; // 全表示クリア(黒) d[1] = 0x40; // 固定マーク「上段コロン」を表示(紫) d[3] = 0x00; // 固定マーク「下段ドット」を表示(白) d[4] = 0x80; // 固定マーク「システム」を表示(青) d[6] = 0x40; // 固定マーク「時分」を表示(紫) d[10] = 0x40; // 固定マーク「積算」を表示(紫) d[17] = 0x40; // 上段1桁目(0固定)(紫) for (;;) { d[18] = k/3600%100/10 +0x40; // 上段2桁目(紫) d[19] = k/3600%10 +0x40; // 上段3桁目(紫) d[20] = k/60%60/10 +0x40; // 上段4桁目(紫) d[21] = k/60%10 +0x40; // 上段5桁目(紫) d[22] = k/1000; // 下段1桁目・千秒(白) d[23] = k%1000/100; // 下段2桁目・百秒(白) d[24] = k%1000%100/10; // 下段3桁目・十秒(白) d[25] = k%1000%100%10; // 下段4桁目・一秒(白) d[26] = m; // 下段5桁目・ミリ秒(白) P1OUT &= ~BIT7; // CS = L にする __delay_cycles(2); for (i = 0; i < 27; i++){ // 配列d[]にセットした値27個をP2に送る P1OUT |= BIT6; // CLK = H にする P2OUT = d[i]; // P2ポートにデータを送る __delay_cycles(5); P1OUT &= ~BIT6; // CLK = L にする __delay_cycles(5); } P1OUT |= BIT7; // CS = H にする for (j = 0; j < 8860; j++); // 時間待ち(マイコン個体差に依存) m++; if (m == 10) { k++; m = 0; } } }