Новая темаОтветить Страница 3 из 3   [ Сообщений: 30 ]
На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: LCD_16X02_Atmega8
СообщениеДобавлено: 25 апр 2017, 17:18 
Аватара пользователя

Зарегистрирован: 02 мар 2013, 09:18
Сообщения: 1464
Откуда: Москва
Процентов на 90 буква С написана в русской раскладке клавиатуры.

_________________
Если долго мучиться, может быть получится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD_16X02_Atmega8
СообщениеДобавлено: 25 апр 2017, 21:23 

Зарегистрирован: 24 сен 2016, 11:25
Сообщения: 117
Алексей!!! Вы угадали все буквы! Подарок в студию! (подарок за мной,при встрече(если найдете свободное время конечно!)).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD_16X02_Atmega8
СообщениеДобавлено: 29 апр 2017, 23:03 
Аватара пользователя

Зарегистрирован: 02 мар 2013, 09:18
Сообщения: 1464
Откуда: Москва
Это частая засада. Истчо есть букавки Х, О, Р ну и тд по аналогии)))

_________________
Если долго мучиться, может быть получится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD_16X02_Atmega8
СообщениеДобавлено: 30 апр 2017, 01:02 

Зарегистрирован: 24 сен 2016, 11:25
Сообщения: 117
Алексей здравствуйте!
По причине того что нарисованный вами код не вывел на дисплей никого, решил пошагово изучить происходящее в сеем колдовстве! Сочинил такой вот код, по эпизоду вашего кода, но тут странные вещи происходят однако!!!
Код:
/*
 * _8_PORT.c
 *
 * Created: 29.10.2016 11:15:20
 *  Author: SUN
 */
#define  F_CPU7372800UL
#include <avr/io.h>
#include <avr/delay.h>
#define PORT_D4    PORTB
#define PORT_D5    PORTB
#define PORT_D6    PORTB
#define PORT_D7    PORTB
#define D4           4
#define D5           5
#define D6           6
#define D7           7

 unsigned char *k;
//--------------------------------------
void lcd_out(char data)
{
   if(data & 0x01)
   {
      PORT_D4 |= (1 << D4);
   }
   else
   {
      PORT_D4 &= ~(1 << D4);
   }
   if(data & 0x02)
   {
      PORT_D5 |= (1 << D5);
   }
   else
   {
      PORT_D5 &= ~(1 << D5);
   }
   if(data & 0x04)
   {
      PORT_D6 |= (1 << D6);
   }
   else
   {
      PORT_D6 &= ~(1 << D6);
   }
   if(data & 0x08)
   {
      PORT_D7 |= (1 << D7);
   }
   else
   {
      PORT_D7 &= ~(1 << D7);
   }
   
}

//-----------------------------------------------------------------
int main(void)
{
   DDRB=0xFF;
   PORTB=0x00;
 unsigned char A=0;
   A=0x01;
   k =& A;
    lcd_out(k);
     
   
                
    while(1)
   {
   
    asm("nop");
   }               
      
      
}   

Создал указатель с целью забирать с постоянного адреса данные (data), а туда их по идее приносет переменная А.
Загрузил вручную переменную А числом 0х01 и присвоив значение указателю "k" запустил это число аргументом в функцию void lcd_out(char data){...}; -(ваших рук дело). В результате вместо 4го пина,игнорируя фильтр "if" активируются 4-5-7 пин!? А когда в "main"- аргументом в функцию вставляю не значение с указателя а напрямую переменную "А", все путем!
Вопрос: Почему функция при чтении переменного(аргумента) срабатывает правильно, а при чтении той же переменной(аргумента), но присвоенному к указателю, делает ошибку?
Вот что выдает:


