В данной статье хочу поделиться опытом в сопряжении контроллера STM32F103RBT6 и простенького LCD дисплея на основе контроллера H44780. Подключать его не сложно, вот простенькая схема. Здесь мы рассматриваем четырех проводную систему подключения, это нам позволит сэкономить порты микроконтроллера Как подключить питание можно посмотреть в Datasheet здесьПротокол обмена и принципы работы можно посмотреть здесь и здесь. Теперь когда мы все подключили, начнем это дела запускать. Для начала нам понадобиться библиотека для работы с дисплеем, так же не забываем про DelayВ Header файле нам надо всего лишь указать к каким портам подключен порт служебных линий и порт данных
/************************************************* * Здесь ручками установим порты подключения LCD * *************************************************/ #define PORT_RS_RW_EE GPIOC //Порт подключения служебных линий #define PORT_DATA GPIOC //Порт подключения шины данных 4bit #define INT_PORT_RS_RW_EE RCC_APB2Periph_GPIOC //Порт подключения служебных линий, шины тактирования #define INT_PORT_DATA RCC_APB2Periph_GPIOC //Порт подключения шины данных 4bit, шины тактирования #define RS GPIO_Pin_0 //Служебная шина RS #define RW GPIO_Pin_1 //Служебная шина RW #define EE GPIO_Pin_2 //Служебная шина E #define D4 GPIO_Pin_3 //Шина данных D4 #define D5 GPIO_Pin_4 //Шина данных D5 #define D6 GPIO_Pin_5 //Шина данных D6 #define D7 GPIO_Pin_6 //Шина данных D7 /*********************************************************************************************************/
Теперь простенький код для LCD
LCD_INIT(); //Инициализация LCD LCD_PUT("Hello World"); //Вывод на дисплей Hello World
Да, не забываем инициализировать дисплей Вот собственно, что получилось.
Если вы посмотрите header файл там можно будет найти следующие функции /*******************************Функции для работы с дисплеем*********************************************/ void PORT_INIT(void); //Инициализация Портов работы с LCD void LCD_INIT(void); //Инициализирует LCD: 2строки по 16 символов, 4bit шина данных, void LCD_CLEAR(void); //Очистка экрана void LCD_GOTO(uint8_t x, uint8_t y); //Перевод курсора в нужное положение void LCD_PUT(char *STR); //Вывод на экран Символов void LCD_COMMAND(uint8_t byte); //Отправка каманд по 4бита void WRIGHT_HALF_BYTE(uint8_t byte); //Запись полубайта void LCD_SEND_DATA(uint8_t data); //отправка данных в LCD (код ASCII) /********************************************************************************************************/ Вот и все что хотел сказать по этой теме, если есть вопросы, пишите.
|