0 / 0 / 0
Регистрация: 14.03.2016
Сообщений: 78
|
|
1 | |
STM32F1 HAL LCD1602 I2C готово24.09.2016, 11:38. Показов 12865. Ответов 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
|
24.09.2016, 11:38 | |
Ответы с готовыми решениями:
12
Библиотеки на HAL для памяти AT25080 и для LCD1602 через 595 MLX90614 + STM32 i2c hal Чтение регистров на HAL по I2C STM32F4discovery Соединение 2-ух плат I2C. HAL. Как читать данные по I2C с помощью HAL? |
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
|
04.02.2017, 01:43 | |
04.02.2017, 01:43 | |
Помогаю со студенческими работами здесь
13
STM32f1 I2C MCSIS. "I2C2->DR = I2C_ADDRESS(ADDR,I2C_MODE_WRITE);" - разжуйте от и до эту строку Подключение LCD 1602 через I2C к STM32F4 без библиотеки Hal Не получается подключить экран LCD1602 и DS1307RTC по I2C к Atmega16 STM32F1 HAL servosg90 STM32F103C8T6 -> I2C ->LCD1602 рабочий проект Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |