07.02.2016, 19:41
|
|
Частый гость
Регистрация: 07.02.2016
Сообщений: 10
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
ADuC841. Работа с ЖКИ
Здравствуйте. Есть плата ADuC841 на которой установлен LCD hd44780. Есть программа которая должна с ним работать, но она не работает. Можете посмотреть и подсказать что может быть не так?
Код:
|
#include ‹stdio.h›
#include ‹ADuC841.h›
#define LCD_HORIZ_SIZE 16
#define LCD_VERT_SIZE 2
#define LCD_BYTES_PER_LINE (128 / LCD_VERT_SIZE)
#define LCD_CLEAR_CMD 0x01 // очистка
#define LCD_HOME_CMD 0x02 // возврат в самое начало
#define LCD_ON_CMD 0x0C // курсор отключен, мигание отключено, дисплей вкл
#define LCD_SHIFT_CMD 0x14
#define LCD_CONFIG_CMD 0x38 // 5 на 7 пикселей и 2 строки 8 бит интерфейс
unsigned char xdata lcd_command_wr _at_ 0xFE00;
unsigned char xdata lcd_status_rd _at_ 0xFE01;
unsigned char xdata lcd_data_wr _at_ 0xFE02;
unsigned char xdata lcd_data_rd _at_ 0xFE03;
void delay16 (unsigned int i);
void lcd_busy(void);
void lcd_command(unsigned char cmd);
void lcd_putchar(char c);
void lcd_init(void);
void lcd_clear(void);
void lcd_home(void);
void lcd_set_xy(unsigned int x,y);
void delay16 (unsigned int i)
{
do {} while(--i);
}
void lcd_busy(void)
{
while (lcd_status_rd & 0x80) ;
}
void lcd_command(unsigned char cmd)
{
lcd_busy();
lcd_command_wr = cmd;
}
void lcd_putchar(char c)
{
lcd_busy();
lcd_data_wr = c;
}
void lcd_init(void)
{ delay16(400);
lcd_command(LCD_CONFIG_CMD);
delay16(30000);
lcd_command(LCD_ON_CMD);
delay16(400);
lcd_command(LCD_SHIFT_CMD);
delay16(400);
}
void lcd_clear(void)
{
lcd_command(LCD_CLEAR_CMD);
}
void lcd_home(void)
{
lcd_command(LCD_HOME_CMD);
}
void lcd_set_xy(unsigned int x, y)
{
switch (y) {
case 0: y=0; break;
case 1: y=0x40; break;
}
lcd_busy();
lcd_command_wr = (y * LCD_BYTES_PER_LINE + x) | 0x80;
}
void main()
{char c;
lcd_init();
while (1) {
lcd_clear();
lcd_home();
lcd_set_xy(0, 0);
lcd_putchar('H');
lcd_putchar('e');
lcd_putchar('l');
lcd_putchar('l');
lcd_putchar('0');
lcd_putchar('!');
}
} |
|
|
|
|
07.02.2016, 20:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,031
Сказал спасибо: 3,032
Сказали Спасибо 3,205 раз(а) в 2,175 сообщении(ях)
|
Re: ADuC841. Работа с ЖКИ
Хоть что-то на ЖКИ видно? А если контрастность (напряжение на выв. 3) покрутить?
|
|
|
|
07.02.2016, 21:06
|
|
Частый гость
Регистрация: 07.02.2016
Сообщений: 10
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: ADuC841. Работа с ЖКИ
После включения платы одна строка забита черными прямоугольниками, вторая пустая
|
|
|
|
07.02.2016, 21:07
|
|
Частый гость
Регистрация: 07.02.2016
Сообщений: 10
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: ADuC841. Работа с ЖКИ
Может быть неправильно заданы адреса 0xFE00, 0xFE01 и тд
|
|
|
|
07.02.2016, 22:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,031
Сказал спасибо: 3,032
Сказали Спасибо 3,205 раз(а) в 2,175 сообщении(ях)
|
Re: ADuC841. Работа с ЖКИ
Судя по указанию xdata - ЖКИ отображён на адресное пространство внешнего ОЗУ МК. А программа, судя по всему, из интернета (не от этого железа)?
Какова текущая схема подключения? Такая?
|
|
|
|
07.02.2016, 22:54
|
|
Частый гость
Регистрация: 07.02.2016
Сообщений: 10
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: ADuC841. Работа с ЖКИ
На счет схемы подключения ответить затрудняюсь, т.к. доступа к плате сейчас нет.
Код был взят с интернета, но для этого железа (по крайне мере так было указано)
|
|
|
|
07.02.2016, 23:54
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,031
Сказал спасибо: 3,032
Сказали Спасибо 3,205 раз(а) в 2,175 сообщении(ях)
|
Re: ADuC841. Работа с ЖКИ
Ждём схему.
|
|
|
|
08.02.2016, 09:36
|
|
Временная регистрация
Регистрация: 23.05.2006
Сообщений: 60
Сказал спасибо: 8
Сказали Спасибо 1 раз в 1 сообщении
|
Re: ADuC841. Работа с ЖКИ
Разберись сначала с подключением шины - 8 или 4 бита?
Затем проверить используется ли вывод RW дисплея, заведен ли он на мк или сидит на общем?
Исходников под данные дисплеи в инете навалом.
|
|
|
|
13.02.2016, 13:53
|
|
Частый гость
Регистрация: 07.02.2016
Сообщений: 10
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: ADuC841. Работа с ЖКИ
Схема подключения.
|
|
|
|
13.02.2016, 14:47
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,031
Сказал спасибо: 3,032
Сказали Спасибо 3,205 раз(а) в 2,175 сообщении(ях)
|
Re: ADuC841. Работа с ЖКИ
Сообщение от Maroder666
|
Схема подключения.
|
1. Не нравится мне эта схема, но это не важно.
2. Попробуйте, например, так:
Код:
|
unsigned char xdata lcd_command_wr _at_ 0xC000; // xx00 xxxx xxxx xxxx
unsigned char xdata lcd_status_rd _at_ 0xE000; // xx10 xxxx xxxx xxxx
unsigned char xdata lcd_data_wr _at_ 0xD000; // xx01 xxxx xxxx xxxx
unsigned char xdata lcd_data_rd _at_ 0xF000; // xx11 xxxx xxxx xxxx |
|
|
|
Сказали "Спасибо" ForcePoint
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:46.
|
|