Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Модуль индикации на TM1637


Модуль индикации на TM1637

Сообщений 1 страница 18 из 18

1

Попали в руки остатки какого-то аппарата в виде полуразломанных плат с проводами...
Конструкция не бытовая, что-то производственное, не отечественное...

Из всего в живых остались только кнопки, переключатели, мелочевка с треснутых плат и вот такой модуль
http://sf.uploads.ru/t/Q6Xf8.jpg

На плате м/с ТМ1637, выводы CLK, DIO, VCC, GND
Копание в инете выдало только ардуиновские ресурсы.
Из всех попыток их осознания понял, что дисплей с I2C, данные в него вталкиваются поочередно от младшего разряда к старшему и а адресацией у этого чипа не все по-людски.
В результате получаю только отдельные бессмысленные сегменты...

Никому такого зверя зажигать не приходилось ? ;)

Отредактировано Nord (2017-03-11 12:41:48)

0

2

http://kaktusa.pl/tm1637-w-module-z-wys … g-4-cyfry/

+1

3

Пётр написал(а):

http://kaktusa.pl/tm1637-w-module-z-wys … g-4-cyfry/

Я там был... ;)
Там все завернуто на использовании библиотек, которые найти пока не смог...
А утянуть показанные примеры без регистрации не получается...

0

4

Nord написал(а):

Там все завернуто на использовании библиотек, которые найти пока не смог...

Скопировал код, скомпилировал его... http://rgho.st/8xBVpWJlV
О каких библиотеках идет речь?

+1

5

Пётр написал(а):

Скопировал код, скомпилировал его... http://rgho.st/8xBVpWJlV

Огромное спасибо за участие !
Антивирус ругается на сам сайт и не дает скачать...
Если не трудно, можно сюда перезалить  http://www.fayloobmennik.net/

Пётр написал(а):

О каких библиотеках идет речь?

В первом примере подключается TM1637_core.inc  это что ? ;)

0

6

Всё качается.
Весь код разбит на два файла.
TM1637.bas - основной и TM1637_core.inc - дополнительный.
В основном файле указываем, что подключаем - $include "TM1637_core.inc"
А в дополнительном, что его не нужно компилировать - $nocompile

+1

7

radan написал(а):

Всё качается. Весь код разбит на два файла.TM1637.bas - основной и TM1637_core.inc - дополнительный.В основном файле указываем, что подключаем - $include "TM1637_core.inc"А в дополнительном, что его не нужно компилировать - $nocompile

Биг сенкс !
Будем копать... ;)

0

8

Разобрался при помощи All с этим модулем... ;)

Вот оставшаяся от польского исходника часть кода, которой на 95% будет достаточна для работы с ним:
Разумеется, не забываем скачать TM1637_core.inc ;)

Код:
$regfile = "m16adef.dat"
$crystal = 8000000
$hwstack = 64
$swstack = 32
$framesize = 32

Config Submode = New

$include "TM1637_core.inc"

Dim J As Byte , K As Byte , L As Byte , M As Byte
'---------------------------------------------------------------------------------
'Подключение модуля индикатора:
' CLK -> SCL
' DIO -> SDA, не забываем про "подтяжку"
'
'Указывать в теле программы про I2С необходимости нет
'---[ test       ]------------------------------------------------------------------
'Для ATMega16
'Для других МК указать свою ножку SDA
Set Ddrc.1
Test Alias Portc.1
'---------------------------------------------------------------------------------
'Блоки DATA  Brightness и  Cyfry лучше не переименовывать
'---------------------------------------------------------------------------------
'Вывод значения в нужной позиции, аналог Locate
'
'Tm1637_poz(&B00111111 , 3)
'                значение
'                         позиция
'---------------------------------------------------------------------------------
'Вывод значений во всех позициях
'
'Tm1637(12 , 13 , 14 , 15 , 2 , 1)
'        значение позиции 3
'             значение позиции 2
'                  значение позиции 1
'                       значение позиции 0
'                           яркость 0-7
'                               двоеточие 0-откл, 1-вкл
'-----------------------------------------------------------------------------

Do
Call Tm1637(27 , 27 , 27 , 27 , 4 , 0)
Call Tm1637_poz(&B00111111 , 3 )
Waitms 500
Call Tm1637_poz(&B00000110 , 2)
Waitms 500
Call Tm1637_poz(&B01011011 , 1)
Waitms 500
Call Tm1637_poz(&B01001111 , 0)
Waitms 500
Call Tm1637(27 , 27 , 27 , 27 , 0 , 0)

Wait 1

Call Tm1637(12 , 13 , 14 , 15 , 1 , 1)
Waitms 500
Call Tm1637(15 , 12 , 13 , 14 , 3 , 1)
Waitms 500
Call Tm1637(14 , 15 , 12 , 13 , 5 , 1)
Waitms 500
Call Tm1637(13 , 14 , 15 , 12 , 7 , 1)
Waitms 500

Wait 1

Loop
End

Brightness:
Data &H80                                                   'off
Data &H88                                                   'min 1/61   136
Data &H89                                                   '2/16       137
Data &H8A                                                   '4/16       138
Data &H8B                                                   '10/16      139
Data &H8C                                                   '11/16      140
Data &H8D                                                   '12/16      141
Data &H8E                                                   '13/16      142
Data &H8F                                                   'max 14/16  143

Cyfry:
Data &B00111111                                             '0
Data &B00000110                                             '1
Data &B01011011                                             '2
Data &B01001111                                             '3
Data &B01100110                                             '4
Data &B01101101                                             '5
Data &B01111101                                             '6
Data &B00000111                                             '7
Data &B01111111                                             '8
Data &B01101111                                             '9
Data &B01110111                                             'A    10
Data &B01111100                                             'B    11
Data &B00111001                                             'C    12
Data &B01011110                                             'D    13
Data &B01111001                                             'E    14
Data &B01110001                                             'F    15
Data &B00111101                                             'G    16
Data &B01110110                                             'H    17
Data &B00110000                                             'I    18
Data &B00001110                                             'J    19
Data &B00111000                                             'L    20
Data &B01010100                                             'n    21
Data &B00111100                                             'o    22
Data &B01110011                                             'P    23
Data &B01010000                                             'r    24
'Data &B01101101                                             'S<->5
Data &B01111000                                             't    25
Data &B00111110                                             'U    26
Data &B00000000                                             'off  27
Data &B01000000                                             '-    28
Data &B00001111                                             ')    29

Отредактировано Nord (2017-03-11 18:00:05)

+1

9

Стыдитесь

:confused:

Я опубликовать исходный код бесплатно под CC-BY-NC
Просто зарегистрируйтесь, чтобы получить доступ к коду указанному
Sprawicie мне радость вставки звезды. Тогда я знаю, что вам нравится моя работа

RADAN
Пожалуйста, удалите все ссылки на мой код иностранных сайтов на форуме, а также уведомление для удаленных исходных файлов в опубликованных местах.

https://creativecommons.org/licenses/?lang=ru

google translate

kaktus

Отредактировано kaktus (2017-03-12 20:50:00)

+1

10

kaktus написал(а):

Стыдитесь
Просто зарегистрируйтесь, чтобы получить доступ к коду указанному
            google translate
            kaktus

Gdyby udało mi się znaleźć (!) na polskim miejscu możliwość rejestracji, to uwierz, ja bym się zarejestrował i nie zadawał pytań.
Za Swoje prace - wielki szacun !
W tej sprawie tylko z Twoim artykułem udało się działać z tym chipem. Jeszcze raz - dziękuję !
Przepraszam za tłumacz Yandex... ;)

0

11

Кнопка есть:
http://s6.uploads.ru/t/n4z0y.png
Но я не могу зарегистрироваться.

0

12

у меня встречное предложение !
Во избежание международного скандала - radan, удалите тему напрочь !

0

13

max написал(а):

Кнопка есть

Но, чтоб ее найти - надо польский понимать ! ;)
А я его знаю не больше, чем пингвины якутский... ;)
Не переводить же весь сайт (кстати - мысль для владельца сайта)...

0

14

по просьбе коллегой маx

Copyright CC-BY-NC
kaktus
http://kaktusa.pl

мастер-код

Код:
 'badanie modułu wyświetlacz 4-Digit Display CATALEX - 7seg - 2015-05-31
'by kaktus
'http://kaktusa.pl
'Copyright CC-BY-NC

$regfile = "m328pdef.dat"
$crystal = 16000000
$hwstack = 124
$swstack = 96
$framesize = 124

Config Submode = New


$include "TM1637_core.inc"

Dim J As Byte , K As Byte , L As Byte , M As Byte

'---[ test       ]--------------------------------------------------------------
Set Ddrc.2
Test Alias Portc.2
'$baud = 9600
'Config Serialin = Buffered , Size = 8
'Echo Off

'---[ test END   ]--------------------------------------------------------------

'Print "rozruch   "

Do
  Call Tm1637(27 , 27 , 27 , 27 , 4 , 0)
  Call Tm1637_poz(&B00111111 , 0 )                          'test pozycji
  Waitms 500
  Call Tm1637_poz(&B00000110 , 1)
  Waitms 500
  Call Tm1637_poz(&B01011011 , 2)
  Waitms 500
  Call Tm1637_poz(&B01001111 , 3)
  Waitms 500
  Call Tm1637(27 , 27 , 27 , 27 , 0 , 0)

  Wait 1

  J = 1 : K = &B01000000 : L = 0 : M = &B01111111
  For I = 0 To 7                                            'test segmentow
  L.i = 1
'najpierw prawie wszytko robie na "piechote"
'Write display register
'   bajt = &H40                                            '40H address is automatically incremented by 1 mode, 44H fixed address mode, the program uses a self-imposed 1 mode
    Gosub Tm1637_start
    Call Tm1637_wrbyte(&H40)                                '&B01000000    data instruction set -> write data to register (data write mode set)
    Gosub Tm1637_ack
    Gosub Tm1637_stop
'    bajt = &HC0                                            'Is Set The First Address
    Gosub Tm1637_start
    Call Tm1637_wrbyte(&Hc0)                                '&B11000000    addres instruction setting, MSB display
    Gosub Tm1637_ack

    Call Tm1637_wrbyte(j)                                   'pusto
    Gosub Tm1637_ack

    Call Tm1637_wrbyte(k)                                   '
    Gosub Tm1637_ack

    Call Tm1637_wrbyte(l)                                   '
    Gosub Tm1637_ack

    Call Tm1637_wrbyte(m)                                   '
    Gosub Tm1637_ack
    Gosub Tm1637_stop
    Shift J , Left , 1
    Shift K , Right , 1
    Shift M , Right , 1
    Call Tm1637_brightness(8)
    Waitms 200
  Next I

  Waitms 200
  Call Tm1637_brightness(0)
  Waitms 500

'uzycie zbudowanych funkcji
  For I = 0 To 3
  Call Tm1637(27 , 27 , 27 , 8 , 8 , 0)                     'biegaj¹ce 8
  Waitms 120
  Call Tm1637(27 , 27 , 8 , 27 , 8 , 0)
  Waitms 80
  Call Tm1637(27 , 8 , 27 , 27 , 8 , 0)
  Waitms 40
  Call Tm1637(8 , 27 , 27 , 27 , 8 , 0)
  Waitms 20
  Call Tm1637(27 , 8 , 27 , 27 , 8 , 0)
  Waitms 40
  Call Tm1637(27 , 27 , 8 , 27 , 8 , 0)
  Waitms 80
  Call Tm1637(27 , 27 , 27 , 8 , 8 , 0)
  Waitms 120
  Call Tm1637_brightness(0)
  Waitms 260
  Next I

  Wait 1

  Call Tm1637(27 , 27 , 28 , 29 , 1 , 1)                    'pusto pusto ;-)

  For I = 0 To 8
    Call Tm1637_brightness(i)
    Waitms 150
  Next I

  Call Tm1637_poz(&B00000000 , 2)                           'mryg oczkiem
  Waitms 500
  Call Tm1637_poz(&B10000000 , 2)

  For I = 8 To 0 Step -1
    Call Tm1637_brightness(i)
    Waitms 150
  Next I

  Wait 1

  Call Tm1637(17 , 10 , 17 , 10 , 1 , 0)                    'HAHA
  Waitms 500
  Call Tm1637_brightness(0)
  Waitms 500
  Call Tm1637(17 , 10 , 17 , 10 , 8 , 0)                    'HAHA
  Waitms 500
  Call Tm1637_brightness(0)
  Waitms 500
  Call Tm1637(17 , 10 , 17 , 10 , 1 , 0)                    'HAHA
  Waitms 500
  Call Tm1637_brightness(0)

  Wait 1

  Call Tm1637(23 , 26 , 27 , 27 , 1 , 0)                    'mrugajaca pupa
  Waitms 300
  Call Tm1637(27 , 27 , 23 , 10 , 1 , 0)
  Waitms 300
  Call Tm1637(23 , 26 , 27 , 27 , 8 , 0)
  Waitms 300
  Call Tm1637(27 , 27 , 23 , 10 , 8 , 0)
  Waitms 300
  Call Tm1637_brightness(0)
  Waitms 500

  Call Tm1637(27 , 27 , 27 , 17 , 1 , 0)                    'wjezdzajace HE HE z rozjasnianiem
  Waitms 100
  Call Tm1637(27 , 27 , 17 , 14 , 1 , 0)
  Waitms 100
  Call Tm1637(27 , 17 , 14 , 27 , 2 , 0)
  Waitms 100
  Call Tm1637(17 , 14 , 27 , 17 , 2 , 0)
  Waitms 100
  Call Tm1637(14 , 27 , 17 , 14 , 3 , 0)
  Waitms 100
  Call Tm1637(27 , 17 , 14 , 27 , 3 , 0)
  Waitms 100
  Call Tm1637(17 , 14 , 27 , 27 , 4 , 0)
  Waitms 100
  Call Tm1637(14 , 27 , 27 , 27 , 4 , 0)

  Waitms 200

  Call Tm1637(27 , 27 , 27 , 27 , 4 , 0)
  Waitms 200
  Call Tm1637(14 , 27 , 27 , 27 , 5 , 0)
  Waitms 200
  Call Tm1637(17 , 14 , 27 , 27 , 5 , 0)
  Waitms 200
  Call Tm1637(27 , 17 , 14 , 27 , 6 , 0)
  Waitms 200
  Call Tm1637(14 , 27 , 17 , 14 , 6 , 0)
  Waitms 200
  Call Tm1637(17 , 14 , 27 , 17 , 7 , 0)
  Waitms 200
  Call Tm1637(27 , 17 , 14 , 27 , 7 , 0)
  Waitms 200
  Call Tm1637(27 , 27 , 17 , 14 , 8 , 0)
  Waitms 200
  Call Tm1637(27 , 27 , 27 , 17 , 8 , 0)
  Waitms 200
  Call Tm1637_brightness(0)

  Wait 1

  For I = 200 To 00 Step -10                                'mrugajacy stop
    Call Tm1637(5 , 25 , 0 , 23 , 8 , 0)
    Waitms I
    Call Tm1637_brightness(0)
    Waitms I
  Next I

  Wait 1

Loop
End


'---[ podprogram ]--------------------------------------------------------------

Tm1637_start:                                               '1637 start transmission
   Set Clk
   Set Dio_out
   Waitus 2
   Reset Dio_out
Return

Tm1637_ack:                                                 '1637 responses transmission
   Reset Clk
   Waitus 5                                                 'After the eighth clock falling edge delay 5us, start determination ACK signal
   Reset Dio_set
   Bitwait Dio_in , Reset
   Set Clk
   Waitus 2
   Reset Clk
   Set Dio_set
Return

Tm1637_stop:                                                '1637 Stop transmission
   Reset Clk
   Waitus 2
   Reset Dio_out
   Waitus 2
   Set Clk
   Waitus 2
   Set Dio_out
Return

Brightness:
Data &H80                                                   'off        128 pomocne przy mruganiu caloscia
Data &H88                                                   'min 1/61   136
Data &H89                                                   '2/16       137
Data &H8A                                                   '4/16       138
Data &H8B                                                   '10/16      139
Data &H8C                                                   '11/16      140
Data &H8D                                                   '12/16      141
Data &H8E                                                   '13/16      142
Data &H8F                                                   'max 14/16  143

Cyfry:
Data &B00111111                                             '0
Data &B00000110                                             '1
Data &B01011011                                             '2
Data &B01001111                                             '3
Data &B01100110                                             '4
Data &B01101101                                             '5
Data &B01111101                                             '6
Data &B00000111                                             '7
Data &B01111111                                             '8
Data &B01101111                                             '9
Data &B01110111                                             'A    10
Data &B01111100                                             'B    11
Data &B00111001                                             'C    12
Data &B01011110                                             'D    13
Data &B01111001                                             'E    14
Data &B01110001                                             'F    15
Data &B00111101                                             'G    16
Data &B01110110                                             'H    17
Data &B00110000                                             'I    18
Data &B00001110                                             'J    19
Data &B00111000                                             'L    20
Data &B01010100                                             'n    21
Data &B00111100                                             'o    22
Data &B01110011                                             'P    23
Data &B01010000                                             'r    24
'Data &B01101101                                             'S<->5
Data &B01111000                                             't    25
Data &B00111110                                             'U    26
Data &B00000000                                             'off  27
Data &B01000000                                             '-    28
Data &B00001111                                             ')    29 


дополнительный код

Код:
'by kaktus
'http://kaktusa.pl
'Copyright CC-BY-NC
$nocompile

'---[ deklaracje  ]-------------------------------------------------------------

Ddrc.0 = 1                                                  'wyjscie dla CLK
'Config Pinc.1 = Output                                     'wyjscie dla DIO
'Config Pinc.1 = Input                                      'wejscie dla DIO
Ddrc.1 = 1                                                  'poczatkowa konfiguracja DIO

Clk Alias Portc.0                                           'przyjazne nazwy ;-)
Dio_set Alias Ddrc.1
Dio_out Alias Portc.1
Dio_in Alias Pinc.1

Dim I As Byte

'---[ deklaracje2 ]-------------------------------------------------------------

Declare Sub Tm1637_wrbyte(byval Bajt As Byte)               'wysyla bajt obojetnie co by to nie bylo
Declare Sub Tm1637_brightness(byval Light As Byte)          ' 0->off, 1->min - 8->max
Declare Sub Tm1637(byval Poz3 As Byte , Byval Poz2 As Byte , Byval Poz1 As Byte , Byval Poz0 As Byte , Byval Light_ As Byte , Byval Dot As Byte)
'do wyswietlania cyfr, sterowania jasnosci¹ +on,off, i za³aczania kropek na srodku
Declare Sub Tm1637_poz(byval Poz As Byte , Byval Adres As Byte)
'zpis dowolnej wartoœci "poz" do numeru wyswietlacza "adres", wyswietlacz musi juz pracowac


'---[ podprogram  ]-------------------------------------------------------------

Sub Tm1637(byval Poz3 As Byte , Byval Poz2 As Byte , Byval Poz1 As Byte , Byval Poz0 As Byte , Byval Light_ As Byte , Byval Dot As Byte)
'do wyswietlania cyfr, sterowania jasnosci¹ +on,off, i za³aczania kropek na srodku
'Light  0->off, 1->min - 8->max
' dot   0->dots off, 1->on
Local Tmp As Byte

  Gosub Tm1637_start
  Call Tm1637_wrbyte(&H40)                                  '&B01000000    data instruction set -> write data to register (data write mode set)
  Gosub Tm1637_ack
  Gosub Tm1637_stop

  Gosub Tm1637_start
  Call Tm1637_wrbyte(&Hc0)                                  '&B11000000    addres instruction setting, MSB display
  Gosub Tm1637_ack

  Call Tm1637_wrbyte(lookup(poz3 , Cyfry))
  Gosub Tm1637_ack

  Tmp = Lookup(poz2 , Cyfry)
  Tmp.7 = Dot.0
  Call Tm1637_wrbyte(tmp)                                   'MSB -> dots
  Gosub Tm1637_ack

  Call Tm1637_wrbyte(lookup(poz1 , Cyfry))
  Gosub Tm1637_ack

  Call Tm1637_wrbyte(lookup(poz0 , Cyfry))
  Gosub Tm1637_ack
  Gosub Tm1637_stop

  'display on/off
  Call Tm1637_brightness(light_)
