Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » Графический LCD (pic basic pro)
Графический LCD
vv Дата: Чт, 20.05.2010, 10:19  |                                                                                                                Сообщение # 16
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 132
Репутация: 6   ±
Замечания:   ±
На сайте с 13.11.2009

Статус: Offline

Вроде сам все нашел. В даташите пины/подключение. 8-и разрядная шина (параллельная). Пример от производителя, правда под 8051 и на асемблере, но все понятно более менее. инициализация, вывод кратинки и т.д.

по ссылке много полезного по этому контроллеру, инициализация на Сях http://www.microchip.su/showthread.php?t=5592

Прикрепления: SED1335.txt (101.7 Kb)

Сообщение отредактировал vv - Чт, 20.05.2010, 10:35
jobfly Дата: Сб, 31.07.2010, 22:42  |                                                                                                                Сообщение # 17
Группа: Проверенные
Ранг:  Новенький
Сообщений: 2
Репутация: 0   ±
Замечания:   ±
На сайте с 31.07.2010

Статус: Offline

Недавно купил себе графический дисплей(glcd) WG12232F 122x32 точек. (контроллер SED1520)
Выводов там 16

1. /VLED подсетка светодиодами (единствинное что точно работает, проверил)
2. Vss земля
3. Vdd +5V
4. Vo управление контрасностью дисплея
5. A0 (H: Display Data; L: Instructrions) Инструкции
6. E1 (Chip Enable for U1 (Segment 1 ~ 61)) выбор контроллера
7. E2 //-//
8. DB0 шина ввода/вывода
9. DB1
10. DB2
11. DB3
12. DB4
13. DB5
14. DB6
15. DB7
16. R/W Вход управляющего сигнала чтения/записи

Теперь проблема:
как инициализировать дисплей если нет RES (reset).
Например для RES где то так
RES=1;
delay_ms(20);//задержка
RES=0;
delay_ms(20);
RES=1;

Есть команда для сброса (RESET)
A0 RD WR D7 D6 D5 D4 D3 D2 D1 D0
0 1 0 1 1 1 0 0 0 1 0

Но я прочитал следующее

Операция сброса следует за вводом команды Сброс.
A0 RD WR D7 D6 D5 D4 D3 D2 D1 D0
0 1 0 1 1 1 0 0 0 1 0

Инициализация при включении питания производится не по команде Сброс, а по сигналу на выводе RES.

Добавлено (31.07.2010, 22.42.09)
---------------------------------------------

Quote (jobfly)
Теперь проблема: как инициализировать дисплей если нет RES (reset).

Подсказали на другом форуме

Судя по DS на этот дисплей , это за Вас уже сделали , посадив RES череp 10K на питание. Т.е оставив Вам только программный путь
Еще сброс отключением/включением питания LCD. Для этого в питании LCD нужно предусмотреть ключ. Оно, кстати, и надежнее так. Особенно, если предполагается использование LCD в приборе, который будет проходить сертификацию на воздействие ЭМИ. Для домашнего/настольного использования отдельный ключ в питании LCD возможно излишне.

Сообщение отредактировал jobfly - Сб, 31.07.2010, 17:33
DAlexV Дата: Сб, 31.07.2010, 23:21  |                                                                                                                Сообщение # 18
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Quote (jobfly)
как инициализировать дисплей если нет RES (reset).

Quote (jobfly)
Есть команда для сброса (RESET)

Да сброс происходит софтово. Прикрепил пример(на Рыбе правда). Не пугайся. внимательно просмотри код.
Code

Sub Initialize()                    
    Pos.x = 0
    Pos.y = 0   
    DelayMS(GLCDDelay)                   // задержка перед подачей команд
    Output(RS)                    //  
    Output(RW)
    Output(CS1)
    Output(CS2)
    Side = %01                    // далее для каждого чипа подаются команды инициализации
    Repeat
       Command(cmdOn)                    // вкл. чип
       Command(cmdStaticOff)           // выкл. статической индикации
       Command(cmdDutyCycle)        // частота обновления
       Command(cmdReset)              // сам сброс
       Command(cmdSetADC)           // установка ADC
       Command(cmdRMWDisable)       // выкл  
       Command(cmdDisplayStartLine)   // устанавливаем ноль координат  top-left
       Command(cmdPage)                   //  устанавливаем страницу(0)
       Command(cmdColumn)               //  устанавливаем колонку(0)
       Inc(Side)
    Until Side > %10
    CS1 = 0
    CS2 = 0
End Sub  

но это еще не все. После отправки каждой команды нужно ждать подтверждения приема и обработки от чипа. Их в GLCD 2.
противном случае он просто не заработает. Если ставить задержки после отправки команд, то увеличивается время исполнения программы.
Плюс в GLCD нет как такового знакогенератора. Его придется прописывать самому.
А теперь представь сколько страниц будет иметь программа на PBP. Если хочется заморочиться с GLCD то советую обратить внимание на более продвинутые Барсики(Microbasic, SwordFish) в которых уже есть поддержка GLCD.
Вот видео работы аналогичного твоему Индикатора фирмы МЭЛТ
Доступно только для пользователей
там же на сайте есть русский мануал на дисплей (если все таки решил бороться дальше на PBP)
Успехов wink


Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
jobfly Дата: Вс, 01.08.2010, 00:20  |                                                                                                                Сообщение # 19
Группа: Проверенные
Ранг:  Новенький
Сообщений: 2
Репутация: 0   ±
Замечания:   ±
На сайте с 31.07.2010

Статус: Offline

Quote (DAlexV)
Sub Initialize()
Pos.x = 0
Pos.y = 0
DelayMS(GLCDDelay) // задержка перед подачей команд
Output(RS) //
Output(RW)
Output(CS1)
Output(CS2)
Side = %01 // далее для каждого чипа подаются команды инициализации
Repeat
Command(cmdOn) // вкл. чип
Command(cmdStaticOff) // выкл. статической индикации
Command(cmdDutyCycle) // частота обновления
Command(cmdReset) // сам сброс
Command(cmdSetADC) // установка ADC
Command(cmdRMWDisable) // выкл
Command(cmdDisplayStartLine) // устанавливаем ноль координат top-left
Command(cmdPage) // устанавливаем страницу(0)
Command(cmdColumn) // устанавливаем колонку(0)
Inc(Side)
Until Side > %10
CS1 = 0
CS2 = 0
End Sub

Output(RS) я так понял мне нужно програмно сделать RESET или нет? У меня нету вывода RS
A0 RD WR D7 D6 D5 D4 D3 D2 D1 D0 команда сброс (reset)
0 1 0 1 1 1 0 0 0 1 0

Output(RW) а это для чего? разрешение записи?

команда Output(CS1) подает 1 на CS1?
а Command(cmdOn) вкл. чип , то есть вкл дисплей или контроллер LCD?

И разве Output(CS1) уже не включила чип.

DAlexV Дата: Вс, 01.08.2010, 00:43  |                                                                                                                Сообщение # 20
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Quote (jobfly)
И разве Output(CS1) уже не включила чип.

Quote (DAlexV)
Их в GLCD 2.

1. /VLED подсетка светодиодами (единствинное что точно работает, проверил)
2. Vss земля
3. Vdd +5V
4. Vo управление контрасностью дисплея
5. A0 (H: Display Data; L: Instructrions) Инструкции Output(RS)
6. E1 (Chip Enable for U1 (Segment 1 ~ 61)) выбор контроллера Output(CS1)
7. E2 (Chip Enable for U2 (Segment 62 ~ 122)) выбор контроллера Output(CS2)
8. DB0 шина ввода/вывода
9. DB1
10. DB2
11. DB3
12. DB4
13. DB5
14. DB6
15. DB7
16. R/W Вход управляющего сигнала чтения/записи Output(RW)

Еще раз повторюсь. Русский мануал, страница 2
http://www.melt.com.ru/files/file2177.pdf


Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Сообщение отредактировал DAlexV - Вс, 01.08.2010, 00:57
Форум Picbasic.ru » Программирование МК » PicBasicPro » Графический LCD (pic basic pro)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: