Charlie-plexing


Closed Thread
Results 1 to 40 of 61

Thread: Charlie-plexing

Hybrid View

  1. #1
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    3,172


    Did you find this post helpful? Yes | No

    Default Re: Charlie-plexing

    I used the wiring above for pins D.1, D.2 and D.3 on a 16F877 and it didn't work as expected.

    I get 3 LEDs blinking faintly instead of a single one. It seems as if the current loops over to the unused pin and comes back.

    I'll have to check out your thread. I must be missing something.

    Code:
    ' Blink 6 LEDs connected to Port D.1, D.2 and D.3 in charlie-plex manner
    
    '   PIC             16F877      ext osc 20MHz
    '   PBP             v2.60c
    '   MPASM           v5.49
    '   MCS+            v2.1.0.7
    '   U2 programmer   v4.32
    
    asm
     __config _HS_OSC & _WDT_OFF & _PWRTE_OFF & _BODEN_ON & _LVP_OFF & _CPD_OFF & _WRT_OFF & _DEBUG_OFF & _CP_OFF
    endasm
    
    DEFINE OSC 20
    ADCON1 = 7                  ' Set Ports to digital
    TRISA = %00000000           ' Set all Ports to output 
    TRISB = %00000000
    TRISC = %00000000
    TRISD = %00000000
    TRISE = %00000000
    PORTA = %00000000           ' Set ports OFF
    PORTB = %00000000
    PORTC = %00000000
    PORTD = %00000000
    PORTE = %00000000
        pause 100
    mainloop:
        TRISD = %11111001       ' Enable pins D.1 and 2
        PORTD = %00000100       ' Turn ON pin D.2 --> D.1
        pause 500
        PORTD = %00000010       ' Turn ON pin D.1 --> D.2
        pause 500
    
    ;    TRISD = %11110101       ' Enable pins D.1 and 3
    ;    PORTD = %00001000       ' Turn ON pin D.3 --> D.1
    ;    pause 500
    ;    PORTD = %00000010       ' Turn ON pin D.1 --> D.3
    ;    pause 500
    
    ;    TRISD = %11110011       ' Enable pins D.2 and 3
    ;    PORTD = %00000100       ' Turn ON pin D.2 --> D.3
    ;    pause 500
    ;    PORTD = %00001000       ' Turn ON pin D.3 --> D.2
    ;    pause 500
    
        TRISD = %11111111       ' All pins disabled
        pause 500
        goto mainloop
    End
    Robert

  2. #2
    Join Date
    Jun 2016
    Posts
    19


    Did you find this post helpful? Yes | No

    Default Re: Charlie-plexing

    Hi AvionicsMaster1
    No big deal, someone on here reckons that mistakes are not mistakes but learning opportunities and I think he's right having had plenty of learning opportunities myself.
    Still getting them.
    Using your idea to copy and paste |OR Demon, thanks.
    Thanyou to Richard for keeping us right and for introducing me to the lookup command which has led me onto writing my code in decimal and hex.
    Having great fun with them, well this is a hobby and hobbies are supposed to be fun.
    The following code is for a set of traffic lights on the roads as part of a 1/76 scale model railway.

    Code:
    '****************************************************************
    '*  Name    : Four Way Traffic Lights                           *
    '*  Author  : Jim Hagan                                         *
    '*  Date    : 10/07/2016                                        *
    '*  Version : 1.0                                               *
    '*  Notes   : For 16F84A                                        *
    '****************************************************************
     #CONFIG
        __CONFIG _XT_OSC & _CP_OFF
    #ENDCONFIG
      'Defines
       DEFINE OSC 4          'Tell PBP3 expected system clock frequency
      'Aliases
       LEDS1 var PORTB        'Assign name LEDS1 to PORTB
       LEDS2 VAR PORTA        'Assign name LEDS2 to PORTA
       'Variables
       i var byte
       'Initialize
       TRISB = $0            'Set PORTB to Output
       TRISA = $0
       'Program Code
    START
       gosub REDGREEN
       gosub REDAMBER
       gosub GREENRED
       gosub AMBERRED
       goto START
    REDGREEN
       LEDS1 = $61            'LEDS 0, 5 and 6 on PORTB On
       LEDS2 = $08            'LED 3 on PORTA On
       pause 3000             'Puts lights on for 3 seconds
       for i = 1 to 10
       LEDS1 = $0
       LEDS2 = $0
       next i
       return
    REDAMBER
       LEDS1 = $D3             'LEDS 0, 1, 4, 6 and 7 on PORTB On
       LEDS2 = $04             'LED 2 on PORTA On
       pause 2000              'Puts lights on for 2 seconds
       for i = 1 to 10
       LEDS1 = $0
       LEDS2 = $0
       next i
       return
    GREENRED
       LEDS1 = $C              'LEDS 2 and 3 on PORTB On
       LEDS2 = $03             'LEDS 0 and 1 on PORTA On
       pause 3000
       for i = 1 to 10
       LEDS1 = $0
       LEDS2 = $0
       next i
       return
    AMBERRED
       LEDS1 = $9A              'LEDS 1, 3, 4 and 7 on PORTB On
       LEDS2 = $06              'LEDS 1 and 2 on PORTA On
       pause 2000
       for i = 1 to 10
       LEDS1 = $0
       LEDS2 = $0
       next i
       return
       end
    Regards
    Jim

Members who have read this thread : 2

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts