[center][/center]
Aby to zrobic potrzebny bedzie jakis program graficzny paint lub corel photo paint. Gdy juz mamy program to wystarczy cos namalowac w rozdzielczosci 192x64 (raster ) czarno bialy. Tak wykonany obrazek zapisujemy jako BMP.
[center][/center]
Teraz aby uproscic kod trzeba nasz obrazek poprzestawiac:
[center][/center]
1. odwrocic kolory
[center][/center]
2. obrocic o 90' przeciwnie z ruchem wskazowek zegara
[center][/center]
3. zrobic lustrzane odbicie.
Opis jak sa zapisane oraz jak przygotowac obrazek opracowalem na podstawie Graphics How To
Gdy juz obrazek jest gotowy to mozna teraz uzyc program Hexworks ktorym z pliku (obazka .bmp) wyciac naglowek (pierwsze 62 bajty) i zgrac za pomoca export dane w postaci zjadliwej przez C.
Tak przygotowane dane dolaczylem do programu napisanego w C
Kod: Zaznacz cały
// Driver *** Graphic LCD 19264 *** through Lpt by :) ACeK
#include <conio.h>
#include <stdio.h>
unsigned short lpt = 0x378;
unsigned short lptr = 0x37a;
int data; // data writen to Lcd
int lcdreg [3] = {234, 226, 232}; // "rs" (234 i 235) , "E" (238 i 239)
char segmentLcd;
char pagecount;
char invers;
int count;
int lcdxxx = 0; // variable for in write_lcd function
int lcddata;
int lcdrw; // rs 0 write to display data, 1 write to reg data
int wtime; // time in milisec
unsigned char ACeKData[1536] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0,
0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0xC0,
0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0x80,
0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x01, 0xFE, 0x00,
0x00, 0x00, 0x00, 0x1F, 0xFF, 0x83, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0xE7, 0xF8, 0x00,
0x00, 0x00, 0x00, 0x3F, 0x3F, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x0F, 0xFF, 0xE0, 0x00,
0x00, 0x00, 0x00, 0x3E, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x01, 0xFF, 0x80, 0x00,
0x00, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x00,
0x00, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x07, 0xF0, 0x00,
0x00, 0x00, 0x00, 0x7C, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xFE, 0x00,
0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0x00, 0x7C, 0x00, 0x00, 0x7F, 0x00,
0x00, 0x0F, 0x80, 0x7C, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0xC0, 0x7C, 0x00, 0x00, 0x1F, 0x80,
0x00, 0x0F, 0xE0, 0x7C, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xF0, 0x7C, 0x00, 0x00, 0x7F, 0x80,
0x00, 0x07, 0xFC, 0xFC, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x03, 0xFE, 0xFC, 0x00, 0x7F, 0xFF, 0x80,
0x00, 0x01, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, 0x00,
0x00, 0x00, 0x3F, 0xF8, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFE, 0x00, 0x00,
0x00, 0x00, 0x07, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7C, 0x00,
0x00, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xF0, 0x00, 0x7E, 0x00,
0x00, 0x00, 0x7F, 0xE3, 0xF8, 0x0E, 0x7E, 0x00, 0x00, 0x00, 0xFF, 0x01, 0xFE, 0x1F, 0x3E, 0x00,
0x00, 0x01, 0xFE, 0x00, 0xFF, 0x1F, 0x3E, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x7F, 0x1F, 0x3F, 0x00,
0x00, 0x07, 0xF0, 0x00, 0x3F, 0x9F, 0xBF, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xDF, 0x9F, 0x00,
0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xEF, 0x9F, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xEF, 0x9F, 0x00,
0x00, 0x7F, 0x00, 0x00, 0x03, 0xEF, 0x9F, 0x1C, 0x00, 0x7E, 0x00, 0x00, 0x01, 0xCF, 0x9F, 0x3E,
0x00, 0x3C, 0x00, 0x00, 0x00, 0x0F, 0x9F, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x9F, 0x3E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x9F, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x8E, 0xFE,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x81, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xFC,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x07, 0xF0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x9F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xC0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0C, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x60, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0xC1, 0x80, 0x00, 0x00, 0x00,
0x00, 0xC1, 0x81, 0xC0, 0x80, 0x00, 0x0E, 0x00, 0x00, 0xC3, 0x01, 0xC0, 0x80, 0x00, 0x1F, 0x00,
0x00, 0xC6, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x80, 0x00, 0x3F, 0x00,
0x00, 0xC4, 0x00, 0x00, 0x80, 0x00, 0x3F, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x80, 0x00, 0x3E, 0x00,
0x00, 0xC4, 0x00, 0x01, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xC4, 0x00, 0x01, 0x80, 0x00, 0x3E, 0x00,
0x00, 0xC2, 0x01, 0xC1, 0x80, 0x00, 0x3E, 0x00, 0x00, 0x42, 0x01, 0xC3, 0x00, 0x00, 0x3E, 0x00,
0x00, 0x41, 0x01, 0xC3, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x60, 0x80, 0x02, 0x00, 0x00, 0x3E, 0x00,
0x00, 0x60, 0x00, 0x02, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x3E, 0x00,
0x00, 0x18, 0x00, 0x0C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x00, 0x3E, 0x00,
0x00, 0x06, 0x00, 0x30, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0xF0, 0xC0, 0x00, 0x00, 0x3E, 0x00,
0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x3E, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0xFE, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7C, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x1F, 0xFE, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7C, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0xF8, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFE, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x01, 0xF0, 0x00, 0x00, 0x00,
0x00, 0x0F, 0xFF, 0xC3, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00,
0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xF8, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x1F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x1F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x9F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0x3F, 0xE0, 0x03, 0xEF, 0xFF, 0x00, 0x00,
0x00, 0x3F, 0xE0, 0x03, 0xE7, 0xFF, 0x00, 0x00, 0x00, 0x36, 0x60, 0x03, 0xE3, 0xFF, 0x00, 0x00,
0x00, 0x36, 0x60, 0x03, 0xE1, 0xFF, 0x00, 0x00, 0x00, 0x30, 0x60, 0x03, 0xE0, 0xFF, 0x00, 0x00,
0x00, 0x38, 0xE0, 0x03, 0xE0, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x3F, 0xC0, 0x00,
0x00, 0x3F, 0xE0, 0x03, 0xE0, 0xFF, 0xC0, 0x00, 0x00, 0x3F, 0xE0, 0x07, 0xE7, 0xFF, 0xE0, 0x00,
0x00, 0x06, 0x60, 0x07, 0xEF, 0xFF, 0xF0, 0x00, 0x00, 0x06, 0x60, 0x07, 0xCF, 0xFF, 0xF8, 0x00,
0x00, 0x07, 0x60, 0x01, 0x8F, 0xF1, 0xFC, 0x00, 0x00, 0x03, 0xC0, 0x40, 0x07, 0xE0, 0xFC, 0x00,
0x00, 0x01, 0x87, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x01, 0x80, 0x00, 0x84, 0x00, 0x00, 0x7C, 0x00,
0x00, 0x70, 0x00, 0x02, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x58, 0x03, 0x84, 0x00, 0x00, 0xFC, 0x00,
0x00, 0x44, 0x04, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF8, 0x04, 0x80, 0x00, 0x00, 0xF8, 0x00,
0x00, 0xF0, 0x04, 0x80, 0x01, 0xC0, 0xF8, 0x00, 0x01, 0x08, 0x04, 0x80, 0x3E, 0x40, 0xF8, 0x00,
0x01, 0x08, 0x03, 0x81, 0xC0, 0x40, 0xF8, 0x00, 0x01, 0x88, 0x00, 0x01, 0x00, 0x80, 0xF8, 0x00,
0x01, 0x60, 0x00, 0x40, 0x80, 0x80, 0xF8, 0x00, 0x01, 0xA0, 0x03, 0x80, 0x83, 0x00, 0xF8, 0x00,
0x01, 0x60, 0x0D, 0x00, 0xCC, 0x00, 0xF8, 0x00, 0x01, 0x00, 0x00, 0x80, 0x38, 0x00, 0xF8, 0x00,
0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0x81, 0xF8, 0x00,
0x00, 0x40, 0x00, 0x80, 0x70, 0x01, 0xF8, 0x00, 0x00, 0xB0, 0x0F, 0x01, 0x80, 0x01, 0xF8, 0x00,
0x00, 0x8C, 0x08, 0x01, 0x00, 0x00, 0xF0, 0x00, 0x01, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x10, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xC4, 0x00, 0x00, 0x00,
0x00, 0x00, 0x07, 0x81, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x81, 0x0C, 0x00, 0x00, 0x00,
0x00, 0x00, 0x06, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x80, 0xF0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
} ;
int write_lcd(int lcdrw, int data, int wtime);
// wriate funtion(0 data display, 1 reg inst), data, wating time
main()
{
puts("Sterowanie Gr LCD przez Lpt o adresie H378");
for (segmentLcd = 0; segmentLcd < 3; segmentLcd++)
{
data = 62;// display OFF
write_lcd(1, data, 5); // 1 write reg instruction
sleep (1);
data = 63; // display ON
write_lcd(1, data, 1);
data = 192; // display start line
write_lcd(1, data, 1);
data = 64; // set Y to 0
write_lcd(1, data, 1);
for (pagecount = 0; pagecount < 8; pagecount++)
{
data = 184 + pagecount; // page 0
write_lcd(1, data, 1);
invers = 7 - pagecount;
data =0; //variable data for display
for (count = 0; count < 64; count++)
{
data = ACeKData[(count * 8 + invers + segmentLcd * 512)];
write_lcd(0, data, 1);
}
}
}
puts("obraz wpisany :)");
return 0;
}
int write_lcd(int lcdrw, int data, int wtime)
{
lcdxxx = lcdreg [segmentLcd] + lcdrw;
_outp(lpt, data);
_outp(lptr, lcdxxx);
_outp(lptr, (lcdxxx += 4));
_outp(lptr, (lcdxxx -=4));
sleep(wtime);
data = _inp(lpt);
return data;
}
[center][/center]
BTW Jesli opis jest zbyt czytelny lub za bardzo uproszczony prosze dac znac.