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.
ST7565.cpp
00001 /* mbed UniGraphic library - Device specific class 00002 * Copyright (c) 2015 Giuliano Dianda 00003 * Released under the MIT License: http://mbed.org/license/mit 00004 */ 00005 #include "Protocols.h " 00006 #include "ST7565.h" 00007 00008 /*this is a quite standard config for ST7565 and similars, like UC1701*/ 00009 00010 ////////////////////////////////////////////////////////////////////////////////// 00011 // display settings /////////////////////////////////////////////////////// 00012 ///////////////////////////////////////////////////////////////////////// 00013 #define IC_X_SEGS 132 // ST7565 SEG has range 0-131 (131-0 if ADC=1), check your datasheet, important for the orientation 00014 #define IC_Y_COMS 64 // ST7565 COM has range 0-63 (63-0 if SHL=1), check your datasheet, important for the orientation 00015 // put in constructor 00016 //#define LCDSIZE_X 128 // display X pixels, ST7565 is advertised as 132x65 but display size could be smaller 00017 //#define LCDSIZE_Y 64 // display Y pixels, the 65th is for accessing "icons" 00018 00019 00020 00021 ST7565::ST7565(proto_t displayproto, PortName port, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const char *name, unsigned int LCDSIZE_X, unsigned int LCDSIZE_Y) 00022 : LCD(displayproto, port, CS, reset, DC, WR, RD, LCDSIZE_X, LCDSIZE_Y, IC_X_SEGS, IC_Y_COMS, name) 00023 { 00024 hw_reset(); 00025 BusEnable(true); 00026 init(); 00027 cls(); 00028 set_orientation(1); 00029 locate(0,0); 00030 } 00031 ST7565::ST7565(proto_t displayproto, PinName* buspins, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const char *name, unsigned int LCDSIZE_X, unsigned int LCDSIZE_Y) 00032 : LCD(displayproto, buspins, CS, reset, DC, WR, RD, LCDSIZE_X, LCDSIZE_Y, IC_X_SEGS, IC_Y_COMS, name) 00033 { 00034 hw_reset(); 00035 BusEnable(true); 00036 init(); 00037 cls(); 00038 set_orientation(1); 00039 locate(0,0); 00040 } 00041 ST7565::ST7565(proto_t displayproto, int Hz, PinName mosi, PinName miso, PinName sclk, PinName CS, PinName reset, PinName DC, const char *name, unsigned int LCDSIZE_X, unsigned int LCDSIZE_Y) 00042 : LCD(displayproto, Hz, mosi, miso, sclk, CS, reset, DC, LCDSIZE_X, LCDSIZE_Y, IC_X_SEGS, IC_Y_COMS, name) 00043 { 00044 hw_reset(); 00045 BusEnable(true); 00046 init(); 00047 cls(); 00048 set_orientation(1); 00049 locate(0,0); 00050 } 00051 // reset and init the lcd controller 00052 // init sequence is manufacturer specific 00053 void ST7565::init() 00054 { 00055 /* Start Initial Sequence ----------------------------------------------------*/ 00056 00057 wr_cmd8(0xE2); // sw reset 00058 wait_ms(10); 00059 00060 wr_cmd8(0xAE); // display off 00061 00062 wr_cmd8(0xA2); // bias voltage (1/9) 00063 // wr_cmd8(0xA3); // bias voltage (1/7) 00064 00065 //wr_cmd8(0xA0); // ADC select seg0-seg131 00066 wr_cmd8(0xA1); // ADC select seg223-seg0 00067 //wr_cmd8(0xC8); // SHL select com63-com0 00068 wr_cmd8(0xC0); // SHL select com0-com63 00069 00070 wr_cmd8(0x2C); // Boost ON 00071 wait_ms(10); 00072 wr_cmd8(0x2E); // Voltage Regulator ON 00073 wait_ms(10); 00074 wr_cmd8(0x2F); // Voltage Follower ON 00075 wait_ms(10); 00076 wr_cmd8(0x20|0x05); // Regulor_Resistor_Select resistor ratio 20-27, look at your display specific init code 00077 set_contrast(0x20); 00078 //wr_cmd8(0x81); // set contrast (reference voltage register set) 00079 //wr_cmd8(0x15); // contrast 00-3F 00080 00081 wr_cmd8(0xA4); // LCD display ram (EntireDisplayOn disable) 00082 wr_cmd8(0x40); // start line = 0 00083 wr_cmd8(0xA6); // display normal (1 = illuminated) 00084 wr_cmd8(0xAF); // display ON 00085 00086 }
Generated on Fri Jul 15 2022 13:58:04 by
