Авторизация


...

Кто на сайте?

Сейчас 109 гостей и один зарегистрированный пользователь на сайте

  • thamohmedsaman

Статистика

-Посетители : 28065
-Материалы : 210

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

  Программатор Pic K-150

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

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

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

 

 

В данной подпрограмме, рассчитанной для микроконтроллеров семейства 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

Модуль PSP

19-03-2011 Николай Викторов

Модуль PSP

  При разработки устройств на микроконтроллерах фирмы Microchip (далее МК) иногда возникает необходимость реализации параллельной передачи данных. В некоторых МК производитель предусмотрел такой режим работы, называется  «Ведомый параллельный порт» или режим PSP (Parallel Slave Port - PSP).      

Двоичная арифметика.

19-04-2012 Super User

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

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

02-11-2011 Sergey Roslik

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

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

Подключение ENC28J60 + PIC к локальной сети .

27-10-2011 Николай Викторов

Подключение ENC28J60 + PIC к локальной сети .

1 часть.   Эта статья будет интересна в первую очередь тем, кто пишет программы  для микроконтроллеров на ассемблере и есть желание  собрать устройство , работающие в локальной сети или сети ethernet. Здесь будет применена связка  ethernet контроллер  enc28j60 и PIC18F46K20. Но можно...


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

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