End Sub
'*******************************************************************************

Sub Tm1637_brightness(byval Light As Byte)
' 0->off, 1->min - 8->max
  Gosub Tm1637_start
  Call Tm1637_wrbyte(lookup(light , Brightness))            'Maksymalna wartoœæ indeksu w u¿yciu jest 65535. Pierwszy wpis zwróci wartoœæ 0.
  Gosub Tm1637_ack
  Gosub Tm1637_stop
End Sub
'*******************************************************************************

Sub Tm1637_wrbyte(byval Bajt As Byte)                       'Write a byte
  Local Temp As Byte

   For Temp = 0 To 7                                        'send bit, LSB first
      Reset Clk
       Dio_out = Bajt.temp
      Waitus 3
      Set Clk
      Waitus 3
   Next Temp
End Sub
'*******************************************************************************

Sub Tm1637_poz(byval Poz As Byte , Byval Adres As Byte)
'poz -> dowolna wartosc do wyswietlenia
'adres -> 0-3 -który wyswietlacz 0- prawy skrajny, 3- lewy skrajny
'do zapisu wybranych, nowych wartoœci gdy wyœwietlacz ju¿ pracuje

  Select Case Adres
         Case 0:
                Adres = &HC3
         Case 1:
                Adres = &HC2
         Case 2:
                Adres = &HC1
         Case 3 :
                Adres = &HC0
  End Select

  Gosub Tm1637_start                                        'mryg oczkiem
  Call Tm1637_wrbyte(adres)
  Gosub Tm1637_ack

'  Call Tm1637_wrbyte(lookup(poz , Cyfry))
  Call Tm1637_wrbyte(poz)
  Gosub Tm1637_ack
  Gosub Tm1637_stop

End Sub

кодовое имя файла должно быть указано в строке
$include "TM1637_core.inc"
* .inc Файл должен находиться в том же каталоге, что и файл * .bas

Я желаю вам те же самые успешные усилия и проекты, работающие с первого удара;-)

0

15

Nord написал(а):

у меня встречное предложение !
Во избежание международного скандала - radan, удалите тему напрочь !


Скандал не будет, я просто удалить ссылки;-)

kaktus

Отредактировано kaktus (2017-03-11 23:13:48)

0

16

kaktus написал(а):

кодовое имя файла должно быть указано в строке$include "TM1637_core.inc"* .inc Файл должен находиться в том же каталоге, что и файл * .bas

Это неоспоримо, даже описано в справке Bascom.
To niezaprzeczalne, nawet jest opisane w pomocy Bascom.

kaktus написал(а):

Я желаю вам те же самые успешные усилия и проекты, работающие с первого удара;-)

Приношу свои извинения за использование Вашего кода, да еще в урезанном виде. Ни в коем случае не хотел принизить Ваши умения.
Przepraszam za korzystanie z Twojego kodu, tak jeszcze w урезанном postaci. W żadnym wypadku nie chciałem umniejszać Swoje umiejętności.

PS. Онлайн-переводчики - просто отжигают ! ;)
PS. Online-napisy - po prostu wyżarzaniu ! ;)

Отредактировано Nord (2017-03-11 23:26:51)

0

17

kaktus написал(а):

Скандал не будет, я просто удалить ссылки;-)

А смысл какой ?
Все находится любым поисковиком за доли секунды... ;)
A jaki sens ?
Wszystko jest w jakikolwiek wyszukiwarki w ułamku sekundy... ;)

0

18

kaktus написал(а):

Скандал не будет, я просто удалить ссылки;-)


Мир, дружба - Peace, przyjaźń

Я добавил ссылку на ваш сайт внизу страницы - o kaktusie (Bascom)

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Модуль индикации на TM1637