====== 7-segment display module ======
{{:projects:electronics:7segdisplay:display_working.jpg?400 |Working Display}}
**Arduino library available on [[https://github.com/Photonicsguy/SAA1064|Github]]**
This was one of my first doublesided and surfacemount boards. I made this board using Eagle for layout and then I used [[http://www.batchpcb.com|BatchPCB]] to manufacture the board. The board operates correctly, however, if I were to revise it, I would use a larger SMT resistor than the 0402 size. The board will be controlled via I2C from a PIC microcontroller, initially for the pressure sensor and later for other projects.
{{:projects:electronics:saa1064.pdf|SAA1064 Datasheet}}
{{:projects:electronics:la-601bl.pdf|7-segment Datasheet}}
[[projects:electronics:7segdisplay:Schematic]]
C1, 2.7nf (2700pf)
R1,R2 = 220 Ohms
{{:projects:electronics:7seg.jpg?200| }}
====== Constants ======
; SAA1064 Constants
SAA1064ADDRESS EQU B'01110000' ; I2C Address
SAA1064CONTROL EQU B'00000111' ; Control, bits 6:4 are for brightness
SAA1064SEGDASH EQU B'01000000' ; -
SAA1064SEGDP EQU B'10000000' ; .
SAA1064SEGJ EQU B'00011110' ; J
====== PIC18 assembly code lookup table ======
;Lookup Table for 7-seg
;TODO Add test to make sure number is 0x0F or below
;DP is Bit 7
SEG_LOOKUP
MOVWF Temp,A
MOVLW 0x10
SUBWF Temp,A
BTFSC STATUS,C
RETLW B'11000000' ; Return 0xC0 if over 0x0F - Light up DP and G segments
BCF STATUS,C
RLCF Temp,w
ADDWF PCL,F
RETLW B'00111111' ; 0
RETLW B'00000110' ; 1
RETLW B'01011011' ; 2
RETLW B'01001111' ; 3
RETLW B'01100110' ; 4
RETLW B'01101101' ; 5
RETLW B'01111101' ; 6
RETLW B'00000111' ; 7
RETLW B'01111111' ; 8
RETLW B'01100111' ; 9
RETLW B'01110111' ; A
RETLW B'01111100' ; B
RETLW B'01011000' ; C
RETLW B'01011110' ; D
RETLW B'01111001' ; E
RETLW B'01110001' ; F
;End of Lookup