| 
	
	|  |  |  
	
		| View previous topic :: View next topic |  
		| Author | Message |  
		| dendenden98 
 
 
 Joined: 28 Jun 2011
 Posts: 5
 
 
 
			    
 
 | 
			
				| lcd_getc(x,y) don't work? |  
				|  Posted: Tue Jun 28, 2011 6:20 pm |   |  
				| 
 |  
				| Hi, 
 When I use my LCD program with lcd_getc(x,y) functions in PROTEUS. My program is run very good. But when I work in real circuit all of the other LCD functions runs, but lcd_getc(x,y) didn't. For example;
 
 char ch;
 ....
 
 printf(lcd_putc,"\fHello");
 
 ch=lcd_getc(2,1);
 
 printf(lcd_putc,"\n%c",ch);
 
 delay_ms(1500);
 
 I see in LCD:
 
 1. Line=Hello
 2.Line=_           (I see bold rectangle in this cursor. Normally I should  see 'e' character. I see 'e' character in PROTEUS, but I don't see 'e' character in the real circuit)
 |  |  
		|  |  
		| temtronic 
 
 
 Joined: 01 Jul 2010
 Posts: 9588
 Location: Greensville,Ontario
 
 
			    
 
 | 
			
				|  |  
				|  Posted: Tue Jun 28, 2011 8:27 pm |   |  
				| 
 |  
				| Quick comments 
 Do you have the LCD properly wired up? Show us your schematic of your hardware NOT the Proteus 'schematic'.
 
 What PIC, compiler version, LCD driver ?
 
 What LCD module? Have you the correct timing sequences for that LCD?
 |  |  
		|  |  
		| dendenden98 
 
 
 Joined: 28 Jun 2011
 Posts: 5
 
 
 
			    
 
 | 
			
				|  |  
				|  Posted: Wed Jun 29, 2011 2:03 am |   |  
				| 
 |  
				| I wired up LCD correct. Because, other LCD functions are runs good. Only lcd_getc(x,y) functions don't run. I use lcd.c driver in PIC C directory. I use PIC16F877 and I try 2x16 character LCD. My compiler version is 4.107. I don't know I have correct timing for LCD. But all LCD functions runs in LCD driver except lcd_getc(x,y). |  |  
		|  |  
		| Ttelmah 
 
 
 Joined: 11 Mar 2010
 Posts: 19966
 
 
 
			    
 
 | 
			
				|  |  
				|  Posted: Wed Jun 29, 2011 7:31 am |   |  
				| 
 |  
				| Seriously, _try it with a real chip_. 
 I have Proteus, hundreds of versions, right up to the latest 7.9 beta. Love it as a schematic design/PCB package, and it's analog simulation is also good, _but_ it's PIC emulation, and that of many digital peripherals, is not reliable, and not worth using in general. I'd suspect that Proteus, is simply not emulating the data read operation from the LCD, which is why it won't work for you.
 
 flex_lcd, can be configured to be 'write only', not using the R/W line, in which case the read function won't work, but the standard LCD driver, _requires_ data returns from the chip, reading the 'busy' status line. So all your operation have to be working, it is just that you are not getting the character data back - hence the suspicion that the emulation does not do this correctly - few people ever use the read function (after all if you send data to the LCD, you know what should be there!.....), so it is probably just something that Proteus does not bother to emulate.
 
 Best Wishes
 |  |  
		|  |  
		| dendenden98 
 
 
 Joined: 28 Jun 2011
 Posts: 5
 
 
 
			    
 
 | 
			
				|  |  
				|  Posted: Wed Jun 29, 2011 8:00 am |   |  
				| 
 |  
				|  	  | Quote: |  	  | Seriously, _try it with a real chip_.
 
 I have Proteus, hundreds of versions, right up to the latest 7.9 beta. Love it as a schematic design/PCB package, and it's analog simulation is also good, _but_ it's PIC emulation, and that of many digital peripherals, is not reliable, and not worth using in general. I'd suspect that Proteus, is simply not emulating the data read operation from the LCD, which is why it won't work for you.
 
 flex_lcd, can be configured to be 'write only', not using the R/W line, in which case the read function won't work, but the standard LCD driver, _requires_ data returns from the chip, reading the 'busy' status line. So all your operation have to be working, it is just that you are not getting the character data back - hence the suspicion that the emulation does not do this correctly - few people ever use the read function (after all if you send data to the LCD, you know what should be there!.....), so it is probably just something that Proteus does not bother to emulate.
 
 Best Wishes
 
 | 
 
 So What Can I do to solve this my problem?
 |  |  
		|  |  
		| Ttelmah 
 
 
 Joined: 11 Mar 2010
 Posts: 19966
 
 
 
			    
 
 | 
			
				|  |  
				|  Posted: Wed Jun 29, 2011 8:10 am |   |  
				| 
 |  
				| Use a real chip... |  |  
		|  |  
		| dendenden98 
 
 
 Joined: 28 Jun 2011
 Posts: 5
 
 
 
			    
 
 | 
			
				|  |  
				|  Posted: Wed Jun 29, 2011 8:35 am |   |  
				| 
 |  
				| I already use real LCD. I can't understand exactly what you mean that you say use a real chip. |  |  
		|  |  
		| PCM programmer 
 
 
 Joined: 06 Sep 2003
 Posts: 21708
 
 
 
			    
 
 | 
			
				|  |  
				|  Posted: Wed Jun 29, 2011 12:22 pm |   |  
				| 
 |  
				| I made a test program from your code, and I used the CCS lcd.c driver that comes with vs. 4.107, and I ran it on a PicDem2-Plus board (red vs.)
 and it works.  Here's the output:
 
 
 So I suspect a hardware problem or LCD driver configuration problem.
 Your LCD may not support reading.
 
 What's the manufacturer and part number of your LCD ?
 Did you build your own board or did you buy it ?   If you bought it,
 what's the manufacturer and part number of the board ?
 Post a list of the connections between the LCD and the PIC.
 Post how you configured the LCD driver to use those connections.
 
 Here's the test program:
 
  	  | Code: |  	  | #include <16F877.h>
 #fuses XT,NOWDT,PUT,BROWNOUT,NOLVP
 #use delay(clock=4000000)
 
 // This are the LCD pins for PicDem2-Plus (red board):
 #define LCD_ENABLE_PIN  PIN_A1
 #define LCD_RS_PIN      PIN_A3
 #define LCD_RW_PIN      PIN_A2
 #define LCD_DATA4       PIN_D0
 #define LCD_DATA5       PIN_D1
 #define LCD_DATA6       PIN_D2
 #define LCD_DATA7       PIN_D3
 
 #include <lcd.c>
 
 //======================================
 void main(void)
 {
 char ch;
 
 lcd_init();
 
 printf(lcd_putc,"\fHello");
 
 ch=lcd_getc(2,1);
 
 printf(lcd_putc,"\n%c",ch);
 
 delay_ms(1500);
 
 while(1);
 }
 
 
 | 
 |  |  
		|  |  
		| dendenden98 
 
 
 Joined: 28 Jun 2011
 Posts: 5
 
 
 
			    
 
 | 
			
				|  |  
				|  Posted: Wed Jun 29, 2011 9:53 pm |   |  
				| 
 |  
				| Thanks PCM Programmer. I re-build my LCD connection and it's run. But I don't understand in my old circuit, all LCD function runs except lcd_getc() function. But now I re-build my LCD connection and lcd_getc()  function is run in addition to other LCD functions. interesting. 
 Thanks to all who respond.
 |  |  
		|  |  
		|  |  
  
	| 
 
 | 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
 
 |