' ========================================================================= ' ' File...... HC4LED.SXB ' Compiler.. SXB Version 1.42.01 ' Purpose... Demonostrate use of HC4LED display module ' Author.... Terry Hitt ' E-mail.... terry@hittconsulting.com ' Started... ' Updated... ' ' ========================================================================= ' ------------------------------------------------------------------------- ' Program Description ' ------------------------------------------------------------------------- ' HC4LED Pinout: ' Pin1 = +5VDC (White wire) ' Pin2 = Gnd ' Pin3 = Blank (Must connect to Gnd to enable display) ' Pin4 = No Connection ' Pin5 = Clock (Connect to RA.0 for this demo program) ' Pin6 = Data (Connect to RA.1 for this demo program) ' ' ' Each segment of the display is addressable, so you can create letters ' and symbols. ' To display custom symbols: ' Set the variables "segments(0)" thru "segments(3)" (segments(0) is on the left) ' simply add the segment values that you want on ' Then use "DisplaySegments" to show the segments on the display ' ' ---4--- ' | | ' 2 8 ' | | ' |---1---| ' | | ' 64 16 ' | | ' --32--- ' ' For example "F" would be 4+2+1+64 = 71 ' ' ------------------------------------------------------------------------- ' Device Settings ' ------------------------------------------------------------------------- DEVICE SX28,OSC4MHZ,TURBO,STACKX,OPTIONX FREQ 4_000_000 ' ------------------------------------------------------------------------- ' IO Pins ' ------------------------------------------------------------------------- Clk VAR RA.0 Dat VAR RA.1 ' ------------------------------------------------------------------------- ' Constants ' ------------------------------------------------------------------------- ' ------------------------------------------------------------------------- ' Variables ' ------------------------------------------------------------------------- value VAR Byte (4) segments VAR Byte (4) cnt VAR Byte temp1 VAR Byte ' ========================================================================= PROGRAM Start ' ========================================================================= ' ------------------------------------------------------------------------- ' Subroutine Declarations ' ------------------------------------------------------------------------- DisplayValue SUB 4 UpdateValue SUB DisplaySegments SUB 4 LEDOut SUB 1 ' ------------------------------------------------------------------------- ' Program Code ' ------------------------------------------------------------------------- Start: HIGH Clk Main: DisplayValue 1,2,3,4 PAUSE 1000 DisplaySegments 91,103,98,79 ' HELP PAUSE 1000 DisplayValue 0,0,0,0 DO INC value(3) IF value(3) > 9 THEN value(3) = 0 INC value(2) ENDIF IF value(2) > 9 THEN value(2) = 0 INC value(1) ENDIF IF value(1) > 9 THEN value(1) = 0 INC value(0) ENDIF IF value(0) > 9 THEN value(0) = 0 ENDIF UpdateValue PAUSE 1 LOOP GOTO Main ' ------------------------------------------------------------------------- ' Subroutine Code ' ------------------------------------------------------------------------- DisplayValue: PUT value,__PARAM1,__PARAM2,__PARAM3,__PARAM4 UpdateValue: FOR cnt = 0 to 3 READ DigitSegs+value(cnt),segments(cnt) NEXT GOTO DisplayArray DisplaySegments: PUT segments,__PARAM1,__PARAM2,__PARAM3,__PARAM4 DisplayArray: HIGH Clk LEDOut segments(3) LEDOut segments(2) LEDOut segments(1) LEDOut segments(0) RETURN LEDOut: temp1 = __PARAM1 SHIFTOUT Dat, Clk, MSBFIRST, temp1 RETURN ' ------------------------------------------------------------------------- ' Data ' ------------------------------------------------------------------------- DigitSegs: DATA 126,24,109,61,27,55,115,28,127,31