Авторизация


...

Кто на сайте?

Сейчас 134 гостей и 4 зарегистрированных пользователей на сайте

  • heydeeste
  • inmiernikwesto

Статистика

-Посетители : 22989
-Материалы : 209

Пользователь сайта продает...

  MB913 C-01

Пользователь сайта покупает...

Подключения LCD (ЖК) индикатора к одному порту.

Автор: Николай Викторов Просмотров: 4864

 

 

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

ПП можно доработать и для работы с микроконтроллерами 16 серии, при этом необходимо не забывать  о ЧМЗ (чтение, модификация, запись).  Подпрограмма проверена в «железе»  и полностью работоспособна. 

 

Ниже предоставлена схема подключения LCD индикатора:

 

alt

При 4 битном подключении индикатора  байт данных передается за два раза и в обоих случаях  используется только младший полубайт, что дает возможность задействовать старший полубайт для передачи других сигналов, в частности E, RS.   Что и реализовано в данном программном решении.  Алгоритм работы понятен из комментариев.

Сама подпрограмма выделена синим цветом.

Для работы необходимо прописать регистры и настроить порт C (или тот, который вы будете задействовать у себя в приложении) на выход. Если порт подключения индикатора будет другой соответственно необходимо изменить "#define"   E, RS, _RS .

 ;-------- Прописка регистров --------
            Cblock
            Temp                    ;
            Temp_1
            Reg_1                   ;
            LCD
            endc
;---------------Присвоение------------
            #define        E LATC,7 ;
            #define       RS LATC,6 ;
            #define    _RS Temp_1,6 ;
;-------------------------------------           
            org                   0 ;
            nop                     ;
            goto             START  ;
;---------------Инициализация--------
 START      movlw                0h ; =Настройка PORTC
            movwf             TRISC ;  мл.4 бита на выход, остальные на вход.=
            clrf              TRISB ; Настройка PORTB на выход
;-------------------------------------
            call           Init_LCD ; Иницилизация в 4 битном режиме.
PROG        call             Text_R ; Пример вывода текста.
            bra                PROG ; Снова.


;---------------------------------------                    
;  Инициализация LCD в 4-х битный режим
;---------------------------------------       
Init_LCD    call          Delay_400 ; Задержка 40мс.
            movlw                .3 ; Три прохода
            movwf              Temp ;
Impul       movlw        B'00000011'; Запись команды
            movwf             PORTC ;
            bsf                   E ;
            nop                     ;
            bcf                   E ;
            call           Delay_40 ; Задержка 40 мкс
            decfsz             Temp ;
            bra               Impul ;
            movlw       B'00000010' ; 4 битовый режим
            movwf             PORTC ;
            bsf                   E ;
            nop                     ;
            bcf                   E ;
            call           Delay_40 ; Задержка 40 мкс
            movlw       B'00101000' ; 4бит, 2 строки, 0таб       ;
            call            ZAP_Adr ; Вызов ПП записи в LCD
            movlw       B'00001000' ; Выкл. дисплей и выкл курсор
            call            ZAP_Adr ; Вызов ПП записи в LCD
            movlw       B'00000110' ; Запрет сдвига инкримен
            call            ZAP_Adr ; Вызов ПП записи в LCD
            movlw       B'00001100' ; Dкл. дисплей и выкл курсор
            call            ZAP_Adr ; Вызов ПП записи в LCD
            return
            
;-------------------------------------
; Задержка 40 мс
;-------------------------------------
Delay_400   movlw               .10 ;
            movwf              Temp ;
            call           Delay_40 ;
            decfsz             Temp ;
            bra                $-.6 ;
            return
;-------------------------------------
;Задержка кварц 4 МГц, если в программе
;другой, то соответственно пересчитать.
;-------------------------------------
Delay_40    movlw              .14 ;
            movwf            Reg_1 ;
            decfsz           Reg_1 ;
            bra                $-2 ;  
            return                 ;

;-----------------------------------
; пп записи данных.
;-----------------------------------
ZAP_Adr    movwf               LCD ; Запись адреса
           bcf                  RS ; Сброс бита
           bra                SLCD ; Вызов ПП SLCD
LCD_D      movwf               LCD ; Запись данных.
           bsf                  RS ; Установка бита
SLCD       swapf             LCD,0 ; Запись в 4-битном режиме
           andlw               0Fh ; Сброс ст. полубайта
           movwf            Temp_1 ; Результат в регистр
           BTFSC                RS ; Установлен бит RS ?
           bsf                 _RS ; Да. В регистре Temp_1 устанавливаем бит _RS
           movff      Temp_1,PORTC ; Копируем результат в порт.
           bsf                   E ; Строб
           nop                     ; =
           bcf                   E ; =
           movf              LCD,0 ; в W
           andlw               0Fh ; Сброс ст. полубайта
           movwf            Temp_1 ; Результат в регистр
           BTFSC                RS ; Установлен бит RS ?
           bsf                 _RS ; Да. В регистре Temp_1 устанавливаем бит _RS
           movff      Temp_1,PORTC ; Копируем результат в порт.
           bsf                   E ; Строб
           nop                     ; =
           bcf                   E ; =
           clrf              PORTC ; Очистить регистр
           call           Delay_40 ; Задержка 40 мкс.
           bcf                  RS ; Сброс бита 
           return

 

 

;**********************************************************************
; пример вывода надписи, основываемся на таблице знакогенератора индикатора
;**********************************************************************
Text_R     movlw                .3 ; На  1 строку.
           call            ZAP_Adr ; Адрес начала вывода данных
           movlw               ' ' ;
           call              LCD_D ;
           movlw               ' ' ;
           call              LCD_D ;
           movlw               ' ' ;
           call              LCD_D ;
           movlw               ' ' ;
           call              LCD_D ;
           movlw               'C' ;
           call              LCD_D ;
           movlw               'H' ;
           call              LCD_D ;
           movlw               'I' ;
           call              LCD_D ;
           movlw               'P' ;
           call              LCD_D ;
           movlw               'M' ;
           call              LCD_D ;
           movlw               'K' ;
           call              LCD_D ;
           movlw               '.' ;
           call              LCD_D ;
           movlw               'R' ;
           call              LCD_D ;
           movlw               'U' ;
           call              LCD_D ;
           movlw               ' ' ;
           call              LCD_D ;
           movlw               ' ' ;
           call              LCD_D ;
           movlw               ' ' ;
           call              LCD_D ;
           movlw              0C0h ;  2 строкa.
           call            ZAP_Adr ; Адрес начала вывода данных
           movlw               '0' ;
           call              LCD_D ;
           movlw               '1' ;
           call              LCD_D ;
           movlw               '2' ;
           call              LCD_D ;
           movlw               '3' ;
           call              LCD_D ;
           movlw               '4' ;
           call              LCD_D ;
           movlw               '5' ;
           call              LCD_D ;
           movlw               '6' ;
           call              LCD_D ;
           movlw               '7' ;
           call              LCD_D ;
           movlw               '8' ;
           call              LCD_D ;
           movlw               '9' ;
           call              LCD_D ;
           movlw               'A' ;
           call              LCD_D ;
           movlw               'B' ;
           call              LCD_D ;
           movlw               'C' ;
           call              LCD_D ;
           movlw               'D' ;
           call              LCD_D ;
           movlw               'E' ;
           call              LCD_D ;
           movlw               'F' ;
           call              LCD_D ;
           return                  ; Возврат из ПП.

 

 

В видео показан пример вывода текстовой информации ввиде бегущей строки, подключенным к одному порту. 

 

 

 

Ссылка для скачивания доступна только авторизованным пользователям сайта !

Случайные статьи....

Prev Next

sPlan – удобная программа для вычерчивания принципиальных схем (ч. 1)

25-08-2012 Игорь Безверхний

sPlan – удобная программа для вычерчивания принципиальных схем (ч. 1)

  Практически каждому радиолюбителю и радиоспециалисту приходится хотя бы иногда чертить принципиальные схемы или их фрагменты. Что бы вычертить их аккуратно, можно использовать графические редакторы. Ну, а польза от применения этих программ студентами, учащимися ПТУ и различных курсов очевидна. В...

Конфигурирование МК 18 серии.

03-08-2011 Super User

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

CPFSLT

02-02-2012 Super User

CPFSLT Операция сравнения f с W, пропуск след. команды если f<.W Синтаксис: [label] CPFSLT f,a Операнды: 0<=f<=255 a Е [0,1] Операция: (f)-(W), пропуск след. команды если (f)<(W) Изменяет флаги: Нет Код: 0110 000a ffff ffff Описание: Сравниваются данные регистра f с содержимым регистра W. Если f<.W, вместо следующей по списку команды выполняется пустая...

Светодиодное табло.

02-11-2011 Sergey Roslik

Светодиодное табло.

  Предлагаю схему светодиодного табло на PIC18F25K22. Только не надо смеяться, что выбран мощный контроллер для управления светодиодами. С этой задачей мог бы справиться и PIC16F84. Контроллер был выбран из соображений цены и качества, да и в целях ознакомления. Ну...


Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru