Dobbelsteen

25 juni 2009


Deze elektronische dobbelsteen is een uitbreiding op de vorige post. De combinatie PIC en schuifregister wordt nu gebruikt om twee zeven segment displays aan te sturen. De displays worden gemultiplexed aangestuurd. Eerst de ene en daarna de andere. Dit wisselt zo snel dat het lijkt dat beide branden. Alle uit- en ingangen van deze kleine microcontroller worden gebruikt. 3 voor het aansturen van het schuifregister, twee voor het schakelen tussen de displays en een ingang voor de drukknop.

Het schema:

Schema dobbelsteen

Schema dobbelsteen

Het updaten van de displays gebeurt in een eindeloze lus. In pseudo-code:

loop:
shift data display 1
display 2 off
latch
display 1 on
shift data display 2
display 1 off
latch
display 2 on
goto loop

De data die verzorgt welke segmenten branden moeten, wordt uit een tabel gehaald via een computed goto.
Een 1 geeft aan dat het segment uit moet zijn, een 0 dat het segment moet branden. De index in deze tabel is het getal wat moet worden getoond.

seg_table
    addwf   PCL, f
    retlw   B'10001000'
    retlw   B'11011110'
    retlw   B'10100010'
    retlw   B'11000010'
    retlw   B'11010100'
    retlw   B'11000001'
    retlw   B'10000001'
    retlw   B'11011010'
    retlw   B'10000000'
    retlw   B'11000000'

Deze bitjes worden bepaalt door de manier het aansluiten van het display op de 74hc595. In volgende tekening zie je de manier die ik gebruikt heb. (Het was een vaag display wat ik ergens uit gesloopt heb. Common-anode, vandaar de aansturing van uit de +5V met een PNP transitor.)

dobbelsteen-7seg

dobbelsteen-7seg

Een gooi met de dobbelsteen wordt gedaan door op de drukknop te drukken. De waarde die op de displays wordt getoond moet natuurlijk willekeurig zijn. Deze willekeurigheid wordt bereikt door de onvoorspelbaarheid van het indrukken en loslaten van de knop. In de displaylus loopt een teller mee. Bij het indrukken van de drukknop wordt de waarde van de teller opgeslagen voor display 1 en bij het loslaten voor display 2. Deze worden vervolgens na loslaten getoond.

De asm-file: dobbelsteen.asm
De hex-file: dobbelsteen.hex

Advertenties