Outils pour utilisateurs

Outils du site



This is a free CRT clock, based on a simple PIC 16F648, with a DS1337 RTC, a DS75 temperature sensor, and an optionnal EEPROM to store animated logo.

This is free for personnal use, feel fre to do it, but please respect my work, do not intend to sell my work in any way !

Support this development

If you appreciate, fell free to support this dévelopment by clicking to button below. There is no minimal amount, so any donation, even symbolic, is appreciated!


This is a CRT Clock. Like others, except some additionnal functions like an animated logo allowing 3d effect logo or movie logo!

Feel free to use my work, it's free ! Enjoy :-)


Left side view

(If Flash is installed, you can watch a video inside this web page.)

Right side view

(If Flash is installed, you can watch a video inside this web page.)


Different displays with 3d logo

(If Flash is installed, you can watch a video inside this web page.)

Different displays with a demonstration of movie display capability

(If Flash is installed, you can watch a video inside this web page.)


The clock is using a famous DG7/32, but may be adapted with any other small CRT with similar characteristics.

I personally tried a DG7/2, a DG7/6, and a DH3/91 (nice 1 inch CRT)

The hardware is designed for symetrical X and Y deviation, if you are using a crt with asymetrical deviation, one output of deviation amplifier will remain unused.



Here is the PIC 16F648 software, here is the hex file


And the 3d logo bin file, must be written in a 24C128 (or larger) EEPROM


I found the amazing walking men on a video on YOUTUBE, and i wrote a program to vectorize the movie. I do not know which are the copyrights for this movie, so i prefer not putting it for download until i can be sure i will not go to jail!


Pictures may appear unreadable, click once on the picture dis display it separately, and click again on the picture alone to see it fully sized.

Best way is to open draings.pdf above.


The digital part is the core of the system.

It is based on a pic 16f648 microcontroller, with a TLC7528 D/A converter, a DS1337 Real Time Clock, a DS 75 temperature sensor (optionnal) and an EEPROM memory 24Cxx (optionnal)

Both DS75 and 24Cxx are optionnal, the DS75 is used to display actual temperature, the 24Cxx is used to store animated logo.

The clock can work without.

The RTC have a backup battery, a standard 32768 hz quartz.

The pic have a 20MHz quartz.

Pushbuttons are connected on the same bus than D/A, resistors prevent to short digital lines when activated as outputs.

Digital part

PUSHBUTTONS must be connected between COM and button lines.

Buttons are: MODE INC DEC SET

Power supply

The power supply is designed to deliver +350V and -350V. Power supply is a boost converter, using a LM2585. The secondary is connected to a voltage doubler, this allows to reduce inductance an capacities, and getting better performance.

All filtering capacitors are doubled with balance resistors.

The positive supply also deliver HT/2 used for CRT Anode (called G4 for a DG7/32)

A special care must be taken to C9, which may heat if poor quality. Prefer a low impedance capacitor to avoid problems.

Transformer comes from an old PC ATX power supply, i used 1 turn per volt, it is working, but i think the core is saturated and the LM2585 is heating a few.

You can increase the number of turns up to 1.5 turn per volt to improve that.

This may depend also of the ferrite characteristics you use.

Power supply

Deviation amplifiers

Deviation amplifiers are symetrical design, in order to get minimal image distorsion. In the case you use an asymetric CRT, just connect one deviation output.

Deviation amplifiers


Blanking circuit is not mandatory, it is used to remove parasitic lines on the screen.

Blanking circuit


Crt is the connection of CRT with BRIGHT and FOCUS pot.

This section may be adapted in case of a different CRT.

CRT circuit


Software is written in asm code.

The software includes an image frequency refresh regulation, for each individual display, the dot time us adjusted in order to maintain display refresh rate around 50 images per second.

Software allow to display different types of clock, including a digital clock, a static logo, and a moving logo, which can be either a 3d rotating logo, but anything you can imagine.

The digits are coded with a specific format, designed in order to reduce calculations for the pic.

Laths are using a fixed point real value representation, which combines fast calculations and sufficient precision to avoid poor pictures dues to calculation errors.


The MODE button allow ton change display mode, on each press you go to the next display mode.

The SET button allow you to enter into setup mode. Just hold the button pressed for 2 seconds and you enter the setup mode. A setup indicator is teeling you that you are in setup mode. The display turns into digital mode, and the adjusted value is blinking. INC (increase) and DEC (decrease) buttons allow you to modify the value. The SET button allow to go to next value After the last value, the SETUP display is blinking, telling you that you have to press once more the SET button to complete setup. At any moment, the setup can be cancelled by pressing MODE. After setup, display returns to original mode.

