| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Графический LCD (glcd)
31.07.2010, 17:48
|
|
|
Частый гость
Регистрация: 27.07.2010
Сообщений: 24
Сказал спасибо: 8
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Графический LCD (glcd)
Недавно купил себе графический дисплей(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, 18:01
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
|
Re: Графический LCD (glcd)
После включения питания, первой коммандой для контроллеря и должна быть комманда сброса. После неё - или задержка или ожидание готовности. Дальше - все остальные операции.
__________________
misterdi<@>i.ua
|
|
|
|
31.07.2010, 18:25
|
|
|
Частый гость
Регистрация: 27.07.2010
Сообщений: 24
Сказал спасибо: 8
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Графический LCD (glcd)
Сообщение от MisterDi
|
|
После включения питания, первой коммандой для контроллеря и должна быть комманда сброса. После неё - или задержка или ожидание готовности. Дальше - все остальные операции.
|
Спасибо.
Я не совсем понял как подать команду, например сброса, если у меня вывод R/W один, а в data sheet там указано RD=1 и WR=0.
|
|
|
|
31.07.2010, 18:32
|
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,578
Сказал спасибо: 175
Сказали Спасибо 1,567 раз(а) в 810 сообщении(ях)
|
Re: Графический LCD (glcd)
R/W = 1 чтение, R/W = 0 запись. Т.о. A0 - 0, R/W - 0 =› запись команды. См. раздел 2.3.1.2 Table 2 в даташите.
|
|
|
|
31.07.2010, 18:56
|
|
|
Частый гость
Регистрация: 27.07.2010
Сообщений: 24
Сказал спасибо: 8
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Графический LCD (glcd)
Сообщение от realid
|
|
R/W = 1 чтение, R/W = 0 запись. Т.о. A0 - 0, R/W - 0 =› запись команды. См. раздел 2.3.1.2 Table 2 в даташите.
|
Да есть такое в data sheet
Также там есть порядок инициализации
Инициализация:
Изображение выкл.
Регистр начальной строки изображения: Первая строка.
Статическое управление выкл.
Счётчик адреса столбца: Адрес 0.
Регистр адреса страницы: Страница 0.
Выбрать скважность: 1/32.
Выбрать АЦП: Вперёд (Команда АЦП D0═=═"0", флаг состояния АЦП =═"1").
Чтение модификация запись выкл.
(взято с сайта http://www.gaw.ru/html.cgi/txt/lcd/chips/sed1520/3.htm)
после инициализации что я увижу на дисплее?
мне хотелось хоть бы точку
какие нужно команди ?
|
|
|
|
31.07.2010, 19:54
|
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,102
Сказал спасибо: 113
Сказали Спасибо 860 раз(а) в 610 сообщении(ях)
|
Re: Графический LCD (glcd)
|
|
|
|
31.07.2010, 22:33
|
|
|
Частый гость
Регистрация: 27.07.2010
Сообщений: 24
Сказал спасибо: 8
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Графический LCD (glcd)
Сообщение от MisterDi
|
|
После включения питания, первой коммандой для контроллеря и должна быть комманда сброса. После неё - или задержка или ожидание готовности. Дальше - все остальные операции.
|
Библиотеку для glcd скачал
код хорошо написан. Буду пробовать.
|
|
|
|
01.08.2010, 17:47
|
|
|
Частый гость
Регистрация: 27.07.2010
Сообщений: 24
Сказал спасибо: 8
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Графический LCD (glcd)
разбирал код. Я так понял что мне нужно запустить GLCD_Init()
|
Код:
|
void GLCD_Init(void)
{
GLCD_InitPorts();
GLCD_WriteCommand(RESET, 0);
GLCD_WriteCommand(RESET, 1);
GLCD_WaitForStatus(0x10, 0);
GLCD_WaitForStatus(0x10, 1);
GLCD_WriteCommand(DISPLAY_ON, 0);
GLCD_WriteCommand(DISPLAY_ON, 1);
GLCD_WriteCommand(DISPLAY_START_LINE | 0, 0);
GLCD_WriteCommand(DISPLAY_START_LINE | 0, 1);
} |
но в GLCD_InitPorts(); я не понял: нужно ли мне подавать сброс reset
|
Код:
|
void GLCD_InitPorts(void)
{
SED1520_DATA_DDR = 0xFF;
SED1520_CONTROL_DDR |= (SED1520_E2 | SED1520_E1 | SED1520_RW | SED1520_A0 | SED1520_RES);
_delay_ms(10);
SED1520_CONTROL_PORT |= SED1520_RES;
} |
у меня нет вывода RES, поетому сброс происходит при включении питания. Так здесь мне команду для сброса писать или уже не нужно?
|
|
|
|
01.08.2010, 18:34
|
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,102
Сказал спасибо: 113
Сказали Спасибо 860 раз(а) в 610 сообщении(ях)
|
Re: Графический LCD (glcd)
В вашем случае никакой разницы, можете закрыть коментом, можете оставить. 
После того как запустите, можете почистить всё связанное с res, заодно и 1 ногу МК освободите.
|
|
|
|
01.08.2010, 20:28
|
|
|
Частый гость
Регистрация: 27.07.2010
Сообщений: 24
Сказал спасибо: 8
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Графический LCD (glcd)
Сообщение от st_1
|
В вашем случае никакой разницы, можете закрыть коментом, можете оставить.
После того как запустите, можете почистить всё связанное с res, заодно и 1 ногу МК освободите
|
Сделал для дисплея AGM1232G (похож на WG12232 ), он также на базе контроллера sed1520 (но там есть RES)
(все команды тежи, поменял только порты DATA на PORTB)
|
Код:
|
#define SED1520_DATA_PORT PORTB
#define SED1520_DATA_DDR DDRB
#define SED1520_DATA_PIN PINB
#define SED1520_CONTROL_PORT PORTC
#define SED1520_CONTROL_DDR DDRC
#define SED1520_A0 (1 ‹‹ 4)
#define SED1520_E1 (1 ‹‹ 0)
#define SED1520_E2 (1 ‹‹ 1)
#define SED1520_RW (1 ‹‹ 3)
#define SED1520_RES (1 ‹‹ 5) |
перекинул все под CodevisionAvr
подключил в PROTEUS 7. Сделал вывод двух точек. Но на екране LCD ничего
посмотрите код
что я не так делаю
|
Код:
|
...
void GLCD_Init(void)
{
GLCD_InitPorts();
GLCD_WriteCommand(RESET, 0);
GLCD_WriteCommand(RESET, 1);
GLCD_WaitForStatus(0x10, 0);
GLCD_WaitForStatus(0x10, 1);
GLCD_WriteCommand(DISPLAY_ON, 0);
GLCD_WriteCommand(DISPLAY_ON, 1);
GLCD_WriteCommand(DISPLAY_START_LINE | 0, 0);
GLCD_WriteCommand(DISPLAY_START_LINE | 0, 1);
}
...
void main(void)
{
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
GLCD_Init();
while (1)
{
delay_ms(1000);
GLCD_SetPixel(0,0,1);
delay_ms(100);
GLCD_SetPixel(2,3,0);
delay_ms(1000);
}
} |
Последний раз редактировалось jobfly; 01.08.2010 в 22:09.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
мигание цифры на LCD
|
begun |
Микроконтроллеры, АЦП, память и т.д |
8 |
15.03.2010 23:28 |
|
lcd TM9867
|
Борис |
Поиск схем. Делимся схемами |
3 |
10.03.2010 23:03 |
|
Mega128 PORTF -- LCD 16x2
|
freonSZ |
Микроконтроллеры, АЦП, память и т.д |
12 |
13.02.2010 16:32 |
|
AVR и LCD
|
begun |
Микроконтроллеры, АЦП, память и т.д |
5 |
24.01.2010 01:12 |
|
Подключение LCD дисплея
|
utyfwdfkb |
Информация по радиокомпонентам |
8 |
31.10.2009 01:34 |
Часовой пояс GMT +4, время: 22:00.
|
|