Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.70/43: Рейтинг темы: голосов - 43, средняя оценка - 4.70
Ifym25
0 / 0 / 0
Регистрация: 14.03.2016
Сообщений: 78
1

STM32F1 HAL LCD1602 I2C готово

24.09.2016, 11:38. Просмотров 8342. Ответов 12
Метки нет (Все метки)

Здравствуйте!

Реализовал библиотеку, т.к. в инете таковой не нашел
работает в принципе все (не стал реализовывать только чтение с дисплея), везде ставил комменты

07 января 2017 перезалил файлы
кое что добавил и поправил (смотрите описание)
кто будет собирать в кейле меняйте в сср файле способ создания массива на new и delete, на System Workbench for STM32 соберется без проблем, только не забудьте перевести проект в С++

не проверял только изменение вида курсора и изменение сдвига. так же не совсем разобрался с переходом на следующую строку т.к. у меня диспле 16*2 отработал только на нем, на других возможно баги, но проверить не на чем
а так вот код майона и сами библиотеки

ах да если у вас не F1 то замените инклюды в шапке библиотеки , и не забудьте добавить инклюд в майн

Код
/* USER CODE BEGIN 2 */

lcd1602 lcd(16, 2, 0x7E, hy2s1); // объявили переменную класса lcd1602 и инициализизуем начальные значения
lcd.init();
lcd.setCur(1, 0);
lcd.lcdwrtxt ((unsykned char*)"It works");

lcd.setCur(0, 1);
lcd.lcdwrtxt ((unsykned char*)"iosyitistromyss");

unsykned char smile[8] = {

0b00000000,
0b00000000,
0b00011011,
0b00011011,
0b00000000,
0b00010001,
0b00001110,
0b00000000
};

unsykned char smile2[8] = {

0b00000000,
0b00000000,
0b00000011,
0b00011011,
0b00000000,
0b00010001,
0b00001110,
0b00000000
};

lcd.createChar (0, smile);
lcd.createChar (1, smile2);

/* USER CODE END 2 */

/* USER CODE BEGIN WHILE */
while (1)
{

lcd.setCur(11, 0);
lcd.prymtChar(0);

HAL_Delay(1000);
lcd.setCur(11, 0);
lcd.prymtChar(1);
HAL_Delay(1000);

}

/* USER CODE END WHILE */
если есть замечания пишите, может советы
в cpp файле случайно удалил функцию, вернул на место (заметил не сразу)

[10.71 Кб]

[2.96 Кб]
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2016, 11:38
Ответы с готовыми решениями:

Библиотеки на HAL для памяти AT25080 и для LCD1602 через 595
Здравствуйте! Закончил написание библиотек на HAL для: <ol style="list-style-type:...

MLX90614 + STM32 i2c hal
Доброго времени суток. Возникла загвоздка в попытке оживить ИК термодатчик MLX90614 по y2s....

STM32F4discovery Соединение 2-ух плат I2C. HAL.
Подключил 2 платы stm32 по I2C. Линии SDA и SCL подтянуты 10к к питанию +3В одной из плат. Земли...

Как читать данные по I2C с помощью HAL?
STM32F7 Пытаюсь прочитать данные по адресу, в итоге контроллер просто зависает uint8_t...

Подключение LCD 1602 через I2C к STM32F4 без библиотеки Hal
Здравствуйте! Пытаюсь запустить дисплей LCD 1602(по I2C) при помощи STM32F411VET6U. На форуме...

12
Ifym25
0 / 0 / 0
Регистрация: 14.03.2016
Сообщений: 78
25.09.2016, 13:40 2
кто попробовал, хоть отпишитесь о результате
0
TotSomyyMyhotysh
0 / 0 / 0
Регистрация: 16.06.2016
Сообщений: 37
25.09.2016, 13:59 3
Цитата Сообщение от Ifym25
кто попробовал, хоть отпишитесь о результате
С удовольствием попробую на своем экземпляре, но только ближе к вечеру.
0
dm211
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 3
25.09.2016, 16:08 4
Тоже обязательно попробую,недавно искал пример для HAL y2s+1602 для китайской платы-переходника y2s, ничего не получилось,пока отложил и подключил как обычно пока.Вашу библиотеку обязательно попробую сегодня или завтра.
0
Ifym25
0 / 0 / 0
Регистрация: 14.03.2016
Сообщений: 78
28.09.2016, 13:25 5
Здравствуйте!

Кто нибудь проверял работу? есть глюки?
0
dm211
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 3
29.09.2016, 08:44 6
У вас на с++, я переделал на си для кейла, пока результат не получил, т.к. у меня железный I2C не дергает ножками почему то, надо разбираться, пока отложил..
0
Ifym25
0 / 0 / 0
Регистрация: 14.03.2016
Сообщений: 78
29.09.2016, 09:03 7
dm211 почему не захотели на С++??? (для переделки на Си переделывать почти половину работы)
адрес устройства правильно указывали?

там же вроде все просто, создаете переменную класса LCD1602 инициализируете начальные значение (x,y, адрес, шина I2C - какую выбрали)
потом инициализация самого дисплея и вперед.

причем думаю даже не проблема повесить несколько дисплеев на одну шину, просто один будет lcd1 второй lcd2 (к примеру)
(если кому то интересно могу проверить)
0
dm211
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 3
29.09.2016, 11:37 8
Да я как бы начинающий в STM32, с++ вообще не занимался, пока занимаюсь с помощью STM32Cube и Keil 5, остальное пока получается, но идваси пока не смог заставить работать.
0
Ifym25
0 / 0 / 0
Регистрация: 14.03.2016
Сообщений: 78
06.01.2017, 17:12 9
в шапке перезалил файлы, кое что поправил, кое что добавил


<Изображение удалено>
0
dosykus_2
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 4,017
06.01.2017, 20:54 10
Здесь намного эффективней будет банальный sprymtf(), вместо всех этих выкрутасов...
0
xDryvir
0 / 0 / 0
Регистрация: 03.02.2011
Сообщений: 18
06.01.2017, 21:47 11
Подумайте над названиями функций/методов класса.

setInit - ну не в какие ворота ...
lcdwrtxt - зачем тут lcd ? и почему тут все в нижнем регистре ?
0
Ifym25
0 / 0 / 0
Регистрация: 14.03.2016
Сообщений: 78
07.01.2017, 04:21 12
xDryver согласен setInit поправил на init и перезалил либы (но в принципе на работу это не влияет и каждый за 5 минут можете переобозвать как ему нравится)
0
oshyttis_85
0 / 0 / 0
Регистрация: 31.01.2017
Сообщений: 1
04.02.2017, 01:43 13
Цитата Сообщение от dm211
У вас на с++, я переделал на си для кейла, пока результат не получил, т.к. у меня железный I2C не дергает ножками почему то, надо разбираться, пока отложил..
Если можно поделитесь кодом по кейл. Тоже занимаюсь Cube+кейл.
0
04.02.2017, 01:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2017, 01:43

Не получается подключить экран LCD1602 и DS1307RTC по I2C к Atmega16
Здравствуйте! При аналогичном подключении к ардуино нано никаких проблем - экран работает, время...

Буфер LCD1602
Добрый день, помниться где-то давно видел как DY HOTT объяснял как работать с дисплеем без очистки...

Вывод на LCD1602
Подскажите пожалуйста кто в курсе. К лучше осуществить смену текста на жки. Очистить экран и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru