Магазин  LCD-Сайт  О проекте

  • ЖК-модули
  • Контроллеры
  • ИС поддержки
  • Применения
  • Технологии

    Ссылки
  • Поставщики
  • Производители

  • Купи CD-ROM



    Имя
    E-mail

    Поставщики электронных компонентов

  • Главная страница > ЖКИ > Прменения



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

    ЖКИ на базе контроллеров 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++; } . . . /*-------------окончание примера-------------*/

    Можно также скачать готовую прошивку (схема включения ЖКИ приведена выше, кварц - 4МГц, ЖКИ - формата 16x2) для контроллера 16F84. Прошивка циклически выводит весь знакогенератор ЖКИ и может быть использована для тестирования таких индикаторов.







    Тел.: (495) 514 4110
    Факс: (495) 326 8618

    © 2001 GAW.RU
    Разработка сайта: GAW.RU
    return_links(); ?>