This time I will give you one of my menu systems for graphic liquid crystal displays. I have made graphical menus in the past with a more project oriented approach, once-off, but I ended up spending time redoing the same functionality. This one I made it to be more reusable and it seems promising. It is difficult to achieve a “one size fits all” solution though. This one sacrifices space for ease of use and readability. There are lost bytes in the struct of the strings. Since I use rather large PICs now, it is no big deal for me but this may not be the case for you.
A couple of small videos follow to show the looks of it and some functionality:
The English part of the example.
A menu in Greek and some more functionality.
It is a rather simple and easy to configure way to create complex menu trees. It is written in CCS C and is based on a modified GLCD library. This library has support for printing in Greek language, and accent overprinting, so a multilingual menu can be made. I am attaching here all the necessary files inside the .zip. An example ‘main.c’ is also included to help. You’ll need to have CCS C compiler in order to built it, of course. The ‘glcd.c’ library which I modified, states that in order to use it you should be a licensed user of the compiler. I must say this as the most part of the code in my ‘glcd_mod_GR.c’ file is theirs. Don’t download if you don’t have a license.
Instructions on how to use it are found inside the files. If you read carefully I think it will be easy. In any case you can contact me to help.
It creates a root menu with up to 5 entries (all screens can fit up to five items) that can lead to other sub-menus. The menu items can have some code attached, to do something, or they can have a parameter to change. The menu is used with four buttons, as I almost always have at least four buttons on my projects. It needs Up and Down to choose (and also increase and decrease), as the menu is vertically arranged, a Back button to exit without an action made and an Enter to select, save or execute.
You can get the source files here
The license for everything except the graphics library which is only partly mine, is: “freely use anywhere -at your risk-, give feedback” meaning that I would like to know what you did to enhance it or make it better in any way, so that everybody benefits.
Especially if you find a bug. The software here is working for me, it is tested on my board, but something may have slipped and it could affect other users. If you find something like that, please report it ASAP.