Вложения:
Снимок.PNG
Снимок.PNG [ 6.78 КБ | Просмотров: 227 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD_16X02_Atmega8
СообщениеДобавлено: 30 апр 2017, 20:45 

Зарегистрирован: 24 сен 2016, 11:25
Сообщения: 117
Здравствуйте Алексей!
Предполагаю что вы не загружены работой на майские праздники!? Предлагаю встретиться при удобном случае для обсуждения моей проблемы, которая проблемой является для меня, а для вас, уверен сущий пустяк. Выберите свободное время, и я приглашаю вас в кабак на Остоженке. Там и обсудим что и как. Очень надеюсь что не откажете и уделите мне пару-тройку часов! Заметьте, еще с декабря я напрашиваюсь на "аудиенцию" к вам, но дела, дела, дела!!! Ну чтож, слово за вами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD_16X02_Atmega8
СообщениеДобавлено: 02 май 2017, 18:59 
Аватара пользователя

Зарегистрирован: 02 мар 2013, 09:18
Сообщения: 1464
Откуда: Москва
В пивнушки я никакие не пойду. Если есть вопросы по программированию, то задавайте их здесь.

_________________
Если долго мучиться, может быть получится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD_16X02_Atmega8
СообщениеДобавлено: 03 май 2017, 01:59 

Зарегистрирован: 24 сен 2016, 11:25
Сообщения: 117
Здравствуйте Алексей!
По поводу вопросов по теме, я его задал шагом раньше, но вы быть может на нее не обратили внимание. Просмотрите пожалуйста.
По поводу "пивнушки". Я приглашал вас не пиво пить, а обговорить мое предложение. Дело в том что у меня уже года полтора лежит вышедший из строя гаджет, которую сконструировал молодой гениальный паренек, который на сегодняшний день живет за границей, и контактов у меня к сожалению нет. Так вот, этот прибор заглючил и надо ее реанимировать. Я увидел в вас талантливого программиста и отзывчивого человека, который к тому-же принимает деловые предложения. Вот и пытался к вам достучаться. Я не представлял, где можно обсудить такой вопрос лучше, чем в непринужденной обстановке, за дружеским столом, вот и все!
Но рас вы категорически против, поясните мне пожалуйста, как бы я мог обсудить с вами предложения. Конечно-же вы понимаете что такие вопросы на просторах интернета не обсуждаются. Нет желания?, нет проблем, Бог вам в помощь!
А по поводу моего вопроса от 30го апреля, подскажите пожалуйста в чем ошибка.
С уважением!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD_16X02_Atmega8
СообщениеДобавлено: 03 май 2017, 18:43 
Аватара пользователя

Зарегистрирован: 02 мар 2013, 09:18
Сообщения: 1464
Откуда: Москва
Код:
k =& A;
    lcd_out(k);


Функции вместо данных будет передан адрес расположения переменной А. Чтобы передать указатель на А можно просто написать lcd_out(&A);

_________________
Если долго мучиться, может быть получится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD_16X02_Atmega8
СообщениеДобавлено: 06 май 2017, 00:26 

Зарегистрирован: 24 сен 2016, 11:25
Сообщения: 117
Алексей здравствуйте!
Все изучаю ваш код от 12го апреля по запуску дисплея.Есть вопрос: в коде отсутствует установка координат стартового адреса курсора "gotoxy". Но в вашем коде есть функция lcd_init(); в котором через "switch(lcd)" комбинациями "0"и"1" пина выбирается положение курсора,(согласно комментариям). Исключает ли такая установка необходимость установки начального адреса первого символа,(в gotoxy(0-ячейка,0-строка)).
Взяты ли аргументы lcd_init с "описание команд модуля"?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD_16X02_Atmega8
СообщениеДобавлено: 08 май 2017, 10:31 
Аватара пользователя

Зарегистрирован: 02 мар 2013, 09:18
Сообщения: 1464
Откуда: Москва
Вот готовый генератор кода. Несколько кликов мышкой и все готово. Генерит код под студию. В корне проекта можно посмотреть на все функции. Именно функция lcd_init(BYTE lcd) принимает в качестве аргумента тип отображаемого курсора и выводит его в верхний левый угол.
А вот здесь полное описание данных функций.

_________________
Если долго мучиться, может быть получится.


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


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

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


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

Найти:
Перейти:  
cron
     Рейтинг@Mail.ru           Яндекс.Метрика