Теперь купленные запасы использую на отладках STM32.
Дисплей от Siemens S65
- Andrew_KMR
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Пт мар 12, 2010 12:09:26
- Откуда: Кемерово
- Реклама
- Andrew_KMR
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Пт мар 12, 2010 12:09:26
- Откуда: Кемерово
Re: Дисплей от Siemens S65
В продаже то уже этих дисплеев фактически нет, остались только в запасах у тех, кто покупал по несколько штук.
- Andrew_KMR
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Пт мар 12, 2010 12:09:26
- Откуда: Кемерово
- Реклама
- Balzercvua
- Потрогал лапой паяльник
- Сообщения: 311
- Зарегистрирован: Вт дек 31, 2013 17:36:43
Re: Дисплей от Siemens S65
Ребята у меня есть вопрос!!!Вот вчера начал работать с диспом и у меня такая проблема провел иницилизацию,очистил ,залил черным,очищаю еще раз заливаю белым а он нехочет!!! 
- Andrew_KMR
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Пт мар 12, 2010 12:09:26
- Откуда: Кемерово
Re: Дисплей от Siemens S65
Все зависит от того каким образом идет очистка и заливка, возможно при повторной заливке не задаете область памяти…
- Balzercvua
- Потрогал лапой паяльник
- Сообщения: 311
- Зарегистрирован: Вт дек 31, 2013 17:36:43
Re: Дисплей от Siemens S65
Andrew_KMR писал(а):Все зависит от того каким образом идет очистка и заливка, возможно при повторной заливке не задаете область памяти…
Скорее всего да потомучто уровень у меня начинающий со всем этим делом и хотел бы совет как правильно это делать пишу я в
баскоме!
- Balzercvua
- Потрогал лапой паяльник
- Сообщения: 311
- Зарегистрирован: Вт дек 31, 2013 17:36:43
Re: Дисплей от Siemens S65
Ребята помогите не могу понять что я делаю неправильно
Посылаю эти две пачки иницилизации:
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% заливает все черным цветом что мне и нужно что бы не видеть полосу заливки данными бо командой она происходит быстрее но после етой команды никако реакции может ктото знает как это исправить!!!
Посылаю эти две пачки иницилизации:
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% заливает все черным цветом что мне и нужно что бы не видеть полосу заливки данными бо командой она происходит быстрее но после етой команды никако реакции может ктото знает как это исправить!!!
Re: Дисплей от Siemens S65
Подскажите наблюдается эффект когда сьедается первый знак в строчке в модели экрана в протеусе
экран разбит на строки и позиции
задается СТРОКА-например пятая 0x404F (16пикселей высота )
начальная позиция первого знака 0x000B (12пикселей ширина )
а потом -позиция дата, позиция дата,позиция дата,позиция дата -зарисовываются символы 12х16
и если не повторять для каждого знака строку а только позицию первый знак сьедается и позиция сдвигается в "-1" а все остальные знаки отображаются
и такое не происходит на реальном экране
это специфика модели в протеусе или мой экран ls020 работает несмотря на отсутствие повторения номера строчки?
0040 0080 не заливает вообще -заливаю после 0504(Направление) ldi DATA,0x00;;ЦВЕТ ФОНА
а потом в цикле задержки 131на175 эту дату отправляю моментально закрашивает
экран разбит на строки и позиции
задается СТРОКА-например пятая 0x404F (16пикселей высота )
начальная позиция первого знака 0x000B (12пикселей ширина )
а потом -позиция дата, позиция дата,позиция дата,позиция дата -зарисовываются символы 12х16
и если не повторять для каждого знака строку а только позицию первый знак сьедается и позиция сдвигается в "-1" а все остальные знаки отображаются
и такое не происходит на реальном экране
это специфика модели в протеусе или мой экран ls020 работает несмотря на отсутствие повторения номера строчки?
0040 0080 не заливает вообще -заливаю после 0504(Направление) ldi DATA,0x00;;ЦВЕТ ФОНА
а потом в цикле задержки 131на175 эту дату отправляю моментально закрашивает
Re: Дисплей от Siemens S65
откопано на лонах интернета оказывется эти команды просто ширмочки
:0x0040 - дисплей залит черным цветом (это не заливка цветом, картинка не стирается из памяти)
0x0080 - дисплей залит белым цветом (то же)
0x0000 - изображение восстанавливается-работает
и если отправлять сначала Y а потом X чаще в модели протеуса чем в lcd наблюдаются разные глюки
:0x0040 - дисплей залит черным цветом (это не заливка цветом, картинка не стирается из памяти)
0x0080 - дисплей залит белым цветом (то же)
0x0000 - изображение восстанавливается-работает
и если отправлять сначала Y а потом X чаще в модели протеуса чем в lcd наблюдаются разные глюки
- Balzercvua
- Потрогал лапой паяльник
- Сообщения: 311
- Зарегистрирован: Вт дек 31, 2013 17:36:43
Re: Дисплей от Siemens S65
Ребята у кого то не завалялась дока по L2F50XXXX или кто то поможет разьяснить как проходит иницилизация и какие команды у меня были ls020 я их по впихивал в разнык уст-ва терь остался этот гемор!!!Буду очень благодарен!!!
Re: Дисплей от Siemens S65
Всё что нашёл ранее по этому дисплею во вложенном архиве, сам код не проверял.Balzercvua писал(а):Ребята у кого то не завалялась дока по L2F50XXXX или кто то поможет разьяснить как проходит иницилизация и какие команды...
- Вложения
-
- Дисплей Epson LCD L2F50 от Siemens S65.rar
- (887.3 КБ) 1194 скачивания
Re: Дисплей от Siemens S65
Двухбайтовые шрифты не могут быть отображены
Спойлер
{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},
Последний раз редактировалось mcu51c51 Чт мар 05, 2015 23:34:33, всего редактировалось 1 раз.
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++; // инкремент переменной
};
}
============
==============
Двухбайтовые шрифты не могут быть отображены
Невозможно отобразить
Дисплей 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},![]()
![]()
Последний раз редактировалось mcu51c51 Чт мар 05, 2015 23:35:20, всего редактировалось 1 раз.
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},![]()
![]()
Re: Дисплей от Siemens S65
BigallS писал(а):Всё что нашёл ранее по этому дисплею во вложенном архиве, сам код не проверял.Balzercvua писал(а):Ребята у кого то не завалялась дока по L2F50XXXX или кто то поможет разьяснить как проходит иницилизация и какие команды...
Не работает данный код ((( Подключал как на схеме, только вертикальные линии.


