1. Cvičení Hardwarové a softwarové řešení potlačení zákmitů tlačítek, maticová klávesnice Osnova: 1)
2)
3)
4)
5)
Popis úlohy Nastavení a obsluha LED. Nastavení a obsluha tlačítek. Ošetření zákmitů tlačítek. Nastavení a obsluha LED a maticové klávesnice. Popis úlohy Cílem úlohy je nastavit vstupní/výstupní porty (dále jen porty) tak, aby sloužily jako výstupní v případě ovládání LED nebo jako vstupní v případě ovládání tlačítek. U každého portu budeme nastavovat dva základní konfigurační registry: •
•
ANSELx – slouží k přepínání funkce mezi analogovým vstupem a digitálním vstupem/výstupem TRISx – přepíná roli každé nožičky (pinu) mikrokontroléru mezi digitálním vstupem a výstupem K provádění operace zápisu nebo čtení na daném portu slouží dva registry: •
•
PORTx – slouží ke čtení hodnot z daného portu LATx – slouží k zápisu hodnot na daný port Nastavení portů a obsluha LED •
•
Použijte LED na portu B. Na desce EasyPIC v7 je potřeba mít povoleno použití LED nastavením příslušných přepínačů na SW3 do polohy ON (přepnutím doprava). Obr. 1 – Přepínač SW3 •
Hardwarové zapojení LED je znázorněno na obrázku 2. Z něho je patrné, že rozsvícení LED dosáhneme zápisem log. 1 na příslušný výstup, např. RB0 (zároveň musí být katoda LED připojena přes rezistor na společný potenciál GND, viz předchozí bod nastavení). •
•
•
•
Obr. 2 – Zapojení LED a přepínače SW3 Proveďte nastavení příslušných registrů (ANSEL, TRIS, LAT) tak, aby PORTB byl nastaven jako výstupní (všech 8 pinů). Zapište na port takovou hodnotu, aby všechny LED svítily. S využitím integrované funkce Delay_ms (x), kde x odpovídá počtu milisekund, vytvořte program, který bude střídavě rozsvěcet a zhášet sudé a liché LED. Jako výchozí bod použijte program Cv1_1.c. Nastavení portů a obsluha tlačítek •
•
Použijte tlačítka na portu C. Na desce EasyPIC v7 nastavte propojku J17 (Button Press Level) do horní polohy (výchozí hodnota, viz obrázek 3). Při stisku pak bude na příslušném pinu log. 1 a při uvolnění tlačítka pak log. 0. Přepínače Pull‐Up‐Down u příslušných portů na pravé straně desky ponechte ve střední poloze. Obr. 3 – Volba logické úrovně při stisku tlačítka •
•
•
•
Proveďte nastavení příslušných registrů (ANSEL, TRIS, LAT) tak, aby PORTC byl nastaven jako vstupní (všech 8 pinů). Vytvořte program, který na stisk jednoho tlačítka rozsvítí všechny liché LED na PORTB a na stisk druhého tlačítka rozsvítí všechny sudé LED na PORTB. Jako výchozí bod použijte program Cv1_2.c. S využitím funkce Delay_ms (x) napište program pracující s jedním tlačítkem (RC0), kdy jedním stiskem rozsvítíte LED a druhým stiskem LED zhasnete. Ošetření zákmitů tlačítek Díky různým příčinám (konstrukce tlačítka, opotřebení, …) dochází při stisku a uvolnění tlačítek k tzv. zákmitům, které mohou být nesprávně vyhodnoceny jako několikanásobný stisk/uvolnění tlačítka. •
•
Na osciloskopu zobrazte průběh stisku a uvolnění tlačítka a vyzkoušejte hardwarové ošetření zákmitů tlačítek připojením kondenzátoru mezi příslušný vstup a GND. Proveďte softwarové ošetření zákmitu tlačítek (obrázek 4). Obr. 4 – Řešení zákmitů tlačítek Nastavení portů a obsluha LED a maticové klávesnice 4x4 •
Použijte port B pro připojení maticové klávesnice. Obr. 5 – Zapojení maticové klávesnice •
•
•
•
•
Piny RB0 – RB3 nastavte jako vstupní a přiřaďte jim pull‐down rezistory. Piny RB4 – RB7 nastavte jako výstupní a přiřaďte jim log. 1. PORTC a PORTD nastavte jako výstupní, povolte na nich užívání LED a tyto LED použijte k indikaci stisků jednotlivých kláves. Jako výchozí bod použijte program Cv1_3.c, kde je naznačen postup vyhodnocení stisku pro jeden řádek. Tento příklad rozšiřte na zbylé tři řádky. Uvedený způsob vyhodnocení stisku je použitelný pouze pro stisk jednoho tlačítka v daný časový okamžik a není nejefektivnějším a nejelegantnějším způsobem. Zkuste vymyslet lepší způsob řešení. 
Download

1. Cvičení Hardwarové a softwarové řešení potlačení zákmitů