-
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++; } } }
-