Een LED dobbelsteen met behulp van een PIC 16F84 (of 16F88) (5 / 12 stap)

Stap 5: Het ontwerp van de software

Dat is het voor de hardwareontwerp, nu moeten we het ontwerpen van de software waarmee onze hardware geworden op een dobbelsteen.

Een ding dat u waarschijnlijk al gemerkt was dat de hardware implementatie werd gedaan in een gestructureerde, wijze van de bouwsteen. We moeten onze softwareontwerp op dezelfde manier benaderen.

Bij het ontwerpen van onze software, kunt u beginnen met het verdelen van het systeem in functionele luchtruimblokken. Er is een gemakkelijk divisie het probleem over een ingang (de knop), enkele bewerkingen (eigenlijk de dobbelstenen rollen), en een uitgang (de LEDs) verdeelt.

Laten we beginnen met het opbouwen van het deel van de uitvoer van onze code eerst. Het is de meest visuele component, en het laat ons 'zet sommige loopt op het bord' vroeg. Voordat we al beginnen, kunnen praten een beetje over de microprocessor-instructieset en de architectuur.

Het bereik van de PIC van microprocessoren implementeren een verminderd Instruction Set Computer (RISC). Na een RISC-kern is een factor die deze CPU's zo snel maakt. Een nadeel van het hebben van een RISC-kern is dat het bereik van de PIC van microprocessoren alleen ten uitvoer leggen ongeveer 37 instructies, dus duurt soms meer instructies om dingen te doen, en vaak oplossingen niet altijd lijken te zijn zo intuïtief als op, bijvoorbeeld een Z80 of 6502.

In de foto is het primaire werken register het register 'W'. De meeste van onze activiteiten gebruiken het register 'W' op een bepaalde manier. Neem, bijvoorbeeld, een aantal commando's dat zal de uitgang van een binaire patroon '10101010' naar poort B.

MOVLW B "10101010"

MOVWF PortB

Eerst, het woord dat we willen schrijven in het 'W' register, wordt geladen en vervolgens het register 'W' is geschreven naar poort B.

We kunnen deze volgorde van de bewerkingen gebruiken om de uitgang van de bit-patroon als u wilt weergeven een dobbelsteen van 6. Uit het schema, kunnen wij zien dat de eerste sterven is aangesloten op poort A, bits 0-3 op de volgende manier;

Poort A(0) - centrum LED

A.1 - poort hoek LEDs (1) en (3).

Port A(2) - hoek LEDs (2) en (4).

Poort a, punt 3 - middelste LEDs (5) en (6).

Als u wilt weergeven van het patroon voor een 6, alle hoek LEDs, en alle Midden LEDs zijn op, maar de centrum-LED is uitgeschakeld. Dit komt neer op bitpatroon van b '00001110'. Dus, als u wilt weergeven een 6, voeren wij gewoon de instructies;

MOVLW B "00001110"

MOVWF PortA

Evenzo als u wilt weergeven een 1 (het centrum LED), zouden we gebruiken;

MOVLW B '00000001'

MOVWF PortA

Wij hebben geweest over de 6 als 00001110, en 1 als 00000001. Het kan verwarrend zijn voor het gebruik van nummers zoals dit, vooral wanneer ze niet echt nummers zijn, ze zijn gewoon beetje patronen. Meeste monteurs toestaan om te verlichten de verwarring, het gebruik van 'Constanten' om een toewijzing tussen een naam en een nummer. In het geval van onze dobbelstenen weergeven, kunnen we het woord Die6 in plaats van 00001110, of Die1 in plaats van 00000001 gebruiken.

Een lijst van constanten die we zouden kunnen gebruiken in onze display zou worden;

Die1 B '00000001'

Die2 B '00000100'

Die3 B "00000101"

Die4 B "00000110"

Die5 B "00000111"

Die6 B "00001110"

DieOff B "00000000"

B '00001111' dieTest

De laatste 2 posten (DieOff en DieTest) zijn handig voor het display uitschakelen of controleren of alle LEDs operationeel bij het opstarten zijn door te draaien aan alle LEDs op.

Nu dat we hoe om een aantal te tonen weten, moeten we de bouwsteen produceren waarmee ons te voorzien van een nummer, en de passende bitpatroon in de weergave wordt geladen.

Voordat we deze display routine bespreken, dient te worden vermeld dat er best software is geschreven in een modulaire mode, een routine op een moment. Hierdoor kan de functionaliteit worden toegevoegd component door de component. Dan kunnen we ons concentreren op het schrijven van elk onderdeel afzonderlijk, waardoor complexe software worden gebouwd laag voor laag.

Terug naar onze bouwsteen voor het weergeven van een dobbelsteen. Een routine om de display-functionaliteit te implementeren kan uitzien;

; Ten eerste, de vereiste constanten definiëren...

Die1 EQU B '00000001'; Sommige constanten zijn gedefinieerd

Die2 EQU B '00000100'; voor de verschillende LED-DOBBELSTENEN

Die3 EQU B '00000101'; bit patronen

Die4 EQU B '00000110'

Die5 EQU B '00000111'

Die6 EQU B '00001110'

DieOff EQU B "00000000"; ALLE LEDs uitgeschakeld

DieTest EQU B '00001111'; ALLE LEDs op

; Disp_Dice1 - zorgt ervoor dat een bepaald nummer moet worden weergegeven op een dobbelsteen gezicht

; Ingang: Register W

; Output: Een LED patroon op de dobbelsteen.

; Commentaar: voor de waarden van register 'W'; 0 = alle LEDs uit

; 1 – 6 = weergegeven van het patroon voor 1-6

; 7 = alle LEDs ON (Test-modus)

;

DISP_DICEA OPROEP DIE_LOOKUP

MOVWF PortA

TERUGKEER

; Dit is een vertakkende opzoektabel. Kortom, welke waarde wordt doorgegeven via het W-register is

; toegevoegd aan het programma-item (PCL). Deze vervolgens resulteert in de juiste waarde voor de

; resultaat van de zoekactie in het W-register, en de controle worden teruggestuurd naar de roeping wordt geladen

; sub routine.

; sleutel Als een 2 het W-register, de ADDWF PCL percoleren, veroorzaakt f werking 2

; toegevoegd aan het huidige instructieregister waardoor de RETLW Die2 instructie die moet worden uitgevoerd.

; Dit resulteert in de constante Die2 (B '00000100') moet worden geladen in het W-register, en

; controle wordt geretourneerd naar het aanroepende programma.

DIE_LOOKUP ADDWF PCL, f

RETLW DieOff

RETLW Die1

RETLW Die2

RETLW Die3

RETLW Die4

RETLW Die5

RETLW Die6

RETLW DieTest

De meeste van de bovenstaande aanbieding is commentaar (lijnen voorafgegaan door het teken ';'), dus het moet kunnen worden gevolgd.

De display routine kan worden gebruikt door het uitvoeren van de volgende code;

MOVLW 4

OPROEP DISP_DICEA


Gerelateerde Artikelen

LED kerstkaarten met behulp van PIC 10F200

LED kerstkaarten met behulp van PIC 10F200

dit is een instructable over het bouwen van een LED Kerstkaart met behulp van de PIC 10F200 microcontroller.Aangezien deze PIC zes pinnen heeft en de grootte van een SMD-transistor is, het is ideaal voor low-profile toepassingen en kan gemakkelijk wo
Hoe maak je een enkele LED knipperen met behulp van een Arduino Uno Board

Hoe maak je een enkele LED knipperen met behulp van een Arduino Uno Board

Vandaag, we zullen worden ter illustratie van hoe maak je een enkele LED knipperen met behulp van een Arduino Uno-board. Door elke stap te volgen, zal je dit doel bereiken.U zal het volgende nodig:Een Arduino BoardBrood bordUSB-connectorkabelEEN LED3
LED licht met behulp van een Arduino

LED licht met behulp van een Arduino

Een Arduino is een open-source van de computerhardware, open-source software en microcontroller-gebaseerde kits voor het bouwen van digitale apparaten en interactieve objecten die kunnen voelen en aansturen van fysieke apparaten. Er zijn verschillend
LED controle met behulp van de Arduino Bluetooth en Android. (Deel 1)

LED controle met behulp van de Arduino Bluetooth en Android. (Deel 1)

Dit instructable is een eenvoudige tutorial uitleggen hoe de controle van één LED met Android's Bluetooth.U moet:Arduino UNOWeerstanden 300Ω (3 x)Weerstand 150ΩLEDJumpers;Bluetooth-Module (HC-06/andere);Android telefoon;SPP Bluetooth Apk (unWired Lit
Motie gecontroleerde RGB Led pak met behulp van Xbox 360 Kinect, Max MSP en Arduino deel 1

