Looking for simple way to interface BCD to serial (RS232)

I have a device that has a three digit LED display. The chip that drives the LED also has four Binary Weighted outputs (1,2,4,8) and three address pins for 100's, 10's and units. I want to drive a FIFO UART of some sort to output an RS232 stream so that this device can update a software program. Baud rate 300 to 4800 range would be nice if possible.

The updates are about 300/second

Is there a real simple hardware FIFO UART that can do this without a lot of extra hardware. I don't want a software fix unless I can do it in PicAxe and can find code written.

Off the shelf products OK I don't want to reinvent the wheel.

--
Joe Leikhim K4SAT
"The RFI-EMI-GUY"©

"Use only Genuine Interocitor Parts" Tom Servo  ;-P
Reply to
RFI-EMI-GUY
Loading thread data ...

Do you docs on the outputs ?

don

Reply to
don

--
The way I'd do it would be to broadside load a 10 bit parallel-in
serial-out shift registers with the BCD data, the digit data, a stop and
a start bit, and then shift the data out serially to the RS-232 input of
whatever's updating your software program.

If the broadside data into the shifter is updating at about 300Hz,
that's about 3.33ms, so to shift it all out before the next update comes
along would require a bit clock at least 10 times faster than that, or
about 333µs/3.3kHz.

Duck soup, maybe. ;)

What's the chip that's driving the display?

JF
Reply to
John Fields

I think you are asking the specs of the driving chip? Its an ICM7217IJI Common Cathode 4 LED Display/Programmable Up/Down Counter. The BCD I/O pins and the segment drivers b, d and f (d1, d2, d3) used to select

100's. 10's and units (I may have order reversed).
--
Joe Leikhim K4SAT
"The RFI-EMI-GUY"©

"Use only Genuine Interocitor Parts" Tom Servo  ;-P
Reply to
RFI-EMI-GUY

Its an ICM7217IJI Common Cathode 4 LED Display/Programmable Up/Down Counter. The BCD I/O pins and the segment drivers b, d and f (d1, d2, d3) used to select 100's. 10's and units (I may have order reversed).

--
Joe Leikhim K4SAT
"The RFI-EMI-GUY"©

"Use only Genuine Interocitor Parts" Tom Servo  ;-P
Reply to
RFI-EMI-GUY

That will not be so trivial because this is a chip that drives the LED in muxed fashion.

--
Regards, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

There are separate BCD outputs, in addition to the LED drivers abcdefg. So he could use the muxs to latch the bcd data into shift registers. After 16 bits are latched, clock them out with start and stop bits.

Cheers

Reply to
Martin Riddle

This is what I was wondering about.

So my answer is "use a PIC".

As long as there is a way to sync with the first digit, that with would be easy.

don

Reply to
don

Datasheet

Sync the digits with the Mux outputs.

Cheers

Reply to
Martin Riddle

On a sunny day (Sun, 27 Dec 2009 22:23:06 -0500) it happened "Martin Riddle" wrote in :

Replace the whole chip by a PIC with a RS232 output.

Reply to
Jan Panteltje

I think it would be easier without the FIFO UART. You just want a signal that looks like the RS-232. You don't really need a RS-232 receive function at all unless you want to use it to set the Baud rate.

Reply to
MooseFET

--- According to the schematic, the segment drivers are only used to drive segments and the digit drivers are used to select which digit is being driven, multiplexed at 25% duty cycle.

So, if you were to do something like this:

ICL7217 . +------+ . | D1|--------------------------------------+ . | D2|-----------------------------------+ | . | D3|--------------------------------+ | | . | D4|-----------------------------+ | | | . | I/O1|--------------------------+ | | | | . | I/O2|-----------------------+ | | | | | . | I/O4|--------------------+ | | | | | | . | I/O8|-----------------+ | | | | | | | . +------+ | | | | | | | | . U1 | | | | | | | | . +------------------------+ . | Dh Dg Df De Dd Dc Db Da| .CLK>--+-----------------|> | . | |____ | U2 .LOAD--|-+--------------O|LOAD 74HC165 | | | | | . | | +--|Sin Qh|--+ . | | | +------------------------+ | . | +------------|----------------------------+ | . +-|------------|--------------------------+ | | . | | HC74 | | | | HC74 . | | +------+ | | | | +------+ . | +--|R Q|--+ | | +----|D Q|-->OUT . +----|> | | +------|R | .Vcc>----+--|R | +--------|> | . +--|D | Vcc--|S | . +------+ +------+ U3A U3B

Then, when LOAD went low, U3 would generate a start bit, U2 would hold the segment and digit data, and U3A would generate the stop bit, all of which would be shifted out of U3B-Q at a rate determined by CLK.

According to page 6 of the 7217 data sheet, when LOAD COUNTER goes

3-state, the 4 bit I/O port will output BCD segment data peculiar to one of the four digits when that digit line go high, so differentiating the low-going edge of the digit pulses to load data into U2 and the start and stop bits into E3 would look like this:

________ DIGITn_____| |_______________

_____ ________ ______________ DATAn _____|________|______________ ____ ______________ _____________ LOAD |_| _______________ _______________ DATAl_______________|_______________

After loading the parallel data into U2 and setting up the start and stop bits, serial data in the registers would look like this, LSB on the left: ____ ______________ _____________ LOAD |_| ______________ __ __ __ __ __ __ __ __ __________ SD |__|__|__|__|__|__|__|__|__| \ / Da Db Dc Dd De Df Dg Dh \ START STOP

Notice that the numerical data as well as the digit ID is embedded in the frame, so it should be easy for your software to sort out what's what as data comes rolling in

Next, you'll need to generate a LOAD pulse when any of the digit lines goes low, and you can do that like this:

Vcc | [10K] +-------------A | +-----+ | +-----+ NAND Y--[------|D Q|-+-|D Q| +--B | | _| | _| | | CLK>-------+-|> Q| +-|> Q|O-+ | | +-----+ | +-----+ | +---------+ | | | | +-------------A | | +-----+ | +-----+ NAND Y--[----|-|D Q|-+-|D Q| +--B | | | _| | _| | | +-|> Q| +-|> Q|O-+ | | +-----+ | +-----+ | +---------+ | | | | +-------------A | | +-----+ | +-----+ NAND Y--[----|-|D Q|-+-|D Q| +--B | | | _| | _| | | +-|> Q| +-|> Q|O-+ | | +-----+ | +-----+ | +---------+ | | | | +-------------A | ____ | +-----+ | +-----+ NAND Y--[LOAD DIGIT4>----|-|D Q|-+-|D Q| +--B | | _| | _| | +-|> Q| +-|> Q|O-+ | +-----+ | +-----+ +---------+

The dflops are HC174's and the nands are HC00's

JF

Reply to
John Fields

--
Oops...

'R' at the top left of U3A should be S(ET), as corrected above.

JF
Reply to
John Fields

Hmm... So 300 updates/s * 3 digits * 10 bits makes 9000bps. Even 4800Bd will not be enough you will need at least 9600Bd.

Meanwhile, the scanrate is some 2500 digits/s. To send them all you would need at least 25kbps. There is no need to send them all but you will need to do some buffering and selection at the transmitting side.

Another complication is the updating itself. For all I can see there is no other way to detect an update but finding some digit(s) changed. That's to say unless you can catch the /STORE signal. But even then there seems no way to predict at what time during the scanning of the three digits that signal occurs. So you need to store two sets of digits and compare them. Only when two successive sets are equal you may have a valid output. Otherwise one or even both may be deformed.

I consider the chance to find an of the shelf solution pretty small. Building a circuit that account for all details mentioned requires quite a lot of hardware. Today, designers will use some programmable device like a PLD or an FPGA. But the moment you're going to program a device you may get a micro as well. A PIC16F628 or a PICAXE-28X2 will do the job... But yes, it need to be programmed.

If you want me to do something like that for you, mail me at petrusdotbitbyterathotmaildotcom.

petrus bitbyter

Reply to
petrus bitbyter

The RS-232 requirement will be somewhat awkward, depending on what power supplies are available; have you considered USB instead? The FTDI device "FT245R" is a FIFO-input USB slave device, with software support. I'd imagine you can clear the FIFO and clock eight bits of address-and-BCD data (four BCD bits and three 'digit enable' flags) as the display is updated. Maybe the 'extra' bit could be used for overflow or other error indicator.

Reply to
whit3rd

MooseFET wrote: snip

I need compatibility with software that expects RS232 , I need to send the appropriate bits, although the RX could be used to program the PIC I guess.

--
Joe Leikhim K4SAT
"The RFI-EMI-GUY"©

"Use only Genuine Interocitor Parts" Tom Servo  ;-P
Reply to
RFI-EMI-GUY

The device I am talking about is a Doppler Systems DDF4002 doppler direction finder. It is an older modele that once had a serial interface option which is no longer available.

Your observation about the update rate is quite correct and is covered in the manual for the DDF4002, The theory section of the manual describes almost exactly the data rate assumptions you have stated but qualifies it with:

"However, the message is initiated only when the display is updated. Since this occurs at a maximum rate of 1/1.875 (0.533) seconds, ample time exists between characters and between messages to prevent overrunning.

There is also a later hardware mod to raise the 16X clock (4800 Hz from main board) to 38,400 Hz to provide 2400 baud.

--
Joe Leikhim K4SAT
"The RFI-EMI-GUY"©

"Use only Genuine Interocitor Parts" Tom Servo  ;-P
Reply to
RFI-EMI-GUY

I understand that I may need a bi-polar power supply and line driver like a DF1488 am wary of USB beacause I don't know if any of the legacy amateur software that this will be used for has drivers for USB. Tell me more however.

--
Joe Leikhim K4SAT
"The RFI-EMI-GUY"©

"Use only Genuine Interocitor Parts" Tom Servo  ;-P
Reply to
RFI-EMI-GUY

Found a manual of the DDF1. That's a kits description but two important pages i.e.18 and 19 are carefully wiped out. Maybe a predecessor of the DDF4002 (or not).

Current information at Doppler Systems Inc. starts at 6000 series. No trace of the 4002 ever existed. Does your manual contain a schematic or print layout?

petrus bitbyter

Reply to
petrus bitbyter

Yes you need to be compatible with software that expects RS-232. This means that you do not need a UART chip. All a UART chip does is make a signal wiggle up and down with a certain pattern. It is often easier to just make the signal you want rather than adapt to some chip.

Example: A simple counter driving a 4051 MUX or two or three can make perfectly good RS-232 data out of some small collection of logic signals.

Reply to
MooseFET

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.