Need to construct the logical reverse of a 7448 - perhaps using a GAL

Use a single chip micro and a bit of software....But that might not be your 'thing' ...

--
This email has been checked for viruses by Avast antivirus software. 
https://www.avast.com/antivirus
Reply to
TTman
Loading thread data ...

Size isn't everything...(ducking)

Other than being obsolete it would be fine. Perhaps you have a few dozen to sell?

Otherwise I'll likely go with the overkill one: AT27C256R-70JU

At $1.50 it is hard to beat.

Thanks,

John :-#)#

Reply to
John Robertson

Funny that they did not notice you don't need all segments to decode the displayed digit, assuming only valid decimal numbers are displayed.

E.g. the "c" segment is on for all digits except "2", and it can be omitted entirely from the decode as the "2" can still be recognized.

Similar, the "d" does not have to be included in the decode and still all valid digits can be decoded.

This leaves 5 logic bits to be tested instead of 7, reducing the logic.

Reply to
Rob

At those speeds, and at that amount of capacity, any jellybean microcontroller with enough I/O pins and an onboard oscillator ought to do the job. Read port A, mask off top bit, indexed read to a table, write the resulting bits to port B. Lather, rinse, repeat.

Reply to
Dave Platt

IIRC, there are ARMs (Cortex-M0) which cost less than a dollar. The same applies to the tiny AVR.

--

-TV
Reply to
Tauno Voipio

OM,

C16A:

Ah, yes, but while I know how to code and program EEPROMs, I am not yet proficient at ARMs/AVRs software development - although if I do many more of these projects I will need to be! Only done a couple of simple project designs with Teensy/Arduino devices...

I am forced to get into FPGAs for solving another project, which for me is a steep learning curve! Considering that I bought a Spartan 3 development kit back in 2005 (or so) it seems about time I use it...

So many projects, so little free time!

John :-#)#

--
(Please post followups or tech inquiries to the USENET newsgroup) 
                      John's Jukes Ltd. 
 Click to see the full signature
Reply to
John Robertson

it took me about seven minutes to write the sketch of the code for that above, this thread will probably run on for weeks tho Oh Well

-
Reply to
bitrex

This should fit fine in an AVR 8 bit with 2k or greater of program memory, compiles with the Arduino IDE, you'll have to edit the if-else if chain in "decode_state" to be appropriate for the various segment numbers I don't know them off the top of my head, and the #defines for the appropriate pin numbers for your device of choice:

/* 7 segment to BCD code sketch */

#define IN_PIN_1 (1) #define IN_PIN_2 (2) #define IN_PIN_3 (3) #define IN_PIN_4 (4) #define IN_PIN_5 (5) #define IN_PIN_6 (6) #define IN_PIN_7 (7)

#define OUT_PIN_0 (8) #define OUT_PIN_1 (9) #define OUT_PIN_2 (10) #define OUT_PIN_3 (11)

struct State { bool seg_1 = false; bool seg_2 = false; bool seg_3 = false; bool seg_4 = false; bool seg_5 = false; bool seg_6 = false; bool seg_7 = false; };

void read_state(State* state) { state->seg_1 = digitalRead(IN_PIN_1); state->seg_2 = digitalRead(IN_PIN_2); state->seg_3 = digitalRead(IN_PIN_3); state->seg_4 = digitalRead(IN_PIN_4); state->seg_5 = digitalRead(IN_PIN_5); state->seg_6 = digitalRead(IN_PIN_6); state->seg_7 = digitalRead(IN_PIN_7); }

int decode_state(const State* state) { if (!state->seg_1 && !state->seg_2 && !state->seg_3 && !state->seg_4 && !state->seg_5 && !state->seg_6 && !state->seg_7) { return 0; } else if (state->seg_1 && state->seg_2) { return 1; } else if (state->seg_1 && state->seg_2 && state->seg_3) { return 2;

// .... etc .... } else { return -1; } }

void write_values(int value) { switch (value) { case 0: digitalWrite(OUT_PIN_0, 0); digitalWrite(OUT_PIN_1, 0); digitalWrite(OUT_PIN_2, 0); digitalWrite(OUT_PIN_3, 0); break;

case 1: digitalWrite(OUT_PIN_0, 1); digitalWrite(OUT_PIN_1, 0); digitalWrite(OUT_PIN_2, 0); digitalWrite(OUT_PIN_3, 0); break;

case 2: digitalWrite(OUT_PIN_0, 0); digitalWrite(OUT_PIN_1, 1); digitalWrite(OUT_PIN_2, 0); digitalWrite(OUT_PIN_3, 0); break;

case 3: digitalWrite(OUT_PIN_0, 1); digitalWrite(OUT_PIN_1, 1); digitalWrite(OUT_PIN_2, 0); digitalWrite(OUT_PIN_3, 0);

case 4: digitalWrite(OUT_PIN_0, 0); digitalWrite(OUT_PIN_1, 0); digitalWrite(OUT_PIN_2, 1); digitalWrite(OUT_PIN_3, 0);

case 5: digitalWrite(OUT_PIN_0, 1); digitalWrite(OUT_PIN_1, 0); digitalWrite(OUT_PIN_2, 1); digitalWrite(OUT_PIN_3, 0);

case 6: digitalWrite(OUT_PIN_0, 0); digitalWrite(OUT_PIN_1, 1); digitalWrite(OUT_PIN_2, 1); digitalWrite(OUT_PIN_3, 0);

case 7: digitalWrite(OUT_PIN_0, 1); digitalWrite(OUT_PIN_1, 1); digitalWrite(OUT_PIN_2, 1); digitalWrite(OUT_PIN_3, 0);

case 8: digitalWrite(OUT_PIN_0, 0); digitalWrite(OUT_PIN_1, 0); digitalWrite(OUT_PIN_2, 0); digitalWrite(OUT_PIN_3, 1);

case 9: digitalWrite(OUT_PIN_0, 0); digitalWrite(OUT_PIN_1, 1); digitalWrite(OUT_PIN_2, 0); digitalWrite(OUT_PIN_3, 1);

default: // do something if "decode_state" returns -1 = invalid state break; } }

State* state;

void setup() { // put your setup code here, to run once:

pinMode(IN_PIN_1, INPUT_PULLUP); pinMode(IN_PIN_2, INPUT_PULLUP); pinMode(IN_PIN_3, INPUT_PULLUP); pinMode(IN_PIN_4, INPUT_PULLUP); pinMode(IN_PIN_5, INPUT_PULLUP); pinMode(IN_PIN_6, INPUT_PULLUP); pinMode(IN_PIN_7, INPUT_PULLUP);

pinMode(OUT_PIN_0, OUTPUT); pinMode(OUT_PIN_1, OUTPUT); pinMode(OUT_PIN_2, OUTPUT); pinMode(OUT_PIN_3, OUTPUT);

state = new State{}; }

void loop() { read_state(state); write_values(decode_state(state)); }

Reply to
bitrex

Nice, but probaly less code lines in assembler..... but if you can't code, you can't code so each will stick with what they know and complete....

--
This email has been checked for viruses by Avast antivirus software. 
https://www.avast.com/antivirus
Reply to
TTman

They don't sell devices with sufficient pins with memory spaces less than around 2k so it's irrelevant what size the binary is for a requirement like this one.

writing it in assembly to reduce binary size for an irrelevant specification on what appears to be a one-off job, even, is called "premature optimization" it's just a waste of time

Reply to
bitrex

Also more error-prone

Reply to
bitrex

I see you want a 32PLCC package.

I'm not selling parts, but there are plenty for sale on eBay. If possible, try to get the "A" suffix version. Most are 24 pin DIP packages, which are probably too big. However, there are some smaller packages available. For example:

Looks like 28C16 EEPROMs are getting scarce, so the prices are high. You probably don't need an electrically erasable EPROM, so a burn once type is probably cheaper and good enough. I guess the AT27C256R is good enough.

I assume you have an EPROM burner. I have one of these: The on board 32PLCC sockets should be useful. It's rather clumsy to use without a box, but since I don't use it very often, I can live with the inconvenience.

--
Jeff Liebermann     jeffl@cruzio.com 
150 Felker St #D    http://www.LearnByDestroying.com 
 Click to see the full signature
Reply to
Jeff Liebermann

We had a Noritake 16-segment 8-character VF display tube go end-of-life, so we did a drop-in replacement board with an LCD and a little uP. It nabs the scanned 16-seg drive on the fly and maps that into the serial LCD. That saved redesigning/recoding four different boxes that used the VF display board.

--
John Larkin         Highland Technology, Inc 
picosecond timing   precision measurement  
 Click to see the full signature
Reply to
John Larkin

Actually I am now leaning to using a SST39SF010A which are around $1US in 25 lots from Digikey - I did get an assortment of PLC to DIP adapters, so the 32 pin package is not a problem.

I have a bunch of Eprom burners, going back to an ancient Pro-Log which reads and burns the odd 1702. My latest is a Xeltek Superpro 610P which handles a lot of stuff I use, other than 1970s PROMs, so for those I fire up one of my Data I/O 29Bs.

Way back when I wire-wrapped an Eprom copier that went from pairs of

2708s up to pairs of 2764s using jumper headers to select the operation. Used that for copying ROMs to EPROMs before I could afford a computer (Apple II clone was my first real computer) Still have those buried in my spare parts area...

John :-#)#

--
(Please post followups or tech inquiries to the USENET newsgroup) 
                      John's Jukes Ltd. 
 Click to see the full signature
Reply to
John Robertson

Our old Fluke 9100s and 9010s will need that sort of repair some day, but the Noritake displays seem to last and last, until hit by something hard that is...

John :-#)#

--
(Please post followups or tech inquiries to the USENET newsgroup) 
                      John's Jukes Ltd. 
 Click to see the full signature
Reply to
John Robertson

That's too bad, those Japanese-mfgr VFDs are much more civilized than the cheap China Special LED backlit LCDs. Also easier to view from an angle and in daylight

Reply to
bitrex

uth-table.png

Trouble is this truth table doesn't show the don't care states of which the re are 112 of them. This will let you highly optimize the equations you wa nt to implement and might well let you use some pretty simple SSI/MSI logic . Of course if you are targeting a PLD a tool can do this for you. But th en this table is not as useful as a simple case statement.

Many HDL compilers will implement don't cares by assignments of the value '

-'. Assuming the lit segments are logic lows, the important code becomes.. .

signal CharSegs unsigned(6 downto 0); signal CharHex unsigned(3 downto 0);

process (CharSegs) BEGIN case CharSegs is when "0000001" => CharHex CharHex CharHex CharHex CharHex CharHex CharHex CharHex CharHex CharHex CharHex CharHex CharHex CharHex CharHex CharHex "----"; end case; end process;

A tool will provide optimized logic equations and you can choose whether yo u want to use SSI/MSI or a PLD.

Rick C.

Reply to
gnuarm.deletethisbit

Actually the inputs will be seven, so 128 words and four bits out, not that it makes much difference these days when small EPROMs are virtually impossible to find.

Rick C.

Reply to
gnuarm.deletethisbit

$1.1179 qty 1

formatting link

Rick C.

Reply to
gnuarm.deletethisbit

<
formatting link
>

?0.75 qty 1 at digikey.

cheers, Gerhard

Reply to
Gerhard Hoffmann

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.