Jump to content
astrgan

Библиотека Для Работы С Hd44780

Recommended Posts

Хотел повторить вот этот проект в IAR.

Но при компилировании появляется ошибка:

Error[Pe167]: argument of type "uint8_t (*)[8]" is incompatible with parameter of type "uint8_t *" C:\ARM\main.c 19

#include "stm32F10x.h"
#include "hd44780_driver.h"
#include "stm32f10x_rcc.h"
int main(void)
{
uint8_t user_char[8]; //Сюда будем записывать пользовательский символ
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //Вкл порт С
lcd_init(); //Инициализируем дисплей
user_char[0]=0xE; //А вот тут
user_char[1]=0x11; // рисуем
user_char[2]=0x11; // наш символ
user_char[3]=0x11; //
user_char[4]=0x11; // Это типа рыба :-)
user_char[5]=0xA;
user_char[6]=0x11;
user_char[7]=0x11;
lcd_set_user_char(0,&user_char); // Наша рыба это символ номер ноль !!!(ЗДЕСЬ ОШИБКА)
lcd_out("This is fish"); //Выводм надпись в нулевую строку
lcd_set_xy(0,1); //переводим курсор в первую строку
lcd_send(0,DATA); //выводм символ номер ноль
lcd_set_state(LCD_ENABLE, CURSOR_ENABLE, BLINK); //Включаем курсор и мигалку
while(1)
{
}
}

1938502_s.jpg

Share this post


Link to post
Share on other sites

Попробуй массив по другому создать:

char *user_char = NULL;
user_char = new char[8];

И подставь просто

lcd_set_user_char(0,user_char);

Share this post


Link to post
Share on other sites

Финальные результаты тестирования литиевых батареек FANSO при нормальных условиях

Перед разработчиком устройства, в котором предполагается использование батарейки, всегда стоит задача выбора того или иного бренда. Конечно, наиболее объективный результат по качеству можно получить при реальном тестировании в режиме работы самого устройства. Для того чтобы у разработчиков была некоторая информация о реальных значениях основных параметров ЛХИТ, инженеры компании КОМПЭЛ решили провести серию из трех тестов. Первый тест на постоянный разряд в нормальных климатических условиях, начатый в апреле 2019 г., мы завершили.

Узнать финальный результат тестирования

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By Tulen
      Здарова, железячники. 
      Собираю клавиатуру из 12-ти кнопок, которую подключаю к пичку (PIC18F25K80). Но про клавиатуру не важно, там все разобрано и код сделал уже. Проблема в том, что сейчас нет времени самому писать библиотеку для работы с LCD дисплеем (через недельку-две я сяду и разберусь), поэтому я ищу готовые библиотеки. Дисплей - LM016L, контроллер - HD44780. 
      Нашел одну библиотеку, добавил в код. Компилятор ругается на выводы строчек и не хочет выводить переменные. 
      Прилагаю код:
      IDE - MPLAB X v4.05
      Компилятор - XC8 бесплатный.
      Варнинги от компилятора + строчки:
          PORTC = (data & 0x0F)*16; // newmain.c:46: warning: (373) implicit signed to unsigned conversion     PORTC = (data >> 4)*16; // newmain.c:54: warning: (373) implicit signed to unsigned conversion     PORTC = (data & 0xF)*16; // newmain.c:57: warning: (373) implicit signed to unsigned conversion     WriteByte(addLUT[row] + col); // newmain.c:65: warning: (373) implicit signed to unsigned conversion     SetLCDPosition(LCD_Line+1,0);  // newmain.c:87: warning: (373) implicit signed to unsigned conversion     WriteByte(i); // newmain.c:116: warning: (373) implicit signed to unsigned conversion     ShowStr(b); // newmain.c:160: warning: (357) illegal conversion of integer to pointer     ShowStr("BAD"); // newmain.c:172: warning: (359) illegal conversion between pointer types  
    • By LegionKC
      Всем Привет.
      Прошу не кидаться тапками за название темы, понимаю, что уже много опубликовано материалов по этому вопросу, однако все кроется в нюансах.
      Итак, к проблеме.
      Выполняю курсовую работу. Опыта в программировании минимум.
      Имеется схема с МК ATmega8 и дисплеем LM044 на контроллере HD44780. При попытке вывести инфу на дисплей столкнулся с этими двумя рядами прямоугольников (к слову, дисплей 20х4).
       
      Поначалу думал, что оторвались провода, которые соединяют дисплей с МК. Нет, все прозваниваются. Кстати, схема вся была спаяна преподавателем и раньше дисплей уже выводил инфу, но когда начал я ее прошил своей прогой, появилось, то что на фотке. 
      Потом пошли мысли, что неправильно настроил выводы в CodeVision AVR, в котором работаю.
      Исходя из даташита МК и того, куда припаяны провода в схеме, настроил порты таким образом:
      Думал, что теперь будет все норм, прошил снова - ничего. Начал уже бесится, изучил десятки страниц (уже не первый день работаю над схемой, думал все-таки смогу сделать сам, ан нет)
      Решил начать с простого. Нашел в инете самый простой код по выводу инфы
      Сделал стандартный проект в CodeVision AVR, вставил туда этот код, настроил настроил выводы на свои. 
      Прошил в Протеусе МК и вуаля - в Протеусе инфа выводится!
      На радостях решил, что теперь-то все получится - опять нет!
      Прошивал МК через AVRDUDE PROG 3.0 через USBasp
      Ребят, у меня к вам такие вопросы:
      1. Что может быть не так с дисплеем?
      2. Нужно ли как-то настраивать порты МК? Потому что я нигде не видел, чтобы хоть где-то пытались настроить порты МК при выводе инфы на экран. Даже в том коде, что я выложил. 
      Прошу вас, высказывайте любые идеи и мысли, ибо я реально хочу понять программирование и выяснить в чем же проблема.
      Спасибо!
    • By Sherwood107
      Народ, прошу помощи в решении проблемы. Решил собрать тестер полупроводниковых элементов по данной схеме. В конечном итоге на lcd дисплее светятся все сегменты, и никакого намеки на нормальную работу прибора. Собирался по схеме 1, и по схеме 2 (которая представлена здесь), реакция аналогичная. МК зашит правильно, опыт в этом есть. Все дорожки прозвонил, никаких коротышей нету, в чём проблема понять не могу. Первый опыт в подключении lcd дисплея и вывода на него информации..





    • By ricofi
      Собрал схему подключения дисплея к Raspberry Pi. Использовал этот дисплей в другой схеме, потом отпаял и снова собрал на беспаечной макетке и он перестал выводить символы.
      При подключении заполняет одну строку квадратами. После запуска программы квадраты исчезают, но символы не появляются. При увеличении контрастности появляются только символы в обеих строках.
      Схема ниже. В чем может быть проблема?
      Вариант, что неправильно собрал схему отпадает, так как схему на макетке с прошлого раза я даже не разбирал, просто отключил от нее дисплей.
      На данный момент нет возможности для проверки подключить другой дисплей.

    • By motoalex
      Здравствуйте уважаемые любители МК)
      Пытаюсь организовать такую задачу на STM32f407VG:
      1. Принимаем данные по USART, помещаем их во временный буфер( Recieve_buff).
      2. Если попадается символ '+' читаем (Recieve_buff) и записываем данные после '+' в массив данных (massive).
      3. Выводим данные на жки wh1602.
      с 1 и 3 пунктом проблем как бы нет, но вот со вторым вовсе не клеится. К примеру: отправляю +suprima, после 1, а то и 3 отправки приходит только один символ 's', т.е. и не каждый раз выводятся данные. Прошу помощи у Гуру сообщества. Всем Благ!

      #include "main.h" uint16_t delay_count=0; uint32_t i; uint32_t i3; int i2=123; char str1[50]; uint8_t massive[256]; // massive buffer uint8_t Recieve_buff[256]; // recieved buffer uint8_t Recieve_W=0, Recieve_R=0, Recieve_C=0; char Send_buffer[100]; uint8_t Send_count=0; void SysTick_Handler(void)// counter { if (delay_count > 0) { delay_count --; } } void(delay_ms(uint16_t delay_temp)) // schitayem nashe vremya, kotoroe zadano v osnovnom tele { delay_count = delay_temp; while(delay_count) {} } //---------------------------------------------------// //recieved data interrupt //---------------------------------------------------// void USART2_IRQHandler(void) { if(USART_GetITStatus(USART2, USART_IT_RXNE) == SET) // if flag interrupt set up we will do next... { USART_ClearITPendingBit(USART2, USART_IT_RXNE); // reset interrupt Recieve_buff[Recieve_W] =USART_ReceiveData(USART2); Recieve_W++; Recieve_C++; } } //---------------------------------------------------// int main(void) { USART2_init(); SystemCoreClockUpdate(); SysTick_Config(SystemCoreClock/1000);// 1ms delay_ms(50); LCD_ini(); while(1) { if(Recieve_C>0) { if(Recieve_buff[Recieve_R++]=='+') { massive[i3++]=Recieve_buff[Recieve_R++]; sprintf(str1, "%s", massive); //sprintf(str7, "%s %d %s", "one", i2, str); LCD_Send_String8(0,str1); } Recieve_C--; Recieve_R++; } } }
×
×
  • Create New...