Jump to content
Electronics-Lab.com Community


  • Content Count

  • Joined

  • Last visited

  1. For some time I have been working with some more basic electronics projects and have been familiar with electronic theory and the physics behind it. I have now begun working on a geiger counter project, which has gone well for the most part. All of my actual electronics (creating GM tube voltage, detection or ionising radiation) have worked fine. I have only recently, however, begun to work with interfacing an LCD with a PIC18F4550. My intended use of this is to display CPM digitally -- x number of counts in a certain amount of time, display to LCD. I am familiar with PIC Timers, so I didn't think there would be an issue with that code. My issue here is that I attempted to write a "hello world" program on my 16x2 LCD, of course partially skidding the code from online as I had never used an LCD with a PIC before. I know that my PIC is hooked up to the LCD correctly and I am getting current on the pins, implying that a signal is being sent. Could anybody help? Code: <code> #if defined(__XC) #include <xc.h> #elif defined(HI_TECH_C) #include <htc.h> #endif #include <stdint.h> / #include <stdbool.h> #include <xc.h> #include "system.h" #include "user.h" #include <htc.h> #define _XTAL_FREQ 1000000 #define rs RA0 #define rw RA1 #define en RA2 //LCD Data pins #define lcdport PORTB void lcd_init(); void lcdcmd(unsigned char); void lcddata(unsigned char); unsigned char data[20]="hello world"; unsigned int i = 0; void main(void) { TRISA=0; // Configure Port A as output port //PORTA=0; TRISB=0; // Configure Port B as output port //PORTB=0; lcd_init(); // LCD initialization while(data != '\0') { lcddata(data); // Call lcddata function to send characters // one by one from ?data? array i++; __delay_ms(300); } } void lcd_init() { lcdcmd(0x38); lcdcmd(0x0C); lcdcmd(0x01); lcdcmd(0x06); lcdcmd(0x80); } void lcdcmd(unsigned char cmdout) { lcdport=cmdout; rs=0; rw=0; en=1; __delay_ms(10); en=0; } void lcddata(unsigned char dataout) { lcdport=dataout; rs=1; rw=0; en=1; __delay_ms(10); en=0; } </code>
  • Create New...