roboforum.ru

Технический форум по робототехнике.

ЖК дисплей + AVR

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

ЖК дисплей + AVR

Сообщение gambit6 » 20 авг 2005, 02:53

Народ, подскажите, кто делал нечто подобное?
Собрался подключить AT90S2313  к LCD дисплейчику,
и чтоб на дисплей выводилось направление, куда робот движется
или просто текст при прерывании int1. Нужна схема подключения ЖК
к контроллеру и если есть исходник на C++
Проги пишу на AVRedit 3.5, слегка пробовал CodeVision.
ЖК дисплей еще не купил, кто посоветует какую модель жк купить?
Желательно маленьких размеров на несколько строк.
Аватара пользователя
gambit6
 
Сообщения: 189
Зарегистрирован: 10 янв 2005, 12:18
Откуда: Санкт-Петербург

Сообщение -= Александр =- » 20 авг 2005, 08:23

Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Сообщение dx40 » 20 авг 2005, 13:14

В CV AVR все элементарно: при создании проекта указать что хочешь использовать LCD и на каком порту. Распайку он сам подскажет. А если глянуть пример то стаонвится вообще все понятно.

По поводу LCD: использовал DV-16236NRT/T - 16х2 - не понравился - символы мелкие, контрастность плохая, углы обзора маленькие. Русские символы есть, но в какойто хитрой кодировке. Еще он у меня слегка глючил - в чем проблема так и не понял.Подсветки нет, может из-за этого так плохо видно.

Потом купил МЭЛТ MT-10SI 10х1 - очень понравился - отличная контрастность даже без подсветки, хорошие углы, а еще путем небольшого изменения библиотеки lcd.h удалось поставить на нем кодовую страницу Windows-1251.
Аватара пользователя
dx40
 
Сообщения: 201
Зарегистрирован: 27 янв 2005, 11:49
Откуда: Мск

Сообщение dx40 » 20 авг 2005, 13:17

Да, кстати, в 2313 LCD займет весь порт B.
Аватара пользователя
dx40
 
Сообщения: 201
Зарегистрирован: 27 янв 2005, 11:49
Откуда: Мск

Сообщение jammer » 11 фев 2006, 23:15

dx40 писал(а): Потом купил МЭЛТ MT-10SI 10х1 - очень понравился - отличная контрастность даже без подсветки, хорошие углы, а еще путем небольшого изменения библиотеки lcd.h удалось поставить на нем кодовую страницу Windows-1251.

купил такой индикатор, подключил к атмеге8515, но не получается запустить. либо код кривой, либо жк дохлый. если не затруднит, кинь пример под кодевижен.
jammer
 
Сообщения: 3
Зарегистрирован: 11 фев 2006, 23:11

Сообщение dx40 » 12 фев 2006, 13:35

Переменный резистор управления контрастом запаян? Выводы распаяны правильно?

Код простейший, вручную написана только 1 строчка.

Код: Выделить всёРазвернуть
/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.5 Standard
Automatic Program Generator
й Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
e-mail:office@hpinfotech.com

Project :
Version :
Date    : 08.05.2005
Author  : Artem                          
Company : Art Inc. UnLTD.                
Comments:


Chip type           : AT90S2313
Clock frequency     : 8,000000 MHz
Memory model        : Tiny
External SRAM size  : 0
Data Stack size     : 32
*****************************************************/

#include <90s2313.h>

// Alphanumeric LCD Module functions
#asm
  .equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#include <delay.h>
// Declare your global variables here


void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1 output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1H=0x00;
OCR1L=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;

// LCD module initialization
lcd_init(16);


lcd_putsf("System started");

while (1)
     {

     // Place your code here

     };
}
Аватара пользователя
dx40
 
Сообщения: 201
Зарегистрирован: 27 янв 2005, 11:49
Откуда: Мск

Сообщение jammer » 12 фев 2006, 13:38

сенкс, сегодня попробую. Вместо переменника кинул 1ком на +5 вольт, так пойдёт? или всёже лучше переменник?
jammer
 
Сообщения: 3
Зарегистрирован: 11 фев 2006, 23:11

Сообщение Змей-Горыныч » 13 фев 2006, 07:26

Только не забывайте, ребята, что есть ЖКИ, работающие и при отрицательных температурах. У таких на вывод, управляющий контрастностью нужно подавать ОТРИЦАТЕЛЬНОЕ напряжение! Я сам долго парился с одним случайным дисплейчиком.

P.S. Когда не получается - читай Datasheets!!!  :D
В электронике чудес не бывает! Бывают плохие контакты!
Аватара пользователя
Змей-Горыныч
 
Сообщения: 70
Зарегистрирован: 01 мар 2005, 14:54
Откуда: г. Томск

Сообщение dx40 » 13 фев 2006, 12:55

Вместо переменника 1ком не пойдет!!!! Скоре всего просто ничего не будеет видно.
Аватара пользователя
dx40
 
Сообщения: 201
Зарегистрирован: 27 янв 2005, 11:49
Откуда: Мск

Сообщение Chip_SET » 13 фев 2006, 16:17

gambit6
Что за дисплей? Не наш случаем?  :)
Аватара пользователя
Chip_SET
 
Сообщения: 147
Зарегистрирован: 04 окт 2005, 16:34
Откуда: Москва, область...

Сообщение -= Александр =- » 14 фев 2006, 11:01

У меня тоже дисплеи наши. И че-то в 4-битном режиме оба не работают...  :(
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Сообщение Chip_SET » 14 фев 2006, 12:49

4-х битный режим в буквенно-цифровых ЖК индикаторах.

1. В 4-х битном режиме включения ЖК индикаторов недопустимо изменение состояний сигналов R/W и A0 в течении всего цикла передачи байта, в том числе и при неактивном сигнале E между двумя передачами полубайтов. По любому изменению сигналов R/W и A0 внутренний счётчик полубайтов в ЖК индикаторе сбрасывается в состояние приёма старшего полубайта. Это является отличием наших ЖК индикаторов от импортных аналогов и направлено на повышение надёжности работы ЖК индикатора.

2. Также, до сих пор у нас в документации не исправлена процедура инициализации 4-х битного режима включения ЖК индикатора. Должно быть так:
в первых трёх командах подаётся код 0x3 на шину данных и один (вместо нормально двух) импульс E;
обязательно делается задержка между командами не менее 40мкс без опроса состояния ЖК индикатора;
четвёртая команда подаётся также одним импульсом E без опроса состояния ЖК индикатора перед командой, но уже с кодом 0x2 на шине данных;
пятую и все последующие команды можно подавать как обычно, с ожиданием готовности индикатора (если необходимо) или формированием задержки между командами не менее 40мкс.

3. Все циклы обращения к индикатору должны быть парными (обязательно передавать и старший и младший полубайты). Единственное исключение - первые четыре команды в процедуре инициализации.
Или перед передачей старшего полубайта использовать возможность сброса внутреннего счётчика полубайтов в ЖК индикаторе из пункта 1. В последнем случае теряется совместимость с импортными ЖК индикаторами.

4. Младшие 4 бита шины данных можно оставлять неподключенными - в ЖК индикаторе вся шина данных подтянута к Ucc через высокоомные резисторы.

5. И не надо забывать выбирать правильный тип интерфейса (4 или 8 бит) при смене страницы кодировки знакогенератора.
Аватара пользователя
Chip_SET
 
Сообщения: 147
Зарегистрирован: 04 окт 2005, 16:34
Откуда: Москва, область...

Сообщение Змей-Горыныч » 14 фев 2006, 13:04

А вообще во:
http://www.atmel.ru/Spec/LCD.htm

Я когда знакосимвольные ЖКИ осваивал - мне очень помогло. Там есть готовые модули (достаточно грамотно написаны), подключая которые можно здорово упростить себе задачу. Вот только в 4-х битном режиме я не пробовал их, но в 8-ми битном программа работала отлично.
В электронике чудес не бывает! Бывают плохие контакты!
Аватара пользователя
Змей-Горыныч
 
Сообщения: 70
Зарегистрирован: 01 мар 2005, 14:54
Откуда: г. Томск

Сообщение avr123.nm.ru » 14 фев 2006, 13:28

берете примеры в CodeVisionAVR - компилируете и проверяете в VMLAB - если работате то и в железе будет работать.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение -= Александр =- » 14 фев 2006, 15:08

В том-то все и дело: в симуляторе все ОК, а в железе работать отказывается. Уже не знаю сколько времени на это угробил и все никак...  :cry:  И коды все эти попробовал и контакты все проверил, а вот хоть убей - в 8-битном работает, а в 4-битном никак. Конечно может глюк где-то совсем в другом месте, но тогда я уже не знаю где его еще искать...
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 2