Объявление

Свернуть
Пока нет объявлений.

Иcпользование ЖКИ индикаторов на базе контроллера HD44780 и его аналогов совместно с PIC-микроконтроллерами

Свернуть
X
Свернуть
  •  

  • Иcпользование ЖКИ индикаторов на базе контроллера HD44780 и его аналогов совместно с PIC-микроконтроллерами

    Нажмите на изображение для увеличения.

Название:	dv.jpg
Просмотров:	205
Размер:	90.1 Кб
ID:	2209 />
    ЖКИ на базе контроллеров HD44780 являются эффективным средством отображения различной информации и могут с успехом применяться даже в любительских разработках. Наличие многих режимов вывода (скроллирование, курсоры, определяемые пользователем символы) позволяет разрабатывать удобные интерфейсы управления и устройства индикации.
    Наличие 4-х битного режима вывода даёт возможность задействовать минимум портов микроконтроллера.
    Довольно много информации по этим индикаторам можно найти в интернете, поэтому приведу пример ассемблерных процедур, вставленных в код на С, для 4-х битного режима, как представляющий наибольший интерес для разработчиков.

    Схема включения:
    PIC RB2 - LCD RS
    PIC RB3 - LCD E
    PIC RB4 - LCD B4
    PIC RB5 - LCD B5
    PIC RB6 - LCD B6
    PIC RB7 - LCD B7
    Помимо этого: LCD R/W - заземлить, LCD B0...LCD B3 - подключить к плюсу питания через резисторы.

    /*-------------начало примера-------------*/
    .
    .
    .
    char lcd_data;
    /* вывод старшей тетрады байта данных */

    void out_nibble() {
    asm {
    movwf _lcd_data ; байт данных должен быть в W
    bcf PORTB, 4
    btfsc _lcd_data, 4
    bsf PORTB, 4
    bcf PORTB, 5
    btfsc _lcd_data, 5
    bsf PORTB, 5
    bcf PORTB, 6
    btfsc _lcd_data, 6
    bsf PORTB, 6
    bcf PORTB, 7
    btfsc _lcd_data, 7
    bsf PORTB, 7
    }
    }

    /* вывод байта в 8-ми битном режиме (требуется
    только для инициализации ЖКИ) */
    void wr_cmd(char cmd) {
    asm {
    bcf PORTB, 2 ; RS - down, пишем в IR
    movfw param00_wr_cmd
    call _out_nibble
    bsf PORTB, 3 ; E - up
    bcf PORTB, 3 ; E - down
    call _delay
    }
    }

    /* вывод байта команды на ЖКИ */
    void wr_cmd4(char cmd) {
    asm {
    bcf PORTB, 2 ; RS - down, пишем в IR
    movfw param00_wr_cmd4
    call _out_nibble
    bsf PORTB, 3 ; E - up
    bcf PORTB, 3 ; E - down
    call _delay
    swapf param00_wr_cmd4, W ; меняем тетрады байта
    call _out_nibble
    bsf PORTB, 3 ; E - up
    bcf PORTB, 3 ; E - down
    call _delay
    }
    }

    /* вывод байта данных на ЖКИ */
    void wr_data4(char data) {
    asm {
    bsf PORTB, 2 ; RS - up, пишем в DR
    movfw param00_wr_data4
    call _out_nibble
    bsf PORTB, 3 ; E - up
    bcf PORTB, 3 ; E - down
    call _delay
    swapf param00_wr_data4, W ; меняем тетрады байта
    call _out_nibble
    bsf PORTB, 3 ; E - up
    bcf PORTB, 3 ; E - down
    call _delay
    }
    }

    /* задержка */
    void delay() {
    delay_ms(1);
    }
    .
    .
    .
    /*-------------окончание примера-------------*/ В приведенных примерах не отслеживается флаг занятости (busy flag) контроллера HD44780, взамен этого процедуры вывода на ЖКИ имеют задержки; на это следует обратить внимание. Ниже приводится фрагмент программы на С, выводящую фрагмент знакогенератора на экран ЖКИ формата 2 строки по 16 символов.

    /*-------------начало примера-------------*/
    .
    .
    .
    char i, ch;

    /* инициализация ЖКИ в 8-ми битном режиме
    (рекомендуется производителем) */
    wr_cmd(0x28);
    delay_ms(5);
    wr_cmd(0x28);
    delay();
    wr_cmd(0x28);
    delay();

    /* инициализация ЖКИ в 4-х битном режиме */
    wr_cmd4(0x28);
    wr_cmd4(0x0c);
    wr_cmd4(0x06);

    ch = 0x20;

    wr_cmd4(0x80); /* переход на первую строку экрана */
    for (i=0; i<16; i++) {
    wr_data4(ch); /* выводим символы */

    ch++;
    }
    wr_cmd4(0xc0); /* переход на вторую строку экрана */
    for (i=0; i<16; i++) {
    wr_data4(ch); /* выводим символы */
    ch++;
    }
    .
    .
    .
    /*-------------окончание примера-------------*/
      Возможность размещать комментарии к сообщениям отключена.

    Метки статей

    Свернуть

    Меток пока нет.

    Новые статьи

    Свернуть

    Обработка...
    X