реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Помогите запустить LCD под CodeVision, под Bascom работает, под CodeVision - нет
AHTOXA
сообщение Jul 23 2008, 11:36
Сообщение #31


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Ветал @ Jul 23 2008, 17:26) *
Как думаете, где косяк?


А JTAG-то — отключили?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Ветал
сообщение Jul 23 2008, 11:46
Сообщение #32


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 22-03-08
Из: Харьков
Пользователь №: 36 149



Цитата(AHTOXA @ Jul 23 2008, 14:36) *
А JTAG-то — отключили?

Я уже перебрался на порт А =)
На счет JTAG я уже отвечал, с ним еще не работал

Цитата(Stas_R @ Jul 23 2008, 14:30) *
В папке \cvavr\lib\ есть файл LCD.lib который является текстовым на С с ASM вставками. В нем описаны все процедуры работы с LCD.

Можно подредактировать и сделать процедуру обмена как на Баскоме - без чтения с ЛСД?
Go to the top of the page
 
+Quote Post
Stas_R
сообщение Jul 23 2008, 12:06
Сообщение #33





Группа: Участник
Сообщений: 12
Регистрация: 18-10-05
Из: г.Донецк
Пользователь №: 9 806



Можно немного модернизировать LCD.lib. Там есть такое описание
#asm
.equ __lcd_direction=__lcd_port-1
.equ __lcd_pin=__lcd_port-2
.equ __lcd_rs=0
.equ __lcd_rd=1
.equ __lcd_enable=2
.equ __lcd_busy_flag=7
#endasm

__lcd_busy_flag используется только в _lcd_ready() замените
sbrc r26,__lcd_busy_flag
rjmp __lcd_busy
на задержку вставте несколько _lcd_delay(); если есть осцилограф посмотрите длительности по нему.
Удачи.

Сообщение отредактировал Stas_R - Jul 23 2008, 12:07
Go to the top of the page
 
+Quote Post
Ветал
сообщение Jul 23 2008, 12:53
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 22-03-08
Из: Харьков
Пользователь №: 36 149



Цитата(Stas_R @ Jul 23 2008, 15:06) *
Можно немного модернизировать LCD.lib. Там есть такое описание
#asm
.equ __lcd_direction=__lcd_port-1
.equ __lcd_pin=__lcd_port-2
.equ __lcd_rs=0
.equ __lcd_rd=1
.equ __lcd_enable=2
.equ __lcd_busy_flag=7
#endasm


Здесь задается к какому пину порта какой вывод ЛСД должен подключаться?


Цитата(Stas_R @ Jul 23 2008, 15:06) *
__lcd_busy_flag используется только в _lcd_ready() замените
sbrc r26,__lcd_busy_flag
rjmp __lcd_busy
на задержку вставте несколько _lcd_delay(); если есть осцилограф посмотрите длительности по нему.
Удачи.


Что на что менять, честно говоря, не понял =)
Go to the top of the page
 
+Quote Post
sKWO
сообщение Jul 23 2008, 18:45
Сообщение #35


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Цитата(Ветал @ Jul 23 2008, 15:53) *
Что на что менять, честно говоря, не понял =)

Вам предлагают забить на ожидание готовности от ЖКИ, и сделать задержки больше чем по даташиту на Ваш ЖКИ.

Цитата(Ветал @ Jul 23 2008, 15:53) *
Здесь задается к какому пину порта какой вывод ЛСД должен подключаться?

это определения линий, про порт здесь ничего не сказанно


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post
Ветал
сообщение Jul 24 2008, 11:11
Сообщение #36


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 22-03-08
Из: Харьков
Пользователь №: 36 149



Уважаемые друзья!
Сегодня проблема была решена. Библиотеки правда не редактировал. Деревенским методом навешал проводов, так, чтоб не резать дорог на плате, по схеме из Хелпа CodeVision. ЛСД выдал то, что от него просили. Проблема была аппаратная. Подвесил к порту С, JTAG не мешает.
Единственное, не хочет писать на второй строке . Поковыряю, может найду в чем тут дело. И функция lcd_gotoxy(unsigned char x, unsigned char y) не управляет координатыами курсора, а начинает писать с начала верхней строки.

Вопрос снят, lcd_gotoxy() работает. Забыл, что программисты начинает считать с нуля )))
Go to the top of the page
 
+Quote Post
Metallist64
сообщение Jul 24 2008, 18:06
Сообщение #37


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Друзья!
Помогите пожалуйста в моем смежном вопросе.
Подключил свои LCD 16x2.
Но при выводе строк наблюдается следующая фигня.
0-я строка выводится замечательно.
1-я постоянно подмигивает.
я подгонял задержку после вывода 0-й строки но все равно видно моргание.
Как вообще корректно выводить 2-е строки на LCD подскажите пожалуйтса.
Вот функция отображения :

void render_menu_new(p_menu p_item_name,unsigned char* p_poz_menu)
{
unsigned char adc[16];
lcd_clear();
lcd_puts(p_item_name[*p_poz_menu]->menu_name); // здесь выводится первая строка только текст
lcd_gotoxy(0,1);
sprintf(adc,"спецификаторы", вычилсения)
lcd_puts(adc); // вторая строка всегда мигает (выводит преобразование АЦП и значение ШИМ*коэфф)
delay_ms(250);
}

Помогите чем сможете или в книжку ткните.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 24 2008, 18:16
Сообщение #38


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Metallist64 @ Jul 25 2008, 00:06) *
...


Попробуйте убрать
lcd_clear();
тогда будет менее заметно. (Не забудьте только дополнить все пункты меню пробелами справа, и после lcd_puts(adc); добавьте lcd_puts(" ")wink.gif

Ну и числа, меняющиеся через 250 мс - сложно воспринимаются, я бы увеличил интервал.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Metallist64
сообщение Jul 24 2008, 18:29
Сообщение #39


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Забавно!
Но помогло!
Большое спасибо!
А без пробелов в конце 1-й строки вылазит начало следующего пункта :-)
Получается lcd_clear() можно неиспользовать???
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 24 2008, 18:35
Сообщение #40


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Metallist64 @ Jul 25 2008, 00:29) *
Забавно!
Но помогло!
Большое спасибо!
А без пробелов в конце 1-й строки вылазит начало следующего пункта :-)
Получается lcd_clear() можно неиспользовать???


Конечно, зачем его использовать, если вы всё равно весь экран перерисовываете заново? smile.gif
К тому же, не исключён вариант, что lcd_clear() тупо заполняет экран пробелами...


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Metallist64
сообщение Jul 24 2008, 19:13
Сообщение #41


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



все конечно хорошо, а вот 0-я строка перестала обновляться.
1-я в порядке.В чем бага???
Подскажите пожалуйста.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 24 2008, 19:36
Сообщение #42


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Metallist64 @ Jul 25 2008, 01:13) *
все конечно хорошо, а вот 0-я строка перестала обновляться.
1-я в порядке.В чем бага???
Подскажите пожалуйста.


Дык, добавьте перед выводом пункта меню
lcd_gotoxy(0,0);
Раньше это делала за вас ф-я lcd_clear().


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Metallist64
сообщение Jul 25 2008, 12:45
Сообщение #43


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Согласен!
Спасибо!
Сегодня днем только дошло,что надо курсор переводить на другую позицию smile.gif
Утро вечера мудренее!!!
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01464 секунд с 7
ELECTRONIX ©2004-2016