13 #include "avr_helper.h" 21 #define SYMBOL_SPECTRUM 0 22 #define SYMBOL_SCALE 1 24 static uint8_t lcd_symbol_mode;
29 static void set_chargen_spectrum(){
31 for(uint8_t i=0; i<8; i++)
32 for(uint8_t j=0; j < 8; j++)
34 lcd_symbol_mode = SYMBOL_SPECTRUM;
40 static void set_chargen_scale(){
44 for(uint8_t i=0; i<8; i++){
45 for(uint8_t j=0; j < 8; j++){
48 mask = (mask >> 1) | 0x10;
50 lcd_symbol_mode = SYMBOL_SCALE;
65 #if defined(__AVR_ATmega32__) 66 if(MCUCSR & (_BV(PORF) | _BV(EXTRF))){
68 MCUCSR &= ~(_BV(PORF) | _BV(EXTRF));
69 #elif defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__) 70 if(MCUSR & (_BV(PORF) | _BV(EXTRF))){
71 MCUSR &= ~(_BV(PORF) | _BV(EXTRF));
73 wdt_enable(WDTO_30MS);
78 set_chargen_spectrum();
87 #define BUF_SZ (LCD_DISP_LENGTH+1) 89 static char tmps[BUF_SZ];
94 static void put_tmps(uint8_t row){
113 uint8_t l = strlen_P(src);
125 uint8_t l = strlen(src);
137 uint8_t l = strlen_P(src);
138 memcpy_P(tmps, src, l);
149 uint8_t l = strlen(src);
150 memcpy(tmps, src, l);
164 static uint8_t v[
F_CNT];
165 static uint8_t d[
F_CNT];
170 if(lcd_symbol_mode != SYMBOL_SPECTRUM) set_chargen_spectrum();
174 for(uint8_t i=0; i<
F_CNT; i++){
175 ch = (s->
harmonics[i] / ((i < 2) ? 40 : 20));
202 if(lcd_symbol_mode != SYMBOL_SCALE) set_chargen_scale();
217 static __flash
const char chr[16] =
"0123456789ABCDEF";
218 uint8_t *ptr = (
void*)#
219 for(int8_t i=3; i >= 0; i--){
void lcd_gotoxy(uint8_t x, uint8_t y)
Set cursor to specified position.
#define MAX_LEVEL
фиксированное количество уровней регулирования чувствительности
void center_str(uint8_t row, char *src)
вывод строки по центру дисплея
void lcd_clrscr(void)
Clear display and set cursor to home position.
void show_scale(uint8_t row, uint8_t val)
отображение псевдографической горизонтальной шкалы
uint8_t lcd_enabled
ЖКИ присутствует
Вспомогательные эффекты ЖКИ
структура параметров звукового сигнала
uint16_t harmonics[F_CNT]
амплитуды всех гармоник сигнала
void show_hex_long(uint32_t num)
вывод 4 байтового числа в HEX формате с лидирующими нулями
void lcd_command(uint8_t cmd)
Send LCD controller instruction command.
void show_rpad_str(uint8_t line, char *src)
вывод строки с очисткой дисплея справа
void center_str_p(uint8_t row, const char *src)
вывод строки из flash по центру дисплея
void lcd_data(uint8_t data)
Send data byte to LCD controller.
void show_spectrum(signal_t *s)
отображение "мгновенного спектра" на 2-й строке ЖКИ
void lcd_puts(const char *s)
Display string without auto linefeed.
void lcd_init(void)
Initialize display and select type of cursor.
Общее количество гармоник
void lcd_putc(char c)
Display character at current cursor position.
void show_number(int32_t num)
вывод десятичного числа
void show_rpad_str_p(uint8_t line, const char *src)
вывод строки из flash с очисткой дисплея справа