main() { unsigned char temp; unsigned char a[10]; unsigned char i=0; uart_init(); lcd_init(); do { temp=uart_rx(); uart_tx(temp); a[i++]=temp; lcd_cmd(0x01); lcd_data(temp); lcd_cmd(0x85); lcd_int(temp); lcd_cmd(0x89); lcd_string("0x"); lcd_hex(temp); delay_ms(1000); }while(temp!=13); a[--i]='\0'; lcd_cmd(0xc0); lcd_string(a); delay_ms(5000); }
// Show command by index void ShowCmd(uint8_t cmd_index) { if (state.bits.config==1) return; _cmd_type Cmd = CmdArray[cmd_index]; char buf[6]; int16_to_str(cmd_index+1, buf, 0x30); // bcd convertion lcd_pos(0x10); lcd_out(buf+2); lcd_out(": "); lcd_dat(Cmd.cmd_name); lcd_hex(Cmd.cmd_data); lcd_pos(0x00); lcd_out(GetTimerName(LastTimerDelay)); // lcd_hexdigit(LastTimerDelay }
void ShowSensors(void) { if (state.bits.config==1) return; lcd_pos(0x1E); lcd_hex(CurSensors); lcd_pos(0x10); lcd_hex(ControlPortState); }
void Set_Control_Byte(uint8_t data) { ControlPortState = data; // запоминаем состояние порта // OutDataPort(0); // очищаем значения порта OutDataPort(data); // выставляем значения порта lcd_pos(0x0e); lcd_hex(ControlPortState); }
void menu_update() { // czas pobrany z RTC time_t time; unsigned char n; // czyœæ ekran przed aktualizacj¹ menu if ( menu_updated ) { lcd_clear(); } // rysuj g³ówne menu lcd_xy(0,0); lcd_char(lcd_larrow); lcd_xy(15,0); lcd_char(lcd_rarrow); lcd_xy(2,0); // ogranicz if (menu_pos == 0xff) { menu_pos = MENU_POS_COUNT - 1; } else if(menu_pos >= MENU_POS_COUNT) { menu_pos = 0; } // wybierz g³ówne menu switch(menu_pos) { // czas i trzy temperatury // case 0: // pobierz czas ... ds1306_time_get(&time); // ... i poka¿ lcd_xy(1,0); lcd_int2(time.tm_hour); lcd_char(uptime%2 ? ':' : ' '); lcd_int2(time.tm_min); lcd_char(' ');//lcd_text_P(PSTR(" 20")); lcd_int2(time.tm_year);lcd_char('/');lcd_int2(time.tm_mon);lcd_char('/');lcd_int2(time.tm_mday); // ogranicz podmenu do liczby czujników if (menu_sub_pos == 0xff) { menu_sub_pos = 0; } else if ( (menu_sub_pos > ds_devices_count-3) && (ds_devices_count > 3) ) { menu_sub_pos = ds_devices_count-3; } // poka¿ temperatury lcd_xy(1,1); for (n=0; n<ds_devices_count && n<3; n++) { lcd_int2(abs(ds_temp[menu_sub_pos + n])/10); lcd_char('.'); lcd_char('0' + (abs(ds_temp[menu_sub_pos + n])%10)); lcd_char(' '); } // strza³ki lcd_xy(0,1); lcd_char( (menu_sub_pos > 0) ? lcd_larrow : ' '); lcd_xy(15,1); lcd_char( (menu_sub_pos < ds_devices_count-3) ? lcd_rarrow : ' '); break; // temperatury // case 1: // poka¿ temperatury lcd_xy(1,0); for (n=0; n<ds_devices_count && n<3; n++) { lcd_int2(abs(ds_temp[n])/10); lcd_char('.'); lcd_char('0' + (abs(ds_temp[n])%10)); lcd_char(n<2 ? ' ' : lcd_rarrow); } lcd_xy(1,1); for (n=3; n<ds_devices_count && n<6; n++) { lcd_int2(abs(ds_temp[n])/10); lcd_char('.'); lcd_char('0' + (abs(ds_temp[n])%10)); lcd_char(' '); } break; // sieæ (IP, brama, DHCP, pakiety) // case 2: lcd_text_P(PSTR("Sie\x09/")); // sieæ // ogranicz podmenu if (menu_sub_pos == 0xff) { menu_sub_pos = 6; } else if (menu_sub_pos > 6) { menu_sub_pos = 0; } lcd_xy(7,0); switch (menu_sub_pos) { case 0: lcd_text_P(PSTR("IP")); lcd_xy(2,1); for (n=0; n<4; n++) { lcd_int(my_net_config.my_ip[n]); lcd_char(n<3 ? '.' : ' '); } break; case 1: lcd_text_P(PSTR("brama")); lcd_xy(2,1); for (n=0; n<4; n++) { lcd_int(my_net_config.gate_ip[n]); lcd_char(n<3 ? '.' : ' '); } break; case 2: lcd_text_P(PSTR("DHCP")); lcd_xy(2,1); // DHCP if (my_net_config.using_dhcp) { lcd_text_P(PSTR("u\x0fywane")); } else { lcd_text_P(PSTR("nie")); } break; case 3: lcd_text_P(PSTR("\x0b\x08")); lcd_text_P(PSTR("cze")); lcd_xy(2,1); // stan ³¹cza if ( enc28_is_link_up() ) { lcd_text_P(PSTR("tak")); } else { lcd_text_P(PSTR("brak")); } break; case 4: lcd_text_P(PSTR("pakiety")); lcd_xy(2,1); lcd_text_P(PSTR("Tx: ")); lcd_int(net_ip_packet_id); break; case 5: lcd_text_P(PSTR("pakiety")); lcd_xy(2,1); lcd_text_P(PSTR("Rx: ")); lcd_int(my_net_config.pktcnt); break; case 6: lcd_text_P(PSTR("MAC")); lcd_xy(2,1); for (n=0; n<6; n++) { lcd_hex(my_net_config.my_mac[n]); } break; } // strza³ki lcd_xy(0,1); lcd_char(lcd_larrow); lcd_xy(15,1); lcd_char(lcd_rarrow); break; // PID (wysterowania, nastawy, PV, SP) // /* case 3: lcd_text_P(PSTR("PID")); // PID break; */ // PWM (wype³nienia) // case 3: lcd_text_P(PSTR("PWM")); // ogranicz podmenu do liczby kana³ów PWM if (menu_sub_pos == 0xff) { menu_sub_pos = 0; } else if (menu_sub_pos > PWM_CHANNELS-3) { menu_sub_pos = PWM_CHANNELS-3; } // nr pokazywanych kana³ów lcd_xy(11,0); lcd_char('1' + menu_sub_pos); lcd_char('-'); lcd_char('3' + menu_sub_pos); // poka¿ wype³nienia lcd_xy(2,1); for (n=0; n<PWM_CHANNELS && n<3; n++) { lcd_char('0' + pwm_get_fill(menu_sub_pos + n)/100);lcd_int2(pwm_get_fill(menu_sub_pos + n)); lcd_char(' '); } // strza³ki lcd_xy(0,1); lcd_char( (menu_sub_pos > 0) ? lcd_larrow : ' '); lcd_xy(15,1); lcd_char( (menu_sub_pos < PWM_CHANNELS-3) ? lcd_rarrow : ' '); break; // informacje (wersja, ENC28J60, karta pamiêci, EEPROM) // case 4: lcd_text_P(PSTR("Informacje")); // sieæ // ogranicz podmenu if (menu_sub_pos == 0xff) { menu_sub_pos = 6; } else if (menu_sub_pos > 6) { menu_sub_pos = 0; } lcd_xy(2,1); switch (menu_sub_pos) { case 0: lcd_text_P(PSTR(__DATE__)); break; case 1: lcd_text_P(PSTR("GCC " __AVR_LIBC_VERSION_STRING__)); break; case 2: //lcd_text_P(PSTR("Up ")); // dni lcd_int((uptime/3600/24)); lcd_char('d'); // godziny lcd_int2((uptime/3600)%24); lcd_char(':'); // minuty lcd_int2((uptime/60)%60); lcd_char(':'); // sekundy lcd_int2((uptime%60)); break; case 3: lcd_text_P(PSTR("ENC28 rev.B")); lcd_char('0' + enc28_read_rev_id()); break; case 4: lcd_text_P(PSTR("Czujnik\x0dw: ")); lcd_int(ds_devices_count); break; case 5: lcd_text_P(PSTR("EEPROM ")); lcd_int(eeprom_get_size() >> 10); lcd_char('k');lcd_char('B'); break; case 6: if (sd_get_state() != SD_FAILED) { lcd_text_P(sd_get_state() == SD_IS_SD ? PSTR("SD") : PSTR("MMC")); lcd_char(' '); lcd_int(sd_size >> 10); // kB lcd_char('k');lcd_char('b'); } else { lcd_text_P(PSTR("SD/MMC: b\x0b\x08d")); } break; }