В поисках библеотек дял работы с LCD на C8051F3..

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Вс дек 08, 2013 14:57:33
Откуда: Россия, Иваново

Сообщение 4elovek37 »

Доброго времени суток! Собираюсь попробовать работать с LCD дисплеем на основе HD44780. МК C8051F320. Никак не могу отыскать примеров/библиотек на C для него. В интернетах встретил огромное количество кода для avr, а вот для моего МК не встречал (нашел на Радиокоте тему по f030, но там все ссылки устарели :( ). Так как велосипед изобретать не очень хочется, не могли бы поделится ссылками/примерами программ/библиотеками? Заранее спасибо!
Реклама
Держит паяльник хвостом
Сообщения: 963
Зарегистрирован: Чт апр 03, 2014 23:16:55
Откуда: Россия

Сообщение Rtmip »

Пример можно посмотреть в книге:
Микроконтроллеры серии 8051. Практический подход (Ю.С. Магда, 2008)
Во вложении библиотека для C51Fxxx, не помню где нашел... :))
Вложения
ONIC_LCD.zip
(140.86 КБ) 182 скачивания
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1487
Зарегистрирован: Вс май 13, 2012 00:01:54

Сообщение Ariadna-on-Line »

http://www.silabs.com/

Ищите Silicon Laboratories IDE
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Вс дек 08, 2013 14:57:33
Откуда: Россия, Иваново

Сообщение 4elovek37 »

Ищите Silicon Laboratories IDE
У меня Simplicity studio, который его в себя включает. Там действительно встроены некоторые примеры кода, но для lcd не нашел!
Во вложении библиотека для C51Fxxx, не помню где нашел...
Вот просто огромное спасибо! Отличный пример! Теперь сижу, разбираюсь :))
По ходу дела возник 1 вопрос, на который нигде не нашел ответа: нужно ли делать паузу между передачей двух полубайт в 4-битном режиме работы?
Исходный код выдачи данных в порт в 8-б режиме из примера:

Код: Выделить всё

void Set_Data (char CH) 
{ 
   DATABUS_CF=0; // Режим с открытым истоком
   DATABUS=CH; // Поместить байт данных CH в порт 
}
(P.S. Стробирование, задержка и проверка BUSY есть, просто делаются на другом уровне)
А вот что у меня получается для 4-б режима:
P1.7-P1.4 = D7-D4; DC=P1.3; RW=P1.2;EN=P1.1

Код: Выделить всё

void Set_Data (unsigned char CH)//Отрпавить биты в порт
{
unsigned char temp=0x00;
temp = CH;
DATABUS_CF &= 0x0F; // Режим с открытым истоком почему так? вроде же push pull надо?			
CH = CH | 0x0F;//Левая часть - первый полубайт. Правую ставим в "1", что бы не сбить EW, RW и DC при лог. И
DATABUS &= CH; //Сперва отправим левую часть CH, так как она старше в DB7:DB4
E=0;//Поехали
E=1;//Отправили первый полуйбайт без всяких задержек (верно ли?) готовимся к отправке второго
temp<<4;//Сдвинем на 4 бита влево
temp = temp | 0x0F;//Левая часть - второй полубайт. Правую ставим в "1", что бы не сбить EW, RW и DC
DATABUS &= temp;
}
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «Периферия»