Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Модератор форума: demanik  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » PIC+74CH595 (Опять LED индикатор и регистр 74CH595)
PIC+74CH595
PINCOD Дата: Ср, 30.11.2016, 09:11  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 37
Репутация: 1   ±
Замечания:   ±
На сайте с 05.10.2011

Статус: Offline

Всем доброго времени суток друзья.Не хотел ни кого тревожить,но решил с экономить на ногах камня и пристроил регистр 74CH595.Но при отображении для пробы числа 1234,почему то получается такая картина 1233.Не пойму где в коде косяк?Буду рад кого - нибудь услышать

  Device = 16F628A
  Xtal = 4 ;частота кварца 4МГц
  'Declare Create_Coff = 1
  Reminders = 0
  Config BODEN_OFF, BOREN_OFF, CP_OFF, DATA_CP_OFF, PWRTE_ON, WDT_OFF, LVP_OFF, MCLRE_OFF, XT_OSC
  Reminders = 1
  Declare All_Digital = On 
  Declare PortB_Pullups = OFF           
  TRISA = %00000000
  TRISB = %00000000
  CMCON = 7 'Компаратор нам не нужен, отключим ...  
'--------------------------------------------------------------------------------------------------- 
Symbol SH_CP = PORTB.7 ;порт управления регистром    
Symbol DS    = PORTB.6 ;порт управления регистром
Symbol ST_CP = PORTB.5 ;порт управления регистром
Symbol RAZ1  = PORTB.1 ;порт упр.1 разрядом индикатора
Symbol RAZ2  = PORTB.2 ;порт упр.2 разрядом индикатора
Symbol RAZ3  = PORTB.3 ;порт упр.3 разрядом индикатора
Symbol RAZ4  = PORTB.4 ;порт упр.4 разрядом индикатора 
'---------------------------------------------------------------------------------------------------    
Dim N As Byte     'для выделения цифры из числа
Dim Value As Byte 'Переменная для осуществления табличного конвертирования цифры
Dim RAZR As Byte  'переменная для управления табличного конвертирования разрядами ССИ
Dim A As Dword    ;переменная № разряда
Dim B As Byte     ;переменная для общего счета                           
A = 1234

  
'-------------------------------Инициализация микроконтроллера--------------------------------------
MAIN:   

GoSub Indic

GoTo MAIN
Indic:
'---------------Зажигание первого справа разряда индикатора и вывод на него цифры------------------- 
N = 1'Dig A,3 'Выделяем из числа 1-ю с права цифру
GoSub Convert 'и конвертируем в код ССИ  
SHOut DS, SH_CP, MsbFirst, [Value]'Проталкиваем в регистр семисегментный код
 
RAZ1 = 1 : RAZ2 = 0 : RAZ3 = 0 : RAZ4 = 0 ;зажигаем 1 разряд
ST_CP = 1 'Защелкиваем данные
DelayMS 4 
ST_CP = 0 'Обнуляем защелку данных

'---------------Зажигание второго справа разряда индикатора и вывод на него цифры------------------- 
N = 2'Dig A,2 'Выделяем из числа 2-ю с права цифру 
GoSub Convert 'и конвертируем в код ССИ  
SHOut DS, SH_CP, MsbFirst, [Value]'Проталкиваем в регистр семисегментный код
 
RAZ1 = 0 : RAZ2 = 1 : RAZ3 = 0 : RAZ4 = 0 ;зажигаем 2 разряд
ST_CP = 1 'Защелкиваем данные
DelayMS 4 
ST_CP = 0 'Обнуляем защелку данных

'---------------Зажигание третьего справа разряда индикатора и вывод на него цифры------------------ 
N = 3'Dig A,1 'Выделяем из числа 3-ю с права цифру 
GoSub Convert 'и конвертируем в код ССИ 
SHOut DS, SH_CP, MsbFirst, [Value]'Проталкиваем в регистр семисегментный код
 
RAZ1 = 0 : RAZ2 = 0 : RAZ3 = 1 : RAZ4 = 0  ;зажигаем 3 разряд
 
ST_CP = 1 'Защелкиваем данные
DelayMS 4 
ST_CP = 0 'Обнуляем защелку данных

 
'---------------Зажигание четвертого справа разряда индикатора и вывод на него цифры---------------- 
N = 4'Dig A,0 'Выделяем из числа 4-ю с права цифру 
GoSub Convert 'и конвертируем в код ССИ  
SHOut DS, SH_CP, MsbFirst, [Value]'Проталкиваем в регистр семисегментный код
 
RAZ1 = 0 : RAZ2 = 0 : RAZ3 = 0 : RAZ4 = 1  ;зажигаем 4 разряд
ST_CP = 1 'Защелкиваем данные
DelayMS 4 
ST_CP = 0 'Обнуляем защелку данных

Return 
'----------------------------------------------------------------------------------------------------  

Convert: 

Value = LookUp N, [192,249,164,176,153,146,130,248,128,144]'156] 'маска для ССИ с общ.анодом

'Value = LookUp N, [63,6,91,79,102,109,124,7,127,103]   'маска для ССИ с общ.катодом

Return 
'---------------------------------------------------------------------------------------------------
Прикрепления: 0862037.jpg(330.2 Kb) · PIC74HC595.dsn(93.4 Kb) · PIC74HC595.bas(3.5 Kb)

