|
|
View previous topic :: View next topic |
Author |
Message |
Thallion
Joined: 31 Jan 2011 Posts: 1
|
LCD display GLK12232-25-SM from Matrix Orbital |
Posted: Mon Jan 31, 2011 3:41 pm |
|
|
Hi!
I'm experimenting with the LCD display GLK12232-25-SM from Matrix Orbital.
The code below works, but if I put the code between the "//mogd.h" markings in a separate file (called "mogd.h") and add the line "#include "mogd.h"" at the top of the file, I get the error "Unidentified identifer -- putchar for every line containing "putchar" in mogd.h - why?
Code: | #include <16F648A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES MCLR //Master Clear pin enabled
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8)
//mogd.h
void mogd_clear (void) {
putc (0xfe);
putc (0x58);
}
void mogd_home (void) {
putc (0xfe);
putc (0x48);
}
void mogd_goto (int col, int row) {
putc (0xfe);
putc (0x47);
putc (col);
putc (row);
}
void mogd_gotoxy (int col, int row) {
putc (0xfe);
putc (0x47);
putc (col);
putc (row);
}
void mogd_drawline (int x1, int x2, int y1, int y2) {
putc (0xfe); // x = 0-31, y = 0-121
putc (0x6c);
putc (x1);
putc (x2);
putc (y1);
putc (y2);
}
void mogd_contline (int x, int y) {
putc (0xfe);
putc (0x65);
putc (x);
putc (y);
}
void mogd_pixel (int x, int y) {
putc (0xfe);
putc (0x65);
putc (x);
putc (y);
}
void mogd_setcolor (int color) { // Set drawing color
putc (0xfe); // 0 = White, 255 = Black
putc (0x63);
putc (color);
}
void mogd_drawrect (int type, int color, int x1, int x2, int y1, int y2) {
if (type == 0) { // Type 0 = Outline, 1 = Solid
putc (0xfe); // Color 0 = White, 255 = Black
putc (0x72);
putc (color);
putc (x1);
putc (x2);
putc (y1);
putc (y2);
}
else {
putc (0xfe); // GPIO = 1 or 2
putc (0x78);
putc (color);
putc (x1);
putc (x2);
putc (y1);
putc (y2);
}
}
void mogd_bargraph_init (int ref, int type, int x1, int x2, int y1, int y2) {
putc (0xfe);
putc (0x67);
putc (ref); // Ref = 0-15
putc (type); // Type 0 = Vertical Upwards
putc (x1); // Type 1 = Horizontal Rightwards
putc (x2); // Type 2 = Vertical Downwards
putc (y1); // Type 3 = Horizontal Leftwards
putc (y2); // x/y = Placement/Size (Pixels)
}
void mogd_bargraph (int ref, int value) {
putc (0xfe); // Ref = 0-15
putc (0x67); // Value (Pixels, see bargraph_init)
putc (ref);
putc (value);
}
void mogd_backlight (int state, int minutes) {
if (state == 0) { // 0 = Off, 1 = On,
putc (0xfe); // If minutes = 0, then continuous on
putc (0x46);
}
else {
putc (0xfe);
putc (0x42);
putc(minutes);
}
}
void mogd_gpio (int state, int gpio) {
if (state == 0) { // 0 = Off, 1 = On,
putc (0xfe); // GPIO = 1 or 2
putc (0x56);
putc (gpio);
}
else {
putc (0xfe);
putc (0x57);
putc (gpio);
}
}
void mogd_autoscroll (int state) {
if (state == 0) { // 0 = Off, 1 = On,
putc (0xfe); // GPIO = 1 or 2
putc (0x52);
}
else {
putc (0xfe);
putc (0x51);
}
}
void mogd_contrast (int value, int save) {
if (save == 0) { // Save 0 = No, 1 = Yes
putc (0xfe); // Value = 0-255
putc (0x50);
putc (value);
}
else {
putc (0xfe);
putc (0x91);
putc (value);
}
}
void main (void) {
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//mogd.h
mogd_clear ();
printf("Hello world... ");
} |
Also, writing
Code: | void mogd_clear (void) {
putc (0xfe);
putc (0x58);
}
|
works, but writing
Code: | void mogd_clear (void) {
printf (/xFE /x58);
}
|
does not work (in practice, I'm not getting any errors). Why?
Also, writing printf ("Hello world..."); results in "Hello world." on the display, while writing printf ("Hello world... "); results in "Hello world..." on the display - is that an error with the display, or the code? |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19569
|
|
Posted: Mon Jan 31, 2011 4:34 pm |
|
|
It needs to be included where the top //mogd.h line is, not 'at the top of the file'. Putc/getc, are not defined, till the #use rs232 line. This needs the clock statement, and these need the fuses. The order in CCS, needs basically to be:
Processor include/define
Any other #device statements (ADC=10 etc.)
Fuses
clock setup
RS232/I2C setups
Then, include other code
Then the main code.
You are using forward slash, not backslash for the printf. This will just print (hence no error), but wont give the value you want.
Best Wishes |
|
|
|
|
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
|