Page7
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).
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
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
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
Quick Links
Legal Stuff
Social Media