Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.
|
Forum Index : Microcontroller and PC projects : Multiple LCD panels on single Micromite
Author | Message | ||||
CaptainBoing Guru Joined: 07/09/2016 Location: United KingdomPosts: 1994 |
I have a requirement for driving two LCD panels from a single micromite (I need wide not big). I have no requirement for touch or gadgets on the screen, just display space. They will be mounted behind a piece of smoked perspex to hide the gap between the panels. I have a proof of concept working here The reset to both panels are pulled HI and the CS pins are handled in the code, not by MMBasic. Keen to hear any comments/warnings. |
||||
Geoffg Guru Joined: 06/06/2011 Location: AustraliaPosts: 3167 |
Neat idea. Geoff Graham - http://geoffg.net |
||||
MicroBlocks Guru Joined: 12/05/2012 Location: ThailandPosts: 2209 |
Good idea. I would use a single LS138 or use half of a LS139. This will save one chip, which can be a lot on a PCB. If you choose a LS139 you would be able to use maximum 4 LCD's and you still have the other half available to for instance connect 4 other SPI device like SD cards. Microblocks. Build with logic. |
||||
CaptainBoing Guru Joined: 07/09/2016 Location: United KingdomPosts: 1994 |
yes a proper selector would reduce the chip count for the CS reverse mux... I was trying to do it from spare gates. I was surprised how little aggro this gave me. It would be a degree more complex if you wanted touch input. I was thinking of using pages to handle the on-screen gadgets etc... will play with this later but for now I just need display space and this fits the bill. I think it opens up a range of possibilities, the use of a single '154 would give 16 displays! It has to be one of the simplest solutions to a "display wall" yet! The bezel round the displays would get in the way a bit, but much less than old school |
||||
GoodToGo! Senior Member Joined: 23/04/2017 Location: AustraliaPosts: 188 |
I like it! ...... Don't worry mate, it'll be GoodToGo! |
||||
Nathan Regular Member Joined: 10/01/2016 Location: GermanyPosts: 49 |
Hi please take a look into the following folder: Micromite_Firmware 5.04.05 Embedded C Modules\ST7735 LCD\Driver with Transparency dispLoad.bas dualDisplay.bas dispDriverSPI_R0-pdf there is an implementation for 28 and 44 pin available. It supports ST7735 and ILI9341 up to two displays (mixture possible) Nathan |
||||
CaptainBoing Guru Joined: 07/09/2016 Location: United KingdomPosts: 1994 |
Thanks Nathan - that is really interesting. I hadn't seen it before as I was still using 5.04.04 documentation so the embedded C modules weren't there - downloaded x.x.05 from Geoff's site. Interested to see that the 7735 driver will work with the 9341 with a connection tweak. Will play cheers |
||||
Nathan Regular Member Joined: 10/01/2016 Location: GermanyPosts: 49 |
Hi, it is a little bit more komplex. Both displays requires different initialization sequences and interface handling. Also the display size is different so during switching between the displays some additional things have to be done. The driver is doing it under the hood. The driver has also an C-API so that the maintenance/support function can call the main driver. So you can include only the C-Functions, which are required for your program. required: main driver is: dispDriverSPI_SI (dispLoad.bas -> instructions in the file) on demand: c-api functions are: description in --> dualDisplay.bas dSetDisplay(num) 0,1 to select the display dSetOri(num) 1,2,3,4 to set orientation (text rotate for example) description in --> move.bas dCopyVRam2Array( array,x,y,width,heigth) copy area of tft into array dCopyArray2VRamXY( array,x,y) copy array data at screen positio dSetSyncMagicNum(num) only ili9341 sync output do reduce flicker dRestoreCopyDrawArea(rem mode=0, sourceArray, backupArray, x, y, sync=0,1) restore old background -> save new background at x,y -> draw new source Array at x,y(if valid) dCopyArray2VRam(array,sync) copy the background array back dSetOri(num) look at dualDisplay.bas I have some more functions, which I did not opened, yet. dDefineWriteRegion(x1,y1,x2,y2) set drawing window dWriteRGB2VRAM(bitMapRGBarray,bitMapLength) write rgb data to screen dSyncXY(x,y) sync to screen ili9341 only Nathan |
||||
Print this page |