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.
Dependents: co657_lcdplay co657_nrf52_beacons door_lock co657_IoT
Fork of C12832 by
Diff: C12832_lcd.cpp
- Revision:
- 7:0f5a3b0f3cab
- Parent:
- 3:468cdccff7af
- Child:
- 8:c9afe58d786a
--- a/C12832_lcd.cpp Wed Dec 05 21:43:17 2012 +0000
+++ b/C12832_lcd.cpp Fri Dec 21 20:43:59 2012 +0000
@@ -14,7 +14,8 @@
// 13.10.12 initial design
// 25.10.12 add autorefresh of screen
-// 25.10.12 add standart font
+// 25.10.12 add standart font
+// 20.12.12 add bitmap graphics
// optional defines :
// #define debug_lcd 1
@@ -106,7 +107,7 @@
#else
_spi.write(cmd);
#endif
-_CS = 1;
+ _CS = 1;
}
// write data to lcd controller
@@ -159,7 +160,7 @@
wr_cmd(0xA6); // display normal
-
+
#if defined TARGET_LPC1768 //setup DMA channel 0
LPC_SC->PCONP |= (1UL << 29); // Power up the GPDMA
LPC_GPDMA->DMACConfig = 1; // enable DMA controller
@@ -173,7 +174,7 @@
auto_up = 1; // switch on auto update
claim(stdout); // redirekt printf to lcd
locate(0,0);
- set_font((unsigned char*)Small_7); // standart font
+ set_font((unsigned char*)Small_7); // standart font
}
// set one pixel in buffer
@@ -198,7 +199,7 @@
void C12832_LCD::copy_to_lcd(void)
{
-#ifndef TARGET_LPC1768
+#ifndef TARGET_LPC1768
int i;
#endif
//page 0
@@ -206,7 +207,7 @@
wr_cmd(0x10); // set column hi nibble 0
wr_cmd(0xB0); // set page address 0
_A0 = 1;
-#if defined TARGET_LPC1768
+#if defined TARGET_LPC1768
_CS = 0;
// start 128 byte DMA transfer to SPI1
LPC_GPDMACH0->DMACCDestAddr = (uint32_t)&LPC_SSP1->DR; // we send to SSP1
@@ -223,17 +224,17 @@
} while ((LPC_SSP1->SR & 0x10) == 0x10); // SPI1 not idle
_CS = 1;
#else // no DMA
- for(i=0;i<128;i++){
+ for(i=0; i<128; i++) {
wr_dat(buffer[i]);
- }
-#endif
+ }
+#endif
// page 1
wr_cmd(0x00); // set column low nibble 0
wr_cmd(0x10); // set column hi nibble 0
wr_cmd(0xB1); // set page address 1
_A0 = 1;
-#if defined TARGET_LPC1768
+#if defined TARGET_LPC1768
_CS = 0;
// start 128 byte DMA transfer to SPI1
LPC_GPDMA->DMACIntTCClear = 0x1;
@@ -248,17 +249,17 @@
} while ((LPC_SSP1->SR & 0x10) == 0x10); // SPI1 not idle
_CS = 1;
#else // no DMA
- for(i=128;i<256;i++){
+ for(i=128; i<256; i++) {
wr_dat(buffer[i]);
- }
-#endif
+ }
+#endif
//page 2
wr_cmd(0x00); // set column low nibble 0
wr_cmd(0x10); // set column hi nibble 0
wr_cmd(0xB2); // set page address 2
_A0 = 1;
-#if defined TARGET_LPC1768
+#if defined TARGET_LPC1768
_CS = 0;
// start 128 byte DMA transfer to SPI1
LPC_GPDMA->DMACIntTCClear = 0x1;
@@ -273,19 +274,19 @@
} while ((LPC_SSP1->SR & 0x10) == 0x10); // SPI1 not idle
_CS = 1;
#else // no DMA
- for(i=256;i<384;i++){
+ for(i=256; i<384; i++) {
wr_dat(buffer[i]);
- }
-#endif
+ }
+#endif
//page 3
wr_cmd(0x00); // set column low nibble 0
wr_cmd(0x10); // set column hi nibble 0
wr_cmd(0xB3); // set page address 3
_A0 = 1;
-
- _CS = 0;
-#if defined TARGET_LPC1768
+
+ _CS = 0;
+#if defined TARGET_LPC1768
// start 128 byte DMA transfer to SPI1
LPC_GPDMA->DMACIntTCClear = 0x1;
LPC_GPDMA->DMACIntErrClr = 0x1;
@@ -299,10 +300,10 @@
} while ((LPC_SSP1->SR & 0x10) == 0x10); // SPI1 not idle
_CS = 1;
#else // no DMA
- for(i=384;i<512;i++){
+ for(i=384; i<512; i++) {
wr_dat(buffer[i]);
- }
-#endif
+ }
+#endif
}
void C12832_LCD::cls(void)
@@ -541,7 +542,7 @@
for (i = 0; i <= r; i++)
circle(x,y,i,color);
auto_up = up;
- if(auto_up) copy_to_lcd();
+ if(auto_up) copy_to_lcd();
}
void C12832_LCD::setmode(int mode)
@@ -638,8 +639,30 @@
if(up ) auto_up = 1;
}
-unsigned int C12832_LCD::get_auto_up(void){
+unsigned int C12832_LCD::get_auto_up(void)
+{
return (auto_up);
}
+void C12832_LCD::print_bm(Bitmap bm, int x, int y)
+{
+ int h,v,b;
+ char d;
+ for(v=0; v < bm.ySize; v++) { // lines
+ for(h=0; h < bm.xSize; h++) { // pixel
+ if(h + x > 127) break;
+ if(v + y > 31) break;
+ d = bm.data[bm.Byte_in_Line * v + ((h & 0xF8) >> 3)];
+ b = 0x80 >> (h & 0x07);
+ if((d & b) == 0) {
+ pixel(x+h,y+v,0);
+ } else {
+ pixel(x+h,y+v,1);
+ }
+ }
+ }
+
+}
+
+
