Технический форум по робототехнике.
gambit6 » 20 авг 2005, 02:53
Народ, подскажите, кто делал нечто подобное?
Собрался подключить AT90S2313 к LCD дисплейчику,
и чтоб на дисплей выводилось направление, куда робот движется
или просто текст при прерывании int1. Нужна схема подключения ЖК
к контроллеру и если есть исходник на C++
Проги пишу на AVRedit 3.5, слегка пробовал CodeVision.
ЖК дисплей еще не купил, кто посоветует какую модель жк купить?
Желательно маленьких размеров на несколько строк.
-= Александр =- » 20 авг 2005, 08:23
dx40 » 20 авг 2005, 13:14
В CV AVR все элементарно: при создании проекта указать что хочешь использовать LCD и на каком порту. Распайку он сам подскажет. А если глянуть пример то стаонвится вообще все понятно.
По поводу LCD: использовал DV-16236NRT/T - 16х2 - не понравился - символы мелкие, контрастность плохая, углы обзора маленькие. Русские символы есть, но в какойто хитрой кодировке. Еще он у меня слегка глючил - в чем проблема так и не понял.Подсветки нет, может из-за этого так плохо видно.
Потом купил МЭЛТ MT-10SI 10х1 - очень понравился - отличная контрастность даже без подсветки, хорошие углы, а еще путем небольшого изменения библиотеки lcd.h удалось поставить на нем кодовую страницу Windows-1251.
dx40 » 20 авг 2005, 13:17
Да, кстати, в 2313 LCD займет весь порт B.
jammer » 11 фев 2006, 23:15
dx40 писал(а): Потом купил МЭЛТ MT-10SI 10х1 - очень понравился - отличная контрастность даже без подсветки, хорошие углы, а еще путем небольшого изменения библиотеки lcd.h удалось поставить на нем кодовую страницу Windows-1251.
купил такой индикатор, подключил к атмеге8515, но не получается запустить. либо код кривой, либо жк дохлый. если не затруднит, кинь пример под кодевижен.
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
};
}
jammer » 12 фев 2006, 13:38
сенкс, сегодня попробую. Вместо переменника кинул 1ком на +5 вольт, так пойдёт? или всёже лучше переменник?
Змей-Горыныч » 13 фев 2006, 07:26
Только не забывайте, ребята, что есть ЖКИ, работающие и при отрицательных температурах. У таких на вывод, управляющий контрастностью нужно подавать ОТРИЦАТЕЛЬНОЕ напряжение! Я сам долго парился с одним случайным дисплейчиком.
P.S. Когда не получается - читай Datasheets!!! :D
dx40 » 13 фев 2006, 12:55
Вместо переменника 1ком не пойдет!!!! Скоре всего просто ничего не будеет видно.
Chip_SET » 13 фев 2006, 16:17
gambit6
Что за дисплей? Не наш случаем? :)
-= Александр =- » 14 фев 2006, 11:01
У меня тоже дисплеи наши. И че-то в 4-битном режиме оба не работают... :(
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 бит) при смене страницы кодировки знакогенератора.
Змей-Горыныч » 14 фев 2006, 13:04
А вообще во:
http://www.atmel.ru/Spec/LCD.htmЯ когда знакосимвольные ЖКИ осваивал - мне очень помогло. Там есть готовые модули (достаточно грамотно написаны), подключая которые можно здорово упростить себе задачу. Вот только в 4-х битном режиме я не пробовал их, но в 8-ми битном программа работала отлично.
avr123.nm.ru » 14 фев 2006, 13:28
берете примеры в CodeVisionAVR - компилируете и проверяете в VMLAB - если работате то и в железе будет работать.
-= Александр =- » 14 фев 2006, 15:08
В том-то все и дело: в симуляторе все ОК, а в железе работать отказывается. Уже не знаю сколько времени на это угробил и все никак... :cry: И коды все эти попробовал и контакты все проверил, а вот хоть убей - в 8-битном работает, а в 4-битном никак. Конечно может глюк где-то совсем в другом месте, но тогда я уже не знаю где его еще искать...