5x7 Display
Experiments
Page7
EXPERIMENT-17
ANIMATION-1
In a previous experiment we showed how to
scroll words across the screen. In this experiment we go one step further
and show how to create animation on the screen. Animation is the basis to
cartooning. A cartoon is made up of lots of frames called cells. These are
individually drawn by hand (or computer) and a good-quality cartoon requires
12 cells per second. This means a 1-hour movie-length cartoon requires over
400,000. Each cell is "shot twice" because movie film requires 24
frames per second.
Our 5x7 Display is much simpler. It consists of 35 dots or pixels and when
the screen is displaying a "Picture," it is called a CELL.
Firstly we will show how to make a CELL and how to display it on the Video
Screen for approx 1/10th of a second. This means you will need to produce 10
cells for each second of animation. Depending on the effect, you can a
cell-rate or frame-rate as low as 1 frame per second or as high as 10 frames
per second.
MAKING A CELL
Each picture or CELL is made up of 5x7 dots (=35 pixels) and the first thing to
do is draw each of the frames of the animation on a "storey-board."
The diagram below shows three CELLS. The first CELL is blank. It shows how
each of the 35 pixels has a hex value and file number. The first column
has 7 spaces representing the first 7 LEDs on the screen. These LEDs have
values starting at 01 for the bottom LED, then 02, 04, 08, 10, 20 and the
top LED has the value 40. These values correspond to the
first 7 places in file 11h. The 8th location in the file (value 80h) is
not used in this project. The second column corresponds to file 12h, then
file 13h, 14h and 15h.
To turn on a particular LED, the corresponding hex value must be placed in
one of the files. Each file will have a value from 00 to 7F. It's really
very simple when you know how. The bottom 4 LEDs are added together to get a
value between 00 and 0F, while the top three LEDs are added together to get
a value between 00 and 70. These two values are then put together to get a
value from 00 to 7F. In the first column of example 1, LEDs 8 and 4 are
required to be illuminated (we deal with the four lower LEDs first).
The fifteen hex values are: 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E,
F.
LEDs 08 and 04 = nine, A, B, C. = C = 0C
To turn on the first column in example1, file 11h is loaded with
1C.
To turn on the second column: 08 + 04 + 02 = nine, A, B, C, D,
E, = 0E The top two LEDs are 20 + 40 = 60.
File 12h is loaded with 6E.
To turn on the third column: 08 + 01 = 09 10 + 20 =
30. File 13h must be loaded with 39h.
To turn on the fourth column: file 14h must be loaded with 04
To turn on the fifth column file 15h must be loaded with 55h
For example2:
File 11h must be loaded with 22h
File 12h must be loaded with 1Eh
File 13h must be loaded with 07h
File 14h must be loaded with 71h
File 15h must be loaded with 7Fh
The small letter "h" indicates the number is hexadecimal as
"22" can be an "ordinary number - twenty two - or a
hexadecimal 22 - equal to thirty four.
The final step is deciding the duration for each frame. It has been set at a
default value of 2 frames per second. You can run your animation and change
any of the values at any time.
You can add or delete a frame at any time. To add a frame simply place it in
the program at the place where you want it to appear and give it a name.
Frames do not have to be numbered. They are simply placed in the program and
they will be displayed in that order.
Here is the program to display example 1(above) on the screen for 1/2sec.
You will need to reset the micro after the program has displayed the picture
for 1/2 sec. Slide the run/reset:program switch to pgm then to run/reset to
view the program again.
|
Experiment-17
for "5x7 Display" Project
;PIC16F84 and only F84 chip
; Display
example1 for 1/2 sec:
Start
ORG 0x00
BSF 03,5
;Go to page1 for setting-up the ports
MOVLW 00h
;Put 00 into W
MOVWF 05h
;to make port 5 (port A) all output
MOVWF 06h
;and make port 6 (port B) all output
BCF 03,5
;Go to page0 for programming
GOTO Main
Frame1 MOVLW 1Ch ;place the 5 values into the 5
MOVWF 11h
; files to produce the pattern
MOVLW 6Eh
; shown in example1 above.
MOVWF 12h
MOVLW 39h
MOVWF 13h
MOVLW 04h
MOVWF 14h
MOVLW 55h
MOVWF 15h
BSF 05,1
;Reset 4017
NOP
BCF 05,1
MOVF 11h,0
;Move file 11 into W
MOVWF 06h
CALL DelD
MOVF 12h,0
;Move file 12 into W
MOVWF 06h
CALL DelD
MOVF 13h,0
;Move file 13 into W
MOVWF 06h
CALL DelD
MOVF 14h,0
;Move file 14 into W
MOVWF 06h
CALL DelD
MOVF 15h,0
;Move file 15 into W
MOVWF 06h
CALL DelD
RETURN
DelD DECFSZ 1Bh,1
GOTO DelD
MOVLW 00h
;Zero port B to prevent mirroring
MOVWF 06
Clk BSF 05,0
;Clock the 4017
NOP
BCF 05,0
RETURN
Main MOVLW 50h
;Each 10h represents 100mS (10 frames/sec)
MOVWF 0Ch
Main1 CALL Frame1
;Display frame1 for 1/2 sec
DECFSZ 0Ch
GOTO Main1
NOP
Main2 NOP
;Do-nothing loop
GOTO Main2
; Reset power to view screen again
END
|
|
|
The block of
numbers below is the HEX file for Experiment-17. Copy and paste
it into a text program such as TEXTPAD or NOTEPAD and call it:
Expt-17.hex
|
|
|
:10000000831600308500860083122B281C30910057
:100010006E309200393093000430940055309500D2
:100020008514000085101108860023201208860020
:100030002320130886002320140886002320150897
:100040008600232008009B0B23280030860005141F
:1000500000000510080050308C0006208C0B2D2865
:0600600000000000312841
:00000001FF
|
EXPERIMENT-18
ANIMATION-2
In this experiment
we display 5 frames of an animation This will show how an animation or
'CARTOON' is created and how it can be expanded to any number of
CELLS.
The first thing to do is draw the cells of the animation and work out the
value for each of the LEDs. These values are then placed in the
program.
To add an
extra cell, name it cell6 and add the 11 lines of program to load the
information into the 5 cells and GOTO Scan.
In the Main routine, put the 2 lines of code that determine how long the
cell will appear on the screen, then: Main6 and the 3 lines of code that
creates a loop to display the cell.
The animation can be extended to the end of memory and if the last
instruction is GOTO Main, the animation will loop indefinitely.
In the next experiments we provide some routines you can add to
your own animations.
|
Experiment-18
for "5x7 Display" Project
;PIC16F84 and only F84 chip
;5-cell animation
Start ORG 0x00
BSF 03,5
;Go to page1 for setting-up the ports
MOVLW 00h
;Put 00 into W
MOVWF 05h
;to make port 5 (port A) all output
MOVWF 06h
;and make port 6 (port B) all output
BCF 03,5
;Go to page0 for programming
GOTO Main
Cell1
MOVLW 01h ;place the 5 values into the 5
MOVWF 11h
; files to produce the first cell
MOVLW 01h
; as shown above.
MOVWF 12h
MOVLW 01h
MOVWF 13h
MOVLW 01h
MOVWF 14h
MOVLW 01h
MOVWF 15h
GOTO Scan
Cell2 MOVLW 08h ;place the 5 values into the 5
MOVWF 11h
; files to produce the second cell
MOVLW 04h
; as shown above.
MOVWF 12h
MOVLW 04h
MOVWF 13h
MOVLW 02h
MOVWF 14h
MOVLW 01h
MOVWF 15h
GOTO Scan
Cell3 MOVLW 40h ;place the 5 values into the 5
MOVWF 11h
; files to produce the third cell
MOVLW 20h
; as shown above.
MOVWF 12h
MOVLW 08h
MOVWF 13h
MOVLW 04h
MOVWF 14h
MOVLW 01h
MOVWF 15h
GOTO Scan
Cell4 MOVLW 00h ;place the 5 values into the 5
MOVWF 11h
; files to produce the fourth cell
MOVLW 00h
; as shown above.
MOVWF 12h
MOVLW 60h
MOVWF 13h
MOVLW 1Eh
MOVWF 14h
MOVLW 01h
MOVWF 15h
GOTO Scan
Cell5 MOVLW 00h ;place the 5 values into the 5
MOVWF 11h
; files to produce the fifth cell
MOVLW 00h
; as shown above.
MOVWF 12h
MOVLW 00h
MOVWF 13h
MOVLW 00h
MOVWF 14h
MOVLW 7Fh
MOVWF 15h
GOTO Scan
Scan BSF 05,1
;Reset 4017
NOP
BCF 05,1
MOVF 11h,0
;Move file 11 into W
MOVWF 06h
CALL DelD
MOVF 12h,0
;Move file 12 into W
MOVWF 06h
CALL DelD
MOVF 13h,0
;Move file 13 into W
MOVWF 06h
CALL DelD
MOVF 14h,0
;Move file 14 into W
MOVWF 06h
CALL DelD
MOVF 15h,0
;Move file 15 into W
MOVWF 06h
CALL DelD
RETURN
DelD DECFSZ 1Bh,1
GOTO DelD
MOVLW 00h
;Zero port B to prevent mirroring
MOVWF 06
Clk BSF 05,0
;Clock the 4017
NOP
BCF 05,0
RETURN
Main MOVLW 50h
;Each 10h represents 100mS
MOVWF 0Ch
Main1 CALL Cell1
;Display Cell 1 for 1/2 sec
DECFSZ 0Ch,1
GOTO Main1
MOVLW 40h
;Each 10h represents 100mS
MOVWF 0Ch
Main2 CALL Cell2
;Display Cell 2 for 400mS
DECFSZ 0Ch,1
GOTO Main2
MOVLW 30h
;Each 10h represents 100mS
MOVWF 0Ch
Main3 CALL Cell3
;Display Cell 3 for 300mS
DECFSZ 0Ch,1
GOTO Main3
MOVLW 20h
;Each 10h represents 100mS
MOVWF 0Ch
Main4 CALL Cell4
;Display Cell 4 for 200mS
DECFSZ 0Ch,1
GOTO Main4
MOVLW 10h
;Each 10h represents 100mS (10 frames/sec)
MOVWF 0Ch
Main5 CALL Cell5
;Display Cell 5 for 100mS
DECFSZ 0Ch,1
GOTO Main5
GOTO Main
END
|
|
|
The block of
numbers below is the HEX file for Experiment-18. Copy and paste
it into a text program such as TEXTPAD or NOTEPAD and call it:
Expt-18.hex
|
|
|
:100000008316003085008600831258280130910045
:1000100001309200013093000130940001309500CE
:100020003D280830910004309200043093000230E3
:100030009400013095003D2840309100203092001E
:100040000830930004309400013095003D280030C2
:10005000910000309200603093001E309400013017
:1000600095003D2800309100003092000030930050
:10007000003094007F3095003D28851400008510E5
:1000800011088600502012088600502013088600B0
:1000900050201408860050201508860050200800C3
:1000A0009B0B502800308600051400000510080046
:1000B00050308C0006208C0B5A2840308C001120C8
:1000C0008C0B5F2830308C001C208C0B6428203077
:1000D0008C0027208C0B692810308C0032208C0B70
:0400E0006E28582806
:00000001FF
|
EXPERIMENT-19
ANIMATION-3
This experiment is a sub-routine. It starts with a fully-illuminated screen
and the rows turn off, from bottom to top. The
routine is called WIPE-UP and can be included in any animation by calling
WipeUp, thus: CALL WipeUp
Add WipeUp to the program in Experiment 18.
Insert it at the end, thus:
GOTO Main 5
CALL WipeUp
GOTO Main
|
Experiment-19
for "5x7 Display" Project
;PIC16F84 and only F84 chip
;Sub-routine
"WipeUp"
WipeUp
MOVLW 0FFh
MOVWF 11h
MOVWF 12h
MOVWF 13h
MOVWF 14h
MOVWF 15h
MOVLW 20h
MOVWF 0Ch
XX BCF 11h,0
RLF 11h,1
BCF 12h,0
RLF 12h,1
BCF 13h,0
RLF 13h,1
BCF 14h,0
RLF 14h,1
BCF 15h,0
RLF 15h,1
BTFSS 15h,7
RETURN
YY DECFSZ 0ch,1
GOTO ZZ
GOTO XX
ZZ CALL Scan
GOTO YY
Scan
END
|
|
|
The block of
numbers below is the HEX file for Experiment-19. Copy and paste
it into a text program such as TEXTPAD or NOTEPAD and call it:
Expt-19.hex
|
|
|
:10000000FF309100920093009400950020308C0006
:100010001110910D1210920D1310930D1410940DD8
:100020001510950D951F08008C0B1728082819200E
:02003000142892
:00000001FF
|
|
Experiment-19a
for "5x7 Display" Project
;PIC16F84 and only F84 chip
;Experiments 18 & 19 combined:
Start ORG 0x00
BSF 03,5
;Go to page1 for setting-up the ports
MOVLW 00h
;Put 00 into W
MOVWF 05h
;to make port 5 (port A) all output
MOVWF 06h
;and make port 6 (port B) all output
BCF 03,5
;Go to page0 for programming
GOTO Main
Cell1
MOVLW 01h ;place the 5 values into the 5
MOVWF 11h
; files to produce the first cell
MOVLW 01h
; as shown above.
MOVWF 12h
MOVLW 01h
MOVWF 13h
MOVLW 01h
MOVWF 14h
MOVLW 01h
MOVWF 15h
GOTO Scan
Cell2 MOVLW 08h ;place the 5 values into the 5
MOVWF 11h
; files to produce the second cell
MOVLW 04h
; as shown above.
MOVWF 12h
MOVLW 04h
MOVWF 13h
MOVLW 02h
MOVWF 14h
MOVLW 01h
MOVWF 15h
GOTO Scan
Cell3 MOVLW 40h ;place the 5 values into the 5
MOVWF 11h
; files to produce the third cell
MOVLW 20h
; as shown above.
MOVWF 12h
MOVLW 08h
MOVWF 13h
MOVLW 04h
MOVWF 14h
MOVLW 01h
MOVWF 15h
GOTO Scan
Cell4 MOVLW 00h ;place the 5 values into the 5
MOVWF 11h
; files to produce the fourth cell
MOVLW 00h
; as shown above.
MOVWF 12h
MOVLW 60h
MOVWF 13h
MOVLW 1Eh
MOVWF 14h
MOVLW 01h
MOVWF 15h
GOTO Scan
Cell5 MOVLW 00h ;place the 5 values into the 5
MOVWF 11h
; files to produce the fifth cell
MOVLW 00h
; as shown above.
MOVWF 12h
MOVLW 00h
MOVWF 13h
MOVLW 00h
MOVWF 14h
MOVLW 7Fh
MOVWF 15h
GOTO Scan
Scan BSF 05,1
;Reset 4017
NOP
BCF 05,1
MOVF 11h,0
;Move file 11 into W
MOVWF 06h
;Move W to output port6
CALL DelD
MOVF 12h,0
;Move file 12 into W
MOVWF 06h
CALL DelD
MOVF 13h,0
;Move file 13 into W
MOVWF 06h
CALL DelD
MOVF 14h,0
;Move file 14 into W
MOVWF 06h
CALL DelD
MOVF 15h,0
;Move file 15 into W
MOVWF 06h
CALL DelD
RETURN
DelD DECFSZ 1Bh,1
GOTO DelD
MOVLW 00h
;Zero port B to prevent mirroring
MOVWF 06
Clk BSF 05,0
;Clock the 4017
NOP
BCF 05,0
RETURN
WipeUp
MOVLW 0FFh
MOVWF 11h
MOVWF 12h
MOVWF 13h
MOVWF 14h
MOVWF 15h
MOVLW 80h
MOVWF 0Ch
GOTO YY
XX RLF 11h,1
BCF 11h,0
RLF 12h,1
BCF 12h,0
RLF 13h,1
BCF 13h,0
RLF 14h,1
BCF 14h,0
RLF 15h,1
BCF 15h,0
BTFSS 15h,7
RETURN
YY DECFSZ 0Ch,1
GOTO ZZ
MOVLW 80h
MOVWF 0Ch
GOTO XX
ZZ CALL Scan
GOTO YY
Main MOVLW 50h
;Each 10h represents 100mS
MOVWF 0Ch
Main1 CALL Cell1
;Display Cell 1 for 1/2 sec
DECFSZ 0Ch,1
GOTO Main1
MOVLW 40h
;Each 10h represents 100mS
MOVWF 0Ch
Main2 CALL Cell2
;Display Cell 2 for 400mS
DECFSZ 0Ch,1
GOTO Main2
MOVLW 30h
;Each 10h represents 100mS
MOVWF 0Ch
Main3 CALL Cell3
;Display Cell 3 for 300mS
DECFSZ 0Ch,1
GOTO Main3
MOVLW 20h
;Each 10h represents 100mS
MOVWF 0Ch
Main4 CALL Cell4
;Display Cell 4 for 200mS
DECFSZ 0Ch,1
GOTO Main4
MOVLW
80h
;Each 10h represents 100mS
MOVWF 0Ch
Main5 CALL Cell5
;Display Cell 5 for 800mS
DECFSZ 0Ch,1
GOTO Main5
CALL WipeUp
GOTO Main
END
|
|
|
The block of
numbers below is the HEX file for Experiment-19a. Copy and paste
it into a text program such as TEXTPAD or NOTEPAD and call it:
Expt-19a.hex
|
|
|
:100000008316003085008600831274280130910029
:1000100001309200013093000130940001309500CE
:100020003D280830910004309200043093000230E3
:100030009400013095003D2840309100203092001E
:100040000830930004309400013095003D280030C2
:10005000910000309200603093001E309400013017
:1000600095003D2800309100003092000030930050
:10007000003094007F3095003D28851400008510E5
:1000800011088600502012088600502013088600B0
:1000900050201408860050201508860050200800C3
:1000A0009B0B502800308600051400000510080046
:1000B000FF309100920093009400950080308C00F6
:1000C0006D28910D1110920D1210930D1310940DB7
:1000D0001410950D1510951F08008C0B7228803098
:1000E0008C0061283D206D28F0308C0006208C0BA0
:1000F000762840308C0011208C0B7B2830308C000F
:100100001C208C0B802820308C0027208C0B85280D
:0E01100080308C0032208C0B8A2858207428F6
:00000001FF
|
Go to the next
page of experiments:
5x7
EXPERIMENTS: Page-8
|