Maker Pro
Maker Pro

exporting a String to an LCD

gregfox

Mar 25, 2013
164
Joined
Mar 25, 2013
Messages
164
Hi I have the following code
/code
/*
Blank Simple Project.c
http://learn.parallax.com/propeller-c-tutorials
*/
#include "simpletools.h" // Include simple tools

//DataPins "20 21 22 23 24 25 26 27"
#define RS 17 //Register Select
#define EN 18 // Enable (Starts data read/write.)After E allows R/W it must then be turned off.
#define RW 19 //Read/write
#define DATA {27 26 25 24 23 22 21 20}

void inst(void);
void data(void);
void latch(void);
void Initialize(void);
void setout(void);
void setin(void);
void wr8bits(int val);


int main()
{ //main start

initialize(); //initialize LCD display (low(RS), low(RW), high(EN)
inst(); //Send Instruction Function Select routine (low(RS), low(RW))
//DATA Send Data 0X38 (set 8 bit mode) Send This instruction on LCD databus
set_outputs (27, 20, 0x38); //set 8 bit mode, 2-lines Font 5x7
pause(2);
latch();

//DATA Send 0X0f Second Instruction on LCD databus
inst();
set_outputs (27, 20, 0x0F); //Display on, Cursor on, Cursor blink
latch();

inst(); //(low(RS), low(RW))
set_directions (27, 20, 0xFF); //instead of 0b11111111 0xFF can be used (outputs)
set_outputs (27, 20, 0x1); //CLEAR display 0b00000001
latch();
pause(2000);



set_directions (27, 20, 0xFF); //instead of 0b11111111 0xFF can be used (outputs)
data(); //Change the input type to Data.(before it was instruction input)


set_outputs (27, 20, 0x47); //Send G send 47 HEX (G) to pins 20 to 27
latch();
set_outputs (27, 20, 0x52); //Send R
latch();
set_outputs (27, 20, 0x45); //Send E
latch();
set_outputs (27, 20, 0x47); //Send G

latch();
return(0);
inst();
set_outputs (27, 20, 0xC0); //Cusor on line 2
latch();
void inst(void) //Instruction select routine
{
low(RS); //RS low
low(RW); //RW low
}
void data(void) // //Change the input type to Data.(before it was instruction input)
{
high(RS); //RS high
low(RW); //RW low
}

void latch(void) //->EN<- Latch the above instruction once.
{

high(EN); //EN high
pause(2); //wait 30mS
low(EN); //EN low
pause(2); //wait 30 mS
high(EN); //EN high
// p ause(50); //wait 50mS
}

void initialize(void)
{
low(RS);
low(RW);
high(EN);
pause(2); //some LCDs takes time to initialize at startup
}

void setout(void)
{
set_directions (27, 20, 0xFF); //instead of 0b11111111 0xFF can be used (outputs)
}



void setin(void)
{
set_directions (27, 20, 0x0); //instead of 0b00000000 0xFF can be used (inputs)
}
void wr8bits(int val)
{
DIRA |= 0xff << 20;
OUTA = (OUTA & ~(0xff << 20)) | (val << 20);
}

code/
As can be seen (in red), I'm sending one character at a time to the LCD, I've been working on a way to sent a string, instead of one character at a time. Any help?
 

CDRIVE

Hauling 10' pipe on a Trek Shift3
May 8, 2012
4,960
Joined
May 8, 2012
Messages
4,960
My skill in 'C' is just about zip but doesn't the Propeller accept "text strings"? Most languages recognize strings by putting them between "quotes".

BTW, since my C and Propeller experience is zero I was reluctant to reply but since no one else has I didn't want to see your post just hanging here unanswered.

Chris
 

gregfox

Mar 25, 2013
164
Joined
Mar 25, 2013
Messages
164
Thanks, I worked out an answer below
/code
inst();

set_outputs (26,19, 0xC0); //Cusor on line 2

latch();

char a[] = ("This is line 2"); // Initialize the array

for(int i = 0; i < 14; i++) // Count i from 0 to 14

{

pause(10);

printf("i is now Decimal=%d HEX=%x VALUE=%x \n",i,i,a ); // Display i, array element & value

data();

set_outputs (26,19, (a)); //Send LINE 2

//pause(100);

latch();

}
code/
 
Top