LCD_16X02_Atmega8
Модератор: gurvinok
Re: LCD_16X02_Atmega8
Процентов на 90 буква С написана в русской раскладке клавиатуры.
Если долго мучиться, может быть получится.
Re: LCD_16X02_Atmega8
Алексей!!! Вы угадали все буквы! Подарок в студию! (подарок за мной,при встрече(если найдете свободное время конечно!)).
Re: LCD_16X02_Atmega8
Это частая засада. Истчо есть букавки Х, О, Р ну и тд по аналогии)))
Если долго мучиться, может быть получится.
Re: LCD_16X02_Atmega8
Алексей здравствуйте!
По причине того что нарисованный вами код не вывел на дисплей никого, решил пошагово изучить происходящее в сеем колдовстве! Сочинил такой вот код, по эпизоду вашего кода, но тут странные вещи происходят однако!!!
Создал указатель с целью забирать с постоянного адреса данные (data), а туда их по идее приносет переменная А.
Загрузил вручную переменную А числом 0х01 и присвоив значение указателю "k" запустил это число аргументом в функцию void lcd_out(char data){...}; -(ваших рук дело). В результате вместо 4го пина,игнорируя фильтр "if" активируются 4-5-7 пин!? А когда в "main"- аргументом в функцию вставляю не значение с указателя а напрямую переменную "А", все путем!
Вопрос: Почему функция при чтении переменного(аргумента) срабатывает правильно, а при чтении той же переменной(аргумента), но присвоенному к указателю, делает ошибку?
Вот что выдает:
По причине того что нарисованный вами код не вывел на дисплей никого, решил пошагово изучить происходящее в сеем колдовстве! Сочинил такой вот код, по эпизоду вашего кода, но тут странные вещи происходят однако!!!
Код: Выделить всё
/*
* _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");
}
}
Загрузил вручную переменную А числом 0х01 и присвоив значение указателю "k" запустил это число аргументом в функцию void lcd_out(char data){...}; -(ваших рук дело). В результате вместо 4го пина,игнорируя фильтр "if" активируются 4-5-7 пин!? А когда в "main"- аргументом в функцию вставляю не значение с указателя а напрямую переменную "А", все путем!
Вопрос: Почему функция при чтении переменного(аргумента) срабатывает правильно, а при чтении той же переменной(аргумента), но присвоенному к указателю, делает ошибку?
Вот что выдает:
- Вложения
-
- Снимок.PNG (6.78 КБ) 697 просмотров
Re: LCD_16X02_Atmega8
Здравствуйте Алексей!
Предполагаю что вы не загружены работой на майские праздники!? Предлагаю встретиться при удобном случае для обсуждения моей проблемы, которая проблемой является для меня, а для вас, уверен сущий пустяк. Выберите свободное время, и я приглашаю вас в кабак на Остоженке. Там и обсудим что и как. Очень надеюсь что не откажете и уделите мне пару-тройку часов! Заметьте, еще с декабря я напрашиваюсь на "аудиенцию" к вам, но дела, дела, дела!!! Ну чтож, слово за вами.
Предполагаю что вы не загружены работой на майские праздники!? Предлагаю встретиться при удобном случае для обсуждения моей проблемы, которая проблемой является для меня, а для вас, уверен сущий пустяк. Выберите свободное время, и я приглашаю вас в кабак на Остоженке. Там и обсудим что и как. Очень надеюсь что не откажете и уделите мне пару-тройку часов! Заметьте, еще с декабря я напрашиваюсь на "аудиенцию" к вам, но дела, дела, дела!!! Ну чтож, слово за вами.
Re: LCD_16X02_Atmega8
В пивнушки я никакие не пойду. Если есть вопросы по программированию, то задавайте их здесь.
Если долго мучиться, может быть получится.
Re: LCD_16X02_Atmega8
Здравствуйте Алексей!
По поводу вопросов по теме, я его задал шагом раньше, но вы быть может на нее не обратили внимание. Просмотрите пожалуйста.
По поводу "пивнушки". Я приглашал вас не пиво пить, а обговорить мое предложение. Дело в том что у меня уже года полтора лежит вышедший из строя гаджет, которую сконструировал молодой гениальный паренек, который на сегодняшний день живет за границей, и контактов у меня к сожалению нет. Так вот, этот прибор заглючил и надо ее реанимировать. Я увидел в вас талантливого программиста и отзывчивого человека, который к тому-же принимает деловые предложения. Вот и пытался к вам достучаться. Я не представлял, где можно обсудить такой вопрос лучше, чем в непринужденной обстановке, за дружеским столом, вот и все!
Но рас вы категорически против, поясните мне пожалуйста, как бы я мог обсудить с вами предложения. Конечно-же вы понимаете что такие вопросы на просторах интернета не обсуждаются. Нет желания?, нет проблем, Бог вам в помощь!
А по поводу моего вопроса от 30го апреля, подскажите пожалуйста в чем ошибка.
С уважением!
По поводу вопросов по теме, я его задал шагом раньше, но вы быть может на нее не обратили внимание. Просмотрите пожалуйста.
По поводу "пивнушки". Я приглашал вас не пиво пить, а обговорить мое предложение. Дело в том что у меня уже года полтора лежит вышедший из строя гаджет, которую сконструировал молодой гениальный паренек, который на сегодняшний день живет за границей, и контактов у меня к сожалению нет. Так вот, этот прибор заглючил и надо ее реанимировать. Я увидел в вас талантливого программиста и отзывчивого человека, который к тому-же принимает деловые предложения. Вот и пытался к вам достучаться. Я не представлял, где можно обсудить такой вопрос лучше, чем в непринужденной обстановке, за дружеским столом, вот и все!
Но рас вы категорически против, поясните мне пожалуйста, как бы я мог обсудить с вами предложения. Конечно-же вы понимаете что такие вопросы на просторах интернета не обсуждаются. Нет желания?, нет проблем, Бог вам в помощь!
А по поводу моего вопроса от 30го апреля, подскажите пожалуйста в чем ошибка.
С уважением!
Re: LCD_16X02_Atmega8
Код: Выделить всё
k =& A;
lcd_out(k);
Если долго мучиться, может быть получится.
Re: LCD_16X02_Atmega8
Алексей здравствуйте!
Все изучаю ваш код от 12го апреля по запуску дисплея.Есть вопрос: в коде отсутствует установка координат стартового адреса курсора "gotoxy". Но в вашем коде есть функция lcd_init(); в котором через "switch(lcd)" комбинациями "0"и"1" пина выбирается положение курсора,(согласно комментариям). Исключает ли такая установка необходимость установки начального адреса первого символа,(в gotoxy(0-ячейка,0-строка)).
Взяты ли аргументы lcd_init с "описание команд модуля"?
Все изучаю ваш код от 12го апреля по запуску дисплея.Есть вопрос: в коде отсутствует установка координат стартового адреса курсора "gotoxy". Но в вашем коде есть функция lcd_init(); в котором через "switch(lcd)" комбинациями "0"и"1" пина выбирается положение курсора,(согласно комментариям). Исключает ли такая установка необходимость установки начального адреса первого символа,(в gotoxy(0-ячейка,0-строка)).
Взяты ли аргументы lcd_init с "описание команд модуля"?
Re: LCD_16X02_Atmega8
Вот готовый генератор кода. Несколько кликов мышкой и все готово. Генерит код под студию. В корне проекта можно посмотреть на все функции. Именно функция lcd_init(BYTE lcd) принимает в качестве аргумента тип отображаемого курсора и выводит его в верхний левый угол.
А вот здесь полное описание данных функций.
А вот здесь полное описание данных функций.
Если долго мучиться, может быть получится.