Дисплей от Siemens S65

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
Andrew_KMR
Грызет канифоль
Сообщения: 274
Зарегистрирован: Пт мар 12, 2010 12:09:26
Откуда: Кемерово

Re: Дисплей от Siemens S65

Сообщение Andrew_KMR »

Кстати одно время пробовал питать этот дисплей от 5В, никаких проблем не было, два дня на отказ гонял и ничего…
Теперь купленные запасы использую на отладках STM32.
Изображение
Реклама
Chettuser

Re: Дисплей от Siemens S65

Сообщение Chettuser »

Народ, где сабж находите?
Реклама
Аватара пользователя
Andrew_KMR
Грызет канифоль
Сообщения: 274
Зарегистрирован: Пт мар 12, 2010 12:09:26
Откуда: Кемерово

Re: Дисплей от Siemens S65

Сообщение Andrew_KMR »

В продаже то уже этих дисплеев фактически нет, остались только в запасах у тех, кто покупал по несколько штук.
Chettuser

Re: Дисплей от Siemens S65

Сообщение Chettuser »

Andrew_KMR писал(а):Изображение

Что за чудо плата? :)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Andrew_KMR
Грызет канифоль
Сообщения: 274
Зарегистрирован: Пт мар 12, 2010 12:09:26
Откуда: Кемерово

Re: Дисплей от Siemens S65

Сообщение Andrew_KMR »

Изображение
Да заказывал себе несколько плат на заводе, решил их вот так спроектировать. На F103 в 48 ногом корпусе и на F407 в 176 ногом. USB часть отдельно вынес, там и хаб и ст линк и две фт232.
Реклама
Аватара пользователя
Balzercvua
Потрогал лапой паяльник
Сообщения: 311
Зарегистрирован: Вт дек 31, 2013 17:36:43

Re: Дисплей от Siemens S65

Сообщение Balzercvua »

Ребята у меня есть вопрос!!!Вот вчера начал работать с диспом и у меня такая проблема провел иницилизацию,очистил ,залил черным,очищаю еще раз заливаю белым а он нехочет!!! :cry:
Реклама
Аватара пользователя
Andrew_KMR
Грызет канифоль
Сообщения: 274
Зарегистрирован: Пт мар 12, 2010 12:09:26
Откуда: Кемерово

Re: Дисплей от Siemens S65

Сообщение Andrew_KMR »

Все зависит от того каким образом идет очистка и заливка, возможно при повторной заливке не задаете область памяти…
Аватара пользователя
Balzercvua
Потрогал лапой паяльник
Сообщения: 311
Зарегистрирован: Вт дек 31, 2013 17:36:43

Re: Дисплей от Siemens S65

Сообщение Balzercvua »

Andrew_KMR писал(а):Все зависит от того каким образом идет очистка и заливка, возможно при повторной заливке не задаете область памяти…

Скорее всего да потомучто уровень у меня начинающий со всем этим делом и хотел бы совет как правильно это делать пишу я в
баскоме!
Аватара пользователя
Balzercvua
Потрогал лапой паяльник
Сообщения: 311
Зарегистрирован: Вт дек 31, 2013 17:36:43

Re: Дисплей от Siemens S65

Сообщение Balzercvua »

Ребята помогите не могу понять что я делаю неправильно :cry:
Посылаю эти две пачки иницилизации:

Init1:
Data &HFDFD% , &HFDFD%,
Data &HEF00%,
Data &HEE04% , &H1B04%,
Data &HFEFE% , &HFEFE%,
Data &HEF90% , &H4A04% , &H7F3F% , &HEE04% , &H4306%

Init2:
Data &HEF90% , &H0983% , &H0800% , &H0BAF% , &H0A00% , &H0500% , &H0600% , &H0700%,
Data &HEF00%,
Data &HEE0C%,
Data &HEF90% , &H0080%,
Data &HEFB0% , &H4902%,
Data &HEF00%,
Data &H7F01% , &HE181%,
Data &HE202%,
Data &HE276%,
Data &HE183%,
Data &H8001%,
Data &HEF90%,
Data &H0000%

после этого рисую делаю что угодно а вот если отправлю &H0040% заливает все черным цветом что мне и нужно что бы не видеть полосу заливки данными бо командой она происходит быстрее но после етой команды никако реакции может ктото знает как это исправить!!! :shock:
Kezoox
Открыл глаза
Сообщения: 46
Зарегистрирован: Вт янв 01, 2013 12:36:33

Re: Дисплей от Siemens S65

Сообщение Kezoox »

Подскажите наблюдается эффект когда сьедается первый знак в строчке в модели экрана в протеусе
экран разбит на строки и позиции
задается СТРОКА-например пятая 0x404F (16пикселей высота )
начальная позиция первого знака 0x000B (12пикселей ширина )
а потом -позиция дата, позиция дата,позиция дата,позиция дата -зарисовываются символы 12х16

и если не повторять для каждого знака строку а только позицию первый знак сьедается и позиция сдвигается в "-1" а все остальные знаки отображаются
и такое не происходит на реальном экране
это специфика модели в протеусе или мой экран ls020 работает несмотря на отсутствие повторения номера строчки?

0040 0080 не заливает вообще -заливаю после 0504(Направление) ldi DATA,0x00;;ЦВЕТ ФОНА
а потом в цикле задержки 131на175 эту дату отправляю моментально закрашивает
Kezoox
Открыл глаза
Сообщения: 46
Зарегистрирован: Вт янв 01, 2013 12:36:33

Re: Дисплей от Siemens S65

Сообщение Kezoox »

откопано на лонах интернета оказывется эти команды просто ширмочки :(
:0x0040 - дисплей залит черным цветом (это не заливка цветом, картинка не стирается из памяти)
0x0080 - дисплей залит белым цветом (то же)
0x0000 - изображение восстанавливается-работает :(
и если отправлять сначала Y а потом X чаще в модели протеуса чем в lcd наблюдаются разные глюки
Аватара пользователя
Balzercvua
Потрогал лапой паяльник
Сообщения: 311
Зарегистрирован: Вт дек 31, 2013 17:36:43

Re: Дисплей от Siemens S65

Сообщение Balzercvua »

Ребята у кого то не завалялась дока по L2F50XXXX или кто то поможет разьяснить как проходит иницилизация и какие команды у меня были ls020 я их по впихивал в разнык уст-ва терь остался этот гемор!!!Буду очень благодарен!!!
Аватара пользователя
BigallS
Опытный кот
Сообщения: 752
Зарегистрирован: Пт апр 15, 2011 21:11:22
Откуда: Россия

Re: Дисплей от Siemens S65

Сообщение BigallS »

Balzercvua писал(а):Ребята у кого то не завалялась дока по L2F50XXXX или кто то поможет разьяснить как проходит иницилизация и какие команды...


Всё что нашёл ранее по этому дисплею во вложенном архиве, сам код не проверял.
Вложения
Дисплей Epson LCD L2F50 от Siemens S65.rar
(887.3 КБ) 1194 скачивания
mcu51c51
Родился
Сообщения: 9
Зарегистрирован: Чт мар 05, 2015 07:21:08

Re: Дисплей от Siemens S65

Сообщение mcu51c51 »

:) :))


Двухбайтовые шрифты не могут быть отображены
Спойлер{0x40,0x00,0x40,0x00,0x40,0x08,0xFC,0x1F,0x44,0x08,0x44,0x08,0xFC,0x0F,0x44,
0x08,0x44,0x08,0xFC,0x0F,0x44,0x00,0x40,0x20,0x40,0x20,0x80,0x3F,0x00,0x00},

{0x00,0x00,0xF8,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xFC,0x08,0x00,0x00,
0x00,0x00,0x07,0x02,0x02,0x02,0x1F,0x22,0x22,0x22,0x22,0x23,0x20,0x38,0x00},

{0x00,0x00,0x1F,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x3F,0x10,0x00,0x00,
0x00,0x00,0xE0,0x40,0x40,0x40,0xF8,0x44,0x44,0x44,0x44,0xC4,0x04,0x1C,0x00},

{0x02,0x00,0x02,0x00,0x02,0x10,0x3F,0xF8,0x22,0x10,0x22,0x10,0x3F,0xF0,0x22,
0x10,0x22,0x10,0x3F,0xF0,0x22,0x00,0x02,0x04,0x02,0x04,0x01,0xFC,0x00,0x00},


Код:
/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.9 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Chip type : ATmega16
Program type : Application
Clock frequency : 14,300000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/

#include <mega16>

#include <spi>

#include <string>

#include <delay>

#include <stdio>

#define DISP_W 132
#define DISP_H 176
#define CHAR_W 8
#define CHAR_H 14

// строки для примера
char txt1[]="Spirit for Datagor.ru";
char txt2[]="Siemens S65";
char txt3[]="display";
char txt4[]="Test programm";

// сопоставление выводов дисплея и микроконтроллера
#define RESET PORTB.6
#define CS PORTB.3
// тактовый и информационный вход дисплея
// подключены к аппаратному SPI микроконтроллера


unsigned int i=0, j=0;
unsigned int counter=0;


// массив символов
flash char ascii_tab[96][14]={
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // space (32)
{ 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00}, //!
{ 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //"
{ 0x00, 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00}, //#
{ 0x00, 0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06, 0x86, 0xc6, 0x7c, 0x18, 0x18}, //$
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x0c, 0x18, 0x30, 0x66, 0xc6, 0x00, 0x00}, // %
{ 0x00, 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0xcc, 0x76, 0x00, 0x00}, // &
{ 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '
{ 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00}, // (
{ 0x00, 0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00}, // )
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00}, // *
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00}, // +
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00}, // ґ
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // -
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00}, // .
{ 0x00, 0x00, 0x00, 0x02, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00}, // /
{ 0x00, 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xd6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00}, // 0 (48-32)
{ 0x00, 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x3c, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x0c, 0x1e, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x38, 0x60, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0xc6, 0x06, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x0c, 0x78, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xde, 0xde, 0xde, 0xdc, 0xc0, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0xf0, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0x66, 0x3a, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0x78, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xe6, 0x66, 0x6c, 0x6c, 0x78, 0x6c, 0x6c, 0x66, 0xe6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xee, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xde, 0x7c, 0x0e, 0x00},
{ 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xfe, 0x6c, 0x6c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x7c, 0x38, 0x7c, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0xc6, 0x8c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00},
{ 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff},
{ 0x00, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0x76, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x1c, 0x36, 0x32, 0x30, 0x7c, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78},
{ 0x00, 0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c},
{ 0x00, 0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0xf0, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x70, 0x1c, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x66, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00},
{ 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00}
};

// определение основных цветов
// просто для удобства;)
#define BLACK 0x0000
#define RED 0xf800
#define GREEN 0x07e0
#define BLUE 0x001f
#define WHITE 0xffff


// цвет фона и текста по умолчанию
unsigned int textcolor=GREEN;
unsigned int bgcolor=0x0000;


// запись одного байта в дисплей
void lcd_write8(char dat)
{
spi(dat);
}

// запись двух байт
void lcd_write(unsigned int dat)
{
lcd_write8(dat>>8);
lcd_write8 (dat);
}

// дергаем выводом CS для обозначения конца передачи данных
void lcd_cspulse(void)
{
CS= 1;
#asm("nop")
CS= 0;
}

// выбор регистра в контроллере дисплея
void lcd_reg(char register_name)
{
lcd_write8(0x74); // стартовый байт на передачу команды
lcd_write(register_name);
lcd_cspulse();
}

// отправка двух байт в графическую память дисплея
void lcd_dat8(char register_dat1, char register_dat2)
{
lcd_write8(0x76); // стартовый байт на запись данных
lcd_write8(register_dat1);
lcd_write8(register_dat2);
lcd_cspulse();

}

// то же самое, но из 16-и битной переменной
void lcd_dat(unsigned int data)
{
lcd_write8(0x76); // стартовый байт на запись данных
lcd_write(data);
lcd_cspulse();
}


// программа инициализации дисплея
void lcd_init_c(void)
{
RESET=0;
CS=1;
delay_ms(1);
RESET=1;

delay_ms(10);

CS=0;

delay_ms(50);
lcd_reg(0x00);lcd_dat(0x0001);

lcd_reg(0x03);lcd_dat(0x000c);

delay_ms(100);
lcd_reg(0x0d);lcd_dat(0x0616);

lcd_reg(0x01);lcd_dat(0x0215);

delay_ms(150);
lcd_reg(0x07);lcd_dat(0x0037);

CS= 1;
}


// заливка дисплея цветом color
void fill_screen(unsigned int color)
{

CS= 0; // select display

lcd_reg(0x16);lcd_dat(0x8300);
lcd_reg(0x17);lcd_dat(0xAF00);
lcd_reg(0x21);lcd_dat(0x0000);
lcd_reg(0x22);lcd_write8(0x76);

// start data transmission
for (i=0; i<DISP_H; i++)
{
for(j=0;j<DISP_W;j++)
{
lcd_write(color);
}
}

CS= 1; // deselect display
}

// поместить символ в графическую память дисплея
void put_char(char x, char y, char c, unsigned int color, char rot)
{
char h,ch,p,mask;

CS= 0;

switch(rot)
{
default:
case 0:
lcd_reg(0x05);lcd_dat(0x0038);
lcd_reg(0x17);lcd_dat8(x+CHAR_W-1, x);
lcd_reg(0x16);lcd_dat8(y+CHAR_H-1, y);
lcd_reg(0x21);lcd_dat8(x,y);
lcd_reg(0x22);
lcd_write8(0x76);
break;
case 1:
lcd_reg(0x05);lcd_dat(0x0030);
lcd_reg(0x16);lcd_dat8(x+CHAR_W-1, x);
lcd_reg(0x17);lcd_dat8(y+CHAR_H-1, y);
lcd_reg(0x21);lcd_dat8(y, x);
lcd_reg(0x22);
lcd_write8(0x76);
break;
}


for (h=0; h<CHAR_H; h++) // every column of the character
{
if (rot==1)
ch=ascii_tab[ c-32 ][h];
else
ch=ascii_tab[ c-32 ][CHAR_H-h-1];

mask=0x80;
for (p=0; p<CHAR_W; p++) // write the pixels
{
if (ch&mask)
{
lcd_write(color);
}
else
{
lcd_write(bgcolor);
}
mask=mask/2;
} // for p
}
CS= 1; // deselect display

}


// записать строку, начиная с координат x, y, цветом color и ориентацией orient
// если orient=0, то горизонтально, если =1, то вертикально
void put_string(unsigned char x, unsigned char y, char *str, unsigned int color, unsigned char orient)
{
j=0;
while (j<strlen(str))
{
put_char(x+j*CHAR_W,y,str[j],orient, color); // 0 deg. rotated
j++;
}
}


interrupt [EXT_INT0] void ext_int0_isr(void)
{

}


// прерывание INT1
// запись строк примера в дисплей
interrupt [EXT_INT1] void ext_int1_isr(void)
{

put_string(6,0,txt1,0, textcolor);

put_string(25,00,txt2,1, textcolor);

put_string(40,15,txt3,1, textcolor);

put_string(35,120,txt4,0, textcolor);

}


interrupt [EXT_INT2] void ext_int2_isr(void)
{

}


void main(void)
{
PORTA=0x00;DDRA=0x00;PORTB=0x00;DDRB=0xFF;PORTC=0xFF;DDRC=0x00;PORTD=0xFF;DDRD=0x00;TCCR0=0x00;
TCNT0=0x00;OCR0=0x00;TCCR1A=0x00;TCCR1B=0x00;TCNT1H=0x00;TCNT1L=0x00;ICR1H=0x00;ICR1L=0x00;
OCR1AH=0x00;OCR1AL=0x00;OCR1BH=0x00;OCR1BL=0x00;ASSR=0x00;TCCR2=0x00;TCNT2=0x00;OCR2=0x00;
GICR|=0xE0;MCUCR=0x0A;MCUCSR=0x00;GIFR=0xE0;TIMSK=0x00;ACSR=0x80;SFIOR=0x00;SPCR=0x50;SPSR=0x01;

#asm("sei")

lcd_init_c(); // инициализация дисплея

fill_screen(bgcolor); // заливка черным

while (1)
{

char cnt[16]; // промежуточная переменная для функции sprint()


sprintf(cnt,"%5u",counter); // преобразование числа в строку

put_string(68,60,cnt,0, BLUE); // вывод полученной строки

counter++; // инкремент переменной

};
}



============
==============


2-байт дисплей Китайский шрифт

Невозможно отобразить

Дисплей Multi-язык

{0x40,0x00,0x40,0x00,0x40,0x08,0xFC,0x1F,0x44,0x08,0x44,0x08,0xFC,0x0F,0x44,
0x08,0x44,0x08,0xFC,0x0F,0x44,0x00,0x40,0x20,0x40,0x20,0x80,0x3F,0x00,0x00},

{0x00,0x00,0xF8,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xFC,0x08,0x00,0x00,
0x00,0x00,0x07,0x02,0x02,0x02,0x1F,0x22,0x22,0x22,0x22,0x23,0x20,0x38,0x00},

{0x00,0x00,0x1F,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x3F,0x10,0x00,0x00,
0x00,0x00,0xE0,0x40,0x40,0x40,0xF8,0x44,0x44,0x44,0x44,0xC4,0x04,0x1C,0x00},

{0x02,0x00,0x02,0x00,0x02,0x10,0x3F,0xF8,0x22,0x10,0x22,0x10,0x3F,0xF0,0x22,
0x10,0x22,0x10,0x3F,0xF0,0x22,0x00,0x02,0x04,0x02,0x04,0x01,0xFC,0x00,0x00},
:)) :)) :beer:
Последний раз редактировалось mcu51c51 Чт мар 05, 2015 23:34:33, всего редактировалось 1 раз.
mcu51c51
Родился
Сообщения: 9
Зарегистрирован: Чт мар 05, 2015 07:21:08

Re: Дисплей от Siemens S65

Сообщение mcu51c51 »

mcu51c51 писал(а)::) :))


Двухбайтовые шрифты не могут быть отображены
Спойлер{0x40,0x00,0x40,0x00,0x40,0x08,0xFC,0x1F,0x44,0x08,0x44,0x08,0xFC,0x0F,0x44,
0x08,0x44,0x08,0xFC,0x0F,0x44,0x00,0x40,0x20,0x40,0x20,0x80,0x3F,0x00,0x00},

{0x00,0x00,0xF8,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xFC,0x08,0x00,0x00,
0x00,0x00,0x07,0x02,0x02,0x02,0x1F,0x22,0x22,0x22,0x22,0x23,0x20,0x38,0x00},

{0x00,0x00,0x1F,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x3F,0x10,0x00,0x00,
0x00,0x00,0xE0,0x40,0x40,0x40,0xF8,0x44,0x44,0x44,0x44,0xC4,0x04,0x1C,0x00},

{0x02,0x00,0x02,0x00,0x02,0x10,0x3F,0xF8,0x22,0x10,0x22,0x10,0x3F,0xF0,0x22,
0x10,0x22,0x10,0x3F,0xF0,0x22,0x00,0x02,0x04,0x02,0x04,0x01,0xFC,0x00,0x00},


Код:
/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.9 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Chip type : ATmega16
Program type : Application
Clock frequency : 14,300000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/

#include <mega16>

#include <spi>

#include <string>

#include <delay>

#include <stdio>

#define DISP_W 132
#define DISP_H 176
#define CHAR_W 8
#define CHAR_H 14

// строки для примера
char txt1[]="Spirit for Datagor.ru";
char txt2[]="Siemens S65";
char txt3[]="display";
char txt4[]="Test programm";

// сопоставление выводов дисплея и микроконтроллера
#define RESET PORTB.6
#define CS PORTB.3
// тактовый и информационный вход дисплея
// подключены к аппаратному SPI микроконтроллера


unsigned int i=0, j=0;
unsigned int counter=0;


// массив символов
flash char ascii_tab[96][14]={
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // space (32)
{ 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00}, //!
{ 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //"
{ 0x00, 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00}, //#
{ 0x00, 0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06, 0x86, 0xc6, 0x7c, 0x18, 0x18}, //$
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x0c, 0x18, 0x30, 0x66, 0xc6, 0x00, 0x00}, // %
{ 0x00, 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0xcc, 0x76, 0x00, 0x00}, // &
{ 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '
{ 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00}, // (
{ 0x00, 0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00}, // )
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00}, // *
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00}, // +
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00}, // ґ
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // -
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00}, // .
{ 0x00, 0x00, 0x00, 0x02, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00}, // /
{ 0x00, 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xd6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00}, // 0 (48-32)
{ 0x00, 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x3c, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x0c, 0x1e, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x38, 0x60, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0xc6, 0x06, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x0c, 0x78, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xde, 0xde, 0xde, 0xdc, 0xc0, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0xf0, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0x66, 0x3a, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0x78, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xe6, 0x66, 0x6c, 0x6c, 0x78, 0x6c, 0x6c, 0x66, 0xe6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xee, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xde, 0x7c, 0x0e, 0x00},
{ 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xfe, 0x6c, 0x6c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x7c, 0x38, 0x7c, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0xc6, 0x8c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00},
{ 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff},
{ 0x00, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0x76, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x1c, 0x36, 0x32, 0x30, 0x7c, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78},
{ 0x00, 0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c},
{ 0x00, 0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0xf0, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x70, 0x1c, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x66, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00},
{ 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00}
};

// определение основных цветов
// просто для удобства;)
#define BLACK 0x0000
#define RED 0xf800
#define GREEN 0x07e0
#define BLUE 0x001f
#define WHITE 0xffff


// цвет фона и текста по умолчанию
unsigned int textcolor=GREEN;
unsigned int bgcolor=0x0000;


// запись одного байта в дисплей
void lcd_write8(char dat)
{
spi(dat);
}

// запись двух байт
void lcd_write(unsigned int dat)
{
lcd_write8(dat>>8);
lcd_write8 (dat);
}

// дергаем выводом CS для обозначения конца передачи данных
void lcd_cspulse(void)
{
CS= 1;
#asm("nop")
CS= 0;
}

// выбор регистра в контроллере дисплея
void lcd_reg(char register_name)
{
lcd_write8(0x74); // стартовый байт на передачу команды
lcd_write(register_name);
lcd_cspulse();
}

// отправка двух байт в графическую память дисплея
void lcd_dat8(char register_dat1, char register_dat2)
{
lcd_write8(0x76); // стартовый байт на запись данных
lcd_write8(register_dat1);
lcd_write8(register_dat2);
lcd_cspulse();

}

// то же самое, но из 16-и битной переменной
void lcd_dat(unsigned int data)
{
lcd_write8(0x76); // стартовый байт на запись данных
lcd_write(data);
lcd_cspulse();
}


// программа инициализации дисплея
void lcd_init_c(void)
{
RESET=0;
CS=1;
delay_ms(1);
RESET=1;

delay_ms(10);

CS=0;

delay_ms(50);
lcd_reg(0x00);lcd_dat(0x0001);

lcd_reg(0x03);lcd_dat(0x000c);

delay_ms(100);
lcd_reg(0x0d);lcd_dat(0x0616);

lcd_reg(0x01);lcd_dat(0x0215);

delay_ms(150);
lcd_reg(0x07);lcd_dat(0x0037);

CS= 1;
}


// заливка дисплея цветом color
void fill_screen(unsigned int color)
{

CS= 0; // select display

lcd_reg(0x16);lcd_dat(0x8300);
lcd_reg(0x17);lcd_dat(0xAF00);
lcd_reg(0x21);lcd_dat(0x0000);
lcd_reg(0x22);lcd_write8(0x76);

// start data transmission
for (i=0; i<DISP_H; i++)
{
for(j=0;j<DISP_W;j++)
{
lcd_write(color);
}
}

CS= 1; // deselect display
}

// поместить символ в графическую память дисплея
void put_char(char x, char y, char c, unsigned int color, char rot)
{
char h,ch,p,mask;

CS= 0;

switch(rot)
{
default:
case 0:
lcd_reg(0x05);lcd_dat(0x0038);
lcd_reg(0x17);lcd_dat8(x+CHAR_W-1, x);
lcd_reg(0x16);lcd_dat8(y+CHAR_H-1, y);
lcd_reg(0x21);lcd_dat8(x,y);
lcd_reg(0x22);
lcd_write8(0x76);
break;
case 1:
lcd_reg(0x05);lcd_dat(0x0030);
lcd_reg(0x16);lcd_dat8(x+CHAR_W-1, x);
lcd_reg(0x17);lcd_dat8(y+CHAR_H-1, y);
lcd_reg(0x21);lcd_dat8(y, x);
lcd_reg(0x22);
lcd_write8(0x76);
break;
}


for (h=0; h<CHAR_H; h++) // every column of the character
{
if (rot==1)
ch=ascii_tab[ c-32 ][h];
else
ch=ascii_tab[ c-32 ][CHAR_H-h-1];

mask=0x80;
for (p=0; p<CHAR_W; p++) // write the pixels
{
if (ch&mask)
{
lcd_write(color);
}
else
{
lcd_write(bgcolor);
}
mask=mask/2;
} // for p
}
CS= 1; // deselect display

}


// записать строку, начиная с координат x, y, цветом color и ориентацией orient
// если orient=0, то горизонтально, если =1, то вертикально
void put_string(unsigned char x, unsigned char y, char *str, unsigned int color, unsigned char orient)
{
j=0;
while (j<strlen(str))
{
put_char(x+j*CHAR_W,y,str[j],orient, color); // 0 deg. rotated
j++;
}
}


interrupt [EXT_INT0] void ext_int0_isr(void)
{

}


// прерывание INT1
// запись строк примера в дисплей
interrupt [EXT_INT1] void ext_int1_isr(void)
{

put_string(6,0,txt1,0, textcolor);

put_string(25,00,txt2,1, textcolor);

put_string(40,15,txt3,1, textcolor);

put_string(35,120,txt4,0, textcolor);

}


interrupt [EXT_INT2] void ext_int2_isr(void)
{

}


void main(void)
{
PORTA=0x00;DDRA=0x00;PORTB=0x00;DDRB=0xFF;PORTC=0xFF;DDRC=0x00;PORTD=0xFF;DDRD=0x00;TCCR0=0x00;
TCNT0=0x00;OCR0=0x00;TCCR1A=0x00;TCCR1B=0x00;TCNT1H=0x00;TCNT1L=0x00;ICR1H=0x00;ICR1L=0x00;
OCR1AH=0x00;OCR1AL=0x00;OCR1BH=0x00;OCR1BL=0x00;ASSR=0x00;TCCR2=0x00;TCNT2=0x00;OCR2=0x00;
GICR|=0xE0;MCUCR=0x0A;MCUCSR=0x00;GIFR=0xE0;TIMSK=0x00;ACSR=0x80;SFIOR=0x00;SPCR=0x50;SPSR=0x01;

#asm("sei")

lcd_init_c(); // инициализация дисплея

fill_screen(bgcolor); // заливка черным

while (1)
{

char cnt[16]; // промежуточная переменная для функции sprint()


sprintf(cnt,"%5u",counter); // преобразование числа в строку

put_string(68,60,cnt,0, BLUE); // вывод полученной строки

counter++; // инкремент переменной

};
}



============
==============


Двухбайтовые шрифты не могут быть отображены
Невозможно отобразить

Дисплей Multi-язык

{0x40,0x00,0x40,0x00,0x40,0x08,0xFC,0x1F,0x44,0x08,0x44,0x08,0xFC,0x0F,0x44,
0x08,0x44,0x08,0xFC,0x0F,0x44,0x00,0x40,0x20,0x40,0x20,0x80,0x3F,0x00,0x00},

{0x00,0x00,0xF8,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xFC,0x08,0x00,0x00,
0x00,0x00,0x07,0x02,0x02,0x02,0x1F,0x22,0x22,0x22,0x22,0x23,0x20,0x38,0x00},

{0x00,0x00,0x1F,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x3F,0x10,0x00,0x00,
0x00,0x00,0xE0,0x40,0x40,0x40,0xF8,0x44,0x44,0x44,0x44,0xC4,0x04,0x1C,0x00},

{0x02,0x00,0x02,0x00,0x02,0x10,0x3F,0xF8,0x22,0x10,0x22,0x10,0x3F,0xF0,0x22,
0x10,0x22,0x10,0x3F,0xF0,0x22,0x00,0x02,0x04,0x02,0x04,0x01,0xFC,0x00,0x00},
:)) :)) :beer:
Последний раз редактировалось mcu51c51 Чт мар 05, 2015 23:35:20, всего редактировалось 1 раз.
mcu51c51
Родился
Сообщения: 9
Зарегистрирован: Чт мар 05, 2015 07:21:08

Re: Дисплей от Siemens S65

Сообщение mcu51c51 »

mcu51c51 писал(а):
mcu51c51 писал(а)::) :))


Двухбайтовые шрифты не могут быть отображены
Спойлер{0x40,0x00,0x40,0x00,0x40,0x08,0xFC,0x1F,0x44,0x08,0x44,0x08,0xFC,0x0F,0x44,
0x08,0x44,0x08,0xFC,0x0F,0x44,0x00,0x40,0x20,0x40,0x20,0x80,0x3F,0x00,0x00},

{0x00,0x00,0xF8,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xFC,0x08,0x00,0x00,
0x00,0x00,0x07,0x02,0x02,0x02,0x1F,0x22,0x22,0x22,0x22,0x23,0x20,0x38,0x00},

{0x00,0x00,0x1F,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x3F,0x10,0x00,0x00,
0x00,0x00,0xE0,0x40,0x40,0x40,0xF8,0x44,0x44,0x44,0x44,0xC4,0x04,0x1C,0x00},

{0x02,0x00,0x02,0x00,0x02,0x10,0x3F,0xF8,0x22,0x10,0x22,0x10,0x3F,0xF0,0x22,
0x10,0x22,0x10,0x3F,0xF0,0x22,0x00,0x02,0x04,0x02,0x04,0x01,0xFC,0x00,0x00},


