Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите пожалуйста
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
Igorb
help.gif help.gif help.gif Огромная прозьба дорогие форумчани нужна срочная помощь в написании програмы. Програмы надо для MPLAB IDE ижелательно с обьяснениями. help.gif help.gif help.gif

МК - PIC16F877

1 Прога показывающая работу АЦП------- ------ НЕОБХОДИМО ЗАЖИГАТЬ ДИОД ВИСЯЩИЙ НА RBO ПРИ ИЗМЕНЕНИИ НАПРЯЖЕНИЯ НА RA0 help.gif help.gif
2 НАПИСАТЬ НА ЖКИ СЛОВО "ВОЛИНАД" Таблици кодов ЖКИ ща нету но если можна чтоб обьяснили куда их в проге вставлять.

help.gif help.gif help.gif ОГромная просьба ответить и помочь кто чем сможет (мож кто прогу напишет если будет свободное время, или обьяснит как сделать, или даст ссылочку полезную). help.gif help.gif help.gif
Arch_Grey
Цитата(Igorb @ May 18 2007, 07:55) *
help.gif help.gif help.gif Огромная прозьба дорогие форумчани нужна срочная помощь в написании програмы. Програмы надо для MPLAB IDE ижелательно с обьяснениями. help.gif help.gif help.gif


Для MPLAB IDE - надо понимать именно на ассемблере? Если не обязательно, то к MPLAB IDE можно например подключить HT-PIC, где в примерах есть работа с АЦП и ЖКИ и разобраться с ними довольно просто.
Если же хочется помучиться, то:
для работы с ЖКИ http://ww1.microchip.com/downloads/en/AppNotes/00587b.pdf,
а для АЦП есть пример в Mid-Range MCU Family Reference Manual.
Igorb
Да именно на ассамблере и только MPLAB IDE. Спасибо.
K_AV
Цитата(Igorb @ May 18 2007, 15:08) *
Да именно на ассамблере и только MPLAB IDE. Спасибо.
Студенты отупели и обленились "под корень".
Для кого это было переведено на русский язык и выложено в свободный доступ? http://www.microchip.ru/lit/?mid=1x0 - работа с АЦП описана подробно.
Вот кусочек из работающей программы. Перед вызовом подпрограммы в буферный регистр KanalADC нужно загрузить требуемый номер канала.
Код
;============================================================================
; подпрограмма измерения напряжения в нужном канале АЦП
;----------------------------------------------------------------------------
; номер нужного канала берется из буфера номера канала
; результат остается в буфере АЦП
;----------------------------------------------------------------------------
IZM_ADC: movf   KanalADC,W;номер канала и источник тактиров. АЦП -> в W
    bcf     STATUS,RP0;выбор банка регистров 0
    movwf   ADCON0;номер канала АЦП -> в регистр управления АЦП
    call    T_ADC    ;ожид. перед запуском АЦП (д/зарядки емкостей АЦП)
    bsf    ADCON0,GO  ;Запуск А/Ц преобразования
Wait2:    btfss    ADCON0,GO  ;Ожидание завершения преобразования
    goto    IzmEnd
    goto    Wait2
IzmEnd: return

Насчет светодиода: при каком условии (по показаниям АЦП) он должен зажигаться? И как он подключен к требуемому порту (анадом, катодом)?
Насчет ЖКИ - неплохо было бы указать, на каком ЖКИ, т.к. в природе их существует много разных.
Igorb
Здравствуйте. Это снова я. большое спасибо за помощь!!!!!! (И незачем так ругаться я не облинился просто времени мало!!!!!!!!!!!!) С АЦП вроде разобрался вот програмка, в Протеуся вроде все работает.
Проверте плиз.


;Пример работы АЦП
;Определить изменениеUo
list p=16f877
#include <P16F877.INC>

;************************************************************
; переменные

Count equ 0x000

;************************************************************
; вектор, соответствующий полному сбросу
org 00000h ; вектор сброса
goto Start
;************************************************************
;program code starts here
org 00020h ; начало программы в EPROM
Start
clrf PORTB ; Очистка защелки PORTB
bsf STATUS,RP0 ; Переход в банк 1
clrf TRISB ; Настройка выводов PORTB на выход
bcf ADCON1,0
bcf ADCON1,1
bcf ADCON1,2
bcf ADCON1,3
bsf ADCON1,7
bcf STATUS,RP0
bsf ADCON0,0
bcf ADCON0,3
bcf ADCON0,4
bcf ADCON0,5
bcf ADCON0,6
bcf ADCON0,7
bsf ADCON0,2

Loop1
btfsc ADCON0,2
goto Loop1

movf ADRESH,w
movwf FSR

Loop2
bcf ADCON0,2
bsf ADCON0,2

Loop3
btfsc ADCON0,2
goto Loop3

movf ADRESH,w
subwf FSR,0

Loop4
btfsc STATUS,2
goto Loop2

clrw
movlw 0x01
movwf PORTB
goto Loop2

END

А вот с ЖКИ как заклинело немогу вехать и всё, читал инфу но всеравно не могу вьехать. Индикатор на HD44780. Да пожалуста подскажите где скачать таблицу кодов (символов).

Вот фаил со схемой.
volodya
Цитата(Igorb @ May 21 2007, 07:28) *
Здравствуйте. Это снова я. большое спасибо за помощь!!!!!! (И незачем так ругаться я не облинился просто времени мало!!!!!!!!!!!!) С АЦП вроде разобрался вот програмка, в Протеуся вроде все работает.

А вот с ЖКИ как заклинело немогу вехать и всё, читал инфу но всеравно не могу вьехать. Индикатор на HD44780. Да пожалуста подскажите где скачать таблицу кодов (символов).

Вот фаил со схемой.


В МПЛАБ ИДЕ (7.50 7.60 точно, 7.10 неуверен) есть АПЛИКАТШИН МАЕСТРО с готовыми модулями для
различного оборудования , в том числе прога для взаимодействия с ЛСД диспл.
присмотритесь. Там только задержки тактирования в ручную формировать нужно.
K_AV
Цитата(Igorb @ May 21 2007, 07:28) *
И незачем так ругаться я не облинился просто времени мало!
Известная проблема, если не делать дело вовремя, а оставлять до того момента, когда уже "времени мало". НЕ оправдание.
Цитата
А вот с ЖКИ как заклинело немогу вехать и всё, читал инфу но всеравно не могу вьехать. Индикатор на HD44780. Да пожалуста подскажите где скачать таблицу кодов (символов).
Что именно тебе не понятно? Рассказывать все - слишком длинно. http://www.gaw.ru/html.cgi/txt/app/lcd/pic_to_44780.htm - Иcпользование ЖКИ индикаторов на базе контроллера HD44780 и его аналогов совместно с PIC-микроконтроллерами. Там же - пример программы. Мало будет - дам свой (из работающей программы).
Таблица символов одинакова для них всех в части английского алфавита и цифр. В части русского (где он есть вообще) есть разнобой. Смотреть лучше на сайте изготовителя. В прилагаемом файле - один из примеров.
Совет на будущее - не вкладывай картинки в формате BMP - слишком большой размер. GIF, JPG, PNG - гораздо компактнее при достаточном качестве.
Igorb
Спасибо буду разбираться
Скажите пли кок перейти на вторую строчку?????????
K_AV
Дополнение (по схеме).
1) не ясно назначение транзистора Q2. Закорачивать батарею через резистор R12 по команде контроллера?
2) какая-то хитрая батарея, дающая 5 В?
3) включение питания ЖКИ: такое - не годится. На ЖКИ всегда будет подаваться не полное напряжение питания, а примерно (Uвых.контролл.-0,6В). Или так и хотелось? Правильно будет вывод Vdd ЖКИ подключить к +5В напостоянно, а вывод Vss ЖКИ - к коллектору транзистора Q1 (коллектор от цепи +5В отключить, естественно).
Igorb
Схема была не совсем доделала Q2 включат пищалку (на выложеной схеме не стоит) (Схема скачана с Микрочипа- тестовая плата PICDEM 2 Plus) , батарея виртуальная чтоб стабилизатор не рисовать. Напряжение питания на ЖКИ подаётся через переменник (схему уже исправил)

Подскажите плиз как перейти на вторую строчку ЖКИ адре насколько я понял у неё нач с 40h как на него перепрыгнуть???
K_AV
Замечания по программе:
1) "; переменные
Count equ 0x000
" - нулевая ячейка памяти имеет спецфункцию, использовать ее как "свою" переменную не стоит. Для "своих" переменных в этом контроллере адреса - начиная с 20h. В этой программе переменная и не используется - зачем вообще написано?
2) в регистрах ADCON0, ADCON1 не обязательно устанавливать каждый бит отдельно, можно туда писать целый байт сразу (или изменять несколько бит регистра по заданной маске) - экономится количество команд программы и быстродействие.
3) Регистр FSR - это тоже регистр спецфункции, и в твоей программе он используется не по назначению. Лучше так не делать (он в программе может и "по назначению" понадобиться, а ты его занял).
4) команда "clrw" лишняя. Константу в W можно грузить и без предварительной очистки.
5) В PORTB не обязательно грузить целый байт, можно управлять каждым битом (пином) индивидуально.

Общее пожелание - рекомендую хотя бы на первых порах не лениться и писать комментарии чуть не к каждой строчке программы. Иначе через 2 недели будешь вспоминать - а что же я тут ХОТЕЛ сделать?
Да и логические ошибки легче искать, двойная запись получается: вот это задумывалось (комментарий), а вот это реально сделано (команды). Это, конечно, дополнительная работа, но когда через пару месяцев нужно вернуться к этой программе - проблем гораздо меньше по вхождению в суть.
K_AV
Цитата(Igorb @ May 21 2007, 11:49) *
Подскажите плиз как перейти на вторую строчку ЖКИ адре насколько я понял у неё нач с 40h как на него перепрыгнуть???
Нужно вначале в виде команды заслать в ЖКИ требуемый адрес. Далее посылать данные, они в ОЗУ ЖКИ будут располагаться с заданного адреса.
Ладно, вот тебе в приложении программа реального (выпускаемого сейчас) прибора. Я из нее вытер опознавательные признаки организации-разработчика и самого прибора. В ней все равно много для тебя лишнего, но "изюм выковыривать" мне некогда. Схему не прикладываю, т.к. все, что тебе от нее может понадобиться, в программе прокомментировано. То, что тебя сейчас не касается, можешь смело пролистывать. Подпрограммы для ЖКИ - где-то после середины программы.
Сразу скажу, что многое сделано не оптимально (в частности, формирование сообщений для отображения на ЖКИ), зато наглядно. А быстродействие и объем программы в данном случае не были критичны.
Igorb
Спасибо за помощь, буду юзать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.