View previous topic :: View next topic |
Author |
Message |
SamRekem
Joined: 15 Sep 2009 Posts: 4
|
Implementing Variable Integers on an LCD screen |
Posted: Mon Sep 28, 2009 1:15 am |
|
|
Was wondering if someone could supply me with sample code of a clock displayed via an LCD screen either using the Flexible LCD Driver or the CCS LCD Driver. Any help would be appreciated.
I've attempted it so far:
Code: |
#include <16F871.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000) // 4Mhz Crystal is Used
#include <stdio.h>
#include <flex_lcd.c>
unsigned char sec=0;
void main()
{
lcd_init();
while(1)
{
printf(lcd_putc,"\fSeconds: %u",sec);
delay_ms(1000);
sec++;
}
}
|
However it tends to run into a multitude of errors. I've also attempted it by changing bits of hardware around and used the CCS LCD Driver, the results are similar. Help! |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Mon Sep 28, 2009 2:27 pm |
|
|
Quote: | However it tends to run into a multitude of errors |
Explain what you mean by this. You should write the program.
It would be a good learning experience. We should not do it for you.
These example files show how to use printf to display the date and time:
Quote: |
c:\program files\picc\examples\ex_rtclk.c
c:\program files\picc\examples\ex_rtc.c
|
This one is a complicated example of a clock based on a PIC timer:
Quote: | c:\program files\picc\examples\ex_rtctimer.c |
|
|
|
SamRekem
Joined: 15 Sep 2009 Posts: 4
|
|
Posted: Tue Sep 29, 2009 7:38 am |
|
|
Thank You
Last edited by SamRekem on Tue Sep 29, 2009 7:41 am; edited 1 time in total |
|
|
SamRekem
Joined: 15 Sep 2009 Posts: 4
|
|
Posted: Tue Sep 29, 2009 7:40 am |
|
|
Well the clocking program was really just a method to test the printf command and lcd_putc with a changing variable, I'm partially certain the contrast is to blame due the the consistent need to reset it after every variable change. I was more curious if I was in fact making errors in the code. I'm fairly new with working is the PIC series of microcontrollers, and with the ccs compiler. The LCD capability to display variable integers is just a small part of a much larger project.
For the most part of the project I have the timing functions working, the 4x4 keypad working (I tested it with a several LED attached to the processor to indicate which key had been pressed and where)
What I don't understand is why i don't have to reset the contrast when I run code like this
Code: |
while(1)
{
lcd_putc("LED ON");
output_high(PIN_E0);
delay_ms(5000);
lcd_putc("LED OFF");
output_low(PIN_E0);
delay_ms(5000);
}
|
however if i use a printf command i consistently have to reset the contrast for it to display anything after the first line. |
|
|
Ttelmah Guest
|
|
Posted: Tue Sep 29, 2009 8:46 am |
|
|
Who's actual LCD are you using. Part number?.
On _some_ LCD's, there are timing issues, with things like the reset being slower than on the original Hitachi chipset that the drivers are meant to operate. On these it may be necessary to slow down some of the operations a little. However this will normally result in corrupted data, rather than contrast changes.
How is your contrast voltage actually being derived?. How long are the connections?. How is the PIC supplied?. What smoothing is present (on the LCD supply, the PIC supply, and the contrast line).
A contrast shift, almost certainly implies an unstable voltage somewhere (it will also change with temperature, but not significantly over normal room ranges).
Best Wishes |
|
|
SamRekem
Joined: 15 Sep 2009 Posts: 4
|
|
Posted: Tue Sep 29, 2009 9:37 am |
|
|
LCD Part No. QP5520 the chip-set is based on the Hitachi. Contrast is being derived by a 10k potentiometer, connections are roughly 10-15cm via Ribbon Cable, power is supplied by a 5v regulator with two capacitors a 100uf and 0.1uf cap to remove additional noise. Right now the regulator is supplied with an old PC power supply running at 12V DC. However, later on I plan to supply it with a car battery. (our project has to be portable.)
The pic is programmed on a homemade PCB demo board. (as by that I mean all the programming connections are specific, with all ports running single copper lines with 3 component holes per line) I didn't use a veroboard. (programming works perfectly) |
|
|
|