Hallo.
I like colour display.
I make rutines for controlling any colour display...
on AVR atmega64 work with 22fps (complete buffered) 32Kb Ram.
Now making on LPT - AVR convertor...
http://milikiller.ic.cz/external/M65/1.avi
http://milikiller.ic.cz/external/M65/2.avi
http://milikiller.ic.cz/external/M65/3.avi
http://milikiller.ic.cz/external/M65/4.avi
Code:
/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.8d Professional
Automatic Program Generator
© Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 2.6.2007
Author : MiliKiller
Company : Milisoft
Comments:
Chip type : ATmega64
Program type : Application
Clock frequency : 20,000000 MHz
Memory model : Small
External SRAM size : 64 Kb
Data Stack size : 1024
*****************************************************/
#include <mega64.h>
#include <delay.h>
#include <math.h>
#define DC PORTE.7
#define RESET PORTE.6
#define CS PORTE.5
#define SRX 132
#define SRY 176
#define OFFSETX SRX/2 // offset for screen wont change unless
#define OFFSETY SRY/2 // i use different screen! so its kinda fixed
#define OFFSETZ 32
unsigned char LCD_RAM[132][176];
unsigned char cursX = 0;
unsigned char cursY = 0;
unsigned char joy = 0;
int i,vertex; // temp variable for loops
float xt,yt,zt,x,y,z,sinax,cosax,sinay,cosay,sinaz,cosaz; // lots of work variables
float xpos=0; // position for object in 3d space, in x
float ypos=0; // y
float zpos=0; // and z values
float rotx=0; // starting amount of x rotation
float roty=0; // starting amount of y rotation
float rotz=0; // starting amount of z rotation
int newx[64];
int newy[64];
const float aa[64] = {7.14178371429,8.39784812927,9.3311882019,9.90593624115,10.1000041962,9.90593624115,9.3311882019,8.39784812927,7.14178371429,5.61126422882,3.8651061058,1.97041475773,1.47197215483e-006,-1.97041165829,-3.86510229111,-5.61125946045,-7.14177846909,-8.3978433609,-9.33118247986,-9.90592861176,-10.0999956131,-9.90592479706,-9.33117485046,-8.39783191681,-7.14176464081,-5.61124324799,-3.8650841713,-1.97039234638,2.09770769288e-005,1.97043383121,3.86512422562,5.61128044128,7.14179754257,8.39785957336,9.3311958313,9.90594100952,10.1000041962,9.90593338013,9.33118247986,8.39784145355,7.14177894592,5.61126232147,3.86510896683,1.97042238712,1.41541995617e-005,-1.97039449215,-3.86508178711,-5.61123657227,-7.1417555809,-8.39782238007,-9.3311662674,-9.90592002869,-10.0999956131,-9.90593624115,-9.33119773865,-8.39786911011,-7.14181470871,-5.61130571365,-3.86515831947,-1.97047567368,-6.87620340614e-005,1.97034108639,3.86503243446,5.61119365692};
const float bb[64] = {7.14178419113,5.61126470566,3.86510801315,1.9704182148,6.30520207778e-006,-1.97040557861,-3.86509585381,-5.6112537384,-7.14177322388,-8.39783859253,-9.33117961884,-9.90592670441,-10.0999956131,-9.90592575073,-9.33117675781,-8.39783477783,-7.14176940918,-5.61124801636,-3.86508989334,-1.97039806843,1.52952252392e-005,1.97042834759,3.86511850357,5.61127567291,7.14179325104,8.39785575867,9.33119392395,9.90593910217,10.1000051498,9.90593338013,9.33118152618,8.39783763885,7.14177036285,5.61124849319,3.86508870125,1.9703963995,-1.71329884324e-005,-1.97042512894,-3.86511087418,-5.61126327515,-7.14177799225,-8.3978395462,-9.33117866516,-9.90592575073,-10.0999956131,-9.90592956543,-9.33118534088,-8.39785003662,-7.14179134369,-5.6112780571,-3.86512851715,-1.97044348717,-3.59154437319e-005,1.97037339211,3.86506223679,5.61122083664,7.14174365997,8.39781475067,9.33116340637,9.90592193604,10.1000051498,9.90595245361,9.33121967316,8.39789581299};
const float cc[64] = {-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,-10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815,10.1000003815};
const int ff[96] = {1,2,33,1,2,3,34,3,4,35,4,5,36,5,6,37,6,7,38,7,8,39,8,9,40,9,10,41,10,11,42,11,12,43,12,13,44,13,14,45,14,15,46,15,16,47,16,17,48,17,18,49,18,19,50,19,20,51,20,21,52,21,22,53,22,23,54,23,24,55,24,25,56,25,26,57,26,27,58,27,28,59,28,29,60,29,30,61,30,31,62,31,32,63,1,33};
const int gg[96] = {2,34,34,33,3,35,35,4,36,36,5,37,37,6,38,38,7,39,39,8,40,40,9,41,41,10,42,42,11,43,43,12,44,44,13,45,45,14,46,46,15,47,47,16,48,48,17,49,49,18,50,50,19,51,51,20,52,52,21,53,53,22,54,54,23,55,55,24,56,56,25,57,57,26,58,58,27,59,59,28,60,60,29,61,61,30,62,62,31,63,63,32,64,64,32,64};
const int vert =64;
const int edges =96;
int sx,sy,ex,ey; // define global vars for calling graphics subroutines
flash unsigned char FontLookup [92][5] ={
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp
{ 0x00, 0x00, 0x2f, 0x00, 0x00 }, // !
{ 0x00, 0x07, 0x00, 0x07, 0x00 }, // "
{ 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // #
{ 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $
{ 0xc4, 0xc8, 0x10, 0x26, 0x46 }, // %
{ 0x36, 0x49, 0x55, 0x22, 0x50 }, // &
{ 0x00, 0x05, 0x03, 0x00, 0x00 }, // '
{ 0x00, 0x1c, 0x22, 0x41, 0x00 }, // (
{ 0x00, 0x41, 0x22, 0x1c, 0x00 }, // )
{ 0x14, 0x08, 0x3E, 0x08, 0x14 }, // *
{ 0x08, 0x08, 0x3E, 0x08, 0x08 }, // +
{ 0x00, 0x00, 0x50, 0x30, 0x00 }, // ,
{ 0x10, 0x10, 0x10, 0x10, 0x10 }, // -
{ 0x00, 0x60, 0x60, 0x00, 0x00 }, // .
{ 0x20, 0x10, 0x08, 0x04, 0x02 }, // /
{ 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0
{ 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1
{ 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2
{ 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3
{ 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4
{ 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5
{ 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6
{ 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7
{ 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8
{ 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9
{ 0x00, 0x36, 0x36, 0x00, 0x00 }, // :
{ 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;
{ 0x08, 0x14, 0x22, 0x41, 0x00 }, // <
{ 0x14, 0x14, 0x14, 0x14, 0x14 }, // =
{ 0x00, 0x41, 0x22, 0x14, 0x08 }, // >
{ 0x02, 0x01, 0x51, 0x09, 0x06 }, // ?
{ 0x32, 0x49, 0x59, 0x51, 0x3E }, // @
{ 0x7E, 0x11, 0x11, 0x11, 0x7E }, // A
{ 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B
{ 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C
{ 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D
{ 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E
{ 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F
{ 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G
{ 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H
{ 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I
{ 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J
{ 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K
{ 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L
{ 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M
{ 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N
{ 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O
{ 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P
{ 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q
{ 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R
{ 0x46, 0x49, 0x49, 0x49, 0x31 }, // S
{ 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T
{ 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U
{ 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V
{ 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W
{ 0x63, 0x14, 0x08, 0x14, 0x63 }, // X
{ 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y
{ 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z
{ 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [
{ 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // 55
{ 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ]
{ 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^
{ 0x40, 0x40, 0x40, 0x40, 0x40 }, // _
{ 0x00, 0x01, 0x02, 0x04, 0x00 }, // '
{ 0x20, 0x54, 0x54, 0x54, 0x78 }, // a
{ 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b
{ 0x38, 0x44, 0x44, 0x44, 0x20 }, // c
{ 0x38, 0x44, 0x44, 0x48, 0x7F }, // d
{ 0x38, 0x54, 0x54, 0x54, 0x18 }, // e
{ 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f
{ 0x0C, 0x52, 0x52, 0x52, 0x3E }, // g
{ 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h
{ 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i
{ 0x20, 0x40, 0x44, 0x3D, 0x00 }, // j
{ 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k
{ 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l
{ 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m
{ 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n
{ 0x38, 0x44, 0x44, 0x44, 0x38 }, // o
{ 0x7C, 0x14, 0x14, 0x14, 0x08 }, // p
{ 0x08, 0x14, 0x14, 0x18, 0x7C }, // q
{ 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r
{ 0x48, 0x54, 0x54, 0x54, 0x20 }, // s
{ 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t
{ 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u
{ 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v
{ 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w
{ 0x44, 0x28, 0x10, 0x28, 0x44 }, // x
{ 0x0C, 0x50, 0x50, 0x50, 0x3C }, // y
{ 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z
{ 0x18, 0x18, 0x7E, 0x3C, 0x18 } // sipka
};
flash unsigned char cisla [10][14][12] ={
{
{ 255,255,0,0,0,0,0,0,255,255,255,255 },
{ 255,255,0,0,0,0,0,0,255,255,255,255 },
{ 0,0,0,0,255,255,0,0,0,0,255,255 },
{ 0,0,0,0,255,255,0,0,0,0,255,255 },
{ 0,0,255,255,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,0,0,255,255,0,0,255,255 },
{ 0,0,0,0,255,255,0,0,0,0,255,255 },
{ 0,0,0,0,255,255,0,0,0,0,255,255 },
{ 255,255,0,0,0,0,0,0,255,255,255,255 },
{ 255,255,0,0,0,0,0,0,255,255,255,255 }},
{
{ 255,255,255,0,0,0,0,0,0,255,255,255 },
{ 255,255,255,0,0,0,0,0,0,255,255,255 },
{ 255,0,0,0,0,255,255,0,0,255,255,255 },
{ 255,0,0,0,0,255,255,0,0,255,255,255 },
{ 255,0,0,255,255,255,255,0,0,255,255,255 },
{ 255,0,0,255,255,255,255,0,0,255,255,255 },
{ 255,0,0,0,0,255,255,0,0,255,255,255 },
{ 255,0,0,0,0,255,255,0,0,255,255,255 },
{ 255,255,255,0,0,255,255,0,0,255,255,255 },
{ 255,255,255,0,0,255,255,0,0,255,255,255 },
{ 255,255,255,0,0,255,255,0,0,255,255,255 },
{ 255,255,255,0,0,255,255,0,0,255,255,255 },
{ 255,255,255,0,0,0,0,0,0,255,255,255 },
{ 255,255,255,0,0,0,0,0,0,255,255,255 }},
{
{ 0,0,0,0,0,0,0,0,255,255,255,255 },
{ 0,0,0,0,0,0,0,0,255,255,255,255 },
{ 0,0,255,255,255,255,0,0,0,0,255,255 },
{ 0,0,255,255,255,255,0,0,0,0,255,255 },
{ 0,0,0,0,0,0,255,255,0,0,255,255 },
{ 0,0,0,0,0,0,255,255,0,0,255,255 },
{ 0,0,0,0,255,255,0,0,0,0,255,255 },
{ 0,0,0,0,255,255,0,0,0,0,255,255 },
{ 0,0,255,255,0,0,0,0,0,0,255,255 },
{ 0,0,255,255,0,0,0,0,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,0,0,0,0,0,0,0,0,255,255 },
{ 0,0,0,0,0,0,0,0,0,0,255,255 }},
{
{ 0,0,0,0,0,0,0,0,255,255,255,255 },
{ 0,0,0,0,0,0,0,0,255,255,255,255 },
{ 0,0,255,255,255,255,0,0,0,0,255,255 },
{ 0,0,255,255,255,255,0,0,0,0,255,255 },
{ 0,0,0,0,0,0,255,255,0,0,255,255 },
{ 0,0,0,0,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,0,0,0,0,255,255 },
{ 0,0,255,255,255,255,0,0,0,0,255,255 },
{ 0,0,0,0,0,0,255,255,0,0,255,255 },
{ 0,0,0,0,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,0,0,0,0,255,255 },
{ 0,0,255,255,255,255,0,0,0,0,255,255 },
{ 0,0,0,0,0,0,0,0,255,255,255,255 },
{ 0,0,0,0,0,0,0,0,255,255,255,255 }},
{
{ 0,0,0,0,0,0,255,255,255,255,255,255 },
{ 0,0,0,0,0,0,255,255,255,255,255,255 },
{ 0,0,255,255,0,0,0,0,0,0,255,255 },
{ 0,0,255,255,0,0,0,0,0,0,255,255 },
{ 0,0,255,255,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,0,0,255,255,0,0,0,0,255,255 },
{ 0,0,0,0,255,255,0,0,0,0,255,255 },
{ 255,255,0,0,255,255,0,0,255,255,255,255 },
{ 255,255,0,0,255,255,0,0,255,255,255,255 },
{ 255,255,0,0,0,0,0,0,255,255,255,255 },
{ 255,255,0,0,0,0,0,0,255,255,255,255 }},
{
{ 0,0,0,0,0,0,0,0,0,0,255,255 },
{ 0,0,0,0,0,0,0,0,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,0,0,0,0,0,0,255,255 },
{ 0,0,255,255,0,0,0,0,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,0,0,0,0,255,255,0,0,255,255 },
{ 0,0,0,0,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,0,0,0,0,255,255 },
{ 0,0,255,255,255,255,0,0,0,0,255,255 },
{ 0,0,0,0,0,0,0,0,255,255,255,255 },
{ 0,0,0,0,0,0,0,0,255,255,255,255 }},
{
{ 255,255,0,0,0,0,0,0,0,0,255,255 },
{ 255,255,0,0,0,0,0,0,0,0,255,255 },
{ 0,0,0,0,255,255,255,255,0,0,255,255 },
{ 0,0,0,0,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,0,0,0,0,0,0,255,255 },
{ 0,0,255,255,0,0,0,0,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,0,0,0,0,0,0,0,0,255,255 },
{ 0,0,0,0,0,0,0,0,0,0,255,255 }},
{
{ 0,0,0,0,0,0,0,0,0,0,255,255 },
{ 0,0,0,0,0,0,0,0,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,0,0,0,0,255,255,0,0,255,255 },
{ 0,0,0,0,0,0,255,255,0,0,255,255 },
{ 255,255,0,0,255,255,255,255,0,0,255,255 },
{ 255,255,0,0,255,255,255,255,0,0,255,255 },
{ 255,255,0,0,0,0,255,255,0,0,255,255 },
{ 255,255,0,0,0,0,255,255,0,0,255,255 },
{ 255,255,255,255,0,0,255,255,0,0,255,255 },
{ 255,255,255,255,0,0,255,255,0,0,255,255 },
{ 255,255,255,255,0,0,0,0,0,0,255,255 },
{ 255,255,255,255,0,0,0,0,0,0,255,255 }},
{
{ 0,0,0,0,0,0,0,0,0,0,255,255 },
{ 0,0,0,0,0,0,0,0,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,0,0,0,0,0,0,0,0,255,255 },
{ 0,0,0,0,0,0,0,0,0,0,255,255 }},
{
{ 0,0,0,0,0,0,0,0,0,0,255,255 },
{ 0,0,0,0,0,0,0,0,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,0,0,0,0,255,255,0,0,255,255 },
{ 0,0,0,0,0,0,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,255,255,255,255,255,255,0,0,255,255 },
{ 0,0,0,0,0,0,0,0,0,0,255,255 },
{ 0,0,0,0,0,0,0,0,0,0,255,255 }}
};
flash unsigned char info [5][8][76] ={
{
{ 255,255,255,255,255,255,255,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 },
{ 255,255,255,255,255,255,8,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24 },
{ 255,255,255,255,255,8,24,24,255,24,24,24,24,24,24,24,8,24,24,24,255,24,24,24,24,24,24,24,8,24,24,24,255,24,24,24,255,255,24,24,255,255,24,24,255,255,24,255,24,255,24,24,8,24,24,24,255,24,24,24,255,24,24,255,24,255,255,24,255,24,255,24,255,255,255,24 },
{ 255,255,255,255,8,24,24,255,255,255,24,24,24,255,24,24,8,24,24,24,255,24,24,24,24,24,24,24,8,24,24,255,24,24,24,24,255,24,255,24,255,24,255,24,255,24,24,255,24,255,24,24,8,24,24,24,24,255,24,24,255,255,24,255,24,255,24,24,255,24,255,24,24,255,24,24 },
{ 255,255,255,8,24,24,255,24,255,24,255,24,255,255,255,24,8,24,255,24,255,24,255,24,255,255,255,24,8,24,255,255,255,255,255,24,255,255,24,24,255,255,24,24,255,255,24,255,24,255,24,24,8,24,255,255,255,255,255,24,255,24,255,255,24,255,255,24,24,255,24,24,24,255,24,24 },
{ 255,255,8,24,24,24,24,24,255,24,24,24,24,255,24,24,8,24,24,255,255,255,24,24,24,24,24,24,8,24,24,255,24,24,24,24,255,24,24,24,255,24,255,24,255,24,24,255,24,255,24,24,8,24,24,24,24,255,24,24,255,24,24,255,24,255,24,24,255,24,255,24,24,255,24,24 },
{ 255,8,24,24,24,24,24,24,255,24,24,24,24,24,24,24,8,24,24,24,255,24,24,24,24,24,24,24,8,24,24,24,255,24,24,24,255,24,24,24,255,24,255,24,255,255,24,24,255,24,24,24,8,24,24,24,255,24,24,24,255,24,24,255,24,255,255,24,255,24,255,24,24,255,24,24 },
{ 8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24 }},
{
{ 255,255,255,255,255,255,255,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 },
{ 255,255,255,255,255,255,8,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24 },
{ 255,255,255,255,255,8,24,24,231,24,24,24,24,24,24,24,8,24,24,24,255,24,24,24,24,24,24,24,8,24,24,24,255,24,24,24,255,255,24,24,255,255,24,24,255,255,24,255,24,255,24,24,8,24,24,24,255,24,24,24,255,24,24,255,24,255,255,24,255,24,255,24,255,255,255,24 },
{ 255,255,255,255,8,24,24,231,231,231,24,24,24,231,24,24,8,24,24,24,255,24,24,24,24,24,24,24,8,24,24,255,24,24,24,24,255,24,255,24,255,24,255,24,255,24,24,255,24,255,24,24,8,24,24,24,24,255,24,24,255,255,24,255,24,255,24,24,255,24,255,24,24,255,24,24 },
{ 255,255,255,8,24,24,231,24,231,24,231,24,231,231,231,24,8,24,255,24,255,24,255,24,255,255,255,24,8,24,255,255,255,255,255,24,255,255,24,24,255,255,24,24,255,255,24,255,24,255,24,24,8,24,255,255,255,255,255,24,255,24,255,255,24,255,255,24,24,255,24,24,24,255,24,24 },
{ 255,255,8,24,24,24,24,24,231,24,24,24,24,231,24,24,8,24,24,255,255,255,24,24,24,24,24,24,8,24,24,255,24,24,24,24,255,24,24,24,255,24,255,24,255,24,24,255,24,255,24,24,8,24,24,24,24,255,24,24,255,24,24,255,24,255,24,24,255,24,255,24,24,255,24,24 },
{ 255,8,24,24,24,24,24,24,231,24,24,24,24,24,24,24,8,24,24,24,255,24,24,24,24,24,24,24,8,24,24,24,255,24,24,24,255,24,24,24,255,24,255,24,255,255,24,24,255,24,24,24,8,24,24,24,255,24,24,24,255,24,24,255,24,255,255,24,255,24,255,24,24,255,24,24 },
{ 8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24 }},
{
{ 255,255,255,255,255,255,255,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 },
{ 255,255,255,255,255,255,8,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24 },
{ 255,255,255,255,255,8,24,24,255,24,24,24,24,24,24,24,8,24,24,24,231,24,24,24,24,24,24,24,8,24,24,24,255,24,24,24,255,255,24,24,255,255,24,24,255,255,24,255,24,255,24,24,8,24,24,24,255,24,24,24,255,24,24,255,24,255,255,24,255,24,255,24,255,255,255,24 },
{ 255,255,255,255,8,24,24,255,255,255,24,24,24,255,24,24,8,24,24,24,231,24,24,24,24,24,24,24,8,24,24,255,24,24,24,24,255,24,255,24,255,24,255,24,255,24,24,255,24,255,24,24,8,24,24,24,24,255,24,24,255,255,24,255,24,255,24,24,255,24,255,24,24,255,24,24 },
{ 255,255,255,8,24,24,255,24,255,24,255,24,255,255,255,24,8,24,231,24,231,24,231,24,231,231,231,24,8,24,255,255,255,255,255,24,255,255,24,24,255,255,24,24,255,255,24,255,24,255,24,24,8,24,255,255,255,255,255,24,255,24,255,255,24,255,255,24,24,255,24,24,24,255,24,24 },
{ 255,255,8,24,24,24,24,24,255,24,24,24,24,255,24,24,8,24,24,231,231,231,24,24,24,24,24,24,8,24,24,255,24,24,24,24,255,24,24,24,255,24,255,24,255,24,24,255,24,255,24,24,8,24,24,24,24,255,24,24,255,24,24,255,24,255,24,24,255,24,255,24,24,255,24,24 },
{ 255,8,24,24,24,24,24,24,255,24,24,24,24,24,24,24,8,24,24,24,231,24,24,24,24,24,24,24,8,24,24,24,255,24,24,24,255,24,24,24,255,24,255,24,255,255,24,24,255,24,24,24,8,24,24,24,255,24,24,24,255,24,24,255,24,255,255,24,255,24,255,24,24,255,24,24 },
{ 8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24 }},
{
{ 255,255,255,255,255,255,255,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 },
{ 255,255,255,255,255,255,8,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24 },
{ 255,255,255,255,255,8,24,24,255,24,24,24,24,24,24,24,8,24,24,24,255,24,24,24,24,24,24,24,8,24,24,24,231,24,24,24,231,231,24,24,231,231,24,24,231,231,24,231,24,231,24,24,8,24,24,24,255,24,24,24,255,24,24,255,24,255,255,24,255,24,255,24,255,255,255,24 },
{ 255,255,255,255,8,24,24,255,255,255,24,24,24,255,24,24,8,24,24,24,255,24,24,24,24,24,24,24,8,24,24,231,24,24,24,24,231,24,231,24,231,24,231,24,231,24,24,231,24,231,24,24,8,24,24,24,24,255,24,24,255,255,24,255,24,255,24,24,255,24,255,24,24,255,24,24 },
{ 255,255,255,8,24,24,255,24,255,24,255,24,255,255,255,24,8,24,255,24,255,24,255,24,255,255,255,24,8,24,231,231,231,231,231,24,231,231,24,24,231,231,24,24,231,231,24,231,24,231,24,24,8,24,255,255,255,255,255,24,255,24,255,255,24,255,255,24,24,255,24,24,24,255,24,24 },
{ 255,255,8,24,24,24,24,24,255,24,24,24,24,255,24,24,8,24,24,255,255,255,24,24,24,24,24,24,8,24,24,231,24,24,24,24,231,24,24,24,231,24,231,24,231,24,24,231,24,231,24,24,8,24,24,24,24,255,24,24,255,24,24,255,24,255,24,24,255,24,255,24,24,255,24,24 },
{ 255,8,24,24,24,24,24,24,255,24,24,24,24,24,24,24,8,24,24,24,255,24,24,24,24,24,24,24,8,24,24,24,231,24,24,24,231,24,24,24,231,24,231,24,231,231,24,24,231,24,24,24,8,24,24,24,255,24,24,24,255,24,24,255,24,255,255,24,255,24,255,24,24,255,24,24 },
{ 8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24 }},
{
{ 255,255,255,255,255,255,255,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 },
{ 255,255,255,255,255,255,8,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24 },
{ 255,255,255,255,255,8,24,24,255,24,24,24,24,24,24,24,8,24,24,24,255,24,24,24,24,24,24,24,8,24,24,24,255,24,24,24,255,255,24,24,255,255,24,24,255,255,24,255,24,255,24,24,8,24,24,24,231,24,24,24,231,24,24,231,24,231,231,24,231,24,231,24,231,231,231,24 },
{ 255,255,255,255,8,24,24,255,255,255,24,24,24,255,24,24,8,24,24,24,255,24,24,24,24,24,24,24,8,24,24,255,24,24,24,24,255,24,255,24,255,24,255,24,255,24,24,255,24,255,24,24,8,24,24,24,24,231,24,24,231,231,24,231,24,231,24,24,231,24,231,24,24,231,24,24 },
{ 255,255,255,8,24,24,255,24,255,24,255,24,255,255,255,24,8,24,255,24,255,24,255,24,255,255,255,24,8,24,255,255,255,255,255,24,255,255,24,24,255,255,24,24,255,255,24,255,24,255,24,24,8,24,231,231,231,231,231,24,231,24,231,231,24,231,231,24,24,231,24,24,24,231,24,24 },
{ 255,255,8,24,24,24,24,24,255,24,24,24,24,255,24,24,8,24,24,255,255,255,24,24,24,24,24,24,8,24,24,255,24,24,24,24,255,24,24,24,255,24,255,24,255,24,24,255,24,255,24,24,8,24,24,24,24,231,24,24,231,24,24,231,24,231,24,24,231,24,231,24,24,231,24,24 },
{ 255,8,24,24,24,24,24,24,255,24,24,24,24,24,24,24,8,24,24,24,255,24,24,24,24,24,24,24,8,24,24,24,255,24,24,24,255,24,24,24,255,24,255,24,255,255,24,24,255,24,24,24,8,24,24,24,231,24,24,24,231,24,24,231,24,231,231,24,231,24,231,24,24,231,24,24 },
{ 8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,8,8,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24 }}
};
void Draw_cisla(unsigned char cislo,unsigned char x,unsigned char y)
{
unsigned char ix,iy;
for(ix = 0; ix < 14; ix++)
{
for(iy = 0; iy < 12; iy++)
{
LCD_RAM [(char)(x+ix)][(char)(y+iy)] = cisla[cislo][ix][iy];
};
};
}
void WRCMD(unsigned int output_data)
{
CS = 0;
DC = 1;
SPDR= (output_data >> 8);
while ((SPSR & (1<<7))==0);
delay_us(5);
SPDR= (output_data & 0x00FF);
while ((SPSR & (1<<7))==0);
delay_us(5);
CS = 1;
}
void WRDATA(unsigned int output_data)
{
CS = 0;
DC = 0;
SPDR= (output_data >> 8);
while ((SPSR & (1<<7))==0);
delay_us(3);
SPDR= (output_data & 0x00FF);
while ((SPSR & (1<<7))==0);
delay_us(3);
CS = 1;
}
void Draw_RAM(void)
{
unsigned char temp;
unsigned char ix = 0;
unsigned char iy = 0;
WRCMD(0xEF90);
WRCMD(0x0500);
WRCMD(0x0600);
WRCMD(0x0700);
DC = 0;
CS = 0;
ix = 176;
while ( ix != 0 ) {
iy = 0;
ix--;
while ( iy < 132 ) {
temp = LCD_RAM [iy][ix];
#asm
nop
#endasm
SPDR= (temp & 231);
LCD_RAM [iy][ix] = 255;
#asm
nop
#endasm
SPDR= (temp & 24);
iy++;
temp = LCD_RAM [iy][ix];
#asm
nop
#endasm
SPDR= (temp & 231);
LCD_RAM [iy][ix] = 255;
#asm
nop
#endasm
SPDR= (temp & 24);
iy++;
temp = LCD_RAM [iy][ix];
#asm
nop
#endasm
SPDR= (temp & 231);
LCD_RAM [iy][ix] = 255;
#asm
nop
#endasm
SPDR= (temp & 24);
iy++;
temp = LCD_RAM [iy][ix];
#asm
nop
#endasm
SPDR= (temp & 231);
LCD_RAM [iy][ix] = 255;
#asm
nop
#endasm
SPDR= (temp & 24);
iy++;
temp = LCD_RAM [iy][ix];
#asm
nop
#endasm
SPDR= (temp & 231);
LCD_RAM [iy][ix] = 255;
#asm
nop
#endasm
SPDR= (temp & 24);
iy++;
temp = LCD_RAM [iy][ix];
#asm
nop
#endasm
SPDR= (temp & 231);
LCD_RAM [iy][ix] = 255;
#asm
nop
#endasm
SPDR= (temp & 24);
iy++;
temp = LCD_RAM [iy][ix];
#asm
nop
#endasm
SPDR= (temp & 231);
LCD_RAM [iy][ix] = 255;
#asm
nop
#endasm
SPDR= (temp & 24);
iy++;
temp = LCD_RAM [iy][ix];
#asm
nop
#endasm
SPDR= (temp & 231);
LCD_RAM [iy][ix] = 255;
#asm
nop
#endasm
SPDR= (temp & 24);
iy++;
temp = LCD_RAM [iy][ix];
#asm
nop
#endasm
SPDR= (temp & 231);
LCD_RAM [iy][ix] = 255;
#asm
nop
#endasm
SPDR= (temp & 24);
iy++;
temp = LCD_RAM [iy][ix];
#asm
nop
#endasm
SPDR= (temp & 231);
LCD_RAM [iy][ix] = 255;
#asm
nop
#endasm
SPDR= (temp & 24);
iy++;
temp = LCD_RAM [iy][ix];
#asm
nop
#endasm
SPDR= (temp & 231);
LCD_RAM [iy][ix] = 255;
#asm
nop
#endasm
SPDR= (temp & 24);
iy++;
}
};
while ((SPSR & (1<<7))==0);
CS = 1;
}
void LCD_char(unsigned char data,unsigned char colour)
{
unsigned char index;
data = data - 32;
for(index = 0; index < 5; index++)
{
if ((FontLookup[data][index]&1)==1)
{
LCD_RAM [cursY][cursX] = colour;
}
if ((FontLookup[data][index]&2)==2)
{
LCD_RAM [(char)(cursY+1)][cursX] = colour;
}
if ((FontLookup[data][index]&4)==4)
{
LCD_RAM [(char)(cursY+2)][cursX] = colour;
}
if ((FontLookup[data][index]&8)==8)
{
LCD_RAM [(char)(cursY+3)][cursX] = colour;
}
if ((FontLookup[data][index]&16)==16)
{
LCD_RAM [(char)(cursY+4)][cursX] = colour;
}
if ((FontLookup[data][index]&32)==32)
{
LCD_RAM [(char)(cursY+5)][cursX] = colour;
}
if ((FontLookup[data][index]&64)==64)
{
LCD_RAM [(char)(cursY+6)][cursX] = colour;
}
if ((FontLookup[data][index]&128)==128)
{
LCD_RAM [(char)(cursY+7)][cursX] = colour;
}
cursX++;
};
cursX++;
}
void LCD_text (flash char *dataPtr ,unsigned char colour)
{
while ( *dataPtr )
{
LCD_char(*dataPtr++ , colour);
}
}
void LCD_line (int x1,int y1,int x2,int y2,unsigned char colour )
{
int dx, dy, stepx, stepy, fraction;
if (x1 <= x2)
{
dx = x2 - x1;
}
else
{
dx = x1 - x2;
dx = (dx) - (dx+dx);
};
if (y1 <= y2)
{
dy = y2 - y1;
}
else
{
dy = y1 - y2;
dy = (dy) - (dy+dy);
};
if ( dy < 0 )
{
dy = -dy;
stepy = -1;
}
else
{
stepy = 1;
}
if ( dx < 0 )
{
dx = -dx;
stepx = -1;
}
else
{
stepx = 1;
}
dx <<= 1;
dy <<= 1;
if (x1<SRX & x1>=0 & y1<SRY & y1>=0)
{
LCD_RAM [x1][y1] = colour;
};
if ( dx > dy )
{
fraction = dy - (dx >> 1);
while ( x1 != x2 )
{
if ( fraction >= 0 )
{
y1 += stepy;
fraction -= dx;
}
x1 += stepx;
fraction += dy;
if (x1<SRX & x1>=0 & y1<SRY & y1>=0)
{
LCD_RAM [x1][y1] = colour;
};
}
}
else
{
fraction = dx - (dy >> 1);
while ( y1 != y2 )
{
if ( fraction >= 0 )
{
x1 += stepx;
fraction -= dy;
}
y1 += stepy;
fraction += dx;
if (x1<SRX & x1>=0 & y1<SRY & y1>=0)
{
LCD_RAM [x1][y1] = colour;
};
}
}
}
void LCD_cislo(unsigned int data,unsigned char mista,unsigned char colour)
{
if (mista == 1)
{
LCD_char(data + 48,colour);
};
if (mista == 2)
{
LCD_char(data / 10 + 48,colour);
data = data % 10;
LCD_char(data + 48,colour);
};
if (mista == 3)
{
LCD_char(data / 100 + 48,colour);
data = data % 100;
LCD_char(data / 10 + 48,colour);
data = data % 10;
LCD_char(data + 48,colour);
};
if (mista == 4)
{
LCD_char(data / 1000 + 48,colour);
data = data % 1000;
LCD_char(data / 100 + 48,colour);
data = data % 100;
LCD_char(data / 10 + 48,colour);
data = data % 10;
LCD_char(data + 48,colour);
};
if (mista == 5)
{
LCD_char(data / 10000 + 48,colour);
data = data % 10000;
LCD_char(data / 1000 + 48,colour);
data = data % 1000;
LCD_char(data / 100 + 48,colour);
data = data % 100;
LCD_char(data / 10 + 48,colour);
data = data % 10;
LCD_char(data + 48,colour);
};
}
void BIG_LCD_cislo(unsigned int data,unsigned char mista)
{
if (mista == 1)
{
Draw_cisla(data,cursX,cursY);
};
if (mista == 2)
{
Draw_cisla(data / 10 ,cursX,cursY);
data = data % 10;
cursY= cursY + 12;
Draw_cisla(data,cursX,cursY);
};
if (mista == 3)
{
Draw_cisla(data / 100,cursX,cursY);
data = data % 100;
cursY= cursY + 12;
Draw_cisla(data / 10 ,cursX,cursY);
data = data % 10;
cursY= cursY + 12;
Draw_cisla(data,cursX,cursY);
};
if (mista == 4)
{
Draw_cisla(data / 1000,cursX,cursY);
data = data % 1000;
cursY= cursY + 12;
Draw_cisla(data / 100,cursX,cursY);
data = data % 100;
cursY= cursY + 12;
Draw_cisla(data / 10 ,cursX,cursY);
data = data % 10;
cursY= cursY + 12;
Draw_cisla(data,cursX,cursY);
};
if (mista == 5)
{
Draw_cisla(data / 10000,cursX,cursY);
data = data % 10000;
cursY= cursY + 12;
Draw_cisla(data / 1000,cursX,cursY);
data = data % 1000;
cursY= cursY + 12;
Draw_cisla(data / 100,cursX,cursY);
data = data % 100;
cursY= cursY + 12;
Draw_cisla(data / 10 ,cursX,cursY);
data = data % 10;
cursY= cursY + 12;
Draw_cisla(data,cursX,cursY);
};
}
void LCD_init(void)
{
RESET = 0;
delay_ms(20);
RESET = 1;
WRCMD(0xFDFD);
WRCMD(0xFDFD);
WRCMD(0xEF00);
WRCMD(0xEE04);
WRCMD(0x1B04);
WRCMD(0xFEFE);
WRCMD(0xFEFE);
WRCMD(0xEF90);
WRCMD(0x4A04);
WRCMD(0x7F3F);
WRCMD(0xEE04);
WRCMD(0x4306);
delay_ms(5);
WRCMD(0xEF90);
WRCMD(0x0983);
WRCMD(0x0800);
WRCMD(0x0BAF);
WRCMD(0x0A00);
WRCMD(0x0500);
WRCMD(0x0600);
WRCMD(0x0700);
WRCMD(0xEF00);
WRCMD(0xEE0C);
WRCMD(0xEF90);
WRCMD(0x0080);
WRCMD(0xEFB0);
WRCMD(0x4902);
WRCMD(0xEF00);
WRCMD(0x7F01);
WRCMD(0xE181);
WRCMD(0xE202);
WRCMD(0xE276);
WRCMD(0xE183);
WRCMD(0x8001);
WRCMD(0xEF90);
WRCMD(0x0500);
WRCMD(0x0600);
WRCMD(0x0700);
}
void read_joy(void)
{
joy = 0;
PORTE.3 = 255;
PORTE.4 = 0;
#asm
nop
nop
nop
#endasm
if (PINF&8)
{
joy = 4;
};
if (PINF&4)
{
joy = 2;
};
PORTE.3 = 0;
PORTE.4 = 255;
#asm
nop
nop
nop
#endasm
if (PINF&8)
{
joy = 1;
};
if (PINF&4)
{
joy = 3;
};
}
void Draw_info(unsigned char value,unsigned char x,unsigned char y)
{
unsigned char ix,iy;
for(ix = 0; ix < 8; ix++)
{
for(iy = 0; iy < 76; iy++)
{
LCD_RAM [(char)(x+ix)][(char)(y+iy)] = info[value][ix][iy];
};
};
}
void cube() // routine to draw and calc 3d cube
{
xpos=xpos+0.0; // move the object
ypos=ypos+0.0; // it would wander off screen
zpos=zpos+0.0; // really quick, so leave it centered
rotx=rotx+0.00; // rotate the cube on X axis
roty=roty+0.00; // and on its y axis
rotz=rotz+0.00; // dont bother with z or it gets confusing
sinax=sin(rotx); // precalculate the sin and cos values
cosax=cos(rotx); // for the rotation as this saves a
sinay=sin(roty); // little time when running as we
cosay=cos(roty); // call sin and cos less often
sinaz=sin(rotz); // they are slow routines
cosaz=cos(rotz); // and we dont want slow!
for (i=0; i<vert; i++) // translate 3d vertex position to 2d screen position
{
x=aa[i]; // get x for vertex i
y=bb[i]; // get y for vertex i
z=cc[i]; // get z for vertex i
yt = y * cosax - z * sinax; // rotate around the x axis
zt = y * sinax + z * cosax; // using the Y and Z for the rotation
y = yt;
z = zt;
xt = x * cosay - z * sinay; // rotate around the Y axis
zt = x * sinay + z * cosay; // using X and Z
x = xt;
z = zt;
xt = x * cosaz - y * sinaz; // finaly rotate around the Z axis
yt = x * sinaz + y * cosaz; // using X and Y
x = xt;
y = yt;
x=x+xpos; // add the object position offset
y=y+ypos; // for both x and y
z=z+OFFSETZ-zpos; // as well as Z
newx[i]=(x*64/z)+OFFSETX; // translate 3d to 2d coordinates for screen
newy[i]=(y*64/z)+OFFSETY; // drawing so we can see the cube
}
for (i=0; i<edges; i++) // draw the lines that make up the object
{
vertex=ff[i]-1; // temp = start vertex for this line
sx=newx[vertex]; // set line start x to vertex[i] x position
sy=newy[vertex]; // set line start y to vertex[i] y position
vertex=gg[i]-1; // temp = end vertex for this line
ex=newx[vertex]; // set line end x to vertex[i+1] x position
ey=newy[vertex]; // set line end y to vertex[i+1] y position
LCD_line(sx,sy,ex,ey,0);// draw the line between these 2 vertex
}
}
void main(void)
{
PORTB=0x00;
DDRB=247;
PORTE=0x00;
DDRE=0xFF;
PORTF=0x00;
DDRF=192;
PORTD=0x00;
DDRD=0x00;
// External SRAM page configuration:
// - / 0000h - FFFFh
// Lower page wait state(s): None
// Upper page wait state(s): None
MCUCR=0x80;
XMCRA=0x00;
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 2*4000,000 kHz
// SPI Clock Phase: Cycle Half
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0x50;
SPSR=0x01;
LCD_init();
while (1)
{
read_joy();
rotx=rotx+0.02;
roty=roty+0.04;
rotz=rotz+0.06;
if (joy == 4)
{
rotx=rotx+0.1;
};
if (joy == 3)
{
rotx=rotx-0.1;
};
if (joy == 2)
{
roty=roty+0.1;
};
if (joy == 1)
{
roty=roty-0.1;
};
cube();
cursX = 2;
cursY = 2;
LCD_text("176x220 LCD",224);
cursX = 2;
cursY = 10;
LCD_text("ATmega64 @ 20MHz",224);
cursX = 2;
cursY = 18;
LCD_text("64Kbyte Ram",224);
Draw_info(joy,124,100);
Draw_RAM();
};
}