Picaxe 7 Segment Multiplex |
|
To gain access to revision questions, please sign up and log in.
Wire up the Seven Segment Displays and Emitter Followers as shown below.
If you are using the ENSFC boards, you don't need current limiting resistors because these are built into the Picaxe board.

This code is for the PICAXE only.
; =====================================
; ===== COUNT FROM 00 TO 99 ===========
; ===== SEE IF YOU CAN SOLVE THIS =====
; ===== WITH A LOT LESS CODE ==========
; =====================================
SETFREQ EM20
SYMBOL UNITS = B0
SYMBOL TENS = B1
SYMBOL COUNTDN = B2
MOVW 0X0
MOVWR TRISC ; PORTC OUTPUTS
MOVWR UNITS ; INITIALISE TENS
MOVWR TENS ; INITIALISE UNITS
; =====================================
START:
MOVW 0X10
MOVWR COUNTDN
REP:
MOVW 0X0
MOVWR PORTC
CALL UNITS_LOOP
MOVW 0X2
MOVWR PORTC
CALL WAIT10MS
MOVW 0X0
MOVWR PORTC
CALL TENS_LOOP
MOVW 0X1
MOVWR PORTC
CALL WAIT10MS
DEC COUNTDN
JPZ CALL_COUNTER
JMP REP
CALL_COUNTER:
CALL COUNTER
JMP START
; =====================================
; =====================================
COUNTER:
MOVRW UNITS
SUBW 0X9
JPZ INC_TENS
INC UNITS
RET
INC_TENS:
MOVW 0X0
MOVWR UNITS
INC TENS
MOVRW TENS
SUBW 10
JPZ RESET_TENS
RET
RESET_TENS:
TENS = 0
RET
; =====================================
; =====================================
UNITS_LOOP:
; DEBUG
MOVRW UNITS
SUBW 0X0
JPZ __0
MOVRW UNITS
SUBW 0X1
JPZ __1
MOVRW UNITS
SUBW 0X2
JPZ __2
MOVRW UNITS
SUBW 0X3
JPZ __3
MOVRW UNITS
SUBW 0X4
JPZ __4
MOVRW UNITS
SUBW 0X5
JPZ __5
MOVRW UNITS
SUBW 0X6
JPZ __6
MOVRW UNITS
SUBW 0X7
JPZ __7
MOVRW UNITS
SUBW 0X8
JPZ __8
MOVRW UNITS
SUBW 0X9
JPZ __9
END_UNITS:
RET
; =====================================
; =====================================
TENS_LOOP:
; DEBUG
MOVRW TENS
SUBW 0X0
JPZ _0_
MOVRW TENS
SUBW 0X1
JPZ _1_
MOVRW TENS
SUBW 0X2
JPZ _2_
MOVRW TENS
SUBW 0X3
JPZ _3_
MOVRW TENS
SUBW 0X4
JPZ _4_
MOVRW TENS
SUBW 0X5
JPZ _5_
MOVRW TENS
SUBW 0X6
JPZ _6_
MOVRW TENS
SUBW 0X7
JPZ _7_
MOVRW TENS
SUBW 0X8
JPZ _8_
MOVRW TENS
SUBW 0X9
JPZ _9_
END_TENS:
RET
; =====================================
; =====================================
__0:
MOVW 0X08
MOVWR PORTB
JMP END_UNITS
__1:
MOVW 0X3E
MOVWR PORTB
JMP END_UNITS
__2:
MOVW 0X11
MOVWR PORTB
JMP END_UNITS
__3:
MOVW 0X14
MOVWR PORTB
JMP END_UNITS
__4:
MOVW 0X26
MOVWR PORTB
JMP END_UNITS
__5:
MOVW 0X44
MOVWR PORTB
JMP END_UNITS
__6:
MOVW 0X40
MOVWR PORTB
JMP END_UNITS
__7:
MOVW 0X1E
MOVWR PORTB
JMP END_UNITS
__8:
MOVW 0X00
MOVWR PORTB
JMP END_UNITS
__9:
MOVW 0X06
MOVWR PORTB
JMP END_UNITS
; =====================================
; =====================================
_0_:
MOVW 0X08
MOVWR PORTB
JMP END_TENS
_1_:
MOVW 0X3E
MOVWR PORTB
JMP END_TENS
_2_:
MOVW 0X11
MOVWR PORTB
JMP END_TENS
_3_:
MOVW 0X14
MOVWR PORTB
JMP END_TENS
_4_:
MOVW 0X26
MOVWR PORTB
JMP END_TENS
_5_:
MOVW 0X44
MOVWR PORTB
JMP END_TENS
_6_:
MOVW 0X40
MOVWR PORTB
JMP END_TENS
_7_:
MOVW 0X1E
MOVWR PORTB
JMP END_TENS
_8_:
MOVW 0X00
MOVWR PORTB
JMP END_TENS
_9_:
MOVW 0X06
MOVWR PORTB
JMP END_TENS
; =====================================
Download and run this code. Modify it to count from 0 to 9 (easy) and from 00 to 99 (much harder).
Print this table to help you design the remaining data to make the display count from 00 to 99.

reviseOmatic V3 Contacts, ©, Cookies, Data Protection and Disclaimers Hosted at linode.com, London