| 
	
	|  |  |  
	
		| 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: 19967
 
 
 
			    
 
 | 
			
				|  |  
				|  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
 
 |