Embedded LCD driver

Project name:
 Embedded LCD driver
   
Language: ANSI C
   
Target platform: Currently c2000
   
Abstract: UC 1601 Ultra low power Passive Matrix Lcd Controller Driver , which consists of 65 COM drivers and 128 SEG
drivers.
   
Key features and advantages:
 

This has been tested with different LCD's from different manufacturs. 

User can draw lines, rectangles, text with different font sizes, moving graphs and images of any size on a LCD which uses a UC1601 controller.

Optimised for minimum bus traffic, and maximum writing speed, using techniques like automatic page and column increment, and a virtual LCD buffer.  I utilises very efficient algorithms for drawing geometrical shapes and compressed font and image data ensure minimum memory consumption.

   

  
  

Full Description

This graphics lcd controller library was originally developed to drive the UC1601 Ultra low power Controller Driver, which consists of 65 COM and 128 SEG drivers. Currently developed for Texas Instruments C2000 platform, but could easily be modified for any embedded platform.

With the aid of a font and graphics generation tool, which comes with the driver library , users can show text in any font at any size as well as displaying any chosen graphics or images. RLE compressed font and graphics data ensure very low embedded memory requirement.

Techniques like auto increment page and column addresses , and virtual memory writing have reduced the bus traffic significantly and ensure very fast data writing to the lcd driver. Brightness is easily adjusted using software commands. Lcd mapping is also controlled using commands which ensures compatibility with any lcd manufacture’s product which use 1601 driver.

Overview of Embedded LCD driver


LCD Driver Software features

Ability to display any font or graphics by using a font and graphics generation tool with RLE compress data.

Ability to drawing real time graphs or bar charts of any size.

Fast lcd data writing and less bus traffic by using techniques like virtual lcd buffer and auto increment page and column addresses.

Software controlled Reset, Page and Column Auto increment , Brightness control and Mapping control features.

Performance Parameters

Code space requirements 3kB

Ram requirements 0.5-1kB (Depends on display size)

Embedded LCD driver Application Programming Interface

void Gpio_select(void)

This function initializes the GPIO pins relevant to the  LCD interface.

void WriteData(Uint16  data)

This function writes one data page into LCD

Parameters : data  - One page data in LCD

void WriteCommand (Uint16  command)

This function writes a command into LCD

Parameters: command - LCD commands for UC1601 controller

void InitPort(void)

This function configures the port for communictaion with the the LCD ( such as bus mode selection etc.. )

void InitLcd(scrBuffer* b)

This function sets initial condition on the LCD ( eg. Setting contrast , refresh rate , clear all the pixels.. etc )

Parameters : b - pointer to a structure which mainly consisting of a 2D virtual LCD array ( size of array equal to Num. of  Column * Num. of Pages)

void LcdReset(void)

This function Reset the LCD

void LcdClear (scrBuffer* b)

This function clears the LCD screen

Parameters : b - as above

void scrPageAddressSet(Uint16 pageAddr)

This funtion sets a particular page address in LCD

Parameters : pageAddr - page number

void scrColumnAddressSet(Uint16 colAddr)

This function sets a particular column address  in LCD

Parameters : colAddr - column number

void scrVirtualDisplayWrite(Uint16  x , Uint16  y , scrBuffer *b)

This function turns on a pixel in a virtual LCD 2D array

Parameters : x - x cordinate of the pixel to turn on

             Y - y cordinate of the pixel, which we want to on

              b - as above

void scrFlushPendingWrite(scrBuffer* b )

This function writes all the data in the virtual LCD 2D array to the LCD.

    Parameters : b - as above

void scrDrawLine(Uint16  x1 ,Uint16  y1 , Uint16 x2, Uint16  y2 ,scrBuffer* b)

This function draws a line , between two points

Parameters : x1 - x coordinate of first point

 y1 - y coordinate of first point

             x2 - x coordinate of second point

 y2 - y coordinate of second point

  b - as above

 

void scrDrawRect(Uint16 upperLeft_x , Uint16  upperLeft_y , Uint16  rightBottom_x, Uint16  rightBottom_y , scrBuffer* b)

This function Draw a empty rectangle , configured using two diagonal points.

Parameters : upperLeft_x - x coordinate of upper left point

             upperLeft_y - y coordinate of upper left point

             rightBottom_x - x coordinate of right bottom point

             rightBottom_y - y coordinate of right bottom point

             b - as above

    

void scrFillRect(Uint16 upperLeft_x , Uint16  upperLeft_y , Uint16  rightBottom_x, Uint16  rightBottom_y , scrBuffer* b)

This function draws a solid rectangle, configured by setting diagonal points

Parameters : upperLeft_x - x coordinate of upper left point

             upperLeft_y - y coordinate of upper left point

             rightBottom_x - x coordinate of right bottom point

             rightBottom_y - y coordinate of right bottom point

             b - as above

 

void scrDrawGraph( float data, Uint16 upperLeft_x , Uint16  upperLeft_y , Uint16  rightBottom_x, Uint16  rightBottom_y , scrBuffer* b)

This function draws a moving graph within given boundry co-ordinates

Parameters : data - Current data value

upperLeft_x - x coordinate of upper left point of graph

            upperLeft_y - y coordinate of upper left point of graph

            rightBottom_x - x coordinate of right bottom point of graph

            rightBottom_y - y coordinate of right bottom point of graph

             b - as above

 

void scrDrawText( char* text, Uint16  x, Uint16  y, Uint16  fontSize , scrBuffer* b)

This function displays text on the LCD

Parameters : text - pointer to the string buffer

            x - starting x coordinate of string on LCD

            y - starting y coordinate of string on LCD

            fontSize - size of the font to draw

            b - as above

 

void scrDrawBmp(Uint16* bmpData , Uint16 initX , Uint16 initY , Uint16 width ,  Uint16 height, scrBuffer* b)

This function draw a image on LCD of a given width and height

Parameters : bmpData - pointer to the image data array

            initX - starting x position of  image

            initY - starting y position of image

            width - width of the image to draw

            height - height of the image to draw

            b - as above

 

 







This page was printed from: http://www.hynav.com/index.php?pcat=2&cat=7496&lang=1

© Race Technology Ltd '24