Caller Line Identification (CLI)

'Caller Line Identification' displays on a (2x16) LCD the phone number of the person who is ringing you, before you even answer.

When start up the first few seconds appears the version number in the display.
Direct after programming the PIC stays in TEST-mode.
You can recognize this on the word TEST which appears continue on the right on the second line in the LCD.
(Disabling this see text)
After power up, appears the number of stored telephone numbers and burns the 'new numbers' LED, if it was also on before the power failure.
If there are no new numbers stored when power up, then the LED stays off and is this reported also on the second line from the display.
If there are no numbers at all then appears 'No numbers' on the display.
'Caller Line Identification' displays on a (2x16) LCD the phone number of the person who is ringing you, before you even answer, this number stays on the LCD till it wil replaced by a new received phone number OR if the button is pressed.
With the button you can 'leaf' trough the phone numbers.
The second line displays how many phone numbers are stored in memory.
A (a)new received phone number is marked in the display with *N*, it disappears when it's number has been seen.
Max.12 10-numerals telephone numbers can stored in PIC's EEPROM.
When the memory is full, a message is displayed and the backlight and LED blinks slow.
There still can appear new numbers on the display, but these numbers are not stored in memory anymore.
When the button is pressed longer then 2 seconds, the LCD reports the question to erase all stored phone numbers.
For admitting push the button again, when waiting longer then 2 seconds the CLI goes back to the original screen (no erasing).
(However, when a (new) received number is not seen yet, erasing is not possible.)
The memory is empty again.
You can also enable TEST-mode when you press the button while you switch the power on.

The LED burns when new number(s) are received and goes off when all the new numbers has been watched.
This LED blinks fast for a while when a received number is already stored in memory.
By a phone call or a push on the button the backlight from the LCD burns for about 30 seconds.

Direct after programming the PIC stays in TEST-mode.
You can recognize it on the word TEST on the right on the second line in the LCD.
In TEST-mode works the CLI normal, but you can also test it:
Press on a parallel connected telephone first on the '*' button (this simulates a new receiving), then give within a second (fast) a number and close with telephone button '#'.
When you don't close with '#', the PIC wil do it after a second (Time-out).
You can also enable TEST-mode when you press the button while you switch the power on.
When you shut the power off for a few seconds and switch it on again, the TEST-mode is disabled (The telephone buttons '*' and '#' doesn't work anymore).

The PIC itself doesn't need a crystal, it runs on the intern oscillator.
Time + date is a extension for the future (Ports A.6 and A.7 are reserved for this).
This is a lowcost project, when a HD44780 2x16 LC-Display is already there.

All this works ofcourse only when your phone company sends these numbers to you.
This caller-ID works with DTMF protocol, not the FSK protocol!


EEPROM address 0 keeps the address-counter from the EEPROM self
EEPROM address 1 keeps the counter from the number of phone numbers + a new phone number.
EEPROM address 2 keeps in mind of the 'new numbers' LED is ON or OFF (in case of power failure)
EEPROM address 3 and further keeps the phone numbers, every LOW-NIB of a BYTE has 1 digit from a phone number.
The HIGH-NIB from the BYTE from every first digit from a phone number keeps the follow-number from that phone number.
A bit in the HIGH-NIB from every second digit keeps in mind of that number has been seen or not.

A received phone number starts with a 'D' (0000=0), this prevents displaying the phone numbers when call with own modem or home telephone connected parallel on the same line.
A received phone number is complete when the last number is a 'C' (1111=15) (standard) or when a time-out is happend.

Components:
PIC 16F628A
IC MT8870 of CM8870
Crystal 3.579545MHz
LCD HD44780 LC-Display 2x16 (if possible with backlight)
LED Own choice
Transistor NPN transistor (i.e. BC547)
VDR S07K130 (130V)
Resistor 1k + 10k + 33k + 39k + 68k + 3x100k + 270k
Capacitor 2x10n + 3x100n + 100µF(electrolytic)
Button Pulse makecontact
Wire For telephoneline

 

Download CALLERID.HEX V-1 file to program in a PIC16F628A
Download CallerID_V-1_UK.bas, the sourcecode for PIC Basic
Download scheme as PDF file
More CLI / CallerID information / FAQ
Datasheet CM8870 / MT8870.pdf