Motie gecontroleerde RGB Led pak met behulp van Xbox 360 Kinect, Max MSP en Arduino deel 1

Ik wilde voor de afgelopen paar maanden die ik aan een project kinect gewerkt heb gemaakt van een led outfit dat gereageerd op de bewegingen van de drager. Ik heb tot nu toe alleen de armen gedaan, en er zijn enkele problemen die moeten worden uitgew
RGB LED Tutorial (met behulp van een Arduino) (RGBL)

RGB LED Tutorial (met behulp van een Arduino) (RGBL)

LED's zijn geweldig. Maar er een punt waar het opvlammen eenvoudigweg niet voldoende is bij elk project komt. Voor deze gevallen een RGB (rood, groen, blauw) is LED het antwoord.Elke kleur gloed met een RGB LED zult u kunnen tot uw hartje begeert.Bij
Bouwen van een Bluespec LED controller met behulp van Connectal Build

Bouwen van een Bluespec LED controller met behulp van Connectal Build

Deze tutorial wordt uitgelegd hoe u de dienst van het publiek Connectal te bouwen om te bouwen en simuleren van een toepassing met hardware en software componenten die zijn geschreven in BSV en C++ met behulp van het Connectal-kader.Wij gaan ervan ui
Een LED Menorah met behulp van Chibitronics Circuit Stickers

Een LED Menorah met behulp van Chibitronics Circuit Stickers

Gehost in December onze hackerspace, Crash ruimte in Culver City, een Instructables bouwen nacht met Chibitronics Circuit Stickers. Met Channukah om de hoek, ik dacht dat een LED menora zou een perfect project om te zien wat ik kon maken met de zelfk
Een high-power LED zaklamp met behulp van een enkele AA-batterij

Een high-power LED zaklamp met behulp van een enkele AA-batterij

dit ontwerp hoogrenderende kan power LEDs op 100mA stroom en is niet veel groter dan de batterij die bevoegdheden. Het unieke circuit gebruikt 2 algemeen beschikbare transistoren (BC327 en BC337) in een oscillator te stimuleren de 1,2 of 1,5 volt uit
Multi-Color LED Lamp met behulp van een 8-kanaals LED Controller v.3

Multi-Color LED Lamp met behulp van een 8-kanaals LED Controller v.3

ik wilde om te experimenteren met het gebruik van verschillende kleuren LEDs, dan de standaard RGB, Multi-Color om effecten te creëren in een functionele lamp.Deze lamp maakt gebruik van cyaan, Magenta, geel, roze, Aqua-groen, en blauw 5mm LED's same
3 x 3 x 3 led kubus met behulp van een 555 timer en een scala van 4020 shift IC - geen programmering (voor de complete beginner zoals ikzelf)

3 x 3 x 3 led kubus met behulp van een 555 timer en een scala van 4020 shift IC - geen programmering (voor de complete beginner zoals ikzelf)

zien van een video van een 8 x 8 x 8 led kubus op you-tube, leidde me naar de instructables website voor de eerste keer, nu ik ben verslaafd. Echter had ik of moet ik zeggen hebben een fundamenteel probleem absoluut geen ervaring of kennis van elektr
1.5V LED Flasher met behulp van een oude klok

1.5V LED Flasher met behulp van een oude klok

Hi... Dit is mijn eerste instructable! Ik had al knutselen met elektronica sinds mijn kindertijd... Ik ben nu een arts, maar ik nog steeds liefde gebouw en verkennen van schakelingen en leren hoe het spul werkt...LEDs oplichten niet in 1.5V meestal a
Apple-stijl LED pulserende met behulp van een MCU $1,30

Apple-stijl LED pulserende met behulp van een MCU $1,30

de Atmel ATTiny85 chip is een 8-pins MCU dat is helemaal geweldig.  Als je hebt geprogrammeerd met de grotere jongens (de ATMega serie), dit een leuk avontuur zijn - u bent beperkt in het aantal output pinnen, maar een creatief ontwerp geeft ons een
Multifunctionele LED spel met behulp van een ATmega32 Microcontroller

Multifunctionele LED spel met behulp van een ATmega32 Microcontroller

Ten eerste zijn mijn antwoorden op de Make-To-Learn wedstrijd:Wat heeft u te maken?Ik maakte een multifunctionele LED matrix-programma, zoals mijn vorige met Arduino UNO, maar dit keer maakte ik het met een ATmega32 microcontroller. Ik gebruikte rege