Сообщение отредактировал PINCOD - Ср, 30.11.2016, 12:25
ЯНДЕКС Дата: 30.11.2016
ivan_fd Дата: Вт, 13.11.2018, 14:49  |                                                                                                                Сообщение # 31
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1019
Репутация: 83   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Anatoliy1000, возьмите тестер и напишите нам сюда какой вывод МК идет на какой вывод 74HC595.
МК у Вас 12F675???
Тот модуль можно проверить вообще без контроллера, проводками потыкать.

Схема вашего модуля должна быть похожа на:
Прикрепления: 3609467.jpg(75.6 Kb)


Меня все время преследуют умные мысли...но я быстрее!!!
Сообщение отредактировал ivan_fd - Вт, 13.11.2018, 15:03
ЯНДЕКС Дата: 13.11.2018
anatol Дата: Вт, 13.11.2018, 23:32  |                                                                                                                Сообщение # 32
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 578
Репутация: 19   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Поигрался с примером PINCOD - погоже глюки Протеуса.  wacko  Завтра продолжу. smile
ivan_fd Дата: Ср, 14.11.2018, 00:38  |                                                                                                                Сообщение # 33
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1019
Репутация: 83   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

anatol, дата создания сообщения 2016 год. Pincod вроде бы разобрался.

Меня все время преследуют умные мысли...но я быстрее!!!
Anatoliy1000 Дата: Ср, 14.11.2018, 04:13  |                                                                                                                Сообщение # 34
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 96
Репутация: 0   ±
Замечания:   ±
На сайте с 02.03.2016

Статус: Offline

Цитата доцент2 ()
Вы под свой контроллер 628А переделали?
У меня 675

Добавлено (14.11.2018, 04:16)
---------------------------------------------

Цитата ivan_fd ()
возьмите тестер и напишите нам сюда какой вывод МК идет на какой вывод 74HC595
Попробую тестером. Как проводками потыкать не понимаю.


Я новичок. За помощь стараюсь плюсовать репутацию (пока других способов сказать спасибо не знаю).
ivan_fd Дата: Ср, 14.11.2018, 13:21  |                                                                                                                Сообщение # 35
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1019
Репутация: 83   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Цитата Anatoliy1000 ()
Попробую тестером. Как проводками потыкать не понимаю.

Снял видео как потыкать проводками. Может поймете принцип работы со сдвиговым регистром.





И файл протеуса.
Прикрепления: 9592752.jpg(107.5 Kb) · DynamicInd.pdsp.zip(16.0 Kb)


Меня все время преследуют умные мысли...но я быстрее!!!
Сообщение отредактировал ivan_fd - Ср, 14.11.2018, 13:23
Anatoliy1000 Дата: Пн, 19.11.2018, 13:02  |                                                                                                                Сообщение # 36
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 96
Репутация: 0   ±
Замечания:   ±
На сайте с 02.03.2016

Статус: Offline

Все, наконец-то разобрался.
1. "Подаю" число,
2. указываю знакоместо
3. Следующее число без пауз


Я новичок. За помощь стараюсь плюсовать репутацию (пока других способов сказать спасибо не знаю).
ivan_fd Дата: Пн, 19.11.2018, 15:21  |                                                                                                                Сообщение # 37
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1019
Репутация: 83   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Anatoliy1000, без обид, но мне кажется, что Вы все делаете методом тыка. В чем Вы разобрались?
Оно у Вас работает?
Не будет оно так работать, нормально. Вывод на дисплей, со сдвиговым регистром, нужно делать через одинаковые промежутки времени и эту процедуру нужно вращать в цикле вечно.
Вот представьте себе, Вам нужно вывести число 1234. Зашли Вы в процедуру вывода послали число 1 и знакоместо 4, далее число 2 и знакоместо 3, и так далее, при выходе из процедуры, что у Вас будет на индикаторе???? Правильно - только цифра 4! И если оставить только процедуру вывода, то все как бы работает, а добавьте для контроллера еще каких то задач, что тогда???
Повторяюсь, Вы поймите,в вашем модуле только два сдвиговых регистра. Один отвечает за код цифры, а другой какую показывать. Так вот, тот первый, посылает код сразу на все четыре знакоместа.

Поставьте паузу в программе, между выводом на дисплей и увидите, что будет творится у Вас.


Меня все время преследуют умные мысли...но я быстрее!!!
Anatoliy1000 Дата: Вт, 20.11.2018, 06:45  |                                                                                                                Сообщение # 38
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 96
Репутация: 0   ±
Замечания:   ±
На сайте с 02.03.2016

Статус: Offline

Цитата ivan_fd ()
Оно у Вас работает?
Да, заработало, поэтому и написал.
Код такой:
SHOut DS, SH_CP, MsbFirst, [164] 'Проталкиваем 2
SHOut DS, SH_CP, MsbFirst, [%0010] ' на второе знакоместо
потом другое число (3)
потом бесконечный цикл и они "светятся" как-будто непрерывно. Конечно, я понимаю что это "моргание".
К сожалению Вы правы "методом тыка".


Я новичок. За помощь стараюсь плюсовать репутацию (пока других способов сказать спасибо не знаю).
Сообщение отредактировал Anatoliy1000 - Вт, 20.11.2018, 06:46
Форум Picbasic.ru » Программирование МК » Proton PicBasic » PIC+74CH595 (Опять LED индикатор и регистр 74CH595)
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск: