PIC Урок 10. LCD 20×4. 8-битный режим. Часть 1



Продолжаем работу по программированию микроконтроллеров PIC.

И сегодня мы попробуем к контроллеру PIC подключить символьный дисплей, который работает под управлением контроллера дисплея HD44780, в котором доступно для отображения 80 символов, организованных в 4 строки по 20 символов в каждой.

Если вы смотрите мои уроки по другим контроллерам, то с такого рода дисплеями мы встречаемся постоянно и вроде изучили их программирование вдоль и поперёк, но оказывается ещё не полностью. Мы подключали такие дисплеи по 4-битному параллельному интерфейсу, также подключали через переходник по шине I2C, что очень удобно, так как мы получаем огромную экономию проводов. Но тем не менее с 8-битным полноправным режимом работы данного дисплея мы так и не познакомились. Хотя надо было с него начинать. Но так как данный режим требует большего количества ножек портов, которых нам всегда не хватало, мы его обошли стороной. Настало время восполнить данный пробел.

Также в связи с этим да и не только в связи с этим контроллер у нас будет теперь другой, подобный тому, который мы использовали на предыдущих занятиях, только немного более расширенный его вариант. Данный контроллер называется PIC16F877A.

Вот его распиновка

 

 

В отличие от контроллера PIC16F876A, с которым мы работали в последнее время, данный контроллер, как видно из его схемы, имеет большее количество ножек вообще, а, следовательно, и больше количество ножек портов. Все порты A, B, C и D имеют по 8 ножек. Также есть ещё некоторые отличия от предшественника, с которыми мы познакомимся в процессе изучения его программирования. Вот таблица, по которой у нас есть возможность сравнить наши контроллеры по некоторым параметрам (нажмите на картинку для увеличения изображения)

 

 

Кроме большего количества ножек портов мы видим здесь наличие параллельного ведомого порта, большее количество каналов АЦП. Также есть ещё некоторые отличия, но здесь они не показаны, да и пока они нам не столь интересны.

Также выбор данного контроллера мной был обусловлен тем, что под такой 40-пинный корпус существует удобная плата от компании WaveShare, которую я вам уже показывал, а также постоянно давал ссылки на страницу для её приобретения. Стоит она очень недорого. Давайте посмотрим данную плату ещё раз вместе с контроллером, который в неё вставляется через удобную ZIP-панель.

 

 

Согласитесь, очень удобная плата.

То, что нам пока сегодня потребуется — это разъём ICSP, находящийся вверху для подключения программатора, а также разъём LCD1602 для подключения нашего дисплея.

Программатор на сей раз мы подключим тоже более продвинутый — PICkit 3. У меня он оригинальный. Данный программатор позволит нам загружать прошивку в контроллер непосредственно из среды программирования MPLAB X, а также пользоваться полноправной отладкой проектов. Вот так выглядит программатор

 

 

Также на плате справа мы видим разъём для подключения символьного дисплея.

Дисплей мой выглядит следующим образом

 

 

Разъём у меня распаян в дисплее типа «мама» для удобства подключения переходников I2C-LCD.

 

 

Поэтому для того, чтобы данный дисплей подключить в разъём на отладочной плате, я спаял следующий переходничок

 

 

Подключим дисплей через данный переходник к плате, также подключим к ней программатор и подключим программатор по интерфейсу USB к PC

 

 

Также можно подключить отдельное питание к соответствующему разъёму, правда, дисплей работает и от программатора, но все равно не мешало бы подключить.

Выглядит блок питания вот таким образом

 

 

И данный блок питания входит в комплект к плате. То есть приобретать отдельно его не нужно.

И теперь уже мы можем приступить к разработке проекта.

Повторно рассказывать как работает и как устроен дисплей смысла не вижу, так как всё очень подробно было дано здесь и здесь.

Но кое-какие моменты мы всё равно будем в технической документации просматривать, так как у нас режим подключения несколько другой.

 

 

Так как у нас контроллер теперь другой, то проект мы создадим новый, запустив, конечно, перед этим среду программирования MPLAB X.

Выберем наш контроллер

 

 

На следующем этапе создания проекта выберем наш программатор

 

 

Выберем компилятор

 

 

Дадим название нашему проекту

 

 

Проект создан.

Создадим также файл главного модуля main.c со стандартным содержимым

 

//------------------------------------------------

void main()

{

  while(1)

  {

  }

}

//------------------------------------------------

 

Создадим также файл main.h тоже со стандартным содержимым

 

#ifndef MAIN_H

#define MAIN_H

//--------------------------------------------------------------

#define _XTAL_FREQ 4000000

#include <xc.h>

//--------------------------------------------------------------

// CONFIG

#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)

#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)

#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)

#pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR disabled)

#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)

#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)

#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)

#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)

//--------------------------------------------------------------

//--------------------------------------------------------------

#endif /* MAIN_H */

 

У нас даже не поменялись конфигурационные биты, так как в этой части разницы между контроллером предыдущим и контроллером, который мы будем использовать в данном занятии, нет.

Подключим данный файл к файлу main.c

 

#include "main.h"

//------------------------------------------------

void main()

 

Создадим также заголовочный файл lcd.h для нашей библиотеки дисплея

 

#ifndef LCD_H

#define LCD_H

//--------------------------------------------------------------

#include <xc.h>

//--------------------------------------------------------------

//--------------------------------------------------------------

#endif /* LCD_H */

 

И создадим файл lcd.c пока почти пустой

 

#include "lcd.h"

//--------------------------------------------------------------

 

Подключим также нашу библиотеку в файле main.h

 

#include <xc.h>

#include "lcd.h"

 

Попробуем собрать наш проект. Если всё нормально собралось, то пока на этом закончим. А продолжим в следующей части урока, в которой мы напишем библиотеку для дисплея и, воспользовавшись ею, выведем на него текстовые строки.

 

 

Предыдущий урок Программирование МК PIC Следующая часть

 

Техническая документация на дисплей LCD2004

 

 

Купить программатор (неоригинальный) можно здесь: PICKit3

Купить программатор (оригинальный) можно здесь: PICKit3 original

Отладочную плату PIC Open18F4520-16F877A можно приобрести здесь: PIC Open18F4520-16F877A

Дисплей LCD 20×4 можно приобрести тут: Дисплей LCD 20×4

 

 

Смотреть ВИДЕОУРОК (нажмите на картинку)

 

PIC LCD 20x4. 8-битный режим

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*