180 likes | 309 Views
Les 4 - onderwerpen. DB038 hardware : luidsprekertje DB038 hardware : LED displays Aansturen van éé n 7-segment display. Als je voor loopt (of ‘s nachts niet kan slapen) : denk alvast na over je eind-opdracht.
E N D
Les 4 - onderwerpen • DB038 hardware : luidsprekertje • DB038 hardware : LED displays • Aansturen van één 7-segment display Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
Als je voor loopt (of ‘s nachts niet kan slapen) : denk alvast na over je eind-opdracht De laatste twee lessen (+ projectweek en thuis!) ga je werken aan een ‘vrije’ opdracht. Verzin zelf een project(je). Stem af. Schijf zelf de opdracht. citeria: • Niet te makkelijk • Niet te moeilijk • Externe hardware gebruiken is een plus (maar zeker niet verplicht) • In principe individueel, eventueel met meer • Externe info (code!) mag, maar wees er duidelijk over De opgave moet in overleg met de docent worden vastgesteld. Zie DB038 manual 6.3 en 6.4 voor inspiratie. Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
DB038 3 ‘Luid’sprekertje extern Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
DB038 circuit – PIC DB038 manual 2.1 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
DB038 circuit – luidspreker 5 Externe luidspreker DB038 manual 2.14 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
piepen 6 • RE0..RE3 output, waarde 0x02 • RA1 output • En nu maar ‘knipperen’ op RA1 DB038 manual 2.14.1 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
opdrachten les 4 - 1 : sirene Schrijf een piep-subroutine met twee parameters: de tijdvertraging, uitgedrukt in 10 µs per fase, en het aantal pulsen, uitgedrukt in 10 pulsen. (Dus: piep(3,10) is 100 periodes van 60 µs per periode.) Je kan maar 1 waarde in W meegeven, dus de andere waarde (of eventueel beiden) moet in een afgesproken geheugenplaats staan. Schrijf een piep macro om het aanroepen van die piep subroutine wat makkelijker te maken. De macro heeft twee argumenten (beide vaste getallen): de tijdsvertraging, en het aantal pulsen. Je hoofdprogramma moet dit doen: 7 While(1) { Piep gedurende 1 seconde op 1 kHz (=1000Hz) 0.1 seconde stilte Piep gedurende 1/2 seconde op 2 kHz 0.5 seconde stilte } • 2 kHz wat is dan de tijdvertraging? • 1/2 seconde op 2 kHz hoeveel pulsen is dat? Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
DB038 4 x 7-segment LED display 8 LEDs Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
DB038 circuit – H multiplexer DB038 manual 2.7 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
DB038 circuit – LEDs and displays DB038 manual 2.9 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
Maak pinnen outputs(gebeurt al in DB038-1.inc) ; A0..A2 and D and E0..E2 are outputs BSF STATUS, RP0 MOVLW 0xD8 MOVWF ( 0x80 ^ TRISA ) MOVLW 0x00 MOVWF ( 0x80 ^ TRISD ) MOVLW 0xF8 MOVWF ( 0x80 ^ TRISE ) BCF STATUS, RP0 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
Selecteer en activeer LEDs(gebeurt al in DB038-1.inc) ; activate the LEDs BSF PORTA_SHADOW, 2 CALL PORTA_FLUSH MOVLW H'04' MOVWF PORTE_SHADOW CALL PORTE_FLUSH MOVLW H'55' ^ H'FF' MOVWF PORTD_SHADOW CALL PORTD_FLUSH Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
Aansturen van één 7-segment display • Pinnen output maken, RA2 hoog maken: (gebeurt al in DB038-01.inc) • Selecteer het meest rechter display: Schrijf de juiste waarde naar poort E • Activeer de juiste segmenten: Schrijf de juiste waarde naar poort D DB038 manual 2.9.4 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
segment letters A B F G E C D DP http://en.wikipedia.org/wiki/Seven-segment_display Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
segment letters let op: active low ! Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
BCD/binair zeven-segment We moeten dus een getal (0..F) omzetten naar een bitpatroon dat de juiste segmenten aan zet. 16 byte zet_om_naar_zeven_segment( byte x ){ if( x == 0 ) return 0x15; if( x == 1 ) return 0x21; . . . } Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
zet_om_naar_zeven_segment : cblock temp7 endc movwf temp7 ; check temp7 == 1 ; skip if <> ; return 0x21 17 byte zet_om_naar_zeven_segment( byte x ){ if( x == 0 ) return 0x15; if( x == 1 ) return 0x21; . . . return 0x11; } Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
opdrachten les 4 - 2 : hexadecimaal tellen op 1 zeven-segment display tel op de 1 cijfer van het 7-segment display van 0 tot F (en dan weer opnieuw, bv 1 tikken per seconde) Gebruik een conversie subroutine om te vertalen van een getal (0..F) naar het bitpatroon van de segmenten. Hogeschool Utrecht / Institute for Computer, Communication and Media Technology