element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Personal Blogs
  • Community Hub
  • More
Personal Blogs
NexGen Flight Simuator NexGen: CP-1252/ASN-128 Navigation Computer Display: Display Drivers
  • Blog
  • Documents
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: phoenixcomm
  • Date Created: 9 Sep 2018 8:32 PM Date Created
  • Views 928 views
  • Likes 7 likes
  • Comments 4 comments
  • pinlite
  • sn74ls156
  • cp-1252/asn-128
  • diy cockpit
  • display drivers
  • 5 to 25 bit decoder
  • c coding
  • sn74ls240
  • max6955
  • sn74ls138
  • arduino
  • diy electronics
  • nexgen flight simulator
Related
Recommended

NexGen: CP-1252/ASN-128 Navigation Computer Display: Display Drivers

phoenixcomm
phoenixcomm
9 Sep 2018

Well here we are again back at the MPCD this seems like  "The Neverending Story", oh well here goes. I had originally specified the MAX6955 LED display driver IC.  A problem came up and it appeared to only support Charlieplexing,  a technique to use fewer wires to drive your LEDs.

Background: Just to keep you all up to date I have included the links to the other blogs in this series: Hacking the Navigation Computer Display, Software Overview: Nav IOP.

New Analysis: imageAs I have previously stated that this display is a mixture of both 7 and 16 segment displays. These displays are in reality are very small incandescent lamps1. Now since I want all the bell and whistles, ie lamp test, blink any or all segments and dim them. I guess I will have to write this driver for my self.  The segments are clockwise: a1, a2, b, c, d1, d2, e, f.  Now the middle, right to left: g1, g2. Now the rest, clockwise:  h, i, j, k, l, m.

Below I have constructed a table to show which segments are light for any letter.

High Nibble Low Nibble 16 Segment Font Map
ASCII DATA A1 A2 B C D1 D2 E F G1 G2 H I J K L M
30 FF09 0 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 1 image
31 0300 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0
32 EECO 2 1 1 1 0 1 1 1 0 1 1 0 0 0 0 0 0
33 FC40 3 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0
34 31C0 4 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0
35 CD84 5 1 1 0 0 1 1 0 1 1 0 0 0 0 1 0 0
36 DFCO 6 1 1 0 1 1 1 1 1 1 1 0 0 0 0 0 0
37 F000 7 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
38 FFC0 8 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
39 FDC0 9 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0
45 CFC0 E 1 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0
4E 3324 N 0 0 1 1 0 0 1 1 0 0 1 0 0 1 0 0
53 DDC0 S 1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 0
57 3305 W 0 0 1 1 0 0 1 1 0 0 0 0 0 1 0 1
80 LT 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
81 CR 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0
20 SP 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

 

I will have to most likely to scrap the use of a hex to 7segment decoder and do it software as well.
Please note that the software below is not complete this is my rabid mined at 3 am. LOL And is far from being complete I still will have to rebuild the tables to add the Decimal Point(part of the display hardware), and dimming the display, this most likely will have to be a PWM signal generated from a local Arduino, etc. So this means I need 17 Select pins: 4 (hex lamps), 13 (7 seg lamps) plus the 25 Drive pins: (17 (hex)segs, 8 (7 seg) for a total of 42 pins. .

To implement a dimmer control I plan to use 4x  SN74LS240NSN74LS240N an Octal Buffers with Tri-State outputs to the lamp segment I will then add a limiting resistor in series with the lamp segment to ground open collector output of a SN74LS156. The Arduino PCM output will drive the gate control pins 1 19 on the 4  SN74LS240NSN74LS240N via a buffer to deal with the fan-out load as each SN74LS240 is two loads(pins 1 19 x 4 8 Ouch. image

Drive and Select Circuit Explained. With the Arduino DigitalPins driving the 16 segments and 7 segments for a total of 23 segment drive pins. When the Select segments are turned on an (ie a a1 will be seen on all 4 16 segment displays simultaneously) then to provide a sink the correct display must be selected and be turned off allowing current tol flow through the limiting resistors, while the deselected will be turned on and blocking current flow. This scheme requires only 28 digital pins (plus decimal points).

millicandelas
Outputmcd volts Ima
44 4 ~15
30 3.5 ~14

 

More Changes:  The following information was acquired over a phone call to Wamco today:

The pinlites that I have are little 4 volt monsters, in which each segment is 15ma. So with 16 segments on that's 240 ma or about 1/4 amp. The 7 segment lamps each are only 105ma. Now this scenario only happens during a lamp test for total current of 105ma x 13 = 1365ma, and 240ma x 4 = 960ma for a grand total of 2325ma or 2.325 amps @ 4volts. By running the lamps at 3.5 I will greatly extend the lamps life. I was also told that I could remove the in-line resistor to limit current.

 

This is in the header files:

struct Display16Segs {
    unsigned char Code;
    int nibble[4]; }


struct Display16Segs displayHex[] = {
{{0x20}, {0x0, 0x0, 0x0, 0x0}},
{{0x30}, {0xF,  0xF,  0x1, 0x09}},  {{0x31}, {0x0, 0x3, 0x0,  0x0}},  {{0x32}, {0xE, 0xE, 0xC, 0xO}},  {{0x33}, {0xF, 0xC, 0x4, 0x0}},  {{0x34}, {0x3, 0x1, 0xC, 0x0}},
{{0x35}, {0xC, 0xD, 0x8, 0x4}},    {{0x36}, {0xD, 0xF, 0xC, 0x0}},  {{0x37}, {0xF, 0xF,  0x0, 0x0}},  {{0x38}, {0xF, 0xF, 0xC, 0x0}},  {{0x39}, {0xF, 0xD, 0xC, 0xO}},
{{0x45}, {0xC, 0xF, 0xC, 0x0}},
{{0x80}, {0xF, 0xF, 0xF,  0xF}},  {{0x81}, {0x0, 0xC, 0x0, 0x0}}};

 

int lookup16seg( unsigned char[2], int HL );

 

This is the function:

int lookup16Segs ( unsigned char* code, int HL ) {
int value;    for ( int scan = 0; scan < 17; scan ++ ) {
          if ( code == displayHex.code[ scan] ) {
              if ( HL == 0 ) {
                // return nibbles 1 & 2 (msb)
                    }
              else {
                    // return nibbles 3 & 4 (lsb)
                    }}}
return value; }

 

* the 16 segment display font map and lamp images came from the MAX6955 datasheet.   

 

Keep Tuned In, More To Come  ~~Cris  image
Back to the Main Index
image

REVISIONS:

  • 10Sept18 Complete edit of PCM paragraphs.
  • 10Sept18 Added image of proposed PCM Drive/Select Schematic

image

  • 10Sept18 Added paragraph on 'Background'
  • 12Sept18 Added a link to the Wikipedia about 'Charlieplexing'
  • 14Sept18 I added the { after the =  and its mate } at the end before the ;
  • 15Sept18 Added the paragraph and millicandela table in 'More Changes'
  • Sign in to reply

Top Comments

  • mcb1
    mcb1 over 7 years ago +1
    I presume https://www.intersil.com/content/dam/intersil/documents/icm7/icm7245.pdf is the same charlieplexing?
  • phoenixcomm
    phoenixcomm over 7 years ago in reply to mcb1 +1
    Charlieplexing was It was first proposed in early 1995 by Charlie Allen at Maxim Integrated Products. It is a way of multiplexing CPU outputs to drive more LED's than you have outputs as LEDs only conduct…
  • phoenixcomm
    phoenixcomm over 7 years ago in reply to mcb1 +1
    nope straight driver
  • phoenixcomm
    phoenixcomm over 7 years ago in reply to mcb1

    nope straight driver

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • mcb1
    mcb1 over 7 years ago in reply to phoenixcomm

    Yeah ... I meant was that intersil chip using charlieplexing (which you wanted to avoid) ..image

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • phoenixcomm
    phoenixcomm over 7 years ago in reply to mcb1

    imageCharlieplexing was It was first proposed in early 1995 by Charlie Allen at Maxim Integrated Products. It is a way of multiplexing CPU outputs to drive more LED's than you have outputs as LEDs only conduct one way. Here is a great write up that is better than Maxims own AP note at www.pcbheaven.com.  If you take it to a minimalist configuration you can use it for a Serial Port Traffic Status Light that I published as a tech-tip.

    image

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • mcb1
    mcb1 over 7 years ago

    I presume https://www.intersil.com/content/dam/intersil/documents/icm7/icm7245.pdf   is the same charlieplexing?

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube