• Aucun résultat trouvé

Library Routine for External LCD module

N/A
N/A
Protected

Academic year: 2022

Partager "Library Routine for External LCD module"

Copied!
9
0
0

Texte intégral

(1)

Library routine for External LCD module Page 1

Library Routine for External LCD module

1. Introduction ... 2

2. Module Features... 2

3. List of Component Modules... 3

4. Using the Library Module in a Project... 3

5. List of Shared Parameters... 4

Shared Functions ... 4

Shared Macros ... 4

6. Functions ... 5

7. Macros... 7

8. Appendix A ... 8

(2)

1. Introduction

This is a general purpose LCD library module for PIC16xxx and PIC18xxx family of microcontrol- lers. This module configures the external LCD(XLCD), based on the Hitachi HD44780 LCD con- troller or equivalent. This module configures the I/O pins of the microcontroller, sets up the LCD for 4 or 8-bit mode and provides APIs for different LCD functions.

2. Module Features

This library module supports the following features (please refer Appendix A for different connec- tions)

• Selecting the interface between the LCD module and the microcontroller, i.e. whether to select 8 or 4 bit interface.

• Selection for upper or lower nibble in case of 4-bit interface.

• Port selection for data transfer.

• Port and pin selection for the control signals.

• Facility to ground the R/W pin of the LCD (if read not required), which can help in saving a port pin for the microcontroller.

• Selection of the mode, whether the user wants delay or read busy flag in between commands.

• User selectable delay, by which the user can optimize the delay according to the different LCD modules.

• Selection of Blocking or non-Blocking functions.

• Configuring the parameters like single-line or two-lines, font selection, cursor on, blink on, etc.

(3)

Library routine for External LCD module Page 3

3. List of Component Modules

4. Using the Library Module in a Project

Please follow the steps below on how to use this library module in your project.

1. Use the Application Maestro to configure your code as required.

2. At the Generate Files step, save the output to the directory where your code project resides.

3. Launch the MPLAB, and open the project’s workspace.

4. Verify that the Microchip language tool suite is selected (Project>Select Language Toolsuite).

5. In the Workspace view, right-click on the “Source Files” node. Select the “Add Files” option.

Select XLCD.asm and click OK.

6. Now right-click on the “Linker Scripts” node and select “Add Files”. Add the appropriate linker file (.lkr) for the project’s target microcontroller.

7. Add any other files that the project may require. Save and close the project.

8. In your main source (assembler) file, add include directive at the head of the code listing to include XLCD.inc. By doing so, all files required to make the generated code work in your project will be included by reference when you build the project.

9. To use the module in your application, invoke the functions or macros as needed.

XLCD.P16.ex.txt This is the main test file developed to demonstrate the use of the library functions for the PIC16 family.

XLCD.P18.ex.txt This is main the test file developed to demonstrate the use of the library functions for the PIC18 family

XLCD.asm This is the LCD code implementation file. One needs to include this into their project

16XLCD.asm This is the code implementation file. The XLCD.asm will include this file into the project if the PIC16 family is used.

18XLCD.asm This is the code implementation file. The XLCD.asm will include this file into the project if the PIC18 family is used

XLCD.inc This file consists of all shared parameters and macros. One needs to include this in the assembly file where library function and macros are called. This file takes care of definitions of all extern global parameters so one can directly call library routines in their program

P16xxx General purpose processor definition file for the PIC16 family P18xxx General purpose processor definition file for the PIC18 family

(4)

5. List of Shared Parameters

Shared Functions

Shared Macros

XLCDInit It is used to initialize the LCD module according to the Application Maestro options.

XLCDCommand It sends clocking signal and instructions to the LCD.

XLCDPut It sends the clocking signal and data to be displayed to the LCD.

XLCDIsBusy Reads the Busy Flag status from the LCD module.

XLCDReadData It reads the data from the present address in the LCD.

XLCDL1home Points to the first address location of line one of the LCD.

XLCDL2home Points to the first address location of line two of the LCD

XLCDClear Clears the DDRAM content of the LCD and points to the 00 address location.

XLCDReturnHome Points to the 00 address location, the DDRAM content remains unchanged.

mXLCDSendMsg This to write a string, the user needs to pass the starting address location of the string.

(5)

Library routine for External LCD module Page 5

6. Functions

Function XLCDInit

Pre-conditions None

Overview This is the initialization routine which initializes the LCD module like, which port to use for data the transmission and which port to use for control sig- nal, which are taken from Application Maestro options. It also takes options such as font the selection, number of lines, cursor on, blink on, etc, from the Application Maestro

Input None

Output None

Side Effects Databank and w register changed

Stack Requirement Depended on Application maestro option (2 or 3)

Function XLCDCommand

Pre-conditions W register is to be loaded with the command to be sent (in non blocking mode, the user may require to call the XLCDIsBusy before calling this function to ensure if the LCD module is free).

Overview It sends clocking signal and instructions to LCD.It checks the busy flag or the call delay before sending the instruction to make sure that the LCD module is free (if Blocking is selected).

Input None

Output None

Side Effects Databank and w register changed

Stack Requirement Depended on Application maestro option (1 or 2)

Function XLCDPut

Pre-conditions W register is to be loaded with the data to be displayed.( in non blocking mode the user may require to call the XLCDIsBusy before calling this function to ensure if the LCD module is free).

Overview It sends clocking signal and data to be displayed to the LCD.It checks the busy flag or the call delay before sending the instruction to make sure that the LCD module is free (if Blocking is selected).

Input None

Output None

Side Effects Databank and w register changed

Stack Requirement Depended on Application maestro option (1 or 2)

(6)

Function XLCDIsBusy Pre-conditions None

Overview The user must call this function in the non blocking mode.It reads the busy flag of the LCD.In Non-blocking mode this function returns with 1 in W register if the module is busy else it returns with 0.

Input None

Output W reg

Side Effects Databank changed Stack Requirement 1-level deep

Function XLCDReadData

Pre-conditions In non blocking mode the user may require to call XLCDIsBusy before calling this function, to ensure that theLCD module is free

Overview Reads the data from DDRAM present address and return the data in w register

Input None

Output W reg

Side Effects Databank changed

Stack Requirement Depended on Application maestro option (1 or 2)

Function XLCDL1home

Pre-conditions In non blocking mode the user may require to call XLCDIsBusy before calling this function to ensure that the LCD module is free

Overview It points to the line one 00 address of the DDRAM

Input None

Output None

Side Effects Databank and w register changed

Stack Requirement Depended on Application maestro option (1 or 2)

Function XLCDL2home

Pre-conditions In non blocking mode the user may require to call XLCDIsBusy before calling this function to ensure that the LCD module is free

Overview It points to the line two first address of the DDRAM

Input None

Output None

(7)

Library routine for External LCD module Page 7

7. Macros.

Note:

• The user should make the PORTA pins digital, if used as control signal or for data transmis- sion.

• The user must check the port availability before using it (for example the upper nibble of PORTA and PORTG may not be used for data transmission).

• If non-blocking mode is selected the user must call the XLCDIsBusy function and check the busy condition before any command. This is to ensure that the LCD module is free. In blocking mode, the busy condition is checked inside the commands by calling delay or by polling for busy flag.

• The user can save a micro-controller pin by grounding the R/W pin of the external LCD (as shown in Figure 1 and Figure 3 of Appendix A). But by doing so the user will not be able to call any read command, like XLCDReadData, XLCDIsBusy, etc.

Stack Requirement Depended on Application maestro option (1 or 2)

Function XLCDReturnHome

Pre-conditions In non blocking mode the user may require to call XLCDIsBusy before calling this function to ensure that the LCD module is free

Overview It point to the 0 address location but DDRAM content remain unchanged

Input None

Output None

Side Effects Databank and w register changed

Stack Requirement Depended on Application maestro option (1 or 2)

Macro mXLCDSendMsg

Overview Displays strings written in Program memory area

Input None

Output None

Side Effects Data bank changed Stack Requirement 2 level

(8)

8. Appendix A

8-bit Interface:

Here in Figure-1, a micro controller port pin can be saved if the LCD RW pin is grounded. But if RW pin is grounded reading data or reading busy flag from the LCD is not possible.

Figure-1 :(RW pin grounded, no read back, 8-Bit interface) PIC

Controller

PORTx<x>

PORTx<x>

RSpin RWpin

ENpin PORTx<0:7>

LCD D0-D7

PIC Controller

PORTx<x>

PORTx<x>

RSpin RWpin

ENpin PORTx<0:7>

LCD D0-D7

(9)

Library routine for External LCD module Page 9 4-bit Interface:

Data transmission can be through upper nibble or lower nibble

Here in Figure-3, a micro controller port pin can be saved if the LCD RW pin is grounded. But if RW pin is grounded reading data or reading busy flag from the LCD is not possible.

Figure-3 :(RW pin grounded, no read back, 4-Bit interface)

Figure-4 :(RW pin not grounded, read back possible, 4-Bit interface PIC

Controller

PORTx<x>

PORTx<x>

RSpin RWpin

ENpin PORTx<0:3 or 4:7>

LCD D4-D7

PIC Controller

PORTx<x>

PORTx<x>

RSpin RWpin

ENpin PORTx<0:3 or 4:7>

LCD D4-D7

Références

Documents relatifs

Computer-Driven &amp; Computer-Assisted Music Systems Microprogrammable Microprocessors for Hobbyists Speech Synthesis Using Home Computers Optical Scanning for

In disk storage operations, used to store and control disk sector address.. Retains address of low-order augend digit during addition for

2 Until a refrigerator-stable vaccine becomes available, however, varicella vac- cine will not be incorporated into the recommend- ed immunization schedule in Canada, as most

The short term implementation mechanism will use an ISO 8473 normal data PDU as the echo-request and echo-reply PDU.. A special NSAP selector value will be used to identify

In much the same way that ISBNs are maintained by specific entities but used in widely varying applications, NSI’s PIN namespace is intended to be used in many

Notifiers will typically act as Event State Compositors (ESC) and thus will learn the poc-settings event state via PUBLISH requests sent from the user’s Event Publication

Information published in ENUM records could reveal associations between E.164 numbers and their owners - especially if URIs contain personal identifiers or domain names for

The purpose of this document is to show how the AES Galois Counter Mode can be used to provide both confidentiality and data integrity to the SSH Transport Layer