реклама на сайте
подробности

 
 
> LM016L, ПОКАЗЫВАЕТ НЕ ТО ЧТО НАДО.
ROMAN_RU
сообщение Dec 9 2012, 15:44
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 9-12-12
Пользователь №: 74 768



ВСЕМ ДОБРОГО ВРЕМЕНИ СУТОК. ПРОШУ СТРОГО НЕ КРИТИКОВАТЬ - ТОЛЬКО СЁДНЯ ЗАРЕГИСТРИРОВАЛСЯ ТУТА. ПРОБЛЕМА ТАКАЯ:
ПЫТАЮСЬ НА ДИСПЛЕЕ ВЫВЕСТИ 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 ;ВЕЧНЫЙ ЦИКЛ
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ROMAN_RU
сообщение Dec 13 2012, 22:51
Сообщение #2





Группа: Новичок
Сообщений: 7
Регистрация: 9-12-12
Пользователь №: 74 768



Методом проб и ошибок - разобрался, контроллер сотни 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

Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 21:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016