Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/68: Рейтинг темы: голосов - 68, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 14.03.2016
Сообщений: 78
1

STM32F1 HAL LCD1602 I2C готово

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

Author24 — интернет-сервис помощи студентам
Здравствуйте!

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

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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2016, 11:38
Ответы с готовыми решениями:

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

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

Чтение регистров на HAL по I2C
Приветствую всех! Подскажите, пожалуйста, так правильно читать регистры другой мс, подключенной...

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

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

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

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

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

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


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

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

STM32f1 I2C MCSIS. "I2C2->DR = I2C_ADDRESS(ADDR,I2C_MODE_WRITE);" - разжуйте от и до эту строку
void I2C_Write(uint8_t reg_addr, uint8_t data) { //стартуем I2C2-&gt;CR1 |= I2C_CR1_START;...

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

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

STM32F1 HAL servosg90
Здравствуйте! написал модуль, достаточно указать таймер и канал, и можно задавать угол поворота...

STM32F103C8T6 -> I2C ->LCD1602 рабочий проект
STM32F103C8T6 -&gt; I2C -&gt;LCD1602 рабочий проект можно LCD1602 кириллица или LCD1602 ангельский...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru