|
|
  |
LM016L, ПОКАЗЫВАЕТ НЕ ТО ЧТО НАДО. |
|
|
|
Dec 9 2012, 15:44
|
Группа: Новичок
Сообщений: 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 ;ВЕЧНЫЙ ЦИКЛ
|
|
|
|
|
Dec 10 2012, 06:54
|
Группа: Новичок
Сообщений: 7
Регистрация: 9-12-12
Пользователь №: 74 768

|
Цитата(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 , НО ТАМ ОТКЛЮЧАТЬ ВРОДЕ НИЧЁ НЕ НАДО
|
|
|
|
|
Dec 10 2012, 08:52
|
Группа: Новичок
Сообщений: 7
Регистрация: 9-12-12
Пользователь №: 74 768

|
Цитата(Tanya @ Dec 10 2012, 11:05)  Нужно отключить CapsLock и включить проверку правописания и орфографии. Огромное Вам спасибо, а я и думаю - почему не работает ? Оказывается CasLock виноват и орфография после " ; " !!!
|
|
|
|
|
Dec 10 2012, 18:24
|
Группа: Новичок
Сообщений: 7
Регистрация: 9-12-12
Пользователь №: 74 768

|
Цитата(Tanya @ Dec 10 2012, 11:05)  Нужно отключить CapsLock и включить проверку правописания и орфографии. Sorry, только что узнал что с CapsLock - ом не принято общаться на форумах, буду знать.
|
|
|
|
|
Dec 13 2012, 11:39
|
Группа: Новичок
Сообщений: 7
Регистрация: 9-12-12
Пользователь №: 74 768

|
Всем привет ! Появились сдвиги . На реальной макетке стала правильно выводится первая строка ( ошибка была в очерёдности посыла полубайтов таблицы символов , старший с младшим местами поменял.) Но вот вторая строка ни как не хочет отображаться. При увеличении контрастности "кубики" появляются только в первой строке - после инициализации жки. Команду "курсор в начало второй строки " подаю кодом : 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
|
|
|
|
|
Dec 13 2012, 22:51
|
Группа: Новичок
Сообщений: 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
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|