This project has been under development for sometime, back in the days of old when the 28X was king on the hill. I was searching the web for 4x20 LCD and came across a picture of a display with large digits displaying the time and I said to myself, I can do that.
Soon after getting the clock running I realized that a method of interaction with the clock was needed to set the time and alarm. I choose to use a numerical keypad with a menu system on the display. This quickly became a lengthy program and dreaming of an X2 on the horizon I could only wait for its arrival. Then to my surprise the 28X1 shows up and back to this project I went. New features get added the display menu gets more complicated and I soon run out program space again, now longing for an X2 once more.
So to sum up I have at this stage an incomplete project but one that I thought I could still show others to give a little inspiration. Project:
Large Digit Clock with Menu and Keypad
Scanned 3x4 numerical keypad sends byte to Master Picaxe via serout command and is received by hserin command which triggers an interrupt sub to enter menu operations.
Monitors DS1307 clock (will need upgade to DS1337 i2c bus speed 400KHz) 1Hz tick with settimer = 65535 and polling toflag in the main loop, with the 14M Keypad hserin setting flag5 and triggering an interrupt each is responded to as needed. Data sent to display is via i2c bus.
Picaxe i2c slave driving 4x20 LCD
Data transfer makes use of a 28X1 acting as a slave. This controls the 4x20 LCD running @ 20MHz driving the display in 4bit mode the refresh rate looks very good. Utilizing the scratchpad areas of both Master and Slave allows for the transfer of 80 bytes of data, which means that the full display can be updated in one shot.
The jewel of it all, difficult to describe its action but here goes anyway. The left hand side has a curser with directional arrows that transverses up and down but only reaches top or bottom when the menu list is exhausted. As you scroll through the first page menu list there are two possible actions that the display makes either the curser moves or the list scrolls. On the right is a representation of the 3x4 Keypad that shows when to use keys 2,4,6,8 as navigation buttons by displaying arrows at the appropriate times. Items on the menu list include Exit menu, Set Clock, Set Alarm, Set Music, Set Timer, Set Password and Set Beep. Using the up or down arrow keys to navigate to the desired position and pressing the keypad button 5 depicted as the letter E for enter on the display takes you to the corresponding page. Here you perform the necessary functions.
Menu text is stored in 24LC256 EEPROM, sub procedures to retrieve menu pages and single lines of text are well organized. The Master @16MHz collects the required text from eeprom and sends it to the slave for display with great speed.
Large Digit Clock and Display Date
This is accomplished by making use of the LCDs’ cgram. There are eight special display blocks that make up the digits 0-9 and colon. They are ordered into their respective positions to create the desired effect.