Jump to content

Recommended Posts

Здравствуйте, товарищи! Я только начал изучать программирование МК с ассемблера для пиков. Прошёл светодиодную мигалку и взялся за вывод текста с PIC16F628A на ЖКИ 1602А. Но не заладилось. Взял готовую  прошивку (сама она успешно запустилась), слегка подредактировал: задал соответствие DB0...DB7=RB0...RB7, вывел отдельные переменные address и symbol для адреса и символа ячейки на экране. Это выглядит следующим образом:

MOVLW    0x00    ;вывод  единицы в первую ячейку
MOVWF    address
MOVLW    0b00110001
MOVWF    symbol
CALL    znak

 

при этом  используются подпрограммы

znak:
MOVF    address,0        ;вывод адреса
MOVWF    PORTB
BCF    RS
CALL    strob
CALL    delay_39us
MOVF    symbol,0        ;вывод символа
MOVWF    PORTB
BSF    RS
CALL    strob
CALL    delay_39us
RETURN

strob:
BSF    E
NOP        ;задержка 2 мкс
NOP
BCF    E
RETURN

 

Второй день до поздней ночи перепроверяю прошивку, надёжность и правильность на бредборде, RC-цепочку на MCLR. Скачанный проект работает, а моя программа - нет. Прошу помочь в поиске ошибки в коде.

lcd-test.asm

Share this post


Link to post
Share on other sites

На том сайте:

Цитата

 

Подключение линий ЖКИ к портам контроллера:

E-RA0, RS-RA1, R/W-RA7, DB7-RB4, DB6-RB5, DB5-RB2, DB4-RB6, DB3-RB3, DB2-RB7, DB1-RA2, DB0-RA6

 

movlw .6 ; DB7-0=00000110 - автосдв. курсора вправо,сдв.диспл.выкл.

movwf M_byte ; записать это значение в байт сообщения

call in_port ; запись в порт

call zapis ; передача в ЖКИ

У вас:

1 час назад, Пентагрид сказал:

DB0...DB7=RB0...RB7

 

MOVLW    0b00000110    ;автосдв. курсора вправо, сдв. диспл. выкл.
MOVWF    PORTB
CALL    strob

Удосужтесь программу привести в соответствие железу.
 

Это только как пример. Соответствие необходимо везде.

Share this post


Link to post
Share on other sites
8 минут назад, солар сказал:

программу привести в соответствие железу

Большое спасибо за ответ!

Программа соответствует железу. Перепроверил настройки в TRISах (с учётом переходов между банками), выключение компараторов и пр.

Моё

MOVLW    0b00000110
MOVWF    PORTB

соответствует их

movlw .6
movwf M_byte
call in_port

разница лишь в том, что в оригинале из-за кучамалы с пинами используется массивная подпрограмма in_port, которая по битам выводит M_byte на нужные пины, а у меня DB7...DB0=RB7...RB0, поэтому целый байт идёт сразу на выход.

А подпрограммы zapis и strob - это одно и то же (переименовано для удобства понимания того, что же там происходит на самом деле - всего лишь поднятие Е+2 мкс задержки+опускание Е).

 

Последний вариант: в оригинале поменять настройки пинов, оставив эту несчастную in_port. Может быть всё дело в задержках, которые появляются в ходе её выполнения?

 

Share this post


Link to post
Share on other sites

Технология Maxim Integrated nanoPower: когда малый IQ имеет преимущества

При разработке устройств с батарейным питанием важно выбирать компоненты не просто с малым потреблением, но и с предельно малым током покоя. При этом следует обратить внимание на линейку nanoPower производства компании Maxim Integrated. В статье рассмотрено их применение на примере системы датчиков беспроводной оконной сигнализации.

Подробнее

лень смотреть код, вангую... не правильно проходит инициализация ЖКИ

последовательность инициализации для 8 бит линии данных :

    подача питания на ЖКИ 
    ждем не менее 15 мс
    D7-D0 = 0x30
    ждем не менее 4.1 мс
    D7-D0 = 0x30
    ждем не менее 50 мкс
    D7-D0 = 0x30
    ждем не менее 50 мкс
    D7-D0 = 0x38
    ждем не менее 50 мкс
    D7-D0 = команда управления дисплеем (включение, отображение курсора)
    ждем не менее 50 мкс
    D7-D0 = очистка дисплея
    ждем не менее 2 мс
    ввод пользовательских команд и символов

передача нибла 0х30 есть обязательная последовательность инициализации , а вы передаете хрен знает что.

Share this post


Link to post
Share on other sites
                     

Платы Nucleo на базе STM32G0: чего можно добиться с помощью связки Nucleo и Arduino

Платы Nucleo и платы расширения X-NUCLEO от STMicroelectronics можно интегрировать в платформу Arduino с помощью библиотеки STM32duino. Связка плат Nucleo и платформы Arduino, и наличие готовых библиотек – представляет удобный инструмент для создания прототипов и конечных приложений в условиях ограниченного времени. Статья содержит пошаговые инструкции по установке библиотек и запуску примеров для Nucleo.

Подробнее...

а это не мой алгоритм :) , это требования производителя

тыц

тыц

ТЫ..ЫЦ

 

9 часов назад, Пентагрид сказал:

Второй день до поздней ночи

если все методы научного тыка испробованы, а прибор не включается, начинайте читать инструкцию по эксплуатации 

Share this post


Link to post
Share on other sites

толково написано :thank_you2:

вариант добавить инициализацию для WH2004A не рассматривали?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By Arvalon
      Буквы плохо читаются, что-то вроде XYD -BQFGQ-XXD-18AB-20190320. Поиск по сети не ответов не дал.


    • By artos5
      Добрый день уважаемые! У кого есть схема подключения дисплея такого и библиотека ? Очень надо!
    • By Пентагрид
      Решил собрать источник питания с управлением через PIC16F628A (парой кнопок переключать нужные напряжения). Взял обычный импульсник на 15 В, из обратной связи выдрал TL431, оставил оптрон, его повесил на выход МК. Написал тестовую прошивку: задаётся Vref через VRCON, компаратор сравнивает и выдаёт на оптрон 1 или 0.
      Сделал два варианта прошивки: в одном проверка на срабатывание выполняется циклически, в другом - вызов прерывания при реакции компаратора. Оба варианта тестировал в Протеусе (потенциометр и светодиод), работают. На бредборде завёлся только первый (с нагрузкой и без). А с прерыванием не работает: при отсутствии нагрузки выдаёт нужное напряжение, но стоит только подключить нагрузку и даже если рукой коснуться - напряжение падает. С нагрузкой вообще не заводится.
      МК питаю отдельно (тлф. зарядка с домотанной вторичкой + 7805). Несколько раз прошёлся по прошивке, не нашёл за что зацепиться. Прошу совета.
      Схема
      В коде присутствуют рудименты для кнопок (пока не вводил).
       
      comp5nop.rar
    • By RA9CCF
      Помогите разобраться  с подключение  LCD  !  Попалась  такая плата  хочу  подключить  к  Ардуино !  Но не чего  не гуглится  ? Может кто  сталкивался  с таким  предполагаю  что плата  с частотного  преобразователя  .
      Хотелось  бы узнать  схему  подключения  напряжение  питания  раcпиновку . 
       
       
    • By Kompotius
      Приветствую форумчане!!! Поздравляю Вас с наступающим 2019, Всех благ в новом году Вам и Вашим близким людям!!!
      Собственно теперь вопрос: Подскажите, как реализовать проект  удаленного управление LCD MT-20S4M (МЭЛТ, контроллер Китай HD44780 ))  с интерфейсом I2C (PCF8574A) например по ethernet, при чем нужно управлять несколькими индикаторами примерно 20 , а то и более, информацию выводить при помощи компа по ethernet  информация буквенно-числовая по типу A1-0V01-2-50 можно формировать информацию на компе в таблице и передавать ее, благодарю за мнения и предложения
×
×
  • Create New...