Holding both INC and DEC buttons will display the refresh rate, and the dot delay value (usefull for debug)


I used a spreadsheet created with OpenOffice Web site in order to create the different logos, it transform 3d coordonates into a flat projection, and creates directly binary values as a source code to be added in the software.

here is an example of how is coded the letter A

; ==========
; table_chars font
; jj goessens 2008
; centered
; table  coordinates
; x,y
; if x == 64, no y and skip line
; if x == 128, no y, and end of table_char
; entry table for inderect addressing
;#define char_A		0
;#define char_P		1
;#define char_M		2
;#define char_2_points	3
;#define char_deg_c	4
;#define char_slash	5
;#define char_set	6
;#define char_comma	7
variable	base_addr = chars+1
	addwf	PCL,f
	retlw	char_A-base_addr	; 0
	retlw	char_P-base_addr	; 1
	retlw	char_M-base_addr	; 2
	retlw	char_2points-base_addr	; 3
	retlw	char_deg_c-base_addr	; 4
	retlw	char_slash-base_addr	; 5
; chars table
	retlw d'16'
	retlw d'5'	; absolute
	retlw d'18'
	retlw d'0'	; relative
	retlw d'131'
	retlw d'129'	; relative
	retlw d'134'
	retlw d'1'	; relative
	retlw d'131'
	retlw d'131'	; relative
	retlw d'18'
	retlw d'2'	; relative
	retlw d'32'
	retlw d'4'
	retlw d'15'	; absolute
	retlw d'140'
	retlw d'0'	; relative
	retlw d'64'

Coding starts simply with 1st point coordonates, following points are represented in 2 bytes representing the length, the slope, the orientation, … with a specific dense coding. For the different calculations, i use 16bits calculations, with a fractionnal representation. This allow to represent numbers from 0 to 255, with aprecision of 1/256.

This is mandatory in order to prevent any cumulative errors while adding non integer values, so after 256 additions, the maximum error will be 1, which is not really visible.

All fonts used in my clock are my own design and are free.

I used this method with different sheets to create digits, symbols, and also still and rotating logo.

This method allows me to creat interactively the different logos i used.

he same way is used to create 3d moving logo


I just wrote a small program with LAZARUS Web site which is a Delphi like multiplatform IDE.

This program allow me to transform images into vectors suite compatible for for crtclock display.

It can also transform a sequence of still images extracted from a movie and vectorize them, and creates ditrectly a bin file to place in EEPROM

This program must be improved, in order to give continuous vectors, and also to filter some spourious lines (you can see one on the back of the little man).

This is a very simple and short program, less than 100 lines for the active code, highly recursive.

Vectors must be cut into short pieces, due to the coding i use which limit vectors length to 31 points.


Here is the hardware adjustment procedure:

Turn all pot at approx middle position

1) adjust RV1 (BRIGHT) in order to get the spot visible on the screen.

2) adjust RV2 (FOCUS) to get a correct focus in the center of the screen

3) Check +HT voltage, it must be around 350 volts.

4) check emetter of Q7 connected on CRT anode, it must 1/2 x +HT voltage, around 175V

5) short X0 and X1 (this is not dangerous) and adjust RV7 to get 1/2 HT on the short circuit

6) short Y0 and Y1 (this is not dangerous) and adjust RV8 to get 1/2 HT on the short circuit

7) adjust X deviation with RV3 (x amplitude) and RV4 (x centering)

8) adjust Y deviation with RV5 (y amplitude) and RV6 (y centering)

REPEAT AGAIN the complete procedure.


short OX1-OX2 short OY1-OY2

You must get a spot on the center of the screen, adjust RV7 to get brigtness.

If not, check CRT voltages.

Remove 1 short, adjust corresponding amplifier amplitude an centering to obtain a line across the width of the tube

Remove the other short, adjsu amplifier

you must get a picture!


Here are screen display, there at now 3 display modes :

  • analog clock with round display
  • numeric clock
  • set mode with numeric display as above
Analog clock with DG7-2
Analog clock with DH3-91
Digital clock with DG7-2
Digital clock with DH3-91


If you have any ideas for other improvements, please let me know!

for any questions, contact me jj@goessens.dyndns.org

crt_clock/clock.txt · Dernière modification: 2016/01/10 16:03 (modification externe)