Код:
/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.9 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Chip type : ATmega16
Program type : Application
Clock frequency : 14,300000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/

#include <mega16>

#include <spi>

#include <string>

#include <delay>

#include <stdio>

#define DISP_W 132
#define DISP_H 176
#define CHAR_W 8
#define CHAR_H 14

// строки для примера
char txt1[]="Spirit for Datagor.ru";
char txt2[]="Siemens S65";
char txt3[]="display";
char txt4[]="Test programm";

// сопоставление выводов дисплея и микроконтроллера
#define RESET PORTB.6
#define CS PORTB.3
// тактовый и информационный вход дисплея
// подключены к аппаратному SPI микроконтроллера


unsigned int i=0, j=0;
unsigned int counter=0;


// массив символов
flash char ascii_tab[96][14]={
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // space (32)
{ 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00}, //!
{ 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //"
{ 0x00, 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00}, //#
{ 0x00, 0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06, 0x86, 0xc6, 0x7c, 0x18, 0x18}, //$
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x0c, 0x18, 0x30, 0x66, 0xc6, 0x00, 0x00}, // %
{ 0x00, 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0xcc, 0x76, 0x00, 0x00}, // &
{ 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '
{ 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00}, // (
{ 0x00, 0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00}, // )
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00}, // *
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00}, // +
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00}, // ґ
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // -
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00}, // .
{ 0x00, 0x00, 0x00, 0x02, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00}, // /
{ 0x00, 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xd6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00}, // 0 (48-32)
{ 0x00, 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x3c, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x0c, 0x1e, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x38, 0x60, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0xc6, 0x06, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x0c, 0x78, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xde, 0xde, 0xde, 0xdc, 0xc0, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0xf0, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0x66, 0x3a, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0x78, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xe6, 0x66, 0x6c, 0x6c, 0x78, 0x6c, 0x6c, 0x66, 0xe6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xee, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xde, 0x7c, 0x0e, 0x00},
{ 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xfe, 0x6c, 0x6c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x7c, 0x38, 0x7c, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0xc6, 0x8c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00},
{ 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff},
{ 0x00, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0x76, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x1c, 0x36, 0x32, 0x30, 0x7c, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78},
{ 0x00, 0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c},
{ 0x00, 0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0xf0, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x70, 0x1c, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x66, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00},
{ 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00}
};

// определение основных цветов
// просто для удобства;)
#define BLACK 0x0000
#define RED 0xf800
#define GREEN 0x07e0
#define BLUE 0x001f
#define WHITE 0xffff


// цвет фона и текста по умолчанию
unsigned int textcolor=GREEN;
unsigned int bgcolor=0x0000;


// запись одного байта в дисплей
void lcd_write8(char dat)
{
spi(dat);
}

// запись двух байт
void lcd_write(unsigned int dat)
{
lcd_write8(dat>>8);
lcd_write8 (dat);
}

// дергаем выводом CS для обозначения конца передачи данных
void lcd_cspulse(void)
{
CS= 1;
#asm("nop")
CS= 0;
}

// выбор регистра в контроллере дисплея
void lcd_reg(char register_name)
{
lcd_write8(0x74); // стартовый байт на передачу команды
lcd_write(register_name);
lcd_cspulse();
}

// отправка двух байт в графическую память дисплея
void lcd_dat8(char register_dat1, char register_dat2)
{
lcd_write8(0x76); // стартовый байт на запись данных
lcd_write8(register_dat1);
lcd_write8(register_dat2);
lcd_cspulse();

}

// то же самое, но из 16-и битной переменной
void lcd_dat(unsigned int data)
{
lcd_write8(0x76); // стартовый байт на запись данных
lcd_write(data);
lcd_cspulse();
}


// программа инициализации дисплея
void lcd_init_c(void)
{
RESET=0;
CS=1;
delay_ms(1);
RESET=1;

delay_ms(10);

CS=0;

delay_ms(50);
lcd_reg(0x00);lcd_dat(0x0001);

lcd_reg(0x03);lcd_dat(0x000c);

delay_ms(100);
lcd_reg(0x0d);lcd_dat(0x0616);

lcd_reg(0x01);lcd_dat(0x0215);

delay_ms(150);
lcd_reg(0x07);lcd_dat(0x0037);

CS= 1;
}


// заливка дисплея цветом color
void fill_screen(unsigned int color)
{

CS= 0; // select display

lcd_reg(0x16);lcd_dat(0x8300);
lcd_reg(0x17);lcd_dat(0xAF00);
lcd_reg(0x21);lcd_dat(0x0000);
lcd_reg(0x22);lcd_write8(0x76);

// start data transmission
for (i=0; i<DISP_H; i++)
{
for(j=0;j<DISP_W;j++)
{
lcd_write(color);
}
}

CS= 1; // deselect display
}

// поместить символ в графическую память дисплея
void put_char(char x, char y, char c, unsigned int color, char rot)
{
char h,ch,p,mask;

CS= 0;

switch(rot)
{
default:
case 0:
lcd_reg(0x05);lcd_dat(0x0038);
lcd_reg(0x17);lcd_dat8(x+CHAR_W-1, x);
lcd_reg(0x16);lcd_dat8(y+CHAR_H-1, y);
lcd_reg(0x21);lcd_dat8(x,y);
lcd_reg(0x22);
lcd_write8(0x76);
break;
case 1:
lcd_reg(0x05);lcd_dat(0x0030);
lcd_reg(0x16);lcd_dat8(x+CHAR_W-1, x);
lcd_reg(0x17);lcd_dat8(y+CHAR_H-1, y);
lcd_reg(0x21);lcd_dat8(y, x);
lcd_reg(0x22);
lcd_write8(0x76);
break;
}


for (h=0; h<CHAR_H; h++) // every column of the character
{
if (rot==1)
ch=ascii_tab[ c-32 ][h];
else
ch=ascii_tab[ c-32 ][CHAR_H-h-1];

mask=0x80;
for (p=0; p<CHAR_W; p++) // write the pixels
{
if (ch&mask)
{
lcd_write(color);
}
else
{
lcd_write(bgcolor);
}
mask=mask/2;
} // for p
}
CS= 1; // deselect display

}


// записать строку, начиная с координат x, y, цветом color и ориентацией orient
// если orient=0, то горизонтально, если =1, то вертикально
void put_string(unsigned char x, unsigned char y, char *str, unsigned int color, unsigned char orient)
{
j=0;
while (j<strlen(str))
{
put_char(x+j*CHAR_W,y,str[j],orient, color); // 0 deg. rotated
j++;
}
}


interrupt [EXT_INT0] void ext_int0_isr(void)
{

}


// прерывание INT1
// запись строк примера в дисплей
interrupt [EXT_INT1] void ext_int1_isr(void)
{

put_string(6,0,txt1,0, textcolor);

put_string(25,00,txt2,1, textcolor);

put_string(40,15,txt3,1, textcolor);

put_string(35,120,txt4,0, textcolor);

}


interrupt [EXT_INT2] void ext_int2_isr(void)
{

}


void main(void)
{
PORTA=0x00;DDRA=0x00;PORTB=0x00;DDRB=0xFF;PORTC=0xFF;DDRC=0x00;PORTD=0xFF;DDRD=0x00;TCCR0=0x00;
TCNT0=0x00;OCR0=0x00;TCCR1A=0x00;TCCR1B=0x00;TCNT1H=0x00;TCNT1L=0x00;ICR1H=0x00;ICR1L=0x00;
OCR1AH=0x00;OCR1AL=0x00;OCR1BH=0x00;OCR1BL=0x00;ASSR=0x00;TCCR2=0x00;TCNT2=0x00;OCR2=0x00;
GICR|=0xE0;MCUCR=0x0A;MCUCSR=0x00;GIFR=0xE0;TIMSK=0x00;ACSR=0x80;SFIOR=0x00;SPCR=0x50;SPSR=0x01;

#asm("sei")

lcd_init_c(); // инициализация дисплея

fill_screen(bgcolor); // заливка черным

while (1)
{

char cnt[16]; // промежуточная переменная для функции sprint()


sprintf(cnt,"%5u",counter); // преобразование числа в строку

put_string(68,60,cnt,0, BLUE); // вывод полученной строки

counter++; // инкремент переменной

};
}



============
==============


Двухбайтовые шрифты не могут быть отображены
Невозможно отобразить

Дисплей Multi-язык

{0x40,0x00,0x40,0x00,0x40,0x08,0xFC,0x1F,0x44,0x08,0x44,0x08,0xFC,0x0F,0x44,
0x08,0x44,0x08,0xFC,0x0F,0x44,0x00,0x40,0x20,0x40,0x20,0x80,0x3F,0x00,0x00},

{0x00,0x00,0xF8,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xFC,0x08,0x00,0x00,
0x00,0x00,0x07,0x02,0x02,0x02,0x1F,0x22,0x22,0x22,0x22,0x23,0x20,0x38,0x00},

{0x00,0x00,0x1F,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x3F,0x10,0x00,0x00,
0x00,0x00,0xE0,0x40,0x40,0x40,0xF8,0x44,0x44,0x44,0x44,0xC4,0x04,0x1C,0x00},

{0x02,0x00,0x02,0x00,0x02,0x10,0x3F,0xF8,0x22,0x10,0x22,0x10,0x3F,0xF0,0x22,
0x10,0x22,0x10,0x3F,0xF0,0x22,0x00,0x02,0x04,0x02,0x04,0x01,0xFC,0x00,0x00},
:)) :)) :beer:
maksmkv
Родился
Сообщения: 18
Зарегистрирован: Пн июн 16, 2014 01:55:54

Re: Дисплей от Siemens S65

Сообщение maksmkv »

BigallS писал(а):
Balzercvua писал(а):Ребята у кого то не завалялась дока по L2F50XXXX или кто то поможет разьяснить как проходит иницилизация и какие команды...
Всё что нашёл ранее по этому дисплею во вложенном архиве, сам код не проверял.

Не работает данный код ((( Подключал как на схеме, только вертикальные линии.
Ответить

Вернуться в «Периферия»