roboforum.ru

Технический форум по робототехнике.
Текущее время: 01 мар 2025, 13:44

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 56 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: LCD (HD44780) к произвольным пинам
СообщениеДобавлено: 11 сен 2008, 20:31 
Не в сети
Аватара пользователя

Зарегистрирован: 28 дек 2004, 20:33
Сообщения: 10211
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович
фусибиты перевел на кварц?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD (HD44780) к произвольным пинам
СообщениеДобавлено: 11 сен 2008, 20:34 
Не в сети

Зарегистрирован: 06 сен 2008, 12:33
Сообщения: 21
Откуда: Москва
EdGull писал(а):
фусибиты перевел на кварц?

вроде да
у меня на этой схеме другая прошивка работает, только она мне не нравится, хотел свою написать, да что-то пока не очень получается
обратил внимание, что баском при компилляции ругается на то, что нету места для бита ___LCDNO. А он откуда взялся?


Последний раз редактировалось Shaab 11 сен 2008, 20:36, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD (HD44780) к произвольным пинам
СообщениеДобавлено: 11 сен 2008, 20:36 
Не в сети
Аватара пользователя

Зарегистрирован: 28 дек 2004, 20:33
Сообщения: 10211
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович
та проишка тоже на 12мгц ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD (HD44780) к произвольным пинам
СообщениеДобавлено: 11 сен 2008, 20:37 
Не в сети

Зарегистрирован: 06 сен 2008, 12:33
Сообщения: 21
Откуда: Москва
EdGull писал(а):
та проишка тоже на 12мгц ?

да


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD (HD44780) к произвольным пинам
СообщениеДобавлено: 11 сен 2008, 21:21 
Не в сети
Аватара пользователя

Зарегистрирован: 10 сен 2008, 23:37
Сообщения: 25
Откуда: Пенза.
левой пяткой чую- из-за 2 енабла такая фигня.
но посоветовать ничего не могу :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD (HD44780) к произвольным пинам
СообщениеДобавлено: 11 сен 2008, 22:27 
Не в сети

Зарегистрирован: 23 фев 2006, 13:42
Сообщения: 4
Откуда: Кишинёв
Вот моя библа для CVAVRа пользуйтесь на здоровье!!!!

Код:
//****************************************************************************************************
//************************************    my_lcd.c    ************************************************
//****************************************************************************************************
//************************************   Месяц А.     ************************************************
//****************************************************************************************************

//1.Скопировать этот файл в папку с проектом и подключить при помощи " #include <my_lcd.c> "
//2.Подключить порты к LCD и сконфигурировать их на выход.

#include <io.h>
#include <delay.h>

//****************************************************************************************************
//****************************  Настройка подключения LCD  *******************************************
//****************************************************************************************************

#define COLUMNS 16  //количество символов в строке

#define EN PORTB.2
#define RS PORTB.0
#define LCD_PD4 PORTB.4
#define LCD_PD5 PORTB.5
#define LCD_PD6 PORTC.1
#define LCD_PD7 PORTC.0

//****************************************************************************************************
//****************************************************************************************************
//****************************************************************************************************
#define COMAND   0   // Команда
#define DATA   1   // Данные
#define lcd_delay 1 //При необходимости, подстроить

#pragma used+

//функции
void lcd_write(unsigned char data, unsigned char mode);
void lcd_init(void);
void lcd_putchar(unsigned char data);              // отображение 1 символа в позиции (последняя + 1)
void lcd_gotoxy(unsigned char x, unsigned char y); // задание позиции 1 символа x - символ =0..39 y - строка =0..3
void lcd_clear(void);                              // очистка LCD
void lcd_puts(char *str);                          // вывод символа расположенного в SRAM на LCD
void lcd_putsf(char flash *str);                   // вывод символа расположенного в FLASH на LCD
void lcd_cursor_on(void);
void lcd_cursor_off(void);
void lcd_clear_string(unsigned char y,unsigned char from,unsigned char to);// очистка нужного количества символов в строке
//****************************************************************************************************


