Вт дек 09, 2008 12:50:10
Пн дек 15, 2008 22:49:56
;*********************************************
; сдвиг курсора на 24 места вперёд (переход на следующую строку)
sdvig_24: cbi portc,RS ; индикатор в режим комманд
ldi temp1,24 ; на такое количество знакомест сдвинется курсор
ldi temp,20; 20- это пустой знак, он пишется в ячейки между 1 и 2 строками
sdvig: rcall cyk2 ; вызов подпрограммы записи одного знака
dec temp1
brne sdvig
sbi portc,RS ; индикатор в режим данных
ret
;**************************************************
cyk2: out PORTA,temp; отдача данных в порт вывода
sbi portc,E ; порт С - управляет ногами индикатора: E, RS, R\W
rcall Delay ;
cbi portc,E
rcall Delay
ret
;*********************************************
ldi temp1,32 ; на такое количество знакомест сдвинется курсор
Вт дек 30, 2008 02:18:24
Чт янв 08, 2009 02:33:50
#define F_CPU 4000000UL
void RS_on()
{
PORTC |= 0b00100000;
}
void RS_off()
{
PORTC &= 0b11011111;
}
void RW_on()
{
PORTC |= 0b00010000;
}
void RW_off()
{
PORTC &= 0b11101111;
}
void E_on()
{
PORTC |= 0b00001000;
}
void E_off()
{
PORTC &= 0b11110111;
}
void Init()
{
DDRA = 0xFF;
PORTA = ~0;
DDRB = 0xFF;
PORTB = 0;
DDRC = 0xFF;
PORTC = 0;
DDRD = 0xFF;
}
void cmdLCD(unsigned char data)
{
RS_off();RW_off();
asm volatile("nop");
PORTB = data;
E_on();
asm volatile("nop");
E_off();
asm volatile("nop");
};
void Init_LCD()
{
_delay_ms(100);
cmdLCD(0x0C);
_delay_ms(10);
cmdLCD(0x0C);
_delay_ms(10);
cmdLCD(0x0C);
_delay_ms(10);
//function set interface data length + symbol + lines
cmdLCD(0x2C);
_delay_ms(10);
//display off
cmdLCD(0x10);
_delay_ms(10);
//display clear
cmdLCD(0x80);
_delay_ms(10);
cmdLCD(0x20);
_delay_ms(10);
cmdLCD(0xF0);
}
int main()
{
Init();
Init_LCD();
_delay_us(100);
cmdLCD(0x81);
_delay_us(100);
RS_on();
cmdLCD(0b00001100);
_delay_us(100);
return 0;
}
Чт янв 08, 2009 04:05:45
Чт янв 08, 2009 13:02:14
Пн янв 12, 2009 21:57:12
Пн янв 12, 2009 23:14:24
Вт янв 13, 2009 23:20:05
Ср янв 14, 2009 21:59:33
Чт янв 15, 2009 00:22:47
Чт янв 15, 2009 23:04:21
Пт янв 23, 2009 21:28:03
Пт янв 23, 2009 23:42:08
Пт янв 23, 2009 23:56:22
Atmel.ru писал(а):Перекодировщик Win-текста сообщений для ЖКИ-контроллера HD44780
Позволяет решить трудности с несоответствием кодов русских букв, зашитых в контроллер HD44780 с ANSI-кодировкой Windows и одновременно избавиться от программного перекодирования "на лету", мгновенно создав Си-код на основе набранного текста.
Возможности:
1. Создание гибкого Си-кода сообщений на основе набранного текста
2. Автоматическое присваивание уникального имени каждой строке сообщения
3. Позиционирование набранного текста на эмуляторе дисплея 4х16 строк
В комплекте поставки:
1. Работающий пример программы создания меню для установки параметров на двухстрочном индикаторе
2. В комплет также входит удобная утилита для перевода между форматами Bin,Hex,Dec
Перед стартом программы HD44780.exe для дальнейшего удобства ее использования сопоставьте тип файлов *.lcd с самой программой
Размер: 920 KB.
Сб янв 24, 2009 09:48:16
Сб янв 24, 2009 12:19:01
Сб янв 24, 2009 19:45:41
Вс янв 25, 2009 00:17:35
Пт фев 13, 2009 16:44:10
Алекс. писал(а):Добрый день!
Я делаю первое устройство на Atmega16 с индикацией на ЖКИ PC-1601A.
Использую CVAVR 2.03.4.
Для проверки сделал простой код: кнопка включает выход, при этом на индикаторе должен быть знак.
Вторая кнопка выключает выход, при этом на индикаторе должен быть другой знак.
Пробовал в Proteus, - все хорошо.
При включении питания на индикаторе видны заполненные прямоугольники первых 8 разрядов.
При нажатии на кнопки выход работает правильно, индикатор не работает.
1. Существует ли способ проверки работоспособности индикатора?
2. Существует ли способ проверки выхода контроллера на индикатор?
3.Существует ли предпочтительный тип ЖКИ для Atmega?
Большое спасибо.