Перейти к содержанию
    

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

И почему-то на выводе 2.9В при включенном шлейфе с дисплеем напряжение 4В, отключаю шлейф и напряжение падает... Что за хрень... Но работает, пока еще не спалил...=)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

И почему-то на выводе 2.9В при включенном шлейфе с дисплеем напряжение 4В, отключаю шлейф и напряжение падает... Что за хрень... Но работает, пока еще не спалил...=)

 

Ипользуй программный SPI , скорость почти такая-же, лучше тот, который полностью расписан по битам

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ипользуй программный SPI , скорость почти такая-же, лучше тот, который полностью расписан по битам

Я просто запускал один SPI, причем только в CVAVR, так что как запустить по битам два я вообще не понимаю. И они будут работать вместе или только если один оключить, второй включить. Регистры же пишутся только одни, так что придется самому.

Или побитово, это я должен описать работу каждой ножки, например функция send - поднять лог одной, поднять другой, а через третью посылать данные? На енто я точно не способен, с регистрами легче

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я просто запускал один SPI, причем только в CVAVR, так что как запустить по битам два я вообще не понимаю. И они будут работать вместе или только если один оключить, второй включить. Регистры же пишутся только одни, так что придется самому.

Или побитово, это я должен описать работу каждой ножки, например функция send - поднять лог одной, поднять другой, а через третью посылать данные? На енто я точно не способен, с регистрами легче

Для экрана используйте функцию посылки через обыкновенное дрыгание ногами!

Ну а для памяти аппаратный......

void lcd_write(uint8_t a)

{

LCD_SCK=0;if (a & 128) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (a & 64) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (a & 32) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (a & 16) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (a & 8) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (a & 4) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (a & 2) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (a & 1) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

}

Только ноги правильно настройте.....

#define LCD_RS PORTC.4

#define LCD_RESET PORTC.3

#define LCD_CS PORTC.2

#define LCD_SCK PORTC.1

#define LCD_DAT PORTC.0

Использовать можно любые....

Изменено пользователем SashaGubov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И почему-то на выводе 2.9В при включенном шлейфе с дисплеем напряжение 4В, отключаю шлейф и напряжение падает... Что за хрень... Но работает, пока еще не спалил...=)

 

Это из-за защитных диодов по выводам данных внутри дисплея. Надо согласовывать уровни, так, как сделано у немцев (резисторы) либо логикой, либо диодами. Мк питается-то от пяти вольт, на линии данных - 4.6в, после встроенных защ. диодов на питании 4 вольта и формируется.

К стати, дисплей может работать и без питания - внутренее потребление около 1 ма, может и на "паразитном" питании сидеть, только это не совсем правильно ;-)

 

От перенапряжения по входам дисплей может сдохнуть, люди уже жаловались.....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это из-за защитных диодов по выводам данных внутри дисплея. Надо согласовывать уровни, так, как сделано у немцев (резисторы) либо логикой, либо диодами. Мк питается-то от пяти вольт, на линии данных - 4.6в, после встроенных защ. диодов на питании 4 вольта и формируется.

К стати, дисплей может работать и без питания - внутренее потребление около 1 ма, может и на "паразитном" питании сидеть, только это не совсем правильно ;-)

 

От перенапряжения по входам дисплей может сдохнуть, люди уже жаловались.....

Спасибо. Все понял. Что-нибудь придумаем.

 

Для экрана используйте функцию посылки через обыкновенное дрыгание ногами!

Ну а для памяти аппаратный......

void lcd_write(uint8_t a)

{

LCD_SCK=0;if (a & 128) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (a & 64) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (a & 32) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (a & 16) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (a & 8) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (a & 4) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (a & 2) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (a & 1) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

}

Только ноги правильно настройте.....

#define LCD_RS PORTC.4

#define LCD_RESET PORTC.3

#define LCD_CS PORTC.2

#define LCD_SCK PORTC.1

#define LCD_DAT PORTC.0

Использовать можно любые....

Сидел думал - Что за хрень, а потом ан нет стал догонять.... Значит для дисплеяя нужен только SCK и DAT, а у меня еще и CS дергается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо. Все понял. Что-нибудь придумаем.

Сидел думал - Что за хрень, а потом ан нет стал догонять.... Значит для дисплеяя нужен только SCK и DAT, а у меня еще и CS дергается.

CS тоже нужен! Посмотрите по примерам...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CS тоже нужен! Посмотрите по примерам...

Вроде где-то были. Взглянем. Всем спасибо :a14: . Если что че-нить ще глупое спрошу :twak: .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте уважаемые электронщики!У меня есть M65 lcd с контроллером L2F50** и еще есть огромное желание прикрутить его к МК. Но я не знаю WinAVR и контроллер у меня Мега16. Знаю основы Си и CVAVR. Мне бы только инициализировать его и все) Помогите новичку плз! Перечитал форум, скачал примеры с немецкого форума но нифига не разобрался)Подскажите, как инициализировать чтобы написать в cvavr! Заранее благодарен всем!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

http://electronix.ru/forum/index.php?showt...6563&st=300

 

Вот где-то на этой странице есть две ссылки на архивы с библиотекой под CV.

 

От себя добавлю - есть там файл disp.lib, так вот он викидывал ошибку при ассемблировании до тех пор, пока после всех строк ассемблерных вставок (#asm/#endasm) я не поубирал комментарии. Так что если не будет запускаться - уберите их.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот и назрел тупой вопрос.

Привожу код побитового SPI? много, но все очень понятно.

файл simple.c

 

#include <mega32.h>

#include <delay.h>

 

#include "lcd_function.h"

 

int main(void)

{

PORTB=0x5D;

DDRB=0xFF;

 

// backlight PWM generation

// use timer 2 in fast PWM mode for this

PORTD = 0<<7; // clear port before enable

DDRD = 1<<7; // will be used for OC2, must be output

TCCR2 = 1<<3 | 1<<6 | 1<<5 | 1<<0;

TCNT2=0x00;

OCR2=85;

delay_ms(1);

lcd_init();

while (1)

{

}

return(0);

}

 

 

файл lcd_function.h

 

#include <mega32.h>

#include <delay.h>

 

#define cmd 1

#define dat 0

 

#define LCD_CS PORTB.0

#define LCD_RESET PORTB.1

#define LCD_RS PORTB.2

#define LCD_DAT PORTB.5

#define LCD_SCK PORTB.7

 

char i=0;

char datcom=0;

int word=0;

 

int INIT1[12]={0xFDFD,0xFDFD,0xEF00,0xEE04,0x1B04,0xFEFE,0xFEFE,0xEF90,0x4A04,0x7F3F

,0xEE04,0x4306};

 

int INIT2[20]={0xEF90,0x0983,0x0800,0x0BAF,0x0A00,0x0500,0x0600,0x0700,0xEF00,0xEE0C

,0xEF90,0x0080,0xEFB0,0x4902,0xEF00,0x7F01,0xE181,0xE202,0xE276,0xE183};

 

int INIT3[1]={0x8001};

 

void lcd_write(char,int word);

//инициализация дисплея

void lcd_init()

{

 

for(i=0; i<12; i++) lcd_write(cmd, INIT1); //Первый массив данных

delay_ms(7);

 

for(i=0; i<20; i++) lcd_write(cmd, INIT2); //Второй массив данных

delay_ms(50);

 

for(i=0; i<1; i++) lcd_write(cmd, INIT3); //Третий массив данных

delay_ms(5);

}

 

//Запись байта

void lcd_write(char datcom, int word)

{

if(datcom & 1) LCD_RS=1; else LCD_RS=0;

LCD_CS=0;

LCD_SCK=0;if (word & 32768) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (word & 16384) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (word & 8192) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (word & 4096) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (word & 2048) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (word & 1024) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (word & 512) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (word & 256) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (word & 128) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (word & 64) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (word & 32) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (word & 16) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (word & 8) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (word & 4) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (word & 2) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_SCK=0;if (word & 1) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;

LCD_CS=1;

}

 

Проверял в VMLAB, все скачки подходят под числа, никаких сдвигов, все ноги (вроде RESET) в нужном лог. уровне. Причем всё сверял с немцами. различается лишь что я посылаю int, а в рабочем примере char, и у немцев идет небольшая пауза между передаче двух char-ов (пр. их - 0xFD,0xFD, мой 0xFDFD), но кристалл в это время все равно не выбран так что ни на что влиять не должно.

Я вообще в непонятках. Как я понимаю после того что я привел выше на дисплее должен появиться мусор. Однако черный экран.

Заранее огромной спасибо за помощь. :help:

Изменено пользователем lomtev

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отвечать на предыдущий вопрос не надо, все пошло. Свои "мусор" я вывел. Теперь. Кто подскажет как совместить лог уровни, что бы там где должно 2.9В быть не было 4В. На умных словах не пойму в упор, только уж если совсем на пальцах, так что если можно схемку - какие резисторы куда вешать. Заранее спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно без резисторов. У меня Мега32 работала на 3,3 вольтах на 16 МГц. Оба вывода питания 2.9 и 1.8 вольт можно совершенно безболезненно цеплять на 3,3 вольти ничего дисплею не будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно без резисторов. У меня Мега32 работала на 3,3 вольтах на 16 МГц. Оба вывода питания 2.9 и 1.8 вольт можно совершенно безболезненно цеплять на 3,3 вольти ничего дисплею не будет.

Питаюсь от USB с матери в компе. Если есть мысль где там 3.3 буду рад узнать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Народ можеткто нить пробовал разобраться с диспам у которого разрешение больше чем 132х176, например 240х320???????????

 

Сейчас у Нокиа е61 очень не плохой экран 320 х 240... не только в плане точек но и самого размера экрана, только как за него зацепится пока не представляю... Разпиновку нашел в схеме е61... в остальном черный ящик... какие контроллеры использует Нокиа для таких решений?

post-19243-1188413853.gif

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...