Monochrome Screen Driver


Graphic screens look impressive and allow you to display images that a simple character based screen can’t provide. However this improvement comes at the cost of a great deal of complexity. This screen driver removes much of that complexity for you and allows you to simply display bitmaps of any size and ASCII text strings using user adjustable fonts anywhere on a screen. Once you have this capability using a graphic screen is easy and it’s a simple matter to add any special features you need for your application, such as menus, animated graphics, graphs and more.


This driver provides complete bitmap and string display capabilities on any standard mono graphic display, such as LCD, E Ink, LED, OLED and Vacuum Fluorescent monochrome screens. Once configured, the driver removes you from all of the problems of byte updating of displays. There is no requirement to use bitmaps sized in 8 bit multiples or located at 8 bit positions on the screen – display any bitmap of any size wherever you want. The driver can use the screen / display driver IC memory buffer for the display data rather than processor memory, resulting in a small RAM memory requirement for the driver, or a microcontroller / processor ram buffer for faster output or for when using screens that don’t proide the means to read back display data.

The included PC bitmap converter application will read all of your source .bmp bitmap files, created in a standard graphics package, and convert them into the selected format ready for use in your application. It will also convert special font .bmp bitmap files you can create to be used to display ASCII text strings. Options allow you to rotate your bitmap images and fonts before converting, allowing you to use a screen in any of the 4 possible orientations.

As well as displaying ASCII text strings in standard ‘monospace’ fixed pitch mode (each character takes the same horizontal space regardless of its actual width), this driver also allows you to display text in proportional mode. This makes lines of text much more attractive and natural to read and typically allows you to fit additional characters across a screen, as each character only uses as much width as is required to display it. Left, centre or right alignment and scrolling functions provides the complete toolbox of text display capabilities.

Once you have all these capabilities using a graphic screen is easy and it’s a simple matter to add any special user interface features you require for your application, such as menus, animated graphics, graphs and more. One of the great advantages of this driver is that it provides you with very simple but very powerful control over everything you display on the screen, allowing you to implement your display, and any user interface, exactly as you want it down to the individual pixel.

This driver can’t quite remove all of the complexity for you as you will still need to configure the screen access functions to suit the particular screen you’re using. This has been made as simple as possible, and some sample screen models are included for you to copy and modify as required. See the technical manual for more details.

Main features:

  • Display bitmaps of any size anywhere on the screen without having to worry about 8 bit size multiples or 8 bit boundaries.
  • Use your display in any of the 4 possible orientations.
  • Display monospace or proportional width text anywhere on the screen.
  • Left, centre or right text alignment and scrolling options.
  • Use the included PC Bitmap Converter Application to convert your source bitmap (.bmp) files ready for use with the driver. Create your bitmaps using a standard graphics application.
  • Create your own fonts simply by creating a line of characters in a single bitmap file.
  • Output your bitmap source files as a C compliant header file or as a binary file using the Bitmap Converter Application. Use the header file to include all of your bitmaps as part of the program memory – convert the files and they are immediately ready to use. Use the binary file option to store your bitmaps as a single data block in external flash memory and provide the driver with a function to read the binary data byte by byte. Use both methods if desired to split storage between on chip and external.
  • No requirements to use your display in pre-defined ways – use your display exactly as you want with your user interface implemented exactly as you want it, down to the individual pixel.
  • Use display memory instead of microcontroller / processor memory to buffer the display data, resulting in a very low ram requirement. Alternatively use a local ram buffer for displays with no read capability or to improve speed.
  • Very fast optimised code but with a small program memory requirement.
  • No reliance on compiler specific libraries.
  • Full source code supplied for you to use and modify as required.


Hardware Specifications
The driver is designed to support 8 bit parallel or serial screen interfaces.
For full specifications please see the project technical manual.


This source code product is written in C and has been designed to be used with any ANSI compliant C compiler on any platform. Direct compatibility has been tested with the compilers and processors / microcontrollers listed below. Using the driver with other ANSI compliant C compilers and devices should not present significant problems.
Tested with the Microchip C18 MPLAB C Compiler for PIC18 family of 8 bit microcontrollers with sample project included. Free version of the compiler available from Microchip.
Tested with the Microchip C30 MPLAB C Compiler for PIC24 family of 16 bit microcontrollers and dsPIC digital signal controllers with sample project included. Free version of the compiler available from Microchip.
Tested with the Microchip C32 MPLAB C Compiler for PIC32 family of 32bit microcontrollers with sample project included. Free version of the compiler available from Microchip.


View the project technical manual
View the most recent project revision history (useful for past customers to check for any modifications since they received their files)


Download sample source code files


Why isn't this code free?
You get what you pay for. Even in these days of open source this still holds true. We provide a premium, time saving service which we charge a fair price for. Every detail of our source code and documentation is meticulously designed, tested and presented. We respond to every support request. We save days or weeks of your development time. We provide trustworthy, fully tested solutions. We don't make you release commercially sensitive sections of your products source code or include usage statements in your products documentation as many of the open source licence agreements require. If these things don't matter to you, then Embedded-Code.com is unlikely to be the choice for you. If you can find the perfect open source or free solution for your project then use it, but if all you can find is poorly written, hard to understand, horribly documented or commercially restrictive code then consider what you get from us for a very low one-time cost. After all, no software is really free because your time isn't free.

Why use our code?
We provide the best written source code you can get. Not only is our code robust, fully tested and pounded upon by many customers before you, it's also been designed to be the best written source code available anywhere. Embedded-code.com was born out of the frustration of not being able to find inexpensive, high quality and easy to use embedded source code on the web. Do you want to work through thousands of lines of cryptic gibberish, waste hours having to fight with a free but painful solution, or do you want to work with code and documentation you can quickly and easily understand? We have written this source code to be as easy as possible to understand by programmers of all levels. All code is highly commented with no lazy programming techniques and all function, variable and constant names are fully descriptive to help you modify and expand the code with ease.

Companies we have supplied our source code drivers to include:


This project may be purchased with the following licence options:-

Private Licence A single named user may use and modify the purchased source code for non-commercial purposes only (i.e. for personal experimentation).
Technical support is available for a period of 1 month from purchase. Free upgrades are available for a period of 3 months from purchase
Commercial Licence A single named user may use and modify the purchased source code in an unlimited number of commercial products without any royalty fees payable.
Technical support and free upgrades are available for a period of 12 months from purchase (11 months for licence upgrades).

Please ensure that you read our full licence agreement before purchasing. All Source Code products are delivered by email.

New Customers
BUY NOW
Purchase Private Use Licence £40.00 Convert to: $(USD), €(EUR)
BUY NOW
Purchase Commercial Use Licence £80.00 Convert to: $(USD), €(EUR)
Previous Customers
UPGRADE NOW
Upgrade Private Use Licence To Commercial Use Licence £45.00 Convert to: $(USD), €(EUR)
RENEW NOW
Renew Existing Licence Upgrades & Support (Private or Commercial) £25.00 Convert to: $(USD), €(EUR)
REQUEST NOW
Receive Latest Version Of The Project Files