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.
Diff: ili9163lcd.cpp
- Revision:
- 6:7abe5999dc1c
- Parent:
- 5:570ba49da81c
- Child:
- 7:eaaf60683ca4
--- a/ili9163lcd.cpp Sat Jan 02 06:51:11 2021 +0000
+++ b/ili9163lcd.cpp Sat Jan 02 07:29:21 2021 +0000
@@ -109,6 +109,65 @@
CS_ = 1;
}
+void lcdWriteData_burst(uint16_t *burst_data,uint16_t length)
+{
+ uint8_t dataByte1,dataByte2;
+ uint8_t i;
+ uint16_t pixel;
+
+ CS_ = 0;
+ A0_ = 1;
+ for(pixel = 0;pixel < length;pixel++){
+ dataByte1 = *burst_data >> 8;
+ dataByte2 = *burst_data;
+ burst_data++;
+
+ for(i=0;i<8;i++){
+ if(dataByte1 & 128)SDA_= 1; else SDA_ = 0;
+ SCK_ = 0;//TBD
+ dataByte1 <<= 1;
+ SCK_ = 1;//TBD
+ }
+ for(i=0;i<8;i++){
+ if(dataByte2 & 128)SDA_= 1; else SDA_ = 0;
+ SCK_ = 0;//TBD
+ dataByte2 <<= 1;
+ SCK_ = 1;//TBD
+ }
+ }
+ wait_us(1);
+ CS_ = 1;
+}
+
+void lcdWriteData_sameburst(uint16_t data,uint16_t length)
+{
+ uint8_t dataByte1,dataByte2;
+ uint8_t i;
+ uint16_t pixel;
+
+ CS_ = 0;
+ A0_ = 1;
+ for(pixel = 0;pixel < length;pixel++){
+ dataByte1 = data >> 8;
+ dataByte2 = data;
+
+ for(i=0;i<8;i++){
+ if(dataByte1 & 128)SDA_= 1; else SDA_ = 0;
+ SCK_ = 0;//TBD
+ dataByte1 <<= 1;
+ SCK_ = 1;//TBD
+ }
+ for(i=0;i<8;i++){
+ if(dataByte2 & 128)SDA_= 1; else SDA_ = 0;
+ SCK_ = 0;//TBD
+ dataByte2 <<= 1;
+ SCK_ = 1;//TBD
+ }
+ }
+ wait_us(1);
+ CS_ = 1;
+}
+
// Initialise the display with the require screen orientation
void lcdInitialise(uint8_t orientation)
{
@@ -214,10 +273,6 @@
void lcdClearDisplay(uint16_t colour)
{
- uint16_t pixel;
- uint8_t dataByte1, dataByte2;
- uint8_t i;
-
// Set the column address to 0-127
lcdWriteCommand(SET_COLUMN_ADDRESS);
lcdWriteParameter(0x00);
@@ -237,35 +292,13 @@
lcdWriteCommand(WRITE_MEMORY_START);
//for(pixel = 0; pixel < 16385; pixel++) lcdWriteData(colour >> 8, colour);
//for(pixel = 0; pixel < 20480; pixel++) lcdWriteData(colour >> 8, colour);
-
- CS_ = 0;
- A0_ = 1;
- for(pixel = 0; pixel < 20480; pixel++){
- dataByte1 = colour >> 8;
- dataByte2 = colour;
- for(i=0;i<8;i++){
- if(dataByte1 & 128)SDA_= 1; else SDA_ = 0;
- SCK_ = 0;//TBD
- dataByte1 <<= 1;
- SCK_ = 1;//TBD
- }
- for(i=0;i<8;i++){
- if(dataByte2 & 128)SDA_= 1; else SDA_ = 0;
- SCK_ = 0;//TBD
- dataByte2 <<= 1;
- SCK_ = 1;//TBD
- }
- }
- wait_us(1);
- CS_ = 1;
+ lcdWriteData_sameburst(colour,20480);
}
void grade(void)
{
uint16_t line_buf[128];
- uint16_t pixel,page;
- uint8_t dataByte1, dataByte2;
- uint8_t i;
+ uint8_t pixel;
// Set the column address to 0-127
lcdWriteCommand(SET_COLUMN_ADDRESS);
@@ -286,48 +319,19 @@
if(pixel < 32) line_buf[pixel] = decodeRgbValue((pixel&0b11111)>>1, 0, 0);
else if(pixel < 64) line_buf[pixel] = decodeRgbValue(0, (pixel&0b11111)>>1, 0);
else if(pixel < 96) line_buf[pixel] = decodeRgbValue(0, 0, (pixel&0b11111)>>1);
- //if(pixel < 32) line_buf[pixel] = decodeRgbValue(31, 0, 0);
- //else if(pixel < 64) line_buf[pixel] = decodeRgbValue(0, 31, 0);
- //else if(pixel < 96) line_buf[pixel] = decodeRgbValue(0, 0, 31);
else line_buf[pixel] = decodeRgbValue(0, 0, 0);
}
// Plot the pixels
lcdWriteCommand(WRITE_MEMORY_START);
- //for(uint16_t page = 0;page < 160;page++){
- // for(pixel = 0; pixel < 128; pixel++){
- // lcdWriteData(line_buf[pixel] >> 8, line_buf[pixel]);
- // }
- //}
-
-
- CS_ = 0;
- A0_ = 1;
- for(page = 0;page < 160;page++){
- for(pixel = 0; pixel < 128; pixel++){
- dataByte1 = line_buf[pixel] >> 8;
- dataByte2 = line_buf[pixel];
- for(i=0;i<8;i++){
- if(dataByte1 & 128)SDA_= 1; else SDA_ = 0;
- SCK_ = 0;//TBD
- dataByte1 <<= 1;
- SCK_ = 1;//TBD
- }
- for(i=0;i<8;i++){
- if(dataByte2 & 128)SDA_= 1; else SDA_ = 0;
- SCK_ = 0;//TBD
- dataByte2 <<= 1;
- SCK_ = 1;//TBD
- }
- }
+ for(uint16_t page = 0;page < 160;page++){
+ lcdWriteData_burst(line_buf,128);
}
- wait_us(1);
- CS_ = 1;
+ lcdWriteData_burst(line_buf,128);
}
void colorbar(void)
{
- uint16_t pixel;
uint16_t colour;
// Set the column address to 0-127
@@ -347,6 +351,8 @@
// Plot the pixels
lcdWriteCommand(WRITE_MEMORY_START);
+ CS_ = 0;
+ A0_ = 1;
for(uint16_t page = 0;page < 160;page++){
if(page < 28) colour = decodeRgbValue(31, 31, 31);
else if(page < 50) colour = decodeRgbValue(31, 31, 0);
@@ -356,9 +362,7 @@
else if(page < 138) colour = decodeRgbValue(31, 0, 0);
else colour = decodeRgbValue(0, 0, 31);
- for(pixel = 0; pixel < 128; pixel++){
- lcdWriteData(colour >> 8, colour);
- }
+ lcdWriteData_sameburst(colour,128);
}
}