Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
u8g_dev_pcf8812_96x65.c
00001 /* 00002 00003 u8g_dev_pcf8812_96x65.c 00004 00005 Display: Nokia 96x65 00006 00007 Universal 8bit Graphics Library 00008 00009 Copyright (c) 2011, olikraus@gmail.com 00010 All rights reserved. 00011 00012 Redistribution and use in source and binary forms, with or without modification, 00013 are permitted provided that the following conditions are met: 00014 00015 * Redistributions of source code must retain the above copyright notice, this list 00016 of conditions and the following disclaimer. 00017 00018 * Redistributions in binary form must reproduce the above copyright notice, this 00019 list of conditions and the following disclaimer in the documentation and/or other 00020 materials provided with the distribution. 00021 00022 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 00023 CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 00024 INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 00025 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00026 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 00027 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00028 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 00029 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00030 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00031 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 00032 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00033 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 00034 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00035 00036 00037 00038 om6206 comaptible to pcf8812 ? 00039 00040 Status: Tested 00041 00042 00043 Display Controller Seen in 00044 LPH7366 (9 pins, 84x48) PCD8544 Nokia 5110 / 5120 / 5130 / 5160 / 6110 / 6150 00045 LPH7677 (8 pins, 84x48) PCD8544 Nokia 3210 00046 LPH7779 (8 pins, 84x48) PCD8544 Nokia 3310 / 3315 / 3330 / 3110, also 3410? 00047 ??? PCD8544 Nokia 5110 / 6110 00048 LPH7690 ? (96x65) PCF8455/OM6202 Nokia 3410 00049 LPH7690 ? (96x65?) SED1565/S1D15605 Nokia 7110 / 3510? 00050 LPH7690 ??? Nokia 6210 00051 00052 00053 00054 */ 00055 00056 #include "u8g.h" 00057 00058 #define WIDTH 96 00059 #define HEIGHT 65 00060 #define PAGE_HEIGHT 8 00061 00062 00063 static const uint8_t u8g_dev_pcf8812_init_seq[] PROGMEM = { 00064 U8G_ESC_CS(0), /* disable chip */ 00065 U8G_ESC_ADR(0), /* instruction mode */ 00066 U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ 00067 U8G_ESC_CS(1), /* enable chip */ 00068 0x021, /* activate chip (PD=0), horizontal increment (V=0), enter extended command set (H=1) */ 00069 0x006, /* temp. control: b10 = 2 */ 00070 0x013, /* bias system 1:48 */ 00071 0x080 | 0x040, /* medium Vop */ 00072 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ 00073 0x00c, /* display on, normal operation */ 00074 U8G_ESC_DLY(100), /* delay 100 ms */ 00075 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ 00076 0x00d, /* display on, invert */ 00077 U8G_ESC_DLY(100), /* delay 100 ms */ 00078 U8G_ESC_DLY(100), /* delay 100 ms */ 00079 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ 00080 0x00c, /* display on, normal */ 00081 U8G_ESC_DLY(100), /* delay 100 ms */ 00082 U8G_ESC_CS(0), /* disable chip */ 00083 U8G_ESC_END /* end of sequence */ 00084 }; 00085 00086 uint8_t u8g_dev_pcf8812_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) 00087 { 00088 switch(msg) 00089 { 00090 case U8G_DEV_MSG_INIT: 00091 u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); 00092 u8g_WriteEscSeqP(u8g, dev, u8g_dev_pcf8812_init_seq); 00093 break; 00094 case U8G_DEV_MSG_STOP: 00095 break; 00096 case U8G_DEV_MSG_PAGE_NEXT: 00097 { 00098 u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); 00099 u8g_SetAddress(u8g, dev, 0); /* command mode */ 00100 u8g_SetChipSelect(u8g, dev, 1); 00101 u8g_WriteByte(u8g, dev, 0x020 ); /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ 00102 u8g_WriteByte(u8g, dev, 0x080 ); /* set X address */ 00103 u8g_WriteByte(u8g, dev, 0x040 | pb->p.page); /* set Y address */ 00104 u8g_SetAddress(u8g, dev, 1); /* data mode */ 00105 if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) 00106 return 0; 00107 u8g_SetChipSelect(u8g, dev, 0); 00108 } 00109 break; 00110 case U8G_DEV_MSG_CONTRAST: 00111 /* the contrast adjustment does not work, needs to be analysed */ 00112 u8g_SetAddress(u8g, dev, 0); /* instruction mode */ 00113 u8g_SetChipSelect(u8g, dev, 1); 00114 u8g_WriteByte(u8g, dev, 0x021); /* command mode, extended function set */ 00115 u8g_WriteByte(u8g, dev, 0x080 | ( (*(uint8_t *)arg) >> 1 ) ); 00116 u8g_SetChipSelect(u8g, dev, 0); 00117 return 1; 00118 } 00119 return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); 00120 } 00121 00122 /* u8g_com_arduino_sw_spi_fn does not work, too fast??? */ 00123 U8G_PB_DEV(u8g_dev_pcf8812_96x65_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_pcf8812_fn, U8G_COM_SW_SPI); 00124 U8G_PB_DEV(u8g_dev_pcf8812_96x65_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_pcf8812_fn, U8G_COM_HW_SPI); 00125
Generated on Tue Jul 12 2022 17:30:57 by
1.7.2