//********************************************************************** /*   『簡易静電気メーター(バー表示)』 */ //********************************************************************** const char character1[] = {16,16,16,16,16,16,16,16}; const char character2[] = {24,24,24,24,24,24,24,24}; const char character3[] = {28,28,28,28,28,28,28,28}; const char character4[] = {30,30,30,30,30,30,30,30}; const char character5[] = {31,31,31,31,31,31,31,31}; void RegistCustomChar() { static 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]); } LCD_Cmd(LCD_RETURN_HOME); } //********************************************************************** void BarDisp(int dat) { static short i, j, k, cnt; // Lcd_Cmd(LCD_FIRST_ROW); // i = (dat * 10) / 127; j = i / 5; k = i - (j * 5); // for (cnt = 1; cnt <= j; cnt++) { Lcd_Chr_Cp(4); } if (k != 0) { Lcd_Chr_Cp(k); } for (; cnt <= 16; cnt++) { Lcd_Chr_Cp(' '); } } //********************************************************************** void main() { static unsigned char buf[20]; static unsigned int cnt, add_cnt; static double ad; // OSCCON = 0b01110000; // クロックは8Mhz CMCON = 0b00000111; // コンパレータは使用しない。 // A/D変換を使用する。 ANSEL = 0b00000010; // ポートを初期化する。 TRISA = 0b11111111; TRISB = 0b00000000; // LCDを初期化する。 Lcd_Config(&PORTB, 3, 1, 2, 7, 6, 5, 4); RegistCustomChar(); Lcd_Cmd(LCD_CURSOR_OFF); Lcd_Cmd(LCD_CLEAR); Lcd_Out(2, 6, "mV"); // while (1) { //A/D変換のサンプリング数の設定(1000回、100回から選択する) if (PORTA.F5 == 1) add_cnt = 5000; else add_cnt = 100; //電圧を測定し、その平均値を求める。 ad = 0.0; for (cnt = 0; cnt < add_cnt; cnt++) { ad += Adc_Read(1); } ad = ad / (double)add_cnt; //測定結果をバー表示する。(80ドット) BarDisp(ad); //電圧値を表示する。 ad = ad * 4.8828125; WordToStr(ad, buf); Lcd_Out(2, 1, buf); } } //**********************************************************************