===== HW05 - UART ===== ^ Termín odevzdání | 03.10.2020 23:59 CEST | ^ Bodový zisk | 3+3+2b | ^ Typ zadání | povinné | ==== Zadání ==== * Navrhněte v jazyce C program realizující zobrazení čísel na rozšiřující desce s využitím znalostí dynamického displeje * Po odeslání čísel po sériové lince se na displeji okamžitě objeví příslušná hodnota * Jednotlivá čísla se budou načítat zprava doleva jako posuvný registr * Pokud přijde jiný znak než číslo, bude zobrazena pomlčka * Výchozí stav displeje - nebude zobrazovat nic * Přenosová rychlost sériové linky bude 57600 Baud ==== Rozšíření A ==== * Vylepšete základní zadání o možnost zobrazení čísla v rozsahu od 0.000 do 9999, obě meze včetně * Dále uvažujte ještě záporný rozsah hodnot v rozmezí -999 až -0.01, obě meze včetně * Pokud přijde desetinné číslo s vyšším počtem míst než jsou 3 pro kladná čísla nebo 2 pro záporná čísla, potlačte je * Číslo vždy zarovnejte vpravo, tj. např. pro 0.01 bude na displeji "_0.01" (_ znamená mezeru) * V případě, že číslo bude mimo rozsah, zobraz chybu na displeji " Err." * Čísla se zobrazí pouze, pokud přijde znak nového řádku **\n** a/nebo **\r** ==== Rozšíření B ==== * Vylepšete rozšíření A ještě o možnost zobrazení písmen na dynamickém displeji, aby se mohl zobrazit text * Písmena, která nejdou realizovat, nahraďte pomlčkou * Text nebo i čísla se zobrazí pouze, pokud přijde znak nového řádku **\n** a/nebo **\r** ==== Podpůrné materiály ==== const char SevenSegmentASCII[96] = { 0x00, /* (space) */ 0x86, /* ! */ 0x22, /* " */ 0x7E, /* # */ 0x6D, /* $ */ 0xD2, /* % */ 0x46, /* & */ 0x20, /* ' */ 0x29, /* ( */ 0x0B, /* ) */ 0x21, /* * */ 0x70, /* + */ 0x10, /* , */ 0x40, /* - */ 0x80, /* . */ 0x52, /* / */ 0x3F, /* 0 */ 0x06, /* 1 */ 0x5B, /* 2 */ 0x4F, /* 3 */ 0x66, /* 4 */ 0x6D, /* 5 */ 0x7D, /* 6 */ 0x07, /* 7 */ 0x7F, /* 8 */ 0x6F, /* 9 */ 0x09, /* : */ 0x0D, /* ; */ 0x61, /* < */ 0x48, /* = */ 0x43, /* > */ 0xD3, /* ? */ 0x5F, /* @ */ 0x77, /* A */ 0x7C, /* B */ 0x39, /* C */ 0x5E, /* D */ 0x79, /* E */ 0x71, /* F */ 0x3D, /* G */ 0x76, /* H */ 0x30, /* I */ 0x1E, /* J */ 0x75, /* K */ 0x38, /* L */ 0x15, /* M */ 0x37, /* N */ 0x3F, /* O */ 0x73, /* P */ 0x6B, /* Q */ 0x33, /* R */ 0x6D, /* S */ 0x78, /* T */ 0x3E, /* U */ 0x3E, /* V */ 0x2A, /* W */ 0x76, /* X */ 0x6E, /* Y */ 0x5B, /* Z */ 0x39, /* [ */ 0x64, /* \ */ 0x0F, /* ] */ 0x23, /* ^ */ 0x08, /* _ */ 0x02, /* ` */ 0x5F, /* a */ 0x7C, /* b */ 0x58, /* c */ 0x5E, /* d */ 0x7B, /* e */ 0x71, /* f */ 0x6F, /* g */ 0x74, /* h */ 0x10, /* i */ 0x0C, /* j */ 0x75, /* k */ 0x30, /* l */ 0x14, /* m */ 0x54, /* n */ 0x5C, /* o */ 0x73, /* p */ 0x67, /* q */ 0x50, /* r */ 0x6D, /* s */ 0x78, /* t */ 0x1C, /* u */ 0x1C, /* v */ 0x14, /* w */ 0x76, /* x */ 0x6E, /* y */ 0x5B, /* z */ 0x46, /* { */ 0x30, /* | */ 0x70, /* } */ 0x01, /* ~ */ 0x00, /* (del) */ };