Exact match. Not showing close matches.
PICList
Thread
'[PIC]LCDs and nanowatt PICs..'
2005\08\19@162221
by
Mike Harrison
Just been experimenting with a PIC16F917 for an LCD application.
Due to the number of segments I need, I'm not using the internal LCD controller, but doing
direct-drive LCD control in software.
I was highly impressed by the low current consumption of these parts - waking every 16ms on the WDT
to generate the LCD AC drive, it draws just 1.6uA at 3V
Running the 32K Timer 1 oscillator adds about another 3.5uA
PIC based wristwatch anyone..?
2005\08\19@171429
by
Jinx
> to generate the LCD AC drive, it draws just 1.6uA at 3V
> Running the 32K Timer 1 oscillator adds about another 3.5uA
They're good figures. What size segments ? Care to share
the drive circuitry ?
2005\08\19@174143
by
Mike Harrison
On Sat, 20 Aug 2005 09:14:02 +1200, you wrote:
>> to generate the LCD AC drive, it draws just 1.6uA at 3V
>> Running the 32K Timer 1 oscillator adds about another 3.5uA
>
>They're good figures. What size segments ? Care to share
>the drive circuitry ?
This was a handful of segments on a 1/2 inch LCD I had lying around - number of segs didn't make a
huge difference - maybe 0.2uA for adding 8 'on' segments,
No drive circuitry - LCD connected direct to IO pins (static drive)
2005\08\19@220301
by
scott larson
on a related topic:
I just made a 5x7 LED matrix display driver using a PIC16F84A, but i
can't fit each letter of the alphabet into the chip due to the small
memory, so i'm planning on upgrading the PIC. the current cunsumption
is about 25-30mA at 5V.
On 8/19/05, Mike Harrison <spam_OUTmikeTakeThisOuT
whitewing.co.uk> wrote:
{Quote hidden}> On Sat, 20 Aug 2005 09:14:02 +1200, you wrote:
>
> >> to generate the LCD AC drive, it draws just 1.6uA at 3V
> >> Running the 32K Timer 1 oscillator adds about another 3.5uA
> >
> >They're good figures. What size segments ? Care to share
> >the drive circuitry ?
>
> This was a handful of segments on a 1/2 inch LCD I had lying around - number of segs didn't make a
> huge difference - maybe 0.2uA for adding 8 'on' segments,
>
> No drive circuitry - LCD connected direct to IO pins (static drive)
>
>
>
> -
2005\08\19@231242
by
Maarten Hofman
Rochester, 19 augustus 2005.
As I mentioned already numerous times, I agree that you should get
away from the 16F84A as soon as possible. However, I disagree that
there is too little memory to fit every letter of the alphabet in
it... Even without compressing it, you only need five words for one
letter. Assuming you have the full 128 character 7-bit ASCII set, that
means you still only need 640 words. The remaining 384 words should be
enough for many other applications: an RS-232 interface receiving said
characters, something that displays a text letter for letter, or even
a system that reads a keyboard and outputs the typed character to the
display.
But maybe you have some application that I am unaware of that does
need more memory. But fitting the alphabet in it shouldn't be
limiting. 25-30mA is pretty good, for a LED matrix of 5x7. My most
economical single LED takes at least 5mA.
Greetings,
Maarten Hofman.
2005\08\20@013037
by
Justin Richards
I used 8 bits to describe numeric chars on a hc11 (which was limited
to 512bytes of program space IIRC ) that was driving a (3 x 64) x 64
dotmatrix display. Each bit in the byte determines if a 'segment' is
off or on so I treated the LCD dot matrix display a little like a 7
seg display. There was an added bonus that I could easily double font
size and font change shape.
You could use 14 bit (2 bytes) to describe alpha numerics chars ie
treat it like a star burst display.
The tradeoff is a small software overhead and you cant create any char
pattern but you do save on memory space.
Justin
On 8/20/05, Maarten Hofman <.....cashimorKILLspam
@spam@gmail.com> wrote:
{Quote hidden}> Rochester, 19 augustus 2005.
>
> As I mentioned already numerous times, I agree that you should get
> away from the 16F84A as soon as possible. However, I disagree that
> there is too little memory to fit every letter of the alphabet in
> it... Even without compressing it, you only need five words for one
> letter. Assuming you have the full 128 character 7-bit ASCII set, that
> means you still only need 640 words. The remaining 384 words should be
> enough for many other applications: an RS-232 interface receiving said
> characters, something that displays a text letter for letter, or even
> a system that reads a keyboard and outputs the typed character to the
> display.
>
> But maybe you have some application that I am unaware of that does
> need more memory. But fitting the alphabet in it shouldn't be
> limiting. 25-30mA is pretty good, for a LED matrix of 5x7. My most
> economical single LED takes at least 5mA.
>
> Greetings,
> Maarten Hofman.
>
> -
2005\08\20@074041
by
William Chops Westfield
On Aug 19, 2005, at 7:03 PM, scott larson wrote:
> I just made a 5x7 LED matrix display driver using a PIC16F84A, but i
> can't fit each letter of the alphabet into the chip due to the small
> memory...
Really? 5 bytes per character, right? 40 characters gives you
most of what you need; add 26 if you want lower case. 96
or so is all of printable ascii, and should fit in just a bit
over half the available memory (not that upgrading beyond an 84a
isn't a good idea anyway...)
Old computers used to use "radix 40" for symbols and things,
since you could get 6 characters in 32 bits (now you know where
6-character filenames came from!)
I have a project in mind to drive some dot-matrix LED displays
from a PIC; I was hoping I'd get away with a pretty tiny PIC;
did you find something I'm missing?
BillW
2005\08\20@195813
by
scott larson
|
Well, this is only the second project/program i've ever written for
the PIC, and i'm not a very good programmer. The first was a simple
stepper motor driver. I didn't try to minimize the code, but i know i
can. This was just a simple program (written in PICBASIC) to learn how
the LED matrix works. how i did it: the matrix is 5 common cathodes (5
columns), so i light the proper LEDs one column at a time, pause for
2ms, and go onto the next column, and cycle about 10 times. i did it
late one night, but looking at my code the next day, i see many ways i
can shorten it.
I'm a college student interested in microcontrollers, but i haven't
gotten that far in my studies yet, so i'm learning on my own time
during summer.
If anyone can post a small example of how i can minimize the byte
count per letter, i would greatly appreciate it.
Thanks,
Scott
On 8/20/05, William Chops Westfield <westfw
KILLspammac.com> wrote:
{Quote hidden}> On Aug 19, 2005, at 7:03 PM, scott larson wrote:
>
> > I just made a 5x7 LED matrix display driver using a PIC16F84A, but i
> > can't fit each letter of the alphabet into the chip due to the small
> > memory...
>
> Really? 5 bytes per character, right? 40 characters gives you
> most of what you need; add 26 if you want lower case. 96
> or so is all of printable ascii, and should fit in just a bit
> over half the available memory (not that upgrading beyond an 84a
> isn't a good idea anyway...)
>
> Old computers used to use "radix 40" for symbols and things,
> since you could get 6 characters in 32 bits (now you know where
> 6-character filenames came from!)
>
> I have a project in mind to drive some dot-matrix LED displays
> from a PIC; I was hoping I'd get away with a pretty tiny PIC;
> did you find something I'm missing?
>
> BillW
>
> -
2005\08\20@203118
by
Jinx
> If anyone can post a small example of how i can minimize the
> byte count per letter, i would greatly appreciate it
Hi Scott, data tables is another reason why it's preferable to drop
the micro Fred and Barney would have used and move on to
something like the F88. I won't go into all the other reasons, but
the F88 is tremendous value for money - it's more than an F84
with go-faster stripes. The F84 cannot read its own program
memory, so you are pretty much limited to RETLW. Half of the
14-bit byte is "wasted". The F88 can read program memory, so
two 7-bit data bytes can be stored together. See Section 3.5 of
the F88 manual
http://ww1.microchip.com/downloads/en/DeviceDoc/30487b.pdf
Microchip's site is down at the moment, so I'll quote from my d/s
3.5 Reading FLASH Program Memory
To read a program memory location, the user must
write two bytes of the address to the EEADR and
EEADRH registers, set the EEPGD control bit
(EECON1<7>), and then set control bit RD
(EECON1<0>). Once the read control bit is set, the
program memory FLASH controller will use the second
instruction cycle to read the data. This causes the
second instruction immediately following the "BSF
EECON1,RD" instruction to be ignored. The data is
available in the very next cycle in the EEDATA and
EEDATH registers; therefore, it can be read as two
bytes in the following instructions. EEDATA and
EEDATH registers will hold this value until another read
or until it is written to by the user (during a write
operation).
EXAMPLE 3-3: FLASH PROGRAM READ
BANKSEL EEADRH ; Select Bank of EEADRH
MOVF ADDRH, W ;
MOVWF EEADRH ; MS Byte of Program
; Address to read
MOVF ADDRL, W ;
MOVWF EEADR ; LS Byte of Program
; Address to read
BANKSEL EECON1 ; Select Bank of EECON1
BSF EECON1, EEPGD ; Point to PROGRAM
; memory
BSF EECON1, RD ; EE Read
;
NOP ; Any instructions
; here are ignored as
NOP ; program memory is
; read in second cycle
; after BSF EECON1,RD
BANKSEL EEDATA ; Select Bank of EEDATA
MOVF EEDATA, W ; DATAL = EEDATA
MOVWF DATAL ;
MOVF EEDATH, W ; DATAH = EEDATH
MOVWF DATAH
2005\08\20@211956
by
scott larson
|
thank you for the suggestion. i've received some samples from the
microchip website, i guess the next sample i request will include the
88. i definitely want to get away from the 84 and use the features of
the other PICs.
I still would like to know an efficient way to program the letters for
a 5x7 LED matrix. i'll start google-ing.
On 8/20/05, Jinx <.....joecolquittKILLspam
.....clear.net.nz> wrote:
{Quote hidden}> > If anyone can post a small example of how i can minimize the
> > byte count per letter, i would greatly appreciate it
>
> Hi Scott, data tables is another reason why it's preferable to drop
> the micro Fred and Barney would have used and move on to
> something like the F88. I won't go into all the other reasons, but
> the F88 is tremendous value for money - it's more than an F84
> with go-faster stripes. The F84 cannot read its own program
> memory, so you are pretty much limited to RETLW. Half of the
> 14-bit byte is "wasted". The F88 can read program memory, so
> two 7-bit data bytes can be stored together. See Section 3.5 of
> the F88 manual
>
> ww1.microchip.com/downloads/en/DeviceDoc/30487b.pdf
>
> Microchip's site is down at the moment, so I'll quote from my d/s
>
> 3.5 Reading FLASH Program Memory
>
> To read a program memory location, the user must
> write two bytes of the address to the EEADR and
> EEADRH registers, set the EEPGD control bit
> (EECON1<7>), and then set control bit RD
> (EECON1<0>). Once the read control bit is set, the
> program memory FLASH controller will use the second
> instruction cycle to read the data. This causes the
> second instruction immediately following the "BSF
> EECON1,RD" instruction to be ignored. The data is
> available in the very next cycle in the EEDATA and
> EEDATH registers; therefore, it can be read as two
> bytes in the following instructions. EEDATA and
> EEDATH registers will hold this value until another read
> or until it is written to by the user (during a write
> operation).
>
> EXAMPLE 3-3: FLASH PROGRAM READ
>
> BANKSEL EEADRH ; Select Bank of EEADRH
> MOVF ADDRH, W ;
> MOVWF EEADRH ; MS Byte of Program
> ; Address to read
> MOVF ADDRL, W ;
> MOVWF EEADR ; LS Byte of Program
> ; Address to read
> BANKSEL EECON1 ; Select Bank of EECON1
> BSF EECON1, EEPGD ; Point to PROGRAM
> ; memory
> BSF EECON1, RD ; EE Read
> ;
> NOP ; Any instructions
> ; here are ignored as
> NOP ; program memory is
> ; read in second cycle
> ; after BSF EECON1,RD
> BANKSEL EEDATA ; Select Bank of EEDATA
> MOVF EEDATA, W ; DATAL = EEDATA
> MOVWF DATAL ;
> MOVF EEDATH, W ; DATAH = EEDATH
> MOVWF DATAH
>
> -
2005\08\20@214906
by
Jinx
> I still would like to know an efficient way to program the letters for
> a 5x7 LED matrix. i'll start google-ing.
Sorry, I didn't mean to side-step the question. Justin's idea seems to
be worth pursuing. Look at the shapes in a different way - find out
what they have in common and try to rationalise. For example, E is
only one "segment" away from F, A is one away from B and so on.
Maybe look at the component rows or columns of each character
and work out how each character could be made from stock parts.
For example, A. From left to right, it has the bit pattern something
like 1111111, 1001000, 1001000, 1001000, 1111111. Or top to
bottom, 11111,10001, 10001, 11111, 10001, 10001, 10001
These component parts could be stored in another table. The letter
you want to display is represented not by its actual bit pattern, but
a series of indices to retrieve component parts. Think of it as having
a shopping list
More... (looser matching)
- Last day of these posts
- In 2005
, 2006 only
- Today
- New search...