/***********************************************************************/ /* */ /* FILE :test.c */ /* DATE :Sun, Jan 06, 2008 */ /* DESCRIPTION :Main Program */ /* CPU TYPE :H8S/2144F */ /* */ /* This file is generated by Renesas Project Generator (Ver.4.9). */ /* */ /***********************************************************************/ void main(void); #ifdef __cplusplus extern "C" { void abort(void); } #endif #include "iodefine.h" // 追加 #define DI P4.DR.BIT.B3 #define RW P4.DR.BIT.B5 #define LCD_DB PB.ODR.BYTE #define E P4.DR.BIT.B6 #define CS1 P4.DR.BIT.B7 #define CS2 P8.DR.BIT.B3 #define SLCD_E P6.DR.BIT.B0 #define SLCD_SCLK P6.DR.BIT.B1 #define SLCD_DATA P6.DR.BIT.B2 #define SLCD_INT P6.DR.BIT.B3 #define RTC_SCL P9.DR.BIT.B1 #define RTC_SDA P9.DR.BIT.B0 extern void busycheck(void); extern void cs(char); extern void displayon(char); extern void displayoff(char); extern void displaystartline(char,char); extern void pageaddress(char,char); extern void setaddress(char,char); extern void writedisplaydata(char,char); extern void lcd_E(void); extern void cls(void); extern void print(char,char,char[]); extern void SLCD_reset(void); extern void SLCD_write(char); extern void SLCD_clkout(void); extern void SLCD_init(void); extern void SLCD_1disp(unsigned char); extern void SLCD_intdisp(unsigned int,unsigned int); extern char RTC_read(unsigned char[]); extern unsigned char RTC_1read(void); extern void RTC_ACKout(void); extern char RTC_1write(unsigned char); extern void RTC_clkout(void); extern void RTC_write(unsigned char,unsigned char); extern void RTC_init(void); extern void wait(unsigned int); void main(void) { unsigned int i,j,k; unsigned char ye,mn,dy,hh,mm,ss; unsigned char rtc[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; P6.DDR=0xFF; // P6 bit0(7セグA)は入力、bit1〜bit7は出力に P6.DR.BYTE=0xF0; // 赤、青LEDと表示バックライト点灯 P4.DDR=0xFF; // P4は出力(LCD制御線) P8.DDR=0xFF; // P8は出力(LCD制御線) PB.DDR=0xFF; // PBは出力(LCDデータバス) P9.DDR=0xFF; // P9は出力(RTCとか) SLCD_E=0; SLCD_SCLK=0; SLCD_DATA=0; SLCD_INT=0; RTC_SCL=1; RTC_SDA=1; cls(); print(0,0,"Hello! World!!"); print(1,1,"1234567890"); print(2,2,"1234567890"); print(3,3,"1234567890"); print(4,4,"1234567890"); print(0,5,"ABCDEFGHIJKLMNOPQRSTUVWXYZ"); SLCD_init(); SLCD_reset(); SLCD_write(0xA0); for (i=0; i<16; i++) SLCD_write(0x00); // 表示クリア RTC_read(rtc); if ((rtc[0xF] & 0x10)==0x10) RTC_init(); // バックアップされていなければ、レジスタ初期化 //RTC_init(); while(1) { RTC_read(rtc); SLCD_reset(); SLCD_write(0xA0); SLCD_1disp((rtc[6] & 0xF0)>>4); SLCD_1disp(rtc[6] & 0x0F); SLCD_1disp(((rtc[5] & 0xF0)>>4) | 0x80); SLCD_1disp(rtc[5] & 0x0F); SLCD_1disp(((rtc[4] & 0xF0)>>4) | 0x80); SLCD_1disp(rtc[4] & 0x0F); SLCD_write(0x00); SLCD_write(0x00); SLCD_1disp((rtc[2] & 0xF0)>>4); SLCD_1disp(rtc[2] & 0x0F); SLCD_1disp(((rtc[1] & 0xF0)>>4) | 0x80); SLCD_1disp(rtc[1] & 0x0F); SLCD_1disp(((rtc[0] & 0xF0)>>4) | 0x80); SLCD_1disp(rtc[0] & 0x0F); wait(3); } } void RTC_init(void) { RTC_write(0x0,0x00); // 秒カウンタ RTC_write(0x1,0x20); // 分カウンタ RTC_write(0x2,0x11); // 時カウンタ RTC_write(0x3,0x05); // 曜日カウンタ RTC_write(0x4,0x08); // 日カウンタ RTC_write(0x5,0x02); // 月カウンタ RTC_write(0x6,0x08); // 年カウンタ RTC_write(0x8,0x00); // Alarm_A 分レジスタ RTC_write(0x9,0x00); // Alarm_A 時レジスタ RTC_write(0xA,0x00); // Alarm_A 曜日レジスタ RTC_write(0xB,0x00); // Alarm_B 分レジスタ RTC_write(0xC,0x00); // Alarm_B 時レジスタ RTC_write(0xD,0x00); // Alarm_B 曜日レジスタ RTC_write(0xE,0x20); RTC_write(0xF,0x30); } void RTC_write(unsigned char address,unsigned char data) { int i; P9.DDR=0xFF; // SDAを出力 RTC_SDA=0; for (i=0; i<5; i++); RTC_SCL=0; for (i=0; i<5; i++); // スタートコンディションのつもり RTC_1write(0x64); RTC_1write(((address & 0x0F) << 4) & 0xF0); RTC_1write(data); P9.DDR=0xFF; // SDAを出力 RTC_SCL=0; RTC_SDA=0; for (i=0; i<10; i++); RTC_SCL=1; for (i=0; i<5; i++); RTC_SDA=1; //ストップコンディションのつもり for (i=0; i<10; i++); } char RTC_read(unsigned char data[15]) { char err; unsigned int i; P9.DDR=0xFF; // SDAを出力 RTC_SDA=0; for (i=0; i<5; i++); RTC_SCL=0; for (i=0; i<5; i++); // スタートコンディションのつもり err=RTC_1write(0x65); if (err==0) { for (i=0; i<16; i++) { data[((i+15) & 0x0F)]=RTC_1read(); if (i<15) RTC_ACKout(); } } P9.DDR=0xFF; // SDAを出力 RTC_SCL=0; RTC_SDA=0; for (i=0; i<10; i++); RTC_SCL=1; for (i=0; i<5; i++); RTC_SDA=1; //ストップコンディションのつもり for (i=0; i<10; i++); return err; } unsigned char RTC_1read(void) { int i,j; unsigned char data=0; P9.DDR=0xFE; // SDAを入力 for (i=0; i<8; i++) { RTC_SCL=1; for (j=0; j<5; j++); data=data << 1; data=data | RTC_SDA; RTC_SCL=0; for (j=0; j<5; j++); } return data; } void RTC_ACKout(void) { int i; P9.DDR=0xFF; // SDAを出力 RTC_SDA=0; for (i=0; i<5; i++); RTC_SCL=1; for (i=0; i<10; i++); RTC_SCL=0; for (i=0; i<5; i++); RTC_SDA=1; } char RTC_1write(unsigned char data) { unsigned int i; char err= 1; P9.DDR=0xFF; // SDAを出力 for (i=0; i<8; i++) { if ((data & 0x80)==0x80) RTC_SDA=1; else RTC_SDA=0; RTC_clkout(); data=data << 1; } P9.DDR=0xFE; // SDAを入力 for (i=0; i<60000; i++) { if (RTC_SDA==0) // ACK 待ち { err=0; break; } } RTC_clkout(); return err; } void RTC_clkout(void) { int i; //for (i=0; i<5; i++); RTC_SCL=1; for (i=0; i<5; i++); RTC_SCL=0; } void wait(unsigned int a) { unsigned int i,j; for (i=0; i> 7)& 0x01); SLCD_clkout(); data=data << 1; } SLCD_DATA=0; } void SLCD_clkout(void) { int i; for (i=0; i<10; i++); SLCD_SCLK=1; for (i=0; i<10; i++); SLCD_SCLK=0; } void SLCD_reset(void) { unsigned int i; SLCD_INT=1; for (i=0; i<10; i++); SLCD_INT=0; for (i=0; i<10; i++); } void SLCD_init(void) { int i; SLCD_INT=1; for (i=0; i<10; i++); SLCD_E=1; for (i=0; i<10; i++); SLCD_INT=0; for (i=0; i<10; i++); SLCD_reset(); SLCD_DATA=1; SLCD_clkout(); SLCD_DATA=0; SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_DATA=1; SLCD_clkout(); SLCD_clkout(); SLCD_DATA=0; SLCD_reset(); SLCD_reset(); SLCD_DATA=1; SLCD_clkout(); SLCD_DATA=0; SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_DATA=1; SLCD_clkout(); SLCD_clkout(); SLCD_DATA=0; SLCD_reset(); SLCD_reset(); SLCD_DATA=1; SLCD_clkout(); SLCD_DATA=0; SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_DATA=1; SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_DATA=0; SLCD_reset(); SLCD_reset(); SLCD_DATA=1; SLCD_clkout(); SLCD_DATA=0; SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_clkout(); SLCD_DATA=1; SLCD_clkout(); SLCD_DATA=0; SLCD_clkout(); SLCD_DATA=1; SLCD_clkout(); SLCD_DATA=0; SLCD_clkout(); SLCD_DATA=1; SLCD_clkout(); SLCD_DATA=0; SLCD_clkout(); SLCD_DATA=1; SLCD_clkout(); SLCD_DATA=0; SLCD_reset(); for (i=0; i<1000; i++); } void print(char x,char y,char data[]) { const char font[]={ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xBE,0x00,0x00,0x00,0x00, 0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x44,0xFE,0x44,0x44,0x44,0xFE,0x44,0x00, 0x08,0x54,0x54,0xFE,0x54,0x54,0x20,0x00,0x84,0x4A,0x24,0x10,0x48,0xA4,0x42,0x00, 0x60,0x94,0x9A,0x92,0xAC,0x40,0xA0,0x00,0x00,0x04,0x02,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x7C,0x82,0x00,0x00,0x00,0x82,0x7C,0x00,0x00,0x00,0x00,0x00, 0x00,0x44,0x28,0x7C,0x28,0x44,0x00,0x00,0x00,0x10,0x10,0x7C,0x10,0x10,0x00,0x00, 0x00,0x00,0x00,0xA0,0x60,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x00,0x00, 0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x00, 0x7C,0xC2,0xA2,0x92,0x8A,0x86,0x7C,0x00,0x00,0x00,0x84,0xFE,0x80,0x00,0x00,0x00, 0xC4,0xA2,0x92,0x92,0x92,0x92,0x8C,0x00,0x44,0x92,0x92,0x92,0x92,0x92,0x6C,0x00, 0x30,0x28,0x24,0x22,0xFE,0x20,0x20,0x00,0x9E,0x92,0x92,0x92,0x92,0x92,0x62,0x00, 0x7C,0x92,0x92,0x92,0x92,0x92,0x64,0x00,0x0E,0x02,0x02,0xC2,0x22,0x12,0x0E,0x00, 0x6C,0x92,0x92,0x92,0x92,0x92,0x6C,0x00,0x4C,0x92,0x92,0x92,0x92,0x92,0x7C,0x00, 0x00,0x00,0x00,0x44,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0xA4,0x64,0x00,0x00,0x00, 0x00,0x10,0x28,0x44,0x82,0x00,0x00,0x00,0x00,0x28,0x28,0x28,0x28,0x28,0x00,0x00, 0x00,0x00,0x82,0x44,0x28,0x10,0x00,0x00,0x0C,0x02,0x02,0xA2,0x12,0x12,0x0C,0x00, 0x64,0x92,0x92,0x92,0xF2,0x82,0x7C,0x00,0xFC,0x12,0x12,0x12,0x12,0x12,0xFC,0x00, 0xFE,0x92,0x92,0x92,0x92,0x92,0x6C,0x00,0x7C,0x82,0x82,0x82,0x82,0x82,0x44,0x00, 0xFE,0x82,0x82,0x82,0x82,0x44,0x38,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0x82,0x00, 0xFE,0x12,0x12,0x12,0x12,0x12,0x02,0x00,0x7C,0x82,0x82,0x92,0x92,0x92,0x64,0x00, 0xFE,0x10,0x10,0x10,0x10,0x10,0xFE,0x00,0x00,0x00,0x82,0xFE,0x82,0x00,0x00,0x00, 0x00,0x40,0x80,0x80,0x82,0x7E,0x02,0x00,0x00,0xFE,0x10,0x28,0x44,0x82,0x00,0x00, 0x00,0xFE,0x80,0x80,0x80,0x80,0x80,0x00,0xFE,0x04,0x08,0x10,0x08,0x04,0xFE,0x00, 0xFE,0x04,0x08,0x10,0x20,0x40,0xFE,0x00,0x7C,0x82,0x82,0x82,0x82,0x82,0x7C,0x00, 0xFE,0x12,0x12,0x12,0x12,0x12,0x0C,0x00,0x7C,0x82,0x82,0x82,0xA2,0x42,0xBC,0x00, 0xFE,0x12,0x12,0x12,0x32,0x52,0x8C,0x00,0x8C,0x92,0x92,0x92,0x92,0x92,0x62,0x00, 0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x00,0x7E,0x80,0x80,0x80,0x80,0x80,0x7E,0x00, 0x06,0x18,0x60,0x80,0x60,0x18,0x06,0x00,0x0E,0x70,0x80,0x78,0x80,0x70,0x0E,0x00, 0x82,0x44,0x28,0x10,0x28,0x44,0x82,0x00,0x02,0x04,0x08,0xF0,0x08,0x04,0x02,0x00, 0x82,0xC2,0xA2,0x92,0x8A,0x86,0x82,0x00,0x00,0x00,0x00,0x00,0xFE,0x82,0x00,0x00, 0x52,0x54,0x58,0xF0,0x58,0x54,0x52,0x00,0x00,0x82,0xFE,0x00,0x00,0x00,0x00,0x00, 0x04,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00, 0x00,0x00,0x00,0x00,0x02,0x04,0x00,0x00,0x40,0xA8,0xA8,0xA8,0xA8,0xA8,0x70,0x00, 0x7E,0x90,0x90,0x90,0x90,0x90,0x60,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x50,0x00, 0x60,0x90,0x90,0x90,0x90,0x90,0x7E,0x00,0x70,0xA8,0xA8,0xA8,0xA8,0xA8,0x10,0x00, 0x00,0x00,0x10,0xFC,0x12,0x12,0x00,0x00,0x10,0xA8,0xA8,0xA8,0xA8,0xA8,0x70,0x00, 0x00,0x00,0xFE,0x10,0x10,0x10,0xE0,0x00,0x00,0x00,0x00,0xFA,0x00,0x00,0x00,0x00, 0x00,0x00,0x80,0x80,0x7A,0x00,0x00,0x00,0x00,0x00,0xFE,0x20,0x50,0x88,0x00,0x00, 0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0xF8,0x08,0x08,0xF0,0x08,0x08,0xF0,0x00, 0x00,0xF8,0x10,0x08,0x08,0x08,0xF0,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00, 0x00,0xF8,0x28,0x28,0x28,0x28,0x10,0x00,0x00,0x10,0x28,0x28,0x28,0x28,0xF8,0x00, 0x00,0xF8,0x10,0x08,0x08,0x08,0x00,0x00,0x00,0x10,0xA8,0xA8,0xA8,0xA8,0x40,0x00, 0x00,0x08,0x08,0x7E,0x88,0x88,0x00,0x00,0x00,0x78,0x80,0x80,0x80,0xF8,0x00,0x00, 0x00,0x18,0x60,0x80,0x60,0x18,0x00,0x00,0x18,0x60,0x80,0x70,0x80,0x60,0x18,0x00, 0x00,0x88,0x50,0x20,0x50,0x88,0x00,0x00,0x00,0x88,0x50,0x20,0x10,0x08,0x00,0x00, 0x00,0x88,0xC8,0xA8,0x98,0x88,0x00,0x00,0x00,0x00,0x00,0x10,0x6C,0x82,0x00,0x00, 0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x82,0x6C,0x10,0x00,0x00,0x00,0x00, 0x10,0x08,0x08,0x10,0x20,0x20,0x10,0x00,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; int i,j; unsigned char cs,addr,page; addr=x*8; for (i=0; data[i]!=0; i++) { pageaddress(1,y); pageaddress(2,y); if (addr < 64) { cs=1; setaddress(1,addr); } else { cs=2; setaddress(2,addr-64); } for (j=0; j<8; j++) { writedisplaydata(cs,font[(data[i]-0x20)*8+j]); addr++; } if (addr >127-8) { addr=0; y++; } if (y>7) break; } } void cls(void) { int i,j; displayoff(1); displayoff(2); displaystartline(1,0); displaystartline(2,0); for (i=0; i<8; i++) { setaddress(1,0); setaddress(2,0); pageaddress(1,i); pageaddress(2,i); for (j=0; j<64; j++) { writedisplaydata(1,0); writedisplaydata(2,0); } } setaddress(1,0); setaddress(2,0); pageaddress(1,0); pageaddress(2,0); displayon(1); displayon(2); } void lcd_E(void) { int i; E=1; for (i=0; i<5; i++); // 少し時間を空けないと、データを取りこぼす E=0; } void writedisplaydata(char a,char b) { cs(a); busycheck(); RW=0; // R/W DI=1; // D/I LCD_DB=b; // write data lcd_E(); } void setaddress(char a,char b) { cs(a); busycheck(); RW=0; // R/W DI=0; // D/I LCD_DB=(b & 0x3F) | 0x40; // column address lcd_E(); } void pageaddress(char a,char b) { cs(a); busycheck(); RW=0; // R/W DI=0; // D/I LCD_DB=(b & 0x07) | 0xB8; // page address lcd_E(); } void displaystartline(char a,char b) { cs(a); busycheck(); RW=0; // R/W DI=0; // D/I LCD_DB=(b & 0x3F) | 0xC0; // display start line lcd_E(); } void displayon(char a) { cs(a); busycheck(); RW=0; // R/W DI=0; // D/I LCD_DB=0x3F; // display ON lcd_E(); } void displayoff(char a) { cs(a); busycheck(); RW=0; // R/W DI=0; // D/I LCD_DB=0x3E; // display OFF lcd_E(); } void cs(char a) { switch(a) { case 1: CS1=1; // CS1 CS2=0; // CS2 break; case 2: CS1=0; // CS1 CS2=1; // CS2 break; } } void busycheck(void) { PB.DDR=0x00; // PBは入力(LCDデータバス) LCD_DB=0x00; // なんか、ゼロをセットしとかないとおかしい RW=1; // R/W DI=0; // D/I lcd_E(); while(LCD_DB & 0x80); // busy check PB.DDR=0xFF; // PBは出力(LCDデータバス) } #ifdef __cplusplus void abort(void) { } #endif