Поиск сообщества
Показаны результаты для тегов 'HD44780'.
Найдено: 6 результатов
-
Здарова, железячники. Собираю клавиатуру из 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
-
Сделал девайс для своей машины, думаю, многим понравится. Прибор устанавливается на любом автомобиле с напряжением бортовой сети 12В. Основные функции: 1.остаток топлива в баке в литрах. 2.напряжение бортовой сети. 3.рабочую температуру двигателя. 4.температуру воздуха снаружи машины. 5.изменение яркости дисплея в зависимости от включенного габаритного освещения (день/ночь). Дополнительно, компьютер обладает следующими сервисными возможностями: 1.калибровка штатного датчика уровня топлива. 2.установка уровня подсветки дисплея для режимов день/ночь. 3.изменение поправочного коэффициента инерционности показаний уровня топлива. Все калибровки прибора производятся программно. Для измерения температуры необходима установка собственных датчиков dallas ds18b20. В основе устройства лежит микроконтроллер AVR ATMega8 производства фирмы ATMEL. Для измерения напряжения бортовой сети предусмотрен отдельный контакт, который можно подключить непосредственно к аккумулятору или замку зажигания. В качестве индикатора был выбран алфавитно-цифровой ЖК индикатор фирмы МЭЛТ МТ-16S2H, который с успехом можно заменить на любой другой, совместимый с HD44780. Статья на сайте: Бортовой миникомпьютер В архиве схема, фьюзы для прошивания, файлы lcd.hex и lcd.epp, описание работы с менюшками. avr_lcd.rar
- 2 627 ответов
-
2
-
- Бортовой компьютер
- БК
- (и ещё 7 )
-
Всем Привет. Прошу не кидаться тапками за название темы, понимаю, что уже много опубликовано материалов по этому вопросу, однако все кроется в нюансах. Итак, к проблеме. Выполняю курсовую работу. Опыта в программировании минимум. Имеется схема с МК ATmega8 и дисплеем LM044 на контроллере HD44780. При попытке вывести инфу на дисплей столкнулся с этими двумя рядами прямоугольников (к слову, дисплей 20х4). Поначалу думал, что оторвались провода, которые соединяют дисплей с МК. Нет, все прозваниваются. Кстати, схема вся была спаяна преподавателем и раньше дисплей уже выводил инфу, но когда начал я ее прошил своей прогой, появилось, то что на фотке. Потом пошли мысли, что неправильно настроил выводы в CodeVision AVR, в котором работаю. Исходя из даташита МК и того, куда припаяны провода в схеме, настроил порты таким образом: Думал, что теперь будет все норм, прошил снова - ничего. Начал уже бесится, изучил десятки страниц (уже не первый день работаю над схемой, думал все-таки смогу сделать сам, ан нет) Решил начать с простого. Нашел в инете самый простой код по выводу инфы Сделал стандартный проект в CodeVision AVR, вставил туда этот код, настроил настроил выводы на свои. Прошил в Протеусе МК и вуаля - в Протеусе инфа выводится! На радостях решил, что теперь-то все получится - опять нет! Прошивал МК через AVRDUDE PROG 3.0 через USBasp Ребят, у меня к вам такие вопросы: 1. Что может быть не так с дисплеем? 2. Нужно ли как-то настраивать порты МК? Потому что я нигде не видел, чтобы хоть где-то пытались настроить порты МК при выводе инфы на экран. Даже в том коде, что я выложил. Прошу вас, высказывайте любые идеи и мысли, ибо я реально хочу понять программирование и выяснить в чем же проблема. Спасибо!
-
Народ, прошу помощи в решении проблемы. Решил собрать тестер полупроводниковых элементов по данной схеме. В конечном итоге на lcd дисплее светятся все сегменты, и никакого намеки на нормальную работу прибора. Собирался по схеме 1, и по схеме 2 (которая представлена здесь), реакция аналогичная. МК зашит правильно, опыт в этом есть. Все дорожки прозвонил, никаких коротышей нету, в чём проблема понять не могу. Первый опыт в подключении lcd дисплея и вывода на него информации..
-
Собрал схему подключения дисплея к Raspberry Pi. Использовал этот дисплей в другой схеме, потом отпаял и снова собрал на беспаечной макетке и он перестал выводить символы. При подключении заполняет одну строку квадратами. После запуска программы квадраты исчезают, но символы не появляются. При увеличении контрастности появляются только символы в обеих строках. Схема ниже. В чем может быть проблема? Вариант, что неправильно собрал схему отпадает, так как схему на макетке с прошлого раза я даже не разбирал, просто отключил от нее дисплей. На данный момент нет возможности для проверки подключить другой дисплей.
-
Здравствуйте уважаемые любители МК) Пытаюсь организовать такую задачу на 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++; } } }