flash unsigned char base_y[4]={0x80,0xc0,0x80+COLUMNS,0xc0+COLUMNS};// стартовые значения 1 и 2 строки
unsigned char lcd_x, lcd_y;              // переменные для хранения последней позиции символа

//****************************************************************************************************

void lcd_write(unsigned char data, unsigned char mode){

if (mode)RS = 1;else RS = 0;   //выбор режима 1-data 0-comand

delay_us(lcd_delay);

// старший нибл
if (data & (1<<7)) LCD_PD7=1; else LCD_PD7=0;
if (data & (1<<6)) LCD_PD6=1; else LCD_PD6=0;
if (data & (1<<5)) LCD_PD5=1; else LCD_PD5=0;
if (data & (1<<4)) LCD_PD4=1; else LCD_PD4=0;

EN = 1;
delay_us(lcd_delay);
EN = 0;
delay_us(lcd_delay);

//младший нибл
if (data & (1<<3)) LCD_PD7=1; else LCD_PD7=0;
if (data & (1<<2)) LCD_PD6=1; else LCD_PD6=0;
if (data & (1<<1)) LCD_PD5=1; else LCD_PD5=0;
if (data & (1<<0)) LCD_PD4=1; else LCD_PD4=0;

EN = 1;
delay_us(lcd_delay);
EN = 0;
delay_us(lcd_delay);

LCD_PD7=1; LCD_PD6=1; LCD_PD5=1; LCD_PD4=1;
delay_ms(lcd_delay);
}//lcd_write()

//****************************************************************************************************

void lcd_init(){
RS=0;
EN=0;
delay_ms(200);
lcd_write(0x33, COMAND);
delay_ms(5);
lcd_write(0x32, COMAND);
lcd_write(0x28, COMAND); // 4 бит, 2 строки
lcd_write(0x08, COMAND); // полное выключение дисплея
lcd_write(0x01, COMAND); // очистка дисплея
lcd_write(0x06, COMAND); // сдвиг курсора вправо
lcd_write(0x0C, COMAND); // включение дисплея, выключение курсора
lcd_clear();
}//lcd_init();

//****************************************************************************************************

void lcd_gotoxy(unsigned char x, unsigned char y){
if (y<=3)lcd_write((base_y[y]+lcd_x),COMAND);
else lcd_write((base_y[0]+lcd_x),COMAND);
lcd_x=x;
lcd_y=y;
}//lcd_gotoxy()

//****************************************************************************************************

// очистка дисплея LCD
void lcd_clear(void){
lcd_write(2,COMAND);   // cursor home
lcd_write(0x0c,COMAND); // cursor off
lcd_write(1,COMAND);   // clear
lcd_x=lcd_y=0;
}//lcd_clear()

//****************************************************************************************************

// очистка нужного количества символов в строке
void lcd_clear_string(unsigned char y,unsigned char from,unsigned char to){

while(from <= to){
        lcd_gotoxy(from++,y);
        lcd_putchar(' ');
};//while

}//lcd_clear_string()

//****************************************************************************************************

void lcd_cursor_on(){
lcd_write(0x0d,COMAND);
}//lcd_cursor_on()

//****************************************************************************************************

void lcd_cursor_off(){
lcd_write(0x0c,COMAND);
}//lcd_cursor_off()

//****************************************************************************************************

void lcd_putchar(unsigned char data){
if (lcd_x>(COLUMNS-1)){
        if (++lcd_y>3)lcd_y=0;
        lcd_x=0;
};//if
lcd_gotoxy(lcd_x,lcd_y);
lcd_write(data, DATA);
lcd_x++;
}//lcd_putchar();

//****************************************************************************************************

// вывод символа расположенного в SRAM на LCD
void lcd_puts(char *str){
while(*str)lcd_putchar(*str++);// передача символа
}//lcd_puts()

//****************************************************************************************************

// вывод символа расположенного в FLASH на LCD
void lcd_putsf(char flash *str){
while(*str)lcd_putchar(*str++);// передача символа
}//lcd_putsf()

//****************************************************************************************************

#pragma used-



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD (HD44780) к произвольным пинам
СообщениеДобавлено: 11 сен 2008, 22:35 
Не в сети

Зарегистрирован: 06 сен 2008, 12:33
Сообщения: 21
Откуда: Москва
Спасибо за библиотеку, правда ее придется немного доработать в виду того, что энабла все-таки 2 :cry:


Последний раз редактировалось Digit 12 сен 2008, 11:19, всего редактировалось 1 раз.
Нарушение правил цитирования


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD (HD44780) к произвольным пинам
СообщениеДобавлено: 11 сен 2008, 22:38 
Не в сети

Зарегистрирован: 20 окт 2005, 16:11
Сообщения: 432
Откуда: Вильнюс,Литва
прог. языки: Basic
http://www.mcselec.com/index2.php?optio ... ht=ks0066u


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD (HD44780) к произвольным пинам
СообщениеДобавлено: 12 сен 2008, 12:47 
Не в сети

Зарегистрирован: 06 сен 2008, 12:33
Сообщения: 21
Откуда: Москва
With lcd4e2.lib all the used pins MUST be on the SAME PORT.
In the source code of lcd4e2.lib you can change the used port.
Example: You can change from PortB to PortD.

а у меня данные и контроль на разных портах...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD (HD44780) к произвольным пинам
СообщениеДобавлено: 15 сен 2008, 11:38 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
А может стоит взять Mega16 и закрыть вопрос с недостатком ног?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD (HD44780) к произвольным пинам
СообщениеДобавлено: 15 сен 2008, 11:45 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Master писал(а):
А может стоит взять Mega16 и закрыть вопрос с недостатком ног?

ОБЯЗАТЕЛЬНО ! 40 ног это прекрасно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD (HD44780) к произвольным пинам
СообщениеДобавлено: 15 сен 2008, 20:32 
Не в сети

Зарегистрирован: 06 сен 2008, 12:33
Сообщения: 21
Откуда: Москва
да есть у меня мега 16я, вот только свободных ног много остается, а у 8й меги как раз

кстати, а кто говорил, что мне нехватает ног?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD (HD44780) к произвольным пинам
СообщениеДобавлено: 16 сен 2008, 12:25 
Не в сети
Аватара пользователя

Зарегистрирован: 23 окт 2007, 22:03
Сообщения: 3037
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец
Спасибо bezobraznic-у за библиотеку, прекрасно работает на Меге8.

_________________
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD (HD44780) к произвольным пинам
СообщениеДобавлено: 17 сен 2008, 18:59 
Не в сети

Зарегистрирован: 11 окт 2004, 20:41
Сообщения: 110
Откуда: Березники
Shaab писал(а):
Нужно подлключить LCD на HD44780 (4 строки, 40 символов) к 8й меге по 4х-битному интерфейсу. Стандартные заготовки расчитаны на использование или фиксированных пинов или пинов в произвольном порядке, но в пределах одного порта. А у меня по схеме линии контроля висят на порту С, а данные на порту D (схема изменению не подлежит). Если можно, то подскажите как реализовать задуманное для Bascom'а. В гугле искал, не помогло. Заранее спасибо за ответ.


Не знаю, как на Баскоме, на Си это сделано в проекте Победитель пару лет назад... http://ironfelix.ru/modules.php?name=Pages&pa=showpage&pid=138

Управление на порту B, данные на порту D.
Исходники прилагаются, проверено всё лично на нескольких разных индикаторах.

_________________
Железный Феликс: http://ironfelix.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD (HD44780) к произвольным пинам
СообщениеДобавлено: 17 сен 2008, 21:04 
Не в сети

Зарегистрирован: 06 сен 2008, 12:33
Сообщения: 21
Откуда: Москва
спасибо всем, кто откликнулся, но вопрос все-таки открыт, ибо пока либа для "2х-энабельного" дисплея с произвольным назначением пинов не найдена :cry:


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 56 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 4 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO