//********************************************************************** /*    『CGRAM活用(キャラクタ表示LCD)』 */ //********************************************************************** const char character1[] = {0,0,0,0,0,0,0,31}; const char character2[] = {0,0,0,0,0,0,31,31}; const char character3[] = {0,0,0,0,0,31,31,31}; const char character4[] = {0,0,0,0,31,31,31,31}; const char character5[] = {0,0,0,31,31,31,31,31}; const char character6[] = {0,0,31,31,31,31,31,31}; const char character7[] = {0,31,31,31,31,31,31,31}; const char character8[] = {31,31,31,31,31,31,31,31}; void RegistCustomChar() { char i; // LCD_Cmd(64); for (i = 0; i<=7; i++) { LCD_Chr_Cp(character1[i]); } for (i = 0; i<=7; i++) { LCD_Chr_Cp(character2[i]); } for (i = 0; i<=7; i++) { LCD_Chr_Cp(character3[i]); } for (i = 0; i<=7; i++) { LCD_Chr_Cp(character4[i]); } for (i = 0; i<=7; i++) { LCD_Chr_Cp(character5[i]); } for (i = 0; i<=7; i++) { LCD_Chr_Cp(character6[i]); } for (i = 0; i<=7; i++) { LCD_Chr_Cp(character7[i]); } for (i = 0; i<=7; i++) { LCD_Chr_Cp(character8[i]); } LCD_Cmd(LCD_RETURN_HOME); } //********************************************************************** void BarDisp(char index, int dat) { switch (dat / 64) { case 0: Lcd_Chr(1, index, ' '); Lcd_Chr(2, index, 0); break; case 1: Lcd_Chr(1, index, ' '); Lcd_Chr(2, index, 1); break; case 2: Lcd_Chr(1, index, ' '); Lcd_Chr(2, index, 2); break; case 3: Lcd_Chr(1, index, ' '); Lcd_Chr(2, index, 3); break; case 4: Lcd_Chr(1, index, ' '); Lcd_Chr(2, index, 4); break; case 5: Lcd_Chr(1, index, ' '); Lcd_Chr(2, index, 5); break; case 6: Lcd_Chr(1, index, ' '); Lcd_Chr(2, index, 6); break; case 7: Lcd_Chr(1, index, ' '); Lcd_Chr(2, index, 7); break; case 8: Lcd_Chr(1, index, 0); Lcd_Chr(2, index, 7); break; case 9: Lcd_Chr(1, index, 1); Lcd_Chr(2, index, 7); break; case 10: Lcd_Chr(1, index, 2); Lcd_Chr(2, index, 7); break; case 11: Lcd_Chr(1, index, 3); Lcd_Chr(2, index, 7); break; case 12: Lcd_Chr(1, index, 4); Lcd_Chr(2, index, 7); break; case 13: Lcd_Chr(1, index, 5); Lcd_Chr(2, index, 7); break; case 14: Lcd_Chr(1, index, 6); Lcd_Chr(2, index, 7); break; case 15: Lcd_Chr(1, index, 7); Lcd_Chr(2, index, 7); break; } } //********************************************************************** void main() { int dat0, dat1, dat2, dat3, dat4, dat5, dat6; char buf[6]; // OSCCON = 0b01110000; // クロックは8Mhz CMCON = 0b00000111; // コンパレータは使用しない。 ANSEL = 0b01111111; // A/D変換を使用する。 TRISA = 0b11111111; TRISB = 0b11000000; //LCDの初期化 Lcd_Config(&PORTB, 3, 1, 2, 0, 2, 5, 4); RegistCustomChar(); Lcd_Cmd(LCD_CURSOR_OFF); Lcd_Cmd(LCD_CLEAR); // while (1) { BarDisp(1, dat0 = Adc_Read(0)); BarDisp(2, dat1 = Adc_Read(1)); BarDisp(3, dat2 = Adc_Read(2)); BarDisp(4, dat3 = Adc_Read(3)); BarDisp(5, dat4 = Adc_Read(4)); BarDisp(6, dat5 = Adc_Read(5)); BarDisp(7, dat6 = Adc_Read(6)); Lcd_Out(1, 9, "1:"); WordToStr(dat0 * 4.8828125, buf); Lcd_Out(1, 11, &buf[1]); Lcd_Out(1, 15, "mV"); Lcd_Out(2, 9, "2:"); WordToStr(dat1 * 4.8828125, buf); Lcd_Out(2, 11, &buf[1]); Lcd_Out(2, 15, "mV"); Delay_ms(500); // BarDisp(1, dat0 = Adc_Read(0)); BarDisp(2, dat1 = Adc_Read(1)); BarDisp(3, dat2 = Adc_Read(2)); BarDisp(4, dat3 = Adc_Read(3)); BarDisp(5, dat4 = Adc_Read(4)); BarDisp(6, dat5 = Adc_Read(5)); BarDisp(7, dat6 = Adc_Read(6)); Lcd_Out(1, 9, "3:"); WordToStr(dat2 * 4.8828125, buf); Lcd_Out(1, 11, &buf[1]); Lcd_Out(1, 15, "mV"); Lcd_Out(2, 9, "4:"); WordToStr(dat3 * 4.8828125, buf); Lcd_Out(2, 11, &buf[1]); Lcd_Out(2, 15, "mV"); Delay_ms(500); // BarDisp(1, dat0 = Adc_Read(0)); BarDisp(2, dat1 = Adc_Read(1)); BarDisp(3, dat2 = Adc_Read(2)); BarDisp(4, dat3 = Adc_Read(3)); BarDisp(5, dat4 = Adc_Read(4)); BarDisp(6, dat5 = Adc_Read(5)); BarDisp(7, dat6 = Adc_Read(6)); Lcd_Out(1, 9, "5:"); WordToStr(dat4 * 4.8828125, buf); Lcd_Out(1, 11, &buf[1]); Lcd_Out(1, 15, "mV"); Lcd_Out(2, 9, "6:"); WordToStr(dat5 * 4.8828125, buf); Lcd_Out(2, 11, &buf[1]); Lcd_Out(2, 15, "mV"); Delay_ms(500); // BarDisp(1, dat0 = Adc_Read(0)); BarDisp(2, dat1 = Adc_Read(1)); BarDisp(3, dat2 = Adc_Read(2)); BarDisp(4, dat3 = Adc_Read(3)); BarDisp(5, dat4 = Adc_Read(4)); BarDisp(6, dat5 = Adc_Read(5)); BarDisp(7, dat6 = Adc_Read(6)); Lcd_Out(1, 9, "7:"); WordToStr(dat6 * 4.8828125, buf); Lcd_Out(1, 11, &buf[1]); Lcd_Out(1, 15, "mV"); Lcd_Out(2, 9, " "); Delay_ms(500); // } }//~! //**********************************************************************