DCF77 Atomic clock using Nokia 6610 colour LCD display. This will continue to run with no signal and shows a graphic bit map display demonstrating the time build. Does not use the Mbed RTC so will run on the LPC11U24. The main signal timing is achieved by using a Ticker ISR that looks at the DCF signal input every 50mS this also produces the seconds on the local clock incase of signal errors or no signal. Many thanks to Lynton Towler for the idea of this part of the code and Wim who helped me convert it from an Arduino program. The Parity code was fromHans program that works.
MobileLCD.h
00001 /* mbed Library - Nokia LCD Labelled "X3" 00002 * This is using the Philips PCF8833 controller 00003 * Copyright (c) 2009 P.R.Green 00004 */ 00005 00006 #ifndef MBED_MOBILELCD_H 00007 #define MBED_MOBILELCD_H 00008 00009 //Colours in RGB 5:6:5 16bit mode 00010 #define BLACK 0x0000 00011 #define RED 0xF800 00012 #define GREEN 0x07E0 00013 #define BLUE 0x001F 00014 #define WHITE 0xFFFF 00015 #define YELLOW 0xFF00 00016 #define MAGENTA 0xF0F0 00017 #define CYAN 0x05FC 00018 00019 #include "mbed.h" 00020 00021 00022 namespace mbed { 00023 00024 /* Class: MobileLCD 00025 * An abstraction of the 130x130 Nokia Mobile labelled "X3" phone screen 00026 * 00027 * Example: 00028 * > 00029 * > #include "mbed.h" 00030 * > #include "MobileLCD.h" 00031 * > 00032 * > MobileLCD lcd(p5,p6,p7,p8,p9); 00033 * > 00034 * > int main() { 00035 * > lcd.printf("Hello World!"); 00036 * > } 00037 */ 00038 00039 class MobileLCD : public Stream { 00040 00041 public: 00042 /* Constructor: MobileLCD 00043 * Create and object for the Mobile LCD, using SPI and two DigitalOuts 00044 * 00045 * Variables: 00046 * mosi - SPI data out 00047 * miso - SPI data in, not used 00048 * clk - SPI clock 00049 * cs - Chip Select 00050 * rst - reset 00051 */ 00052 00053 MobileLCD(PinName mosi, PinName miso, PinName clk, PinName cs, PinName rst); 00054 00055 virtual void reset(); 00056 virtual void _select(); 00057 virtual void _deselect(); 00058 virtual void _window(int x, int y, int width, int height); 00059 virtual void _putp(int colour); 00060 //virtual void orientation(); 00061 00062 void command(int value); 00063 void data(int value); 00064 void foreground(int v); 00065 void background(int v); 00066 /* Function: locate 00067 * Set the text cursor to location x,y 00068 * 00069 * Variables: 00070 * x - An integer setting the column position 00071 * y - An integer setting the row position 00072 */ 00073 void locate(int column, int row); 00074 /* Function: newline 00075 * Set the text cursor to the start of the next line 00076 */ 00077 void newline(); 00078 virtual int _putc(int c); 00079 virtual int _getc() { return 0; } 00080 SPI _spi; 00081 DigitalOut _rst; 00082 DigitalOut _cs; 00083 void bitblit(int x, int y, int width, int height, const char* bitstream); 00084 void fill(int x, int y, int width, int height, int colour); 00085 void blit(int x, int y, int width, int height, const int* colour); 00086 /* Function: cls 00087 * Clear the screen 00088 */ 00089 void cls(); 00090 int width(); 00091 int height(); 00092 int columns(); 00093 int rows(); 00094 void putp(int v); 00095 void window(int x, int y, int width, int height); 00096 void pixel(int x, int y, int colour); 00097 int _row, _column, _rows, _columns, _foreground, _background, _width, _height; 00098 }; 00099 00100 } 00101 00102 #endif 00103 00104
Generated on Thu Jul 28 2022 11:07:56 by 1.7.2