Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Is it possible to make a gate level digital wrist watch

Fluffyboii

Active Member
Hi,
Ever since I designed and simulated a digital watch with logic gates for one of my electronics classes in university I had this urge to take that design and make it reality with only transistors. Not even logic gates or flip flops. I did find that it is already done my different individuals and it is not an easy feat.

Anyway I am super into digital watches for the past year or so. I simply like telling the precise time at a simple glance and I love the unusual shape and sizes some digital watches have. Today the idea of making my own digital wrist watch got stuck on my mind. Obviously the easiest way to do it would be to get a microprocessor, few small 8 bit displays, rtc module for precise time keeping, slamming all of that in a 3d printed case. Even doing that would be a feat in itself.
Unfortunately using something like an Arduino, taking the Atmega something processor from it feels wrong. People make smartwatches with lots of functionality with those and just simple time keeping with it would make me sad. I could get a less powerful microprocessor and try to code in assembly to torture myself but I am not in that mood.
Using transistor level logic would never fit in a wrist watch form factor, I wonder if using smd versions of logic gate chips, flip flops, multiplexers, etc. would make it possible to fit in a wrist watch or do I need to get counter ICs and other more complex ICs for it to fit. Today most wrist watches that are digital have a small mcu, a quartz crystal with an inductor, few caps and resistors and thats it. Pretty boring and unrepairable.

I am also curious about when something stops being analog. Analog circuits are fascinating. I also want to make a calculator with all solid state components but analog in design. Adding and subtracting with op amps is easy enough but multiplication is difficult :( Obviously having it all solid state requires using some kind if led display which requires a dac at some point. Can something similar be done with a watch, nearly fully analog except the display. This is bit off topic from my initial wrist watch idea but is it possible to make a watch with a led display that does all the time keeping with an analog circuitry, just for the sake of it. Something like a RC circuit that charges a capacitor until a voltage threshold is passed that the triggers a comparator for example to keep time. I never truly understood when some circuit truly becomes digital.

This is just my random thoughts at 5am.
Edit: I just searched bit more and a microprocessor less watch requires immense amount of logic elements just as I remember that will definitely not fit in a small package unless I use ICs to do most of the hard work.
 
Last edited:
Have you considered using a micro-controller than has internal LCD drivers?, like the PIC 18LF8490 - you can get a development board from here:


There's also example code on that page.
I see that it has 4 common outputs for multiplexed LCDs. It should be good for the small 4 digit 7 segment display I bought since it has a very similar internal connection with the one one there. Probably could use a 6 or 8 digit 7 segment with it as well to at least have seconds. It is smarter than buying a separate display driver that costs about the same by itself. I am not sure about those large 7 segment LCDs, can they be connected to different com ports to be driven separately?

I will wait for the LCDs to arrive then experiment with them to see what can I do with them with the stuff I have at hand. I wish it was not too difficult to drive two of them at the same time, I imagine it would look very nice if I could use a 4 digit 7 segment for hour and minute and one of those very small 2 digit 7 segment LCDs for the seconds.

It will be very difficult to source that development board or any of those special LCD drive PICs in Turkey. Seems like no one sells them.

CD4056 seems to be an option for driving 7 segment LCDs without sourcing a hard to find LCD driver. CD4054 is driving the D.P and common pins of the LCDs. Since these are cheap enough and available to purchase here they seem to be alright to drive the large separate 7 segment LCDs. Quite low power usage as well. BCD inputs can be tied to a demultiplexer to decrease pin usage of the mcu. For a large clock it should be fine.

I will ask about the availability of the PICs that have an LCD driver tomorrow.
1713466611557.png
 
Last edited:
Single LCD's are no problem, you just wire them together to make a multiplexed array of them.
This looks like it needs to be done internally. Since single 7 segment displays have their all digits' common pins all tied together I do not know how they can be wired like this:
1713470778510.png

My big 7 segment displays will be like this from what I understand:
1713470931972.png

Looking at this I would still need a separate IC to control 4 separate displays' 32 digit and 4 D.P pins with less pins from the MCU.

I should have gotten these instead, they are even cheaper and larger for some reason. I also paid a ridiculous amount of customs tax like %100 because the shipping costs do not cancel out when I buy separate products from the same store. Never mind those were the price of only the backlight, the larger LCDs were like 3 times more expensive. I do not regret it now. I hate this county:
1713473156770.png
 
Last edited:
This looks like it needs to be done internally.

Not at all, multiplexing is commonly (almost always) used with multiple single displays - in fact it would be very rare not to.

You just join all the segments together, and use the commons separately.

The LCD PIC I mentioned above has a wide variety of possible LCD connections.
 
Not at all, multiplexing is commonly (almost always) used with multiple single displays - in fact it would be very rare not to.

You just join all the segments together, and use the commons separately.

The LCD PIC I mentioned above has a wide variety of possible LCD connections.
I see. I initially thought that but later felt like it would not work for some reason, nice to know that it would work. There are 4 com ports so are the number of separate static displays drivable are 4 or can I assign more com ports to other pins? I will check the datasheet.
 
I see. I initially thought that but later felt like it would not work for some reason, nice to know that it would work. There are 4 com ports so are the number of separate static displays drivable are 4 or can I assign more com ports to other pins? I will check the datasheet.
Each display has one common connection, and eight segments, so you can use as many displays as you have spare pins for the common connections (plus the eight for the segments). The LCD compatible PIC I mentioned above has a fairly silly number of LCD connection pins, for various types of display connections.

A common configuration would be eight displays, simply because the segments use one complete port, and the commons would use another complete port. But there's no requirement to configure it in that way.
 
Each display has one common connection, and eight segments, so you can use as many displays as you have spare pins for the common connections (plus the eight for the segments). The LCD compatible PIC I mentioned above has a fairly silly number of LCD connection pins, for various types of display connections.

A common configuration would be eight displays, simply because the segments use one complete port, and the commons would use another complete port. But there's no requirement to configure it in that way.
I have been looking at the Microchip's catalogue of low voltage LCD driver included MCUs. I see that LF, wide voltage range versions of their MCUs are not sold here. I did call a large local supplier and again they only had regular voltage range versions of MCUs.

I found out that PIC16F1939 and PIC16F1933 are locally available. I can buy 1933 in a DIP package. These still have a 1.8V-5.5V voltage range.
- 1.8V-5.5V (PIC16F193X) I can get these ones
- 1.8V-3.6V (PIC16LF193X)

They are lot less fancier than the PIC18LF8490 though. There are no RTC functionality built in from what I can tell. An external 32.768 kHz crystal can be used for time keeping though. Still LCD driving capabilities are adequate. And they can be programmed in circuit.

There is PIC16(L)F19176 that can be bought from China. This one has RTCC, internal 32.768 kHz clock, it has special registers for keeping track of days, weeks, months, years, leap years. It also has registers for setting up alarms. Datasheet says you can tune it for time drifting etc. It probably has everything needed on board to make a very capable watch. Also has 8 com ports instead of 4 so even more ridiculous amount of LDC digits can be driven.

Since I can not supply the development board you mentioned is PIC16F1939 good enough to start learning and experimenting with? As you know I do not really have knowledge on these. Looks like pic kit 3 should be able to program this one.
 
As far as I'm aware pretty well all PIC's have the capability to do an RTC, TMR1 is designed to use an external 32KHz clock crystal, and you simply use that to create 1 second interrupts. You then write an ISR to update your own RTC registers accordingly - many of my projects use RTC's, and I've never used any specific RTC registers as there seems little point?.
 
As far as I'm aware pretty well all PIC's have the capability to do an RTC, TMR1 is designed to use an external 32KHz clock crystal, and you simply use that to create 1 second interrupts. You then write an ISR to update your own RTC registers accordingly - many of my projects use RTC's, and I've never used any specific RTC registers as there seems little point?.
I see, I do not know if having RTC registers on chip has any benefit. I guess 1939 is perfectly usable for my use case, it also saves me from hand soldering bunch of SMD pins.
 
Hi,
Ever since I designed and simulated a digital watch with logic gates for one of my electronics classes in university I had this urge to take that design and make it reality with only transistors. Not even logic gates or flip flops. I did find that it is already done my different individuals and it is not an easy feat.

Anyway I am super into digital watches for the past year or so. I simply like telling the precise time at a simple glance and I love the unusual shape and sizes some digital watches have. Today the idea of making my own digital wrist watch got stuck on my mind. Obviously the easiest way to do it would be to get a microprocessor, few small 8 bit displays, rtc module for precise time keeping, slamming all of that in a 3d printed case. Even doing that would be a feat in itself.
Unfortunately using something like an Arduino, taking the Atmega something processor from it feels wrong. People make smartwatches with lots of functionality with those and just simple time keeping with it would make me sad. I could get a less powerful microprocessor and try to code in assembly to torture myself but I am not in that mood.
Using transistor level logic would never fit in a wrist watch form factor, I wonder if using smd versions of logic gate chips, flip flops, multiplexers, etc. would make it possible to fit in a wrist watch or do I need to get counter ICs and other more complex ICs for it to fit. Today most wrist watches that are digital have a small mcu, a quartz crystal with an inductor, few caps and resistors and thats it. Pretty boring and unrepairable.

I am also curious about when something stops being analog. Analog circuits are fascinating. I also want to make a calculator with all solid state components but analog in design. Adding and subtracting with op amps is easy enough but multiplication is difficult :( Obviously having it all solid state requires using some kind if led display which requires a dac at some point. Can something similar be done with a watch, nearly fully analog except the display. This is bit off topic from my initial wrist watch idea but is it possible to make a watch with a led display that does all the time keeping with an analog circuitry, just for the sake of it. Something like a RC circuit that charges a capacitor until a voltage threshold is passed that the triggers a comparator for example to keep time. I never truly understood when some circuit truly becomes digital.

This is just my random thoughts at 5am.
Edit: I just searched bit more and a microprocessor less watch requires immense amount of logic elements just as I remember that will definitely not fit in a small package unless I use ICs to do most of the hard work.

Hi,

What kind of size constraints are you thinking about? A watch is usually very small.

Also, it is very, very hard to get good time keeping on the fly. Even with an Arduino or similar it is just too hard unless you get a real time clock (RTC) and even then it has to be a good one.

The problem is that although lone crystals are fairly stable, they still drift. The drift is too much for a good time keeping device. They need to be temperature compensated. That means measuring the temperature and adjusting the frequency as needed. This is not possible with an Arduino or similar in code alone, you would actually have to measure temperature and adjust the frequency (then through code might work) in order to get good quality time keeping.
You will see various projects on the web that claim to use code alone to solve this problem, but the time keeping then may be limited to only a month or two. That's because code alone cannot sense temperature while the crystal does and changes frequency as temperature changes.
With an RTC (a good one that is) you can get time keeping down to maybe 10 seconds per year, perhaps better. With a crystal you would be lucky to get down to maybe 10 seconds per day, or if really lucky, 10 seconds per week or per month.

If I was going to actually build my own watch from standard components, I would probably look into die-to-die connection techniques. I do not know if that is possible to do at home though.
 
Hi,

What kind of size constraints are you thinking about? A watch is usually very small.

Also, it is very, very hard to get good time keeping on the fly. Even with an Arduino or similar it is just too hard unless you get a real time clock (RTC) and even then it has to be a good one.

The problem is that although lone crystals are fairly stable, they still drift. The drift is too much for a good time keeping device. They need to be temperature compensated. That means measuring the temperature and adjusting the frequency as needed. This is not possible with an Arduino or similar in code alone, you would actually have to measure temperature and adjust the frequency (then through code might work) in order to get good quality time keeping.
You will see various projects on the web that claim to use code alone to solve this problem, but the time keeping then may be limited to only a month or two. That's because code alone cannot sense temperature while the crystal does and changes frequency as temperature changes.
With an RTC (a good one that is) you can get time keeping down to maybe 10 seconds per year, perhaps better. With a crystal you would be lucky to get down to maybe 10 seconds per day, or if really lucky, 10 seconds per week or per month.

If I was going to actually build my own watch from standard components, I would probably look into die-to-die connection techniques. I do not know if that is possible to do at home though.
Hi,
I bought different LCDs to experiment with, on post #39 you can see them but links seem to be broken. I bought a selection of them with the smallest one this:
1713530639742.png

I am thinking of using the big 7 segment direct drive displays (4 of them) to make a large clock without any size restrains. One 4 digit 7 segment display I bought is 3cm in length so it can be used for a wrist watch, albeit a bit bulky one. I have 2 of those very small 2 digit ones and 2 of 3 digit ones in similar size. Unfortunately, there is no 4 digit 7 segment displays with that digit size.

Maybe for the time drifting issue, a temperature sensor can be thermal glued to the quartz to write a code specially to take the temperature in consideration. It could sample the temperature in intervals from something like LM35 to keep the power usage low. To be honest I am not sure if all of this can be fitted inside a nice to wear wrist watch sized package but I will try if I can get a big one functioning first.
 

Attachments

  • 1713530551346.png
    1713530551346.png
    189.7 KB · Views: 48
  • 1713530565879.png
    1713530565879.png
    314.6 KB · Views: 48
  • 1713530579600.png
    1713530579600.png
    223.1 KB · Views: 48
  • 1713530599766.png
    1713530599766.png
    295.3 KB · Views: 47
The LCD driver IC would work, though the PIC with the internal LCD peripheral is a better choice.

For info, to drive the LCD decimal points using something like the control IC, you add a CMOS XOR gate with one input connected to the "BP" drive signal, the other input from the MCU or control logic and output to the LCD segment.

With the control input low, the gate output tracks BP so the segment is off, and with control high, the output is inverted from BP so the segment is on.
 
The LCD driver IC would work, though the PIC with the internal LCD peripheral is a better choice.
Yes, that IC is quite expensive considering I can get one of those PICs and drive many more LCD panels at the same time. I am considering more LCDs but it is getting quite expensive overall so I will wait until I can make something working with them first. I wonder if any local sellers have bare LCDs. Could not find any of them locally, online.
 
Yes, that IC is quite expensive considering I can get one of those PICs and drive many more LCD panels at the same time. I am considering more LCDs but it is getting quite expensive overall so I will wait until I can make something working with them first. I wonder if any local sellers have bare LCDs. Could not find any of them locally, online.
I was impressed you managed to find them on AliExpress :D

I looked a few years ago, and failed to find any - I looked because I was considering using some at work, and bought the Olimax demo board to have a play with.
 
1714236487640.png

I found a PIC16F1939. New 32768Hz quartz crystals are quite small but I found a regular sized one as well. My Prof. told me that he can lend me a PIC and programmer so I did not buy a pickit yet. I am hoping that I can make a temporary development board like thing around this SMD microprocessor. Or I will make a SMD to DIP package converter with some basic PCB.
 
They are so cute. I got a pickit 2 from my Prof. Only thing I need is the DIP package PIC itself. Will get the PCB I designed to convert SMD PIC to something breadboard-able printed on Friday.

I fed two inverted 60Hz square waves with Arduino to Common and Segment pin to drive it right. I put two simple 1/2 voltage dividers to Arduino outputs so the voltage across the LCD is 5V instead of 10V. It does look great from an angle but it is bit faded from top. I guess they are in fact optimized for 60 degree viewing angle as the listing suggests.

Edit: If I give it directly +/-5V it looks great. But I am not sure if that is the intended voltage. Listing just says 3,3-5V operating voltage. I connected all segment together and drive it without using voltage divider. I feel like what it needs is 5 Volt AC.
 

Attachments

  • IMG_1946.jpeg
    IMG_1946.jpeg
    1.8 MB · Views: 36
  • IMG_1947.jpeg
    IMG_1947.jpeg
    1.6 MB · Views: 36
  • IMG_1948.jpeg
    IMG_1948.jpeg
    1.7 MB · Views: 36
  • IMG_1949.jpeg
    IMG_1949.jpeg
    1.4 MB · Views: 35
  • IMG_1951.jpeg
    IMG_1951.jpeg
    1.9 MB · Views: 37
Last edited:
I am experimenting with the DIP version of PIC16F1939 and the PICKIT2 I have borrowed.
I have written a simple code to count from 0 to 9 with each second using the Timer1 with the 32768Hz quartz crystal to initiate an interrupt every second.
The PIC itself is running from a random 8Mhz quartz crystal I had lying around.
I am adding the code and my drawing, hopefully it helps someone.

I had to switch to medium power mode from low power mode on LCDRL register because numbers that lit up more segments were not as high contrast as the numbers that lit low amount of segments such as "1". I did measure one of the segments with the oscilloscope and it seems like it is putting about 2.75V (5.5V AC) square waves when high power and max contrast is selected. For some reason the LCD segments were lit up with 250Hz square waves instead of the about 80 I calculated with 1:1 prescaler. So I switched to 1:3 prescaler instead to get about 60Hz. I think it looks excellent. I will write a more properly written code to make a clock later.

Thinks I want to add additional to a 4 digit 7 segment LCD clock are:

Using cap sense module to enter date and time and other inputs instead of regular buttons.

If possible I want to use the compatator of the PIC to drive a boost converter to power this up from a solar panel, super cap combo.

Alarm functionality where alarm only shuts up when a random sequence of button presses so it surely wakes me up.

Driving piezo crystal for the alarm and maybe hourly beeping.

Temperature sensor for compensating quartz time drifting and maybe a humidity sensor for fun.

Since this PIC has a lot of IO what else can I add to make it bit more interesting?
There is a short test video of the PIC counting:
1715286882365.png


1715286929044.png
 

Attachments

  • LCD_Count0-9.c
    4.6 KB · Views: 28
Last edited:

Latest threads

New Articles From Microcontroller Tips

Back
Top