|
|
View previous topic :: View next topic |
Author |
Message |
Arizona Chris
Joined: 20 Dec 2014 Posts: 69 Location: Arizona
|
Appreciate help with Serial LCD. |
Posted: Thu Jan 01, 2015 10:47 am |
|
|
Hello all,
We have finished the Embedded C programming book finally, and one last thing to try before ordering the full blown software is to try to get our Scott Edwards serial lcd to put out numbers and text. The display is set to run at 9600kb, 8N1 no parity. We have used this brand LCD for 12 years with PIC basic and have had no issues. I get just garbage on the display. Using the E3 board with the 18F14K50 chip. I've got a LED to flash every time a serial stream is sent, so I know the PIC is operating. An oscilloscope check on the data out pin shows clear serial data. Here is the code I have tried:
Code: | #include <e3.h>
#include <ios.h>
#use rs232(baud = 9600, xmit=PIN_B6, bits=8, parity=N, stream=SERIAL)
void main() {
while (true) {
char c = 14;
fputc(c,SERIAL);
//SERIAL << "HELLO" << endl;
//printf(12,"hello");
output_toggle(PIN_C6);
delay_ms(500);
}
}
|
I have tried all three methods seen here, but get garbage. The LCD works perfect on our other projects programed with Pic basic.
What Am I missing here? I coudnt find anything specific on the forum search.
Chris |
|
|
gpsmikey
Joined: 16 Nov 2010 Posts: 588 Location: Kirkland, WA
|
|
Posted: Thu Jan 01, 2015 11:12 am |
|
|
Couple of things to check - you say "9600kb" - I assume you mean 9600 baud (sometimes the obvious is so obvious you overlook it). Check the serial data with the scope - are the bit times correct (not just a bit stream there). I have not used that LCD module, but many of the modules we work with have a setup / reset time and either ignore stuff sent to them before they have completed init or show garbage. Are you using TTL levels or RS-232 levels (what does the module require?). Remember that RS-232 is inverted data from the TTL level.
mikey _________________ mikey
-- you can't have too many gadgets or too much disk space !
old engineering saying: 1+1 = 3 for sufficiently large values of 1 or small values of 3 |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19552
|
|
Posted: Thu Jan 01, 2015 11:28 am |
|
|
If you are talking about the Scott Edwards backpack units, these are designed to connect to _inverted_ serial data. They will connect directly to a PC serial port, _or_ to a processor sending inverted 5v serial. Change your RS232 setup to:
#use rs232(baud = 9600, xmit=PIN_B6, bits=8, parity=N, INVERT, stream=SERIAL)
As gpsmikey says pause a little before sending. |
|
|
Arizona Chris
Joined: 20 Dec 2014 Posts: 69 Location: Arizona
|
LCD serial |
Posted: Thu Jan 01, 2015 1:38 pm |
|
|
We are making progress! I can communicate with the display now, it indeed wants inverted data. I was able to control the backlight, clear screen, and send either single or a string of characters to the screen perfectly using the code below. To send an integer, I finally ended up with fprintf and defined the output as the stream defined at the top and use %u just before the variable to get it to show up on the LCD.
Thank you for all your help, you guys are amazing.
Chris
Code: | #include <e3.h>
#use rs232(baud = 9600, xmit=PIN_B6, bits=8, parity=N, INVERT, stream=SERIAL)
void main() {
while (true) {
char c = 'a';
int x = 255;
fputc(12,SERIAL); //clr screen
delay_ms(10);
fputc(14,SERIAL); //turn on backlight
delay_ms(10);
//fputc('A',SERIAL); //send SINGLE character "A" to display
//fputc('2',SERIAL); //sends a SINGLE character "2" to display
//fputs("DATA = ",SERIAL); //sends a string to the display
fprintf(SERIAL,"%u"X); //sends integer to lcd
delay_ms(500);
}
} |
This last try sent a nice 255 to the display. Next I try int16 and maybe float... |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9246 Location: Greensville,Ontario
|
|
Posted: Thu Jan 01, 2015 7:03 pm |
|
|
If you press F11 while your project is open, then the CCS C manual 'magically' appears. Gives you near instant access to answer most of your questions.
You can '-' to minimize it,very handy especially print formatting,options to use rs232(...) , etc.
hth
jay |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|