PIC16F676 и LCD1602
|
|
marss70 |
Дата: Вт, 06.08.2013, 23:28 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 20.04.2013
Статус:
Offline
|
Здравствуйте, подскажите почему дисплей с этим МК ничего не показывает? Вот код:
DEFINE OSC 20 DEFINE LCD_DREG PORTC DEFINE LCD_DBIT 0 DEFINE LCD_RSREG PORTA DEFINE LCD_RSBIT 0 DEFINE LCD_EREG PORTA DEFINE LCD_EBIT 1 DEFINE LCD_BITS 4 DEFINE LCD_LINES 2 DEFINE LCD_COMMANDUS 4000 DEFINE LCD_DATAUS 250
A var word START : A=A+1 lcdout $FE, 1 ' Clear Screen Lcdout $FE,$16,#A," Test A" Lcdout $FE,$C0," Test Line2":PAUSE 100 goto START END
Сообщение отредактировал
marss70 - Вт, 06.08.2013, 23:29
|
|
|
|
shaman |
Дата: Ср, 07.08.2013, 02:37 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
Доброй ночи , я не работаю с PicBasicPro, поэтому прошивку сделал на ProtonBasic. И конкретно опишите проблему , что дисплей не показывает , значение переменной или в принципе не работает. Я подключил Вам дисплей как это должно быть, в папке программа с проектом протеуса просто как тестовая . Как изложите более ясно свою проблему тогда и получите ответ на свой вопрос.
Сообщение отредактировал
shaman - Ср, 07.08.2013, 02:50
|
|
|
|
Matrix252005 |
Дата: Ср, 07.08.2013, 10:08 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
Приятного времени суток!!!
1) Для того, чтобы экран заработал, необходимо для начала настроить вывода МК!!!! У Вас этого я не вижу... 2) Что это за команда такая "Lcdout $FE, $16" что то я такую команду не увидел в хелпах... 3) Сделайте задержку чуть больше, скажем 0,5 сек... Это не обязательно, но будет читабельно что отображается на экране..
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|
marss70 |
Дата: Ср, 07.08.2013, 16:48 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 20.04.2013
Статус:
Offline
|
Спасибо, вечерком до Prota и Басика доберусь, посмотрю. Дело в том, что с таким кодом сам индикатор работает на 628, а на 676 не хочет. shaman, или ещё кто-нибудь, может дадите ссылочку, где протон надыбать, а то что-то ни-где не могу "нормальную" найти. Я то сам с Bascoma AVR к вам заскочил. Так что особо не пинайте по-началу за вопросы "а что, а где?"
Сообщение отредактировал
marss70 - Ср, 07.08.2013, 16:56
|
|
|
|
Matrix252005 |
Дата: Ср, 07.08.2013, 17:20 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
Цитата marss70Так что особо не пинайте по-началу за вопросы "а что, а где?" marss70, не кто Вас не пинает!!!!
Вот ссылка на протон: http://www.picbasic.ru/load/proton_development_suite_3_5_2_7/3-1-0-233 Тут же на сайте можно найти протеус 7.10, если не получится найти, скинем ссылку на него....
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|
marss70 |
Дата: Ср, 07.08.2013, 19:32 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 20.04.2013
Статус:
Offline
|
Matrix252005, Спасибо за ссылочки! Гыыыы, на Басик АВРовский похож!!!
|
|
|
|
Matrix252005 |
Дата: Ср, 07.08.2013, 20:05 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
Всегда пожалуйста!!!
Цитата (marss70) Гыыыы, на Басик АВРовский похож!!! Он скорей похож на mikroBasic...
Вот еще ссылка по протону: http://www.terrarus.ucoz.ru/proton_plus_ide/index.html
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|
marss70 |
Дата: Ср, 07.08.2013, 21:41 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 20.04.2013
Статус:
Offline
|
Что-то как-то с сэмплами плоховато(
Добавлено (07.08.2013, 21:41) --------------------------------------------- Уважаемый shaman, укажите пожалуйста, ну что не так? Код Device = 16F676 Xtal = 4
LCD_DTPin = PORTC.0 LCD_RSPin = PORTA.0 LCD_ENPin = PORTA.1 LCD_Interface = 4 ' 4-bit Interface LCD_Lines = 2 LCD_Type = 0 LCD_CommandUs = 2000 LCD_DataUs = 50
Dim X As Word X =1234 Print At 1, 1,X
Stop
Сообщение отредактировал
marss70 - Ср, 07.08.2013, 21:51
|
|
|
|
shaman |
Дата: Ср, 07.08.2013, 21:51 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
Доброй ночи, что именно не получается ? 1 . Настройки портов Вы не указали 2 . Вы хотите в цикле производить инкремент переменной Х и выводить ее на дисплей? 3 . Настройки ЖК сделайте правильно ;-----------Настройки подключения ЖКИ-------------------------- Declare LCD_Type ALPHA ' Тип ЖКИ - буквенно-цифровой Declare LCD_DTPin PORTC.0 ' Порт данных ЖКИ Declare LCD_ENPin PORTA.1 ' Управление цепью E Declare LCD_RSPin PORTA.0 ' Управление цепью RS Declare LCD_Interface 4 ' Использовать 4-х битную шину данных Declare LCD_CommandUs 2000 ' Задержка перед посылкой команды Declare LCD_DataUs 50 ' Задержка перед посылкой данных Declare LCD_Lines 2 ' Количество строк ЖКИ равно двум '---------------------------Установки портов--------------------------------------- TRISA = %000000 TRISC = %000000 PortA = %000000 PortC = %000000
Потом у Вас в программе должно идти '---------------------Объявления переменных------------------------------------
'----------------------------Установки значения переменных--------------------
'------------------------Главная программа---------------------------------------- Main: GoTo Main End
Вот как должна выглядеть у Вас программа , научитесь все делать по правильному алгоритму построения программы , если он не правильный программа может выдавать ошибку.
Сообщение отредактировал
shaman - Ср, 07.08.2013, 22:04
|
|
|
|
marss70 |
Дата: Ср, 07.08.2013, 22:02 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 20.04.2013
Статус:
Offline
|
Я взял за источник
**************************************************************** ' Name : pproba2.BAS ' Author : Анатолий Медведев ' Notice : Copyright © 2009 [select VIEW...EDITOR OPTIONS] ' : ' Date : 03.03.2009 ' Version : 1.0 ' Notes : Вывод 31 разрядного числа 31.BAS '**************************************************************** Device = 16F873A Xtal = 4
LCD_DTPin = PORTB.4 LCD_RSPin = PORTB.2 LCD_ENPin = PORTB.3 LCD_Interface = 4 ' 4-bit Interface LCD_Lines = 4 LCD_Type = 0 LCD_CommandUs = 2000 LCD_DataUs = 50
Dim WAR1 As Word WAR1 = -1023 Print At 1, 1, ISDec WAR1 ' Вывести десятичное значение переменной с индификатором Print At 2, 1, ISHex WAR1 ' Вывести шестнадцатеричное значение переменной с индификатором Print $FE, $90, ISBin WAR1 ' Вывести двоичное значение переменной с индификатором Print $FE, $D0, ISHex -$ABCDEF ' Вывести шестнадцатеричное число -ABCDEF с индификатором
Stop
эта прога отлично работает. Переложив на 676 и LCD1602 ничего на получается...
|
|
|
|
shaman |
Дата: Ср, 07.08.2013, 22:06 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
Проверьте правильность подключения ЖК , Вы его правильно подключили к контроллеру, согласно установок в самой программе ? И проверяете код программы в протеусе или в железе ?
Сообщение отредактировал
shaman - Ср, 07.08.2013, 22:09
|
|
|
|
marss70 |
Дата: Ср, 07.08.2013, 22:10 | Сообщение # 12 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 20.04.2013
Статус:
Offline
|
Вот так Добавлено (07.08.2013, 22:10) --------------------------------------------- И такой код
Device = 16F676 Xtal = 4 ;-----------Настройки подключения ЖКИ-------------------------- Declare LCD_Type ALPHA ' Тип ЖКИ - буквенно-цифровой Declare LCD_DTPin PORTC.0 ' Порт данных ЖКИ Declare LCD_ENPin PORTA.1 ' Управление цепью E Declare LCD_RSPin PORTA.0 ' Управление цепью RS Declare LCD_Interface 4 ' Использовать 4-х битную шину данных Declare LCD_CommandUs 2000 ' Задержка перед посылкой команды Declare LCD_DataUs 50 ' Задержка перед посылкой данных Declare LCD_Lines 2 ' Количество строк ЖКИ равно двум '---------------------------Установки портов--------------------------------------- TRISA = %000000 TRISC = %000000 PORTA = %000000 PORTC = %000000 Dim X As Word X = 1234 Print At 1, 1, X ' Вывести десятичное значение переменной
|
|
|
|
shaman |
Дата: Ср, 07.08.2013, 22:11 | Сообщение # 13 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
Тогда вот код программы скомпилируйте его и проверьте , я Вам HEX вчера скидывал
Device = 16F676 ;Используемый микроконтроллер Xtal 8 ;Частота осциллятора 8 МГц
;-----------------------Опции компилятора-------------------------- ;-----------Настройки подключения ЖКИ-------------------------- Declare LCD_Type ALPHA ' Тип ЖКИ - буквенно-цифровой Declare LCD_DTPin PORTC.0 ' Порт данных ЖКИ Declare LCD_ENPin PORTA.1 ' Управление цепью E Declare LCD_RSPin PORTA.0 ' Управление цепью RS Declare LCD_Interface 4 ' Использовать 4-х битную шину данных Declare LCD_CommandUs 2000 ' Задержка перед посылкой команды Declare LCD_DataUs 50 ' Задержка перед посылкой данных Declare LCD_Lines 2 ' Количество строк ЖКИ равно двум ;--------------------------Настройки портов-------------------------- '---------------------Объявления переменных------------------------ Dim I As Byte Dim VAR1 As Byte '----------------------------Установки значения-------------------- VAR1 = 0 ': Var = 0 '------------------------Главная программа------------------------- Main: For I = 0 To 255 Inc VAR1 Print At 1, 1, #VAR1, " " If VAR1 = 255 Then GoSub Schet : EndIf DelayMS 100 Next I GoTo Main
Schet: Cls Print At 2, 1, " End Schet " DelayMS 1000 Return
|
|
|
|
marss70 |
Дата: Ср, 07.08.2013, 22:23 | Сообщение # 14 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 20.04.2013
Статус:
Offline
|
Может, проще покажете свой код, где переменная увеличивается на единичку? Добавлено (07.08.2013, 22:12) --------------------------------------------- Уже скинули, пока писал))) Добавлено (07.08.2013, 22:23) --------------------------------------------- Блин, ваш hex работает, мой нет...
|
|
|
|
Matrix252005 |
Дата: Ср, 07.08.2013, 22:31 | Сообщение # 15 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
Цитата (marss70) Блин, ваш hex работает, мой нет... Ваша беда кроется тут:
Цитата marss70Print At 1, 1, X ' Вывести десятичное значение переменной Вы не указывает как именно Вы хотите вывести "Х"... Если напишите
"DEC X" - экран выведет как десятичное число, можно так же "#Х" "НЕХ Х" - НЕХ "%Х " - бинарныйДобавлено (07.08.2013, 22:31) --------------------------------------------- Вот, посмотрите как тут: http://www.terrarus.ucoz.ru/proton_....nt.html
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|