UMEÅ UNIVERSITET Tillämpad fysik och elektronik Datorteknik Håkan Joëlson 2000-01-11 v 1.0 DATORTEKNIK Laboration D280 - D285 För Basic Stamp II Innehåll Laboration D280... Grundläggande I/O Laboration D281... LCD-display Laboration D282... Tangentbordsavkodning Laboration D283...Temperaturmätning Laboration D284... Klocka Laboration D285... Datalagring Nyckelord (för sökning i databas) Basic Stamp, I/O, LED, 7-segment, LCD, display, drivrutin, tangentbord, drivrutin, ASCII, givare, Timer, EEPROM LAB_28X.DOC
Laboration D280 Träna på att strukturera lösningar och programflöden. Bli bekant med Basic Stamp II och verktygen för att programmera den. Träna på Input/Output (I/O). Lysdioder (LED) Skyddsresistorer 7-segmentdisplay er Steg 1 Koppla 8 lysdioder (LED, Light Emitting Diod) till ena porten på Basic Stamp. Glöm inte strömbegränsande resistorer till varje lysdiod. Lägg en 8-bitars insignal på den andra porten. Skriv ett program som låter lysdioderna följa insignalen, tex insignal 1 0 0 1 1 1 0 1 ska ge Ändra insignalskombination och kontrollera att LED:na följer med. på lysdioderna. Resten av laborationen går ut på att pröva olika varianter på detta tema. Steg 2 Steg 3 Steg 4 Steg 5 Steg 6 Låt dioderna visa inversen av insignalen (s.k. negativ logik): 0 in tänder LED, 1 in släcker. Låt LED:na visa binärt hur många inbitar som är höga. Koppla in en 7-segmentdisplay istället för LED:na. Upprepa funktionen i steg 3, men visa resultatet på 7-segmentdisplayen i valfri talbas (ange i den skriftliga redovisningen vilken talbas du har valt). (Tips: Innan programmeringen börjar, ta ställning till om det är en 7-segmentdisplay med gemensam katod eller gemensam anod som ska användas, och anpassa progammeringen därefter.) Betrakta insignalen som ett binärt talvärde. Omvandla till ett hexadecimalt tal och visa det på 7-segmentdisplayen/erna. Dvs välj mellan att låta en 7-segmentdisplay alternera mellan de 2 hexadecimala siffrorna, eller att koppla in en andra 7-segmentdisplay. I det senare fallet måste man fundera hur man ska lösa problemet att Basic Stamp har ett begränsat antal I/O-ben. (Jfr tips längst ner nästa sida.) Pröva någon egen variant. Tex spegelvända insignalen (LSB in styr MSB ut), rinnande ljus på olika sätt, osv. Laborationen redovisas skriftligt med förarbete (algoritmer/flödesschema, ev beräkningar, övriga överväganden i problemlösningsprocessen) kopplingsschema kod personliga synpunkter på Basic Stampsystemet - hårdvara och mjukvara. Laboration D280 - D285 Laboration D280 1
Överväganden inför laboration D281 - D285 Kopplingen/arna i laboration D280 behövs inte i D281-D285. Följande laborationer förutsätter och bygger stegvis på varandra på olika sätt. Tre av dem är obligatoriska, två är frivilliga. Redan i laboration D281 kan man välja mellan olika svårighetsnivåer: enkel utskrift på en rad utan finesser utskrift på två rader med en del mer avancerade funktioner. Detta grundval följer sedan med i lösningen av de efterföljande laborationerna. (För ytterligare information om allt detta, se uppgifter om examination för aktuell kurs - tex på kursens hemsida.) Var och en måste därför göra strategiska val. Om man tex tänker göra alla laborationerna, tjänar man på att vara inriktad på det från början. Basic Stamp har ett begränsat antal ben. Ska man genomföra ett flertal av laborationerna, måste olika funktioner dela ben på Basic Stamp. Det påverkar naturligtvis kopplingslösningen. Hur man kopplar påverkar hur man programmerar. Har man tänkt igenom systemet från början, kan man återbruka kod och även på andra sätt spara programmeringstid. Om olika kretsar som ska dela in/utgångar på Basic Stamp behöver ha elektriskt helt skilda anslutningar, kan man använda en multiplexer/demultiplexer (tex 74HC4051 eller 74HC4052). Laboration D280 - D285 Laboration D280 2
Välj mellan laboration D281A och D281B, som är varianter - med olika svårighetsgrad - av samma laboration. (Se föregående sida.) Laboration D281A En sådan del av ett dataprogram som får en periferienhet i ett datorsystem att fungera ihop med resten av systemet kallas en drivrutin. Drivrutinen anpassar enheten mjukvarumässigt till systemet. Koppla in en LCD-panel i ett mikrodatorsystem och förstå dess funktion. Skapa en drivrutin för att visa valfria tecken på panelen. LCD-display LM016L eller LM162 eller VK2010 http://www.elfa.se/pdf/75/07552821.pdf http://www.elfa.se/elfa/produkter/se/20/2011642.htm 10k potentiometer till displayen Koppla ihop LCD-displayen med Basic Stamp II mikrodatorsystem. För tips om hur detta kan göras, se Application Note 1 i Basic Stamp Manual 1.2. (http://www.lls.se/~mux/micro/pdf/bs1apps.pdf). Skriv en drivrutin för displayen och ett huvudprogram som testar drivrutinen genom att skicka [strängar av] tecken till den. Programkod ska skrivas så att tecken skrivs ut i följd på displayens övre rad med början i övre radens första position. Se nästa sida. Kommentar LCD-panelen fungerar så att för varje byte ASCII-kod som skickas till dess databuss, visas motsvarande tecken i den position där markören står. (ASCII står för American Standard Code for Information Interchange, en alfanumerisk teckenkod, där bokstäver, siffror och tecken representeras av specifika [binära] värden.) Laboration D280 - D285 Laboration D281A 3
Välj mellan laboration D281A och D281B, som är varianter - med olika svårighetsgrad - av samma laboration. (Se sidan 2.) Laboration D281B Som laboration D281A men med utökad funktionalitet, vilket påverkar både koppling och programmering. Koppla ihop LCD-displayen med Basic Stamp II mikrodatorsystem. För tips, se hänvisning på föregående sida. Skriv en drivrutin för displayen och ett huvudprogram som testar drivrutinen genom att skicka [strängar av] tecken till den. Displayen har två rader. Programkod ska skrivas så att displayen fungerar på följande sätt: 1. Efter initiering ska första tecknet skrivas ut på övre radens första position. 2. När övre raden fyllts ska nästa tecken automatiskt skrivas ut på undre radens första position. 3. När båda raderna fyllts, ska undre raden flyttas till övre raden och nästa tecken ska skrivas ut på undre radens första position. 4. Vid <Enter/Ny rad> på övre raden ska nästa tecken skrivas ut på undre radens första position. 5. Vid <Enter/Ny rad> på undre raden ska undre raden flyttas till övre raden och nästa tecken ska skrivas ut på undre radens första position. 6. <Backspace/Radera> ska fungera antingen så att man bara kan tömma den rad man befinner sig på, eller som om båda raderna sitter ihop, d.v.s. man ska kunna radera hela displayen. Eftersom denna funktion behövs i Laboration D283, redovisas den både praktiskt och skriftligt som en del av Laboration D283, vare sig man väljer nivå D281A eller D281B. Laboration D280 - D285 Laboration D281B 4
Laboration D282 Få klarhet i hur enkla tangentbord fungerar. Koppla in en knappsats i ett mikrodatorsystem. Skapa en drivrutin för knappsatsen, dvs skapa ett program för tangentbordsavkodning. LCD-display tex LM016L eller LM162 eller VK2010 http://www.elfa.se/pdf/75/07552821.pdf http://www.elfa.se/elfa/produkter/se/20/2011642.htm 10k potentiometer till displayen Tangentbord tex AK-1604 http://www.elfa.se/elfa/produkter/se/12/124680.htm Resistorer Koppla ihop tangentbordet med Basic Stamp II mikrodatorsystem. För tips om hur detta kan göras, jämför Application Note 3 i Basic Stamp Manual 1.2. (http://www.lls.se/~mux/micro/pdf/bs1apps.pdf), samt avsnitt 3.1.2.2 i HC11 i praktiken (Inst. för Tillämpad Fysik och Elektronik). Skriv en drivrutin som avkodar tangentbordet. Välj avkodningsmetod. Resultatet visas på en LCD-display (Laboration D281). Drivrutinen ska returnera (lämna ifrån sig) det ASCII-tecken som motsvarar den knapp som tryckts ner, dvs den ska returnera följande värden: 1. Knappen märkt "#" ska fungera som <Enter>/<Carriage Return> (ny rad) och returnera [ASCII]värdet 0Dh. 2. Knappen "*" ska fungera som <Backspace> (radera), och returnera ASCII 08h. 3. Tangenten noll returnerar ASCIIvärdet för tecknet noll (30h), tangenten ett returnerar 31h, o.s.v. Ett vanligt problem vid tangentbordsavkodning och utskrift är att programmet löper runt alldeles för fort. Man får ofta ett tjugotal tecken då man förväntar sig ett. Detta kan man undvika genom att antingen lägga in en fördröjning på lämpligt ställe, eller genom att man väntar på att tangenten ska släppas upp innan man scannar av igen. Skriv programmet så att man enkelt kan ha kontroll över att tangentbordet lämnar tecken i lämplig hastighet. Ett annat problem är att under insvängningen innan säker kontakt har uppstått mellan kontaktytorna i tangentbordet, kommer programmet uppfatta det som om knappen trycks ner flera gånger (studsproblemet). Dessa kontaktstudsar måste elimineras. Undersök om det i PBasic till Basic Stamp finns instruktioner som är lämpliga för hantering av sådana problem. Om Laboration D284 och/eller D285 ska genomföras kan de och laboration D282 redovisas både praktiskt och skriftligt tillsammans med D283. Annars ska laboration D282 redovisas separat: Praktiskt: Visa en fungerade koppling för handledare/lärare. Skriftligt: Dokumentera tangentbordsfunktionen av detta system med en enklare rapport, som lämnas in för bedömning. För detaljer, se anvisningarna till laboration D283 och examinationskraven för aktuell kurs. Laboration D280 - D285 Laboration D282 5
Laboration D283 Undersöka hur en enkel temperaturgivare fungerar. Koppla in en temperaturgivare i ett mikrodatorsystem. Skapa en ett program för temperaturmätning. Laborationens syfte är att konstruera ett komplett system baserat på Basic Stamp II. LCD-display LM016L eller LM162 eller VK2010 http://www.elfa.se/pdf/75/07552821.pdf http://www.elfa.se/elfa/produkter/se/20/2011642.htm 10k potentiometer till displayen [ Tangentbord tex AK-1604 http://www.elfa.se/elfa/produkter/se/12/124680.htm Resistorer] (Tangentbord behövs inte just för denna laborationen, men om man ska bygga vidare med laboration D284 o/el D285 kommer man behöva den.) SMT 160, pulsbreddsmodulerad temperaturgivare http://www.elfa.se/pdf/73/730/07308869.pdf http://www.elfa.se/elfa/produkter/se/22/227425.htm Ev. avstörningskondensator till temperaturgivaren Konstruera ett Basic Stamp-system som mäter temperatur med givaren SMT 160 och presenterar mätresultatet på LCD-displayen i något lämpligt format, tex: Temp: 20,6 grader C Lämpligen kan man koppla in temperaturgivaren SMT 160 i det Basic Stamp-system som byggts i laboration D281. Praktiskt: Skriftligt: Visa en fungerade koppling för handledare/lärare. Dokumentera systemet och ditt arbete i en rapport, som lämnas in för bedömning. Laboration 281 kan redovisas både praktiskt och skriftligt tillsammans med D283. Om Laboration D284 och/eller D285 ska genomföras kan de/den samt laboration D282 redovisas både praktiskt och skriftligt tillsammans med D283. - För detaljer, se examinationskraven för aktuell kurs. Laboration D280 - D285 Laboration D283 6
Laboration D284 Undersöka hur en timerkrets fungerar. Koppla in en timerkrets i ett mikrodatorsystem. Skapa ett program som implementerar en klocka. Laborationens syfte är att konstruera ett utökat system baserat på Basic Stamp II. LCD-display LM016L eller LM162 eller VK2010 http://www.elfa.se/pdf/75/07552821.pdf http://www.elfa.se/elfa/produkter/se/20/2011642.htm 10k potentiometer till displayen Tangentbord tex AK-1604 http://www.elfa.se/elfa/produkter/se/12/124680.htm Resistorer SMT 160, pulsbreddsmodulerad temperaturgivare http://www.elfa.se/pdf/73/730/07308869.pdf http://www.elfa.se/elfa/produkter/se/22/227425.htm Timerkrets tex ICM7555 http://www.elfa.se/pdf/73/730/07304355.pdf http://www.elfa.se/elfa/produkter/se/22/221084.htm eller 74HC5555 http://www.elfa.se/pdf/73/735/07355555.pdf http://www.elfa.se/elfa/produkter/se/22/221058.htm Konstruera ett komplett Basic Stamp-system som inkluderar en elektronisk klocka som kan ställas. Tiden ska presenteras på en LCD-display. Utöka lämpligen systemet från laboration D282 med en klockfunktion. Koppla in en timerkrets, tex ICM7555 eller 74HC5555. Om 74HC5555 används, låt den vara kristallstyrd. För tips om hur en tidskrets kan kopplas till Basic Stamp, se Application Note 20 i Basic Stamp Manual 1.2. (http://www.lls.se/~mux/micro/pdf/bs1apps.pdf). Tiden visas på LCD-displayen (VK2010 el. motsv.). Klockan ska gå att ställa m.h.a. tangentbordet/knappsatsen. Skriv programkod som implementerar en klocka. Tänk på att beräkna och bygga programmet så, att processorn hinner utföra andra uppgifter också. Laboration D284 får redovisas både praktiskt och skriftligt tillsammans med laboration D283. - För detaljer, se anvisningar till laboration D283 och examinationskraven för aktuell kurs. Laboration D280 - D285 Laboration D284 7
Laboration D285 Undersöka hur man använder EEPROM-minne. Koppla in ett extra minnesområde (seriellt EEPROM) i ett mikrodatorsystem. Skapa rutiner för lagring av data. LCD-display tex LM016L eller LM162 eller VK2010 10k potentiometer till displayen Tangentbord tex AK-1604 http://www.elfa.se/elfa/produkter/se/12/124680.htm Resistorer SMT 160, pulsbreddsmodulerad temperaturgivare http://www.elfa.se/pdf/73/730/07308869.pdf http://www.elfa.se/elfa/produkter/se/22/227425.htm Ev. avstörningskondensator till temperaturgivaren Timerkrets tex ICM7555 http://www.elfa.se/pdf/73/730/07304355.pdf http://www.elfa.se/elfa/produkter/se/22/221084.htm eller 74HC5555 http://www.elfa.se/pdf/73/735/07355555.pdf http://www.elfa.se/elfa/produkter/se/22/221058.htm Seriellt EEPROM 25LC160/P http://www.elfa.se/pdf/73/736/07365851.pdf Konstruera ett Basic Stamp-system som mäter temperatur, lagrar temperaturvärden regelbundet och presenterar både aktuell tid och temperatur samt lagrade temperaturvärden på en LCD-display. Utgå lämpligen från Basic Stamp-systemet i laboration D284. Utöka det genom att koppla in ett seriellt EEPROM 25LC160/P. För tips om hur detta kan göras, jfr. Application Note 13 i Basic Stamp Manual 1.2. (http://www.lls.se/~mux/micro/pdf/bs1apps.pdf). Skriv programkod som loggar temperaturen varje hel timme, dvs registrerar både temperatur och uppgift om aktuell mättid. Låt programmet spara mätresultaten i [externa] EEPROM så att ett strömavbrott ej raderar tidigare mätresultat. Efter ett 24-timmarsvarv kan gammalt temp/tid-värde få skrivas över med nytt. Data visas på LCD-displayen (VK2010 el. motsv.). Lämpligen kan displayen uppdateras varje sekund. Presentationen kan ske tex genom att första raden visar aktuell tid och temperatur och andra raden visar lagrade temperaturvärden. Systemet kan då scrolla igenom de senaste 24 timmarna och för varje jämn timme visa den lagrade temperaturen. 11:27 Temp: 21,3 C 04:00 Temp: -4,8 C Alternativt kan man med tangentbordet plocka fram lagrat temperaturvärde för valfri timme. Tips Konstruera programmet så att det lätt går att koppla triggning av temperaturlagring till minuter istället för till timmar under utvecklingen av programmet. I slutversionen kan triggningen kopplas tillbaka till timmar. Laboration D285 får redovisas både praktiskt och skriftligt tillsammans med laboration D283. - För detaljer, se anvisningar till laboration D283 och examinationskraven för aktuell kurs. Laboration D280 - D285 Laboration D285 8
Komponenter Mikrodator Basic Stamp II modul Utvecklingskort BASIC Stamp Super Carrier Board Kopplingsplatta Lysdioder LED 7-segment display Skyddsresistorer LCD-display tex LM016L eller LM162 eller VK2010 10k potentiometer till displayen Tangentbord tex AK-1604 Resistorer SMT 160, pulsbreddsmodulerad temperaturgivare Ev. avstörningskondensator till temperaturgivaren http://www.parallaxinc.com/stamps/stampinfo.htm http://www.elfa.se/elfa/produkter/se/20/2011642.htm (http://www.elfa.se/pdf/75/07552821.pdf) http://www.elfa.se/elfa/produkter/se/12/124680.htm http://www.elfa.se/pdf/73/730/07308869.pdf http://www.elfa.se/elfa/produkter/se/22/227425.htm Timerkrets ICM7555 http://www.elfa.se/pdf/73/730/07304355.pdf http://www.elfa.se/elfa/produkter/se/22/221084.htm eller 74HC5555 http://www.elfa.se/pdf/73/735/07355555.pdf http://www.elfa.se/elfa/produkter/se/22/221058.htm el motsv. Seriellt EEPROM 25LC160/P http://www.elfa.se/pdf/73/736/07365851.pdf http://www.elfa.se/elfa/produkter/se/20/2017124.htm Laboration D280 - D285 Laboration D285 9