0% found this document useful (0 votes)
238 views4 pages

LCD C

Structure is overla / / on to an I / o port to gai access to the lcd pins. Bits are allocated f / 0=5x7, 1=5x10, 2=2 lines. Bytes need to be sent to the lcd to start it up.

Uploaded by

Smitha Singh
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
238 views4 pages

LCD C

Structure is overla / / on to an I / o port to gai access to the lcd pins. Bits are allocated f / 0=5x7, 1=5x10, 2=2 lines. Bytes need to be sent to the lcd to start it up.

Uploaded by

Smitha Singh
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

/////////////////////////////////////////////////////////////////////////// //// LCDD.

C //// //// Driver for common LCD modules //// //// //// //// lcd_init() Must be called before any other function. //// //// //// //// lcd_putc(c) Will display c on the next position of the LCD. //// //// The following have special meaning: //// //// \f Clear display //// //// \n Go to start of second line //// //// \b Move back one position //// //// //// //// lcd_gotoxy(x,y) Set write position on LCD (upper left is 1,1) //// //// //// //// lcd_getc(x,y) Returns character at position x,y on LCD //// //// //// /////////////////////////////////////////////////////////////////////////// //// (C) Copyright 1996,2007 Custom Computer Services //// //// This source code may only be used by licensed users of the CCS C //// //// compiler. This source code may only be distributed to other //// //// licensed users of the CCS C compiler. No other use, reproduction //// //// or distribution is permitted without written permission. //// //// Derivative programs created using this software in object code //// //// form are not restricted in any way. //// /////////////////////////////////////////////////////////////////////////// // As defined in the following structure the pin connection is as follows: // D0 enable // D1 rs // D2 rw // D4 D4 // D5 D5 // D6 D6 // D7 D7 // // LCD pins D0-D3 are not used and PIC D3 is not used. // Un-comment the following define to use port B // #define use_portb_lcd TRUE #define #define #define #define #define #define LCD_ENABLE_PIN PIN_A0 LCD_RS_PIN PIN_A0 LCD_RW_PIN PIN_A1 LCD_DATA_PORT 0xf83 //PORT D LCD_TYPE 2 LCD_TRIS_LOCATION TRISD

struct lcd_pin_map yed BOOLEAN n BOOLEAN BOOLEAN

{ enable=LCD_ENABLE_PIN; rs=LCD_RS_PIN; rw=LCD_RW_PIN;

// This structure is overla // on to an I/O port to gai // access to the LCD pins. // The bits are allocated f

rom unsigned char data= LCD_DATA_PORT; } lcd; #define set_tris_lcd(x) set_tris_d(x) #ifndef lcd_type #define lcd_type 2 #endif #define lcd_line_two 0x40 // be pin B0.

// 0=5x7, 1=5x10, 2=2 lines // LCD RAM address for the second line

BYTE const LCD_INIT_STRING[ ] = {0x30 (lcd_type << 2), 0x8,1,0xc,6}; // These bytes need to be sent to the LCD // to start it up. //FUNCTION SET COMMAND: 8 BIT COMMAND

// The following are used for setting // the I/O port direction register. struct lcd_pin_map const LCD_WRITE = {0,0,0,0}; // For write mode all pins are o ut struct lcd_pin_map const LCD_READ = {0,0,0,0xff}; // For read mode data pins ar e in

BYTE lcd_read_byte() { BYTE chData; set_tris_lcd(LCD_READ); lcd.enable=0; lcd.rs=0; //Its a command lcd.rw=1; //Its a read command delay_cycles(1); lcd.enable=1; delay_cycles(1); chData = lcd.data; lcd.enable = 0; delay_cycles(1); lcd.rs=1; lcd.rw=0; set_tris_lcd(LCD_WRITE); return chData; }

void lcd_send_byte( BYTE address, BYTE n ) {

lcd.rs = 0; while ( bit_test(lcd_read_byte(),7) ) ; lcd.enable=0; lcd.rs = address; delay_cycles(1); lcd.rw = 0; lcd.enable=1; lcd.data=n; delay_cycles(1); lcd.enable = 0; lcd.rs=1; lcd.rw=0; } void lcd_init() { BYTE i; delay_ms(20); //Wait for more than 15ms after Vcc=4.5V set_tris_lcd(LCD_WRITE); lcd.enable=0; lcd.rs=0; lcd.rw=0; lcd.enable=1; lcd.data= 0x38; //Function Set Command lcd.enable=0; lcd.rs=1; lcd.rw=1; delay_ms(5); //Wait for more than 4.1ms

set_tris_lcd(LCD_WRITE); lcd.enable=0; lcd.rs=0; lcd.rw=0; lcd.enable=1; lcd.data= 0x38; //Function Set Command lcd.enable=0; lcd.rs=1; lcd.rw=1; delay_us(200); //Wait for more than 100us

set_tris_lcd(LCD_WRITE); lcd.enable=0; lcd.rs=0; lcd.rw=0; lcd.enable=1; lcd.data= 0x38; //Function Set Command lcd.enable=0; lcd.rs=1; lcd.rw=1;

delay_us(200);

//Wait for more than 100us

//After this command the busy flag can be checked. for(i=0;i<=4;++i) lcd_send_byte(0,LCD_INIT_STRING[i]); } void lcd_gotoxy( BYTE x, BYTE y) { BYTE address; if(y!=1) address=lcd_line_two; else address=0; address+=x-1; lcd_send_byte(0,0x80 address); } void lcd_putc( char c) { switch (c) { case '\f' : lcd_send_byte(0,1); delay_ms(2); case '\n' case '\b' default } } char lcd_getc( BYTE x, BYTE y) { char value; lcd_gotoxy(x,y); while ( bit_test(lcd_read_byte(),7) ); // wait until busy flag is low lcd.rs=1; value = lcd_read_byte(); lcd.rs=0; return(value); } break; : lcd_gotoxy(1,2); break; : lcd_send_byte(0,0x10); break; : lcd_send_byte(1,c); break;

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy