LCD5110

Committer:
nguyenmanhthao996tn
Date:
Sat Sep 30 09:12:29 2017 +0000
Revision:
0:bcd95cee2654
Worked version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nguyenmanhthao996tn 0:bcd95cee2654 1 #include "LCD5110.h"
nguyenmanhthao996tn 0:bcd95cee2654 2
nguyenmanhthao996tn 0:bcd95cee2654 3 /*********** Variables ***********/
nguyenmanhthao996tn 0:bcd95cee2654 4 static DigitalOut *_clk, *_din, *_ce, *_rst, *_dc, *_light;
nguyenmanhthao996tn 0:bcd95cee2654 5
nguyenmanhthao996tn 0:bcd95cee2654 6 void LCD5110_init(PinName clk, PinName din, PinName ce, PinName rst, PinName dc, PinName light)
nguyenmanhthao996tn 0:bcd95cee2654 7 {
nguyenmanhthao996tn 0:bcd95cee2654 8 LCD5110_GPIO_Config(clk, din, ce, rst, dc, light);
nguyenmanhthao996tn 0:bcd95cee2654 9
nguyenmanhthao996tn 0:bcd95cee2654 10 LCD5110_light_on(); // Light on
nguyenmanhthao996tn 0:bcd95cee2654 11 LCD5110_DC(1); // LCD_DC = 1;
nguyenmanhthao996tn 0:bcd95cee2654 12 LCD5110_DIN(1); // SPI_MO = 1;
nguyenmanhthao996tn 0:bcd95cee2654 13 LCD5110_CLK(1); // SPI_SCK = 1;
nguyenmanhthao996tn 0:bcd95cee2654 14 LCD5110_CE(1); // SPI_CS = 1;
nguyenmanhthao996tn 0:bcd95cee2654 15
nguyenmanhthao996tn 0:bcd95cee2654 16 LCD5110_RST(0); // LCD_RST = 0;
nguyenmanhthao996tn 0:bcd95cee2654 17 LCD5110_LCD_delay_ms(10);
nguyenmanhthao996tn 0:bcd95cee2654 18 LCD5110_RST(1); // LCD_RST = 1;
nguyenmanhthao996tn 0:bcd95cee2654 19
nguyenmanhthao996tn 0:bcd95cee2654 20 /* LCD Initialize sequence */
nguyenmanhthao996tn 0:bcd95cee2654 21 LCD5110_LCD_write_byte(0x21, 0);
nguyenmanhthao996tn 0:bcd95cee2654 22 LCD5110_LCD_write_byte(0xc6, 0);
nguyenmanhthao996tn 0:bcd95cee2654 23 LCD5110_LCD_write_byte(0x06, 0);
nguyenmanhthao996tn 0:bcd95cee2654 24 LCD5110_LCD_write_byte(0x13, 0);
nguyenmanhthao996tn 0:bcd95cee2654 25 LCD5110_LCD_write_byte(0x20, 0);
nguyenmanhthao996tn 0:bcd95cee2654 26 LCD5110_clear();
nguyenmanhthao996tn 0:bcd95cee2654 27 LCD5110_LCD_write_byte(0x0c, 0);
nguyenmanhthao996tn 0:bcd95cee2654 28 }
nguyenmanhthao996tn 0:bcd95cee2654 29
nguyenmanhthao996tn 0:bcd95cee2654 30 void LCD5110_LCD_write_byte(unsigned char dat, unsigned char mode)
nguyenmanhthao996tn 0:bcd95cee2654 31 {
nguyenmanhthao996tn 0:bcd95cee2654 32 unsigned char i;
nguyenmanhthao996tn 0:bcd95cee2654 33
nguyenmanhthao996tn 0:bcd95cee2654 34 /* Simulate SPI Transfer */
nguyenmanhthao996tn 0:bcd95cee2654 35 LCD5110_CE(0); // SPI_CS = 0;
nguyenmanhthao996tn 0:bcd95cee2654 36
nguyenmanhthao996tn 0:bcd95cee2654 37 if (0 == mode)
nguyenmanhthao996tn 0:bcd95cee2654 38 LCD5110_DC(0); // LCD_DC = 0;
nguyenmanhthao996tn 0:bcd95cee2654 39 else
nguyenmanhthao996tn 0:bcd95cee2654 40 LCD5110_DC(1); // LCD_DC = 1;
nguyenmanhthao996tn 0:bcd95cee2654 41
nguyenmanhthao996tn 0:bcd95cee2654 42 for (i = 0; i < 8; i++) {
nguyenmanhthao996tn 0:bcd95cee2654 43 LCD5110_DIN((dat & 0x80) >> 7); // SPI_MO = dat & 0x80;
nguyenmanhthao996tn 0:bcd95cee2654 44 dat = dat << 1;
nguyenmanhthao996tn 0:bcd95cee2654 45 LCD5110_CLK(0); // SPI_SCK = 0;
nguyenmanhthao996tn 0:bcd95cee2654 46 LCD5110_CLK(1); // SPI_SCK = 1;
nguyenmanhthao996tn 0:bcd95cee2654 47 }
nguyenmanhthao996tn 0:bcd95cee2654 48
nguyenmanhthao996tn 0:bcd95cee2654 49 LCD5110_CE(1); // SPI_CS = 1;
nguyenmanhthao996tn 0:bcd95cee2654 50 }
nguyenmanhthao996tn 0:bcd95cee2654 51
nguyenmanhthao996tn 0:bcd95cee2654 52 void LCD5110_write_char(unsigned char c)
nguyenmanhthao996tn 0:bcd95cee2654 53 {
nguyenmanhthao996tn 0:bcd95cee2654 54 unsigned char line;
nguyenmanhthao996tn 0:bcd95cee2654 55 unsigned char ch = 0;
nguyenmanhthao996tn 0:bcd95cee2654 56
nguyenmanhthao996tn 0:bcd95cee2654 57 c = c - 32;
nguyenmanhthao996tn 0:bcd95cee2654 58
nguyenmanhthao996tn 0:bcd95cee2654 59 for (line = 0; line < 6; line++) {
nguyenmanhthao996tn 0:bcd95cee2654 60 ch = font6_8[c][line];
nguyenmanhthao996tn 0:bcd95cee2654 61 LCD5110_LCD_write_byte(ch, 1);
nguyenmanhthao996tn 0:bcd95cee2654 62 }
nguyenmanhthao996tn 0:bcd95cee2654 63 }
nguyenmanhthao996tn 0:bcd95cee2654 64
nguyenmanhthao996tn 0:bcd95cee2654 65 void LCD5110_write_char_reg(unsigned char c)
nguyenmanhthao996tn 0:bcd95cee2654 66 {
nguyenmanhthao996tn 0:bcd95cee2654 67 unsigned char line;
nguyenmanhthao996tn 0:bcd95cee2654 68 unsigned char ch = 0;
nguyenmanhthao996tn 0:bcd95cee2654 69
nguyenmanhthao996tn 0:bcd95cee2654 70 c = c - 32;
nguyenmanhthao996tn 0:bcd95cee2654 71
nguyenmanhthao996tn 0:bcd95cee2654 72 for (line = 0; line < 6; line++) {
nguyenmanhthao996tn 0:bcd95cee2654 73 ch = ~font6_8[c][line];
nguyenmanhthao996tn 0:bcd95cee2654 74 LCD5110_LCD_write_byte(ch, 1);
nguyenmanhthao996tn 0:bcd95cee2654 75 }
nguyenmanhthao996tn 0:bcd95cee2654 76 }
nguyenmanhthao996tn 0:bcd95cee2654 77
nguyenmanhthao996tn 0:bcd95cee2654 78 void LCD5110_write_string(char *s)
nguyenmanhthao996tn 0:bcd95cee2654 79 {
nguyenmanhthao996tn 0:bcd95cee2654 80 unsigned char ch;
nguyenmanhthao996tn 0:bcd95cee2654 81 while (*s != '\0') {
nguyenmanhthao996tn 0:bcd95cee2654 82 ch = *s;
nguyenmanhthao996tn 0:bcd95cee2654 83 LCD5110_write_char(ch);
nguyenmanhthao996tn 0:bcd95cee2654 84 s++;
nguyenmanhthao996tn 0:bcd95cee2654 85 }
nguyenmanhthao996tn 0:bcd95cee2654 86 }
nguyenmanhthao996tn 0:bcd95cee2654 87
nguyenmanhthao996tn 0:bcd95cee2654 88 void LCD5110_clear(void)
nguyenmanhthao996tn 0:bcd95cee2654 89 {
nguyenmanhthao996tn 0:bcd95cee2654 90 unsigned char i, j;
nguyenmanhthao996tn 0:bcd95cee2654 91 for (i = 0; i < 6; i++)
nguyenmanhthao996tn 0:bcd95cee2654 92 for (j = 0; j < 84; j++)
nguyenmanhthao996tn 0:bcd95cee2654 93 LCD5110_LCD_write_byte(0, 1);
nguyenmanhthao996tn 0:bcd95cee2654 94 }
nguyenmanhthao996tn 0:bcd95cee2654 95
nguyenmanhthao996tn 0:bcd95cee2654 96 void LCD5110_set_XY(unsigned char X, unsigned char Y)
nguyenmanhthao996tn 0:bcd95cee2654 97 {
nguyenmanhthao996tn 0:bcd95cee2654 98 unsigned char x = 6 * X;
nguyenmanhthao996tn 0:bcd95cee2654 99
nguyenmanhthao996tn 0:bcd95cee2654 100 /* Set cursor location */
nguyenmanhthao996tn 0:bcd95cee2654 101 LCD5110_LCD_write_byte(0x40 | Y, 0);
nguyenmanhthao996tn 0:bcd95cee2654 102 LCD5110_LCD_write_byte(0x80 | x, 0);
nguyenmanhthao996tn 0:bcd95cee2654 103 }
nguyenmanhthao996tn 0:bcd95cee2654 104
nguyenmanhthao996tn 0:bcd95cee2654 105 void LCD5110_write_Dec(unsigned int b)
nguyenmanhthao996tn 0:bcd95cee2654 106 {
nguyenmanhthao996tn 0:bcd95cee2654 107
nguyenmanhthao996tn 0:bcd95cee2654 108 unsigned char datas[4];
nguyenmanhthao996tn 0:bcd95cee2654 109
nguyenmanhthao996tn 0:bcd95cee2654 110 datas[0] = b / 1000;
nguyenmanhthao996tn 0:bcd95cee2654 111 b = b - datas[0] * 1000;
nguyenmanhthao996tn 0:bcd95cee2654 112 datas[1] = b / 100;
nguyenmanhthao996tn 0:bcd95cee2654 113 b = b - datas[1] * 100;
nguyenmanhthao996tn 0:bcd95cee2654 114 datas[2] = b / 10;
nguyenmanhthao996tn 0:bcd95cee2654 115 b = b - datas[2] * 10;
nguyenmanhthao996tn 0:bcd95cee2654 116 datas[3] = b;
nguyenmanhthao996tn 0:bcd95cee2654 117
nguyenmanhthao996tn 0:bcd95cee2654 118 datas[0] += 48;
nguyenmanhthao996tn 0:bcd95cee2654 119 datas[1] += 48;
nguyenmanhthao996tn 0:bcd95cee2654 120 datas[2] += 48;
nguyenmanhthao996tn 0:bcd95cee2654 121 datas[3] += 48;
nguyenmanhthao996tn 0:bcd95cee2654 122
nguyenmanhthao996tn 0:bcd95cee2654 123 LCD5110_write_char(datas[0]);
nguyenmanhthao996tn 0:bcd95cee2654 124 LCD5110_write_char(datas[1]);
nguyenmanhthao996tn 0:bcd95cee2654 125 LCD5110_write_char(datas[2]);
nguyenmanhthao996tn 0:bcd95cee2654 126 LCD5110_write_char(datas[3]);
nguyenmanhthao996tn 0:bcd95cee2654 127
nguyenmanhthao996tn 0:bcd95cee2654 128 //a++;
nguyenmanhthao996tn 0:bcd95cee2654 129 }
nguyenmanhthao996tn 0:bcd95cee2654 130
nguyenmanhthao996tn 0:bcd95cee2654 131 void LCD5110_light_on(void)
nguyenmanhthao996tn 0:bcd95cee2654 132 {
nguyenmanhthao996tn 0:bcd95cee2654 133 LCD5110_LIGHT(0); // Light on
nguyenmanhthao996tn 0:bcd95cee2654 134 }
nguyenmanhthao996tn 0:bcd95cee2654 135
nguyenmanhthao996tn 0:bcd95cee2654 136 void LCD5110_light_off(void)
nguyenmanhthao996tn 0:bcd95cee2654 137 {
nguyenmanhthao996tn 0:bcd95cee2654 138 LCD5110_LIGHT(1); // Light off
nguyenmanhthao996tn 0:bcd95cee2654 139 }
nguyenmanhthao996tn 0:bcd95cee2654 140
nguyenmanhthao996tn 0:bcd95cee2654 141
nguyenmanhthao996tn 0:bcd95cee2654 142 void LCD5110_LCD_delay_ms(unsigned int t)
nguyenmanhthao996tn 0:bcd95cee2654 143 {
nguyenmanhthao996tn 0:bcd95cee2654 144 wait_ms(t);
nguyenmanhthao996tn 0:bcd95cee2654 145 }
nguyenmanhthao996tn 0:bcd95cee2654 146
nguyenmanhthao996tn 0:bcd95cee2654 147 void LCD5110_GPIO_Config(PinName clk, PinName din, PinName ce, PinName rst, PinName dc, PinName light)
nguyenmanhthao996tn 0:bcd95cee2654 148 {
nguyenmanhthao996tn 0:bcd95cee2654 149 _clk = new DigitalOut(clk);
nguyenmanhthao996tn 0:bcd95cee2654 150 _din = new DigitalOut(din);
nguyenmanhthao996tn 0:bcd95cee2654 151 _ce = new DigitalOut(ce);
nguyenmanhthao996tn 0:bcd95cee2654 152 _rst = new DigitalOut(rst);
nguyenmanhthao996tn 0:bcd95cee2654 153 _dc = new DigitalOut(dc);
nguyenmanhthao996tn 0:bcd95cee2654 154 _light = new DigitalOut(light);
nguyenmanhthao996tn 0:bcd95cee2654 155 }
nguyenmanhthao996tn 0:bcd95cee2654 156
nguyenmanhthao996tn 0:bcd95cee2654 157 void LCD5110_CLK(unsigned char temp)
nguyenmanhthao996tn 0:bcd95cee2654 158 {
nguyenmanhthao996tn 0:bcd95cee2654 159 *(_clk) = temp;
nguyenmanhthao996tn 0:bcd95cee2654 160 }
nguyenmanhthao996tn 0:bcd95cee2654 161
nguyenmanhthao996tn 0:bcd95cee2654 162 void LCD5110_DIN(unsigned char temp)
nguyenmanhthao996tn 0:bcd95cee2654 163 {
nguyenmanhthao996tn 0:bcd95cee2654 164 *(_din) = temp;
nguyenmanhthao996tn 0:bcd95cee2654 165 }
nguyenmanhthao996tn 0:bcd95cee2654 166
nguyenmanhthao996tn 0:bcd95cee2654 167 void LCD5110_CE(unsigned char temp)
nguyenmanhthao996tn 0:bcd95cee2654 168 {
nguyenmanhthao996tn 0:bcd95cee2654 169 *(_ce) = temp;
nguyenmanhthao996tn 0:bcd95cee2654 170 }
nguyenmanhthao996tn 0:bcd95cee2654 171
nguyenmanhthao996tn 0:bcd95cee2654 172 void LCD5110_RST(unsigned char temp)
nguyenmanhthao996tn 0:bcd95cee2654 173 {
nguyenmanhthao996tn 0:bcd95cee2654 174 *(_rst) = temp;
nguyenmanhthao996tn 0:bcd95cee2654 175 }
nguyenmanhthao996tn 0:bcd95cee2654 176
nguyenmanhthao996tn 0:bcd95cee2654 177 void LCD5110_DC(unsigned char temp)
nguyenmanhthao996tn 0:bcd95cee2654 178 {
nguyenmanhthao996tn 0:bcd95cee2654 179 *(_dc) = temp;
nguyenmanhthao996tn 0:bcd95cee2654 180 }
nguyenmanhthao996tn 0:bcd95cee2654 181
nguyenmanhthao996tn 0:bcd95cee2654 182 void LCD5110_LIGHT(unsigned char temp)
nguyenmanhthao996tn 0:bcd95cee2654 183 {
nguyenmanhthao996tn 0:bcd95cee2654 184 *(_light) = temp;
nguyenmanhthao996tn 0:bcd95cee2654 185 }