Prev: Intel chimes
Next: How to protect Sensitive Op-Amp circuit from huge over voltageswhile turned off?
From: Bob Eld on 13 Jan 2010 11:11 "Bitrex" <bitrex(a)de.lete.earthlink.net> wrote in message news:Qq6dnXrFS-I2KtDWnZ2dnUVZ_s2dnZ2d(a)earthlink.com... > I'm playing around with some 7400 series logic, trying to teach myself > the basics of digital design. I've been able to come up with a working > circuit for a 24 hour digital clock easily, but I'm struggling trying to > think of a way to make a 12 hour clock. Specifically my problem is the > reset of the hours counter - when the tens digit of the hours section is > 0 I need the units counter to count from 1 to 9 and roll over to 0 > (for example 09 pm to 10 pm) but when the tens digit of the hours > counter is a 1 I need the units counter to start counting at 1 (for > example 12 pm - 1 am). I'm using 74LS93 series plain binary counters > and assorted logic, and after working on it for a long while I can't > think of a way to get it to work without using something like a > presetable counter. Anyone have any ideas? I realize that you are trying to learn digital circuit design but this is really a job for a microprocessor. A PIC or some other processor can do all of the functions of xtal clock generation, timing, BCD to seven segment conversion, latching as well as drive LEDs or LCD's for the display on a single chip. It can all be done in a few lines of code and is trivial compared to using 1970's TTL technology. You might as well try to do it with 6SN7 tubes if you want ancient methods. How about filing out your own brass gears to make a clock? I believe your time would be better spent learning a programming language and how to accomplish various tasks in a processor than fooling around with TTL. This would give you a foundation for a whole range of neat projects for the 21st century. Plus the versatility of processors allows a virtual infinity of designs in one type of device. Other than learning how to work with a few NAND gates and D-Flops, there isn't any future in complicated TTL methods for projects like yours.
From: John Larkin on 13 Jan 2010 11:28 On Wed, 13 Jan 2010 07:08:27 -0500, Bitrex <bitrex(a)de.lete.earthlink.net> wrote: >I'm playing around with some 7400 series logic, trying to teach myself >the basics of digital design. I've been able to come up with a working >circuit for a 24 hour digital clock easily, but I'm struggling trying to >think of a way to make a 12 hour clock. Specifically my problem is the >reset of the hours counter - when the tens digit of the hours section is > 0 I need the units counter to count from 1 to 9 and roll over to 0 >(for example 09 pm to 10 pm) but when the tens digit of the hours >counter is a 1 I need the units counter to start counting at 1 (for >example 12 pm - 1 am). I'm using 74LS93 series plain binary counters >and assorted logic, and after working on it for a long while I can't >think of a way to get it to work without using something like a >presetable counter. Anyone have any ideas? One caution: it's tempting, when using discrete logic, to build klugey, asynchronous hairballs. That tends to be most efficient when wiring up 7400-series logic, but it doesn't scale. Do that some, but note that most "modern" logic is done in CPLDs and FPGAs and ASICs with zillions of fast gates and flops available, and is usually fully synchronous. I'd suggest you follow up this project with an identical function, but implemented fully synchronously in a small FPGA. Dev kits aren't expensive. There is a place for asynchronous hairball logic, so it's good to be comfortable with both. John
From: Dennis on 13 Jan 2010 21:06 Bitrex wrote: > Sylvia Else wrote: >> Bitrex wrote: >>> I'm playing around with some 7400 series logic, trying to teach >>> myself the basics of digital design. I've been able to come up with >>> a working circuit for a 24 hour digital clock easily, but I'm >>> struggling trying to think of a way to make a 12 hour clock. >>> Specifically my problem is the reset of the hours counter - when the >>> tens digit of the hours section is 0 I need the units counter to >>> count from 1 to 9 and roll over to 0 (for example 09 pm to 10 pm) but >>> when the tens digit of the hours counter is a 1 I need the units >>> counter to start counting at 1 (for example 12 pm - 1 am). I'm using >>> 74LS93 series plain binary counters and assorted logic, and after >>> working on it for a long while I can't think of a way to get it to >>> work without using something like a presetable counter. Anyone have >>> any ideas? >> >> Treat the sequence as >> >> 00 01 02 03 04 05 06 07 08 19 10 11 >> >> Increment left digit when right digit becomes 9. Clear both when both >> = becomes 12. >> >> Left digits are decoded as is. >> >> Right digits are decoded such that 0 is displayed as 1, 1 as 2,... 9 >> as 0. >> >> So the above sequence is displayed as >> >> 01 02 03 04 05 06 07 08 09 10 11 12 >> >> Sylvia >> >> > > Thanks for your reply. I forgot to mention that I was hoping to use BCD > to 7 segment decoders for the output, and I think it's going to be hard > to shift the output of the counter like that so the appropriate digits > are applied to the input of the decoder. I guess I can decode the > shifted outputs individually but it'll take a lot of logic. When I did this a couple of decades ago I cheated and used 74ls83 4 bit adders. The 74ls283 is probably cheaper now (it has the power at the package corners instead of the middle).
From: Sylvia Else on 13 Jan 2010 21:19 Bitrex wrote: > Sylvia Else wrote: >> Bitrex wrote: >>> I'm playing around with some 7400 series logic, trying to teach >>> myself the basics of digital design. I've been able to come up with >>> a working circuit for a 24 hour digital clock easily, but I'm >>> struggling trying to think of a way to make a 12 hour clock. >>> Specifically my problem is the reset of the hours counter - when the >>> tens digit of the hours section is 0 I need the units counter to >>> count from 1 to 9 and roll over to 0 (for example 09 pm to 10 pm) but >>> when the tens digit of the hours counter is a 1 I need the units >>> counter to start counting at 1 (for example 12 pm - 1 am). I'm using >>> 74LS93 series plain binary counters and assorted logic, and after >>> working on it for a long while I can't think of a way to get it to >>> work without using something like a presetable counter. Anyone have >>> any ideas? >> >> Treat the sequence as >> >> 00 01 02 03 04 05 06 07 08 19 10 11 >> >> Increment left digit when right digit becomes 9. Clear both when both >> = becomes 12. >> >> Left digits are decoded as is. >> >> Right digits are decoded such that 0 is displayed as 1, 1 as 2,... 9 >> as 0. >> >> So the above sequence is displayed as >> >> 01 02 03 04 05 06 07 08 09 10 11 12 >> >> Sylvia >> >> > > Thanks for your reply. I forgot to mention that I was hoping to use BCD > to 7 segment decoders for the output, and I think it's going to be hard > to shift the output of the counter like that so the appropriate digits > are applied to the input of the decoder. I guess I can decode the > shifted outputs individually but it'll take a lot of logic. Maybe use a 4 bit adder, catch the 1010 state and force the 1 ouputs to zero. Or catch the 1001 state going into the adder, and force the 0 inputs to 1, so that the address overflows to zero. I did a 7 segment decoder at uni. I don't remember it being so bad. It was part of an exercise of a technique whose name I no longer know, but I vaguely remember drawing squares around digits on a truth table. Maybe someone can give a name for the technique. Sylvia.
From: Spehro Pefhany on 13 Jan 2010 21:33
On Thu, 14 Jan 2010 13:19:06 +1100, the renowned Sylvia Else <sylvia(a)not.at.this.address> wrote: >Bitrex wrote: >> Sylvia Else wrote: >>> Bitrex wrote: >>>> I'm playing around with some 7400 series logic, trying to teach >>>> myself the basics of digital design. I've been able to come up with >>>> a working circuit for a 24 hour digital clock easily, but I'm >>>> struggling trying to think of a way to make a 12 hour clock. >>>> Specifically my problem is the reset of the hours counter - when the >>>> tens digit of the hours section is 0 I need the units counter to >>>> count from 1 to 9 and roll over to 0 (for example 09 pm to 10 pm) but >>>> when the tens digit of the hours counter is a 1 I need the units >>>> counter to start counting at 1 (for example 12 pm - 1 am). I'm using >>>> 74LS93 series plain binary counters and assorted logic, and after >>>> working on it for a long while I can't think of a way to get it to >>>> work without using something like a presetable counter. Anyone have >>>> any ideas? >>> >>> Treat the sequence as >>> >>> 00 01 02 03 04 05 06 07 08 19 10 11 >>> >>> Increment left digit when right digit becomes 9. Clear both when both >>> = becomes 12. >>> >>> Left digits are decoded as is. >>> >>> Right digits are decoded such that 0 is displayed as 1, 1 as 2,... 9 >>> as 0. >>> >>> So the above sequence is displayed as >>> >>> 01 02 03 04 05 06 07 08 09 10 11 12 >>> >>> Sylvia >>> >>> >> >> Thanks for your reply. I forgot to mention that I was hoping to use BCD >> to 7 segment decoders for the output, and I think it's going to be hard >> to shift the output of the counter like that so the appropriate digits >> are applied to the input of the decoder. I guess I can decode the >> shifted outputs individually but it'll take a lot of logic. > >Maybe use a 4 bit adder, catch the 1010 state and force the 1 ouputs to >zero. Or catch the 1001 state going into the adder, and force the 0 >inputs to 1, so that the address overflows to zero. > >I did a 7 segment decoder at uni. I don't remember it being so bad. It >was part of an exercise of a technique whose name I no longer know, but >I vaguely remember drawing squares around digits on a truth table. Maybe >someone can give a name for the technique. > >Sylvia. Karnaugh maps? Best regards, Spehro Pefhany -- "it's the network..." "The Journey is the reward" speff(a)interlog.com Info for manufacturers: http://www.trexon.com Embedded software/hardware/analog Info for designers: http://www.speff.com |