Arduino и LCD с Миника 1102Ф

Yurchik26
Offline
Зарегистрирован: 16.03.2013

Добрый день. Помогите советом или тыкните в место где читать надо. Есть у меня Ардуина (ну это понятно) и дисплей с кассы миника 1102ф, там он жк с двумя ЭКР1820ВГ1 (COP472-3) и инвертором К561ЛА2. Вообщем я все это дело подключил (по аппаратной части), подключил библиотеку SPI, и дело пошло. Вообщем все управляется, знаки выводятся, а вот с спец сегментами (черточки сверху) у меня не идёт. Вот скетч 

#include "SPI.h"

void setup()
{
    SPI.begin();
    pinMode(10, HIGH);
    pinMode(9, HIGH);
}

void loop()
{
    digitalWrite(9, HIGH);
    digitalWrite(10, HIGH);
    SPI.beginTransaction(SPISettings(100000, LSBFIRST, SPI_MODE2));
    SPI.transfer(B00000000);
    SPI.transfer(B00000000);
    SPI.transfer(B00000000);
    SPI.transfer(B00000000);
    SPI.transfer(B10011000);
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
    digitalWrite(10, HIGH);
    SPI.transfer(B00000000);
    SPI.transfer(B00000000);
    SPI.transfer(B00000000);
    SPI.transfer(B00000000);
    SPI.transfer(B11100000);
    SPI.endTransaction();
    digitalWrite(10, LOW);
    delay(1000);
}

Вообщем при изменении бит спец сегментов (допустим в младшем кристалле), у меня они управляются половина в младшем, а половина перескакивает на старший кристалл. И не могу понять в чем дело. Посылку формирую как по даташиту. 32 бита информации по знакам, 4 бита спец символа, и 4 бита служебных. Где я ошибся?

Yurchik26
Offline
Зарегистрирован: 16.03.2013

Если усреднить, то это последняя посылка из 8 бит (служебные и спец символы)

SPI.transfer(B11100111); -  она дает черту над 4 знаком в старшем кристале (ноль через инверсию дает 1, сегмент загорается)

SPI.transfer(B11100011); -  а эта дает черту над 4 знаком в старшем кристале и черту над 1 знаком в младшем кристале

http://pdf.datasheetcatalog.com/datasheet/nationalsemiconductor/DS006932.PDF

svm
Offline
Зарегистрирован: 06.11.2016

Посмотри здесь  http://arduino.ru/forum/apparatnye-voprosy/displei-16kh1-ot-kkm-elves-mikro?page=1#comment-462869  , делал давно, подробности не помню.

Yurchik26
Offline
Зарегистрирован: 16.03.2013

Спасибо посмотрю. Так я и не понял где накосячил. Пришел к тому что сделал табличку символов.

SPI.transfer(B00000011); 0
SPI.transfer(B10011111); 1
SPI.transfer(B00100101); 2
SPI.transfer(B00001101); 3
SPI.transfer(B10011001); 4
SPI.transfer(B01001001); 5
SPI.transfer(B01000001); 6
SPI.transfer(B00011111); 7 
SPI.transfer(B00000001); 8
SPI.transfer(B00001001); 9

Это символы цифр, ими получается управлять как надо.

SPI.transfer(B11101000); 1
SPI.transfer(B00010001); 2
SPI.transfer(B00010010); 3
SPI.transfer(B00010100); 4
SPI.transfer(B00011000); 5
SPI.transfer(B11100001); 6
SPI.transfer(B11100010); 7
SPI.transfer(B11100100); 8

Это спец символы и служебные, если читать с младшего бита, то первые 4 это черты, 4 служебных. Номера рядом, это над каким по счету знаку будет черта. И вот получается, что пишу я в младший кристал, а на дисплее выводится в старший кристал. Где допустил ошибку? 

svm
Offline
Зарегистрирован: 06.11.2016

Там готовый скетч под этот дисплей. И в нем-же немного теории.

Yurchik26
Offline
Зарегистрирован: 16.03.2013

Да да. 89 сообщение. Видел спасибо. Пока нет под рукой его. Чуть позднее проверю, и напишу что получилось.

Yurchik26
Offline
Зарегистрирован: 16.03.2013

Все нормально братцы. Все управляется как надо. Дело было в том, что это просто такая распайка у дисплея, там все спец знаки смещены на 1 символ. Короче через SPI все работает с скетчем представленным выше. Может чтоб темы не плодить, сразу тут напишу. Кто подскажет как работать с термопринтером из этого аппарата? Может кто знает хотя-бы просто модель этого принтера, или даташит на него есть? На нем ничего не написано (маркировок нет).

http://cloud.mail.ru/public/FdeQ%2FT8vzX4edV

http://cloud.mail.ru/public/AVGR%2FoVtm1KbPk

http://cloud.mail.ru/public/AXSS%2FfNgjTofkL