Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LM016L
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
ROMAN_RU
ВСЕМ ДОБРОГО ВРЕМЕНИ СУТОК. ПРОШУ СТРОГО НЕ КРИТИКОВАТЬ - ТОЛЬКО СЁДНЯ ЗАРЕГИСТРИРОВАЛСЯ ТУТА. ПРОБЛЕМА ТАКАЯ:
ПЫТАЮСЬ НА ДИСПЛЕЕ ВЫВЕСТИ 8 СИМВОЛОВ НА ПЕРВОЙ СТРОКЕ И СТОЛЬКО-ЖЕ НА ВТОРОЙ И НИ ФИГА НЕ ПОЛУЧАТСЯ.
Если начинаю выводить по порядку цифры от 0 до 8, то в proteuse на жки отображается от1 до 7 (нет первого - 0 ), а на второй вообще чё попало выводится. В реале на макетке почти то-же самое (вместо первого нуля - краказябрик ). Ну а если символы не по порядку вывожу , то получается ахинея в хаосе + беспорядок. В proteuse - Pic16f877a , жки LM016L (16X2). НА МАКЕТКЕ ТОТ-ЖЕ МК, ТОКА ДИСПЛЕЙ - ACM0802C.
Вот кусок программы , думаю что где то здесь накосячил. Может у кого была такая проблема ? ЛЮДИ ПОМОГИТЕ РАЗОБРАТЬСЯ.
;-----------------------------------------------------
;ВЫВОД ЗНАЧЕНИЙ РЕГ. НА ИНДИКАЩИЮ
;-----------------------------------------------------
IND_JKI
MOVLW 02 ;ВОЗВРАТ КУРСОРА В ИСХ. СОСТ.
CALL KOM_JKI ;ЗАПИШЕМ КОМАНДУ
MOVLW B'10000000' ;КУРСОР НА 0-Ю ПОЗИЦИЮ 1-Й СТРОКИ
CALL KOM_JKI ;ЗАПИШЕМ КОМАНДУ
MOVLW .8 ;ЧИСЛО ЗНАКОМЕСТ
MOVWF COUN
MOVLW R1 ;АДРЕС 1-ГО РЕГ.
MOVWF FSR ;В FSR
MOVFW INDF ;ПЕРЕМЕННУЮ С R1 В РАБОЧИЙ РЕГ.
CALL ZAP_D ;ЗАПИШЕМ ДАННЫЕ
DECF COUN,1 ;-1 ИЗ СЧЁТЧИКА
BTFSC STATUS,2 ;ЕЖЕЛИ ПРОСКОЧИЛИ ВСЕ 8 РЕГ.,ТО
GOTO $+3 ;НА ИНДИКАЦИЮ ВТОРОЙ СТРОКИ
INCF FSR,F ;ИНАЧЕ +1 К АДРЕСУ ПЕРВОГО РЕГ.
GOTO $-6 ;И ЗАПИСЫВАЕМ СЛЕДУЮЩИЙ
MOVLW B'11000000' ;КУРСОР В НАЧАЛО ВТОРОЙ СТРОКИ
CALL KOM_JKI ;ЗАПИШИМ КОМАНДУ
MOVLW .8 ;.....................ПОЧТИ АНОЛОГИЧНО 1-Й СТРОКЕ
MOVWF COUN
MOVLW R1
MOVWF FSR
MOVFW INDF
CALL ZAP_D
INCF FSR,F
DECFSZ COUN,F
GOTO $-4
GOTO PROG1 ;ВЕЧНЫЙ ЦИКЛ
alexdos
У вас опрос занятости дисплея есть? в подпрограммах KOM_JKI и ZAP_D
ROMAN_RU
Цитата(alexdos @ Dec 10 2012, 02:03) *
У вас опрос занятости дисплея есть? в подпрограммах KOM_JKI и ZAP_D

ОПРОСА ЗАНЯТОСТИ НЕТ, ЕСТЬ ВРЕМЕННЫЕ ИНТЕРВАЛЫ: ЗАГРУЗКА КОМАНД ПРИ ИНИЦИАЛИЗАЦИИ ЖКИ - 25МС НА КАЖДЫЙ П.БАЙТ
ЗАГРУЗКА КОМАНД ПОСЛЕ ИНИЦИАЛИЗ. ЖКИ (KOM_JKI) - 1МС.
ЗАГРУЗКА ДАННЫХ (ZAP_D) - 40МКС.
ВСЕ ИНТЕРВАЛЫ НА ПОЛУБАЙТ ( 4-Х РАЗРЯДНАЯ ШИНА ДАННЫХ)
ДА, ЧЁТКО Я НЕ ПОЯСНИЛ, ЧТО ВТОРАЯ СТРОКА ВООБЩЕ НЕ ВЫВОДИТСЯ НИ В PROTEUSE НИ В РЕАЛЕ. МОЖЕТ КАКИЕ ОСОБЕННОСТИ В KS0066 ? ПОПРОБЫВАЛ КАК ПИШУТ В МАНУАЛЕ ПОСЛЕ Е=1 - Е =0 (ПЕРЕПАД ПРИ СТРОБ.) УСТАНОВИТЬ ВЫСОКИЙ УРОВЕНЬ НА D4...D7 - ВООБЩЕ ВСЁ ПЕРЕСТАЛО РАБОТАТЬ. А САМОЕ ЧТО РАЗДРАЖАЕ В ДАТШИТЕ ПИШУТ - ВСЁ ПРОСТО И УДОБНО ДЛЯ ВЫВОДА СИМВОЛОВ. МОЖЕТ КТО ЗНАЕТ ГДЕ МАНУАЛ ТОЛКОВЫЙ НА РУССКОМ НАЙТИ ДЛЯ МОДУЛЕЙ НА KS0066 ?



ЕЩЁ МОЖЕТ ВАЖНО В КОНТРОЛЛЕРЕ ИСПОЛЬЗУЕТСЯ PORTD , НО ТАМ ОТКЛЮЧАТЬ ВРОДЕ НИЧЁ НЕ НАДО
Tanya
Цитата(ROMAN_RU @ Dec 10 2012, 10:54) *
ЕЩЁ МОЖЕТ ВАЖНО В КОНТРОЛЛЕРЕ ИСПОЛЬЗУЕТСЯ PORTD , НО ТАМ ОТКЛЮЧАТЬ ВРОДЕ НИЧЁ НЕ НАДО

Нужно отключить CapsLock и включить проверку правописания и орфографии.
ROMAN_RU
Цитата(Tanya @ Dec 10 2012, 11:05) *
Нужно отключить CapsLock и включить проверку правописания и орфографии.

Огромное Вам спасибо, а я и думаю - почему не работает ? Оказывается CasLock виноват и орфография после " ; " !!!
ROMAN_RU
Цитата(Tanya @ Dec 10 2012, 11:05) *
Нужно отключить CapsLock и включить проверку правописания и орфографии.

Sorry, только что узнал что с CapsLock - ом не принято общаться на форумах, буду знать.
ROMAN_RU
Всем привет ! Появились сдвиги . На реальной макетке стала правильно выводится первая строка ( ошибка была в очерёдности посыла полубайтов таблицы символов , старший с младшим местами поменял.) Но вот вторая строка ни как не хочет отображаться. При увеличении контрастности "кубики" появляются только в первой строке - после инициализации жки. Команду "курсор в начало второй строки " подаю кодом : b'11000000' непосредственно перед выводом второй строки. Символы на первой выводятся нормально. Дисплей ACM0802 (8x2). Что уже только не пробывал : инициализировал дисплей как однострочный , выводил 16 символов в одной строке, менял местами полубайты инициализации ( как ни странно дисплей при этом работал !!! ) .......... Какие ещё эксперементы ставить - не знаю. Прошу посоветуйте как быть с этой проблемой.
Инициализация :
INIT_JKI
MOVLW 03H ;СБРОС
CALL ZAGR ;ПЕРЕДАЧА КОМАНДЫ
CALL STROB ;ПРОСТРОБИРУЕМ
MOVLW 03H
CALL ZAGR
CALL STROB ;ПРОСТРОБИРУЕМ
MOVLW 03H
CALL ZAGR
CALL STROB ;ПРОСТРОБИРУЕМ
MOVLW 28H ;4РАЗР.,2СТР.,5X7
CALL ZAGR
CALL STROB
MOVLW 08H ;ОТКЛ.ДИСПЛ. ,ЗАПР.КУРС. ,ЗАПР.МЕРЦ.КУРСОРА.
CALL ZAGR
CALL STROB
MOVLW 01H ;СТИРАНИЕ ДИСПЛЕЯ
CALL ZAGR
CALL STROB
MOVLW 10H ;ЗАПРЕТ СДВИГА ИЗОБРАЖЕНИЯ
CALL ZAGR
CALL STROB
MOVLW 06H ;ИНКРЕМЕНТИРОВАНИЕ ПОЗИЦИИ КУРСОРА
CALL ZAGR
CALL STROB
MOVLW 02H ;ВОЗВРАТ КУРСОРА
CALL ZAGR
CALL STROB
MOVLW 28H ;4РАЗР.,2СТР.,5X7
CALL ZAGR
CALL STROB
MOVLW H'0C' ;ВКЛ. ДИСПЛЕЯ
CALL ZAGR
CALL STROB
GOTO PROG
ROMAN_RU
Методом проб и ошибок - разобрался, контроллер сотни 2, а то и три прошил ! Ну кто же знал, что при инициализации второй строки нужно непосредственно перед указанием адреса (b'11000000' обязательно нужно выполнить команду параметра интерфейса (0x28). Вот пример программы, может кому пригодится, программа чисто для осмысления. Может быть много лишнего, т.к. делалось и переделывалось всё по ходу , да и сам я не силён в программировании, но к делу: дисплей- acm0802c, мк-pic16f877a, 4-разр. шина данных, подкл. к порту D RS-RD2, RW-корпус, E-RD3, D4-RD4, D5-RD5, D6-RD6, D7-RD7, контрастность подключить обязательно и настроить.



#INCLUDE P16F877A.INC
__CONFIG 3D39H
RS EQU 2
E EQU 3
KN3 EQU 3
CBLOCK 0X20
TEMP ; временный
TEMP1 ; временный для паузы
TEMP2 ; временный для паузы антидребезга
COUN ; счётчик циклов
R1
R2
R3
R4
R5 ;рег. индикации
R6
R7
R8,R9,R10,R11,R12,R13,R14
ENDC
ORG 0
GOTO INIT
INIT
CLRF PORTA
BSF STATUS,RP0; ПЕРЕХОДИМ В 1-Й БАНК
MOVLW 0X06
MOVWF ADCON1
MOVLW B'00001110'
MOVWF TRISA^80H
MOVLW B'10000000'; ПОДТЯГИВАЮЩИЕ РЕЗИСТОРЫ ОТКЛ.
MOVWF OPTION_REG^80H;ПРЕРЫВАНИЯ ЗАПРЕЩЕНЫ
MOVLW .0
MOVWF INTCON ;ПРЕР. ЗАПРЕЩЕНЫ
MOVLW .0
MOVWF TRISB^80H ;ВСЕ НА ВЫХОД
MOVWF TRISD^80H
BCF STATUS,RP0; ПЕРЕХОД В 0-Й БАНК
CLRF PORTA
CLRF PORTD
CLRF PORTD
CLRF TEMP
CLRF COUN
CLRF R1
CLRF R2
CLRF R3
CLRF R4
CLRF R5
CLRF R6
CLRF R7
CLRF R8
MOVLW .30
MOVWF TEMP1 ; 30мс пауза
CALL PAUSE1
;==========================================
;ИНИЦИАЛИЗАЦИЯ ЖКИ
;==========================================
INIT_JKI
MOVLW 03H ;СБРОС
CALL ZAGR ;ПЕРЕДАЧА КОМАНДЫ
CALL STROB ;ПРОСТРОБИРУЕМ
MOVLW 03H
CALL ZAGR
CALL STROB ;ПРОСТРОБИРУЕМ
MOVLW 03H
CALL ZAGR
CALL STROB ;ПРОСТРОБИРУЕМ
MOVLW 28H ;4РАЗР.,2СТР.,5X7
CALL ZAGR
CALL STROB
MOVLW 08H ;ОТКЛ.ДИСПЛ. ,ЗАПР.КУРС. ,ЗАПР.МЕРЦ.КУРСОРА.
CALL ZAGR
CALL STROB
MOVLW 01H ;СТИРАНИЕ ДИСПЛЕЯ
CALL ZAGR
CALL STROB
MOVLW 10H ;ЗАПРЕТ СДВИГА ИЗОБРАЖЕНИЯ
CALL ZAGR
CALL STROB
MOVLW 06H ;ИНКРЕМЕНТИРОВАНИЕ ПОЗИЦИИ КУРСОРА
CALL ZAGR
CALL STROB
MOVLW 02H ;ВОЗВРАТ КУРСОРА
CALL ZAGR
CALL STROB
MOVLW 28H ;4РАЗР.,2СТР.,5X7
CALL ZAGR
CALL STROB
MOVLW H'0C' ;ВКЛ. ДИСПЛЕЯ
CALL ZAGR
CALL STROB
GOTO PROG
PAUSE
MOVLW .25
MOVWF TEMP1 ;25MC
PAUSE1
MOVLW .255
ADDLW -1
BTFSS STATUS,2
GOTO $-2
DECFSZ TEMP1,1
GOTO PAUSE1
RETURN
;--------------------------------------------
;ЗАГРУЗКА КОМАНДЫ ИНИЦИАЛИЗАЦИИ ЖКИ
;--------------------------------------------
ZAGR
MOVWF TEMP
ANDLW B'11110000'
MOVWF PORTD
BCF PORTD,RS
CALL STROB
CALL PAUSE
MOVFW TEMP
SWAPF TEMP,W
ANDLW B'11110000'
MOVWF PORTD
BCF PORTD,RS
CALL STROB
CALL PAUSE
RETURN
STROB
BSF PORTD,E
NOP
BCF PORTD,E
RETURN
;-----------------------------------------------------
;ВЫВОД ЗНАЧЕНИЙ РЕГ. НА ИНДИКАЦИЮ
;-----------------------------------------------------
IND_JKI
MOVLW 02H ;ВОЗВРАТ КУРСОРА В ИСХ. СОСТ.
CALL KOM_JKI ;ЗАПИШЕМ КОМАНДУ
MOVLW 80H ;КУРСОР НА 0-Ю ПОЗИЦИЮ 1-Й СТРОКИ
CALL KOM_JKI ;ЗАПИШЕМ КОМАНДУ
MOVLW .6 ;ЧИСЛО ЗНАКОМЕСТ
MOVWF COUN
MOVLW R1 ;АДРЕС 1-ГО РЕГ.
MOVWF FSR ;В FSR
MOVFW INDF ;ПЕРЕМЕННУЮ С R1 В РАБОЧИЙ РЕГ.
CALL ZAP_D ;ЗАПИШЕМ ДАННЫЕ
DECF COUN,1 ;-1 ИЗ СЧЁТЧИКА
BTFSC STATUS,2 ;ЕСЛИ ПРОСКОЧИЛИ ВСЕ 6 РЕГ.,ТО
GOTO $+3 ;НА ИНДИКАЦИЮ ВТОРОЙ СТРОКИ
INCF FSR,F ;ИНАЧЕ +1 К АДРЕСУ ПЕРВОГО РЕГ.
GOTO $-6 ;И ЗАПИСЫВАЕМ СЛЕДУЮЩИЙ
MOVLW H'28' ;-----------------------------------------------------------------------------------------------------------без этого вторая строка
CALL KOM_JKI ;-----------------------------------------------------------------------------------------------------------не работает !!!
MOVLW B'11000000'
CALL KOM_JKI
MOVLW .8 ;.....................ПОЧТИ АНОЛОГИЧНО 1-Й СТРОКЕ
MOVWF COUN
MOVLW R7
MOVWF FSR
MOVFW INDF
CALL ZAP_D
INCF FSR,F
DECFSZ COUN,F
GOTO $-4
GOTO PROG1 ;ВЕЧНЫЙ ЦИКЛ
;-----------------------------------------------------
;ЗАГРУЖАЕМ РЕГИСТРЫ
;----------------------------------------------------
PROG
MOVLW H'A9' ;у
MOVWF R1
MOVLW H'50' ;р
MOVWF R2
MOVLW H'41' ;а
MOVWF R3
MOVLW H'21' ;!
MOVWF R4
MOVLW H'21' ;!
MOVWF R5
MOVLW H'21' ;!
MOVWF R6
MOVLW H'50' ;р
MOVWF R7
MOVLW H'41' ;а
MOVWF R8
MOVLW H'A0' ;б
MOVWF R9
MOVLW H'4F' ;о
MOVWF R10
MOVLW H'54' ;т
MOVWF R11
MOVLW H'41' ;а
MOVWF R12
MOVLW H'45' ;е
MOVWF R13
MOVLW H'54' ;т
MOVWF R14
GOTO IND_JKI ;на индикацию
PROG1
BTFSC PORTA,KN3 ; здесь если есть желание, можно передвигать изображение кнопкой, подключенной к porta,3
GOTO $-1
CALL PAUSE_KN ;антидребезг
BTFSS PORTA,KN3
GOTO $-2
MOVLW B'00011000'
CALL KOM_JKI
GOTO PROG1 ; проверка кнопки
;--------------------------------------------------------
;ДАННЫЕ В ЖКИ
;--------------------------------------------------------
ZAP_D
MOVWF TEMP ;РАБОЧИЙ РЕГ. ВО ВРЕМЕННЫЙ
ANDLW B'11110000' ;"И" С РАБОЧИМ РЕГ.
MOVWF PORTD ;СТ.ПОЛУБАЙТ В ПОРТ
BSF PORTD,RS ;РАЗРЕШИМ ЗАПИСЬ ДАННЫХ
CALL STROB ;СТРОБ. ИМПУЛЬС
CALL PAUSE3 ;ПАУЗА 40 МКС.
MOVFW TEMP
SWAPF TEMP,W
ANDLW B'11110000'
MOVWF PORTD
BSF PORTD,RS
CALL STROB
GOTO PAUSE3
;-----------------------------------------------
;ПЕРЕДАЧА КОМАНДЫ В ЖКИ
;----------------------------------------------
KOM_JKI
MOVWF TEMP
ANDLW B'11110000'
MOVWF PORTD
CALL STROB
CALL PAUSE2
MOVFW TEMP
SWAPF TEMP,W
ANDLW B'11110000'
MOVWF PORTD
CALL STROB
PAUSE2 ;1мс
MOVLW .255
ADDLW -1
BTFSS STATUS,2
GOTO $-2
RETURN
PAUSE3
MOVLW .10
ADDLW -1
BTFSS STATUS,2
GOTO $-2
RETURN
PAUSE_KN
MOVLW .45 ; пауза для антидребезга кнопки
MOVWF TEMP2
MOVLW .150
ADDLW -1
BTFSS STATUS,Z
GOTO $-2
DECFSZ TEMP2
GOTO $-5
RETURN
END

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.