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

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

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

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


Вы здесь » Программирование ATMEL в BASCOM. » Дисплеи и индикация » Led матрица 32*16 для бегущей строки


Led матрица 32*16 для бегущей строки

Сообщений 31 страница 60 из 61

31

Евгений, запустил ваш проект пока на 2 панелях, у меня маленько матрицы отличаются. Они инверсные т.е картинку я вижу в негативе. Решилось это изменением Led(adrs) = 255 изменить на 0 в цикле гашения и добавить строчку после Vrtxt = Lookup(vrw , F6x5) :  Vrtxt = 255 - Vrtxt.   На двух панелях и atbanned62 работает отлично, завтра буду пробовать запустить на 4.  Евгений, загляните пожалуйста в личку. :-)

0

32

Угощайтесь на здоровье!!!! На скорую руку механизм удобный набросал, знаю, память жрёт много, но так проще  :D

http://s5.uploads.ru/t/0Q62O.jpg

http://s9.uploads.ru/t/lRaqn.jpg
http://sd.uploads.ru/t/BHqVO.jpg

Скачать: https://yadi.sk/d/bsZ_21wIzl_ugw

+4

33

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

На скорую руку механизм удобный набросал

На чём пикселизатор написан?

0

34

Спасибо.
Как-то не рационально по памяти, в дата целый байт пропадает. Надо либо добавить рисование в Gray/RGB, либо в бинарнике рисовал (указывать формат).
А в чем прога написана?

0

35

Написал в PureBasic, добавлю цветность.
Просто по байтам выводить при выводе по пикселям гораздо проще чем выдирать биты)))
Добавлю возможность в биты байта делать.

Отредактировано Ev3658 (2019-11-18 10:54:22)

+1

36

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

Просто по байтам выводить при выводе по пикселям гораздо проще чем выдирать биты

Согласен и даже возможно будет повторение с имеющимися утилитами баскома и прочих реализаций, но здесь больно простой и удобный интерфейс, без перегруза.
Ещё пожалуйста добавь как данные в дата писать (десятичные/хекс/бинарик), для наглядности.

0

37

На скорую руку бинарный сделал, из минусов его перегруз графической оболочки компилятор.
Собственно по выводу из байтов:

Код:
Dim L As Byte
Dim P As Byte
Dim O As Byte


Restore Ris1
For O = 0 To 15
   For P = 0 To 31
      Read L
      Call Point(p , O , L)
   Next P
Next O

Вывод из битов в байте:

Код:
Dim L As Byte
Dim P As Byte
Dim O As Byte
Dim I As Byte


Restore Ris1
For O = 0 To 15
   For P = 0 To 31
     I = P And &B0000_0111
     If I = 0 Then Read L
     If L.i = 1 Then Call Point(p , O , 1)
   Next P
Next O

http://sh.uploads.ru/t/ADsR2.jpg

Отредактировано Ev3658 (2019-11-18 14:21:33)

+2

38

Супер!

Тут подумал, а зачем в десятичном виде дату генерить? Коряво получится, почему сразу в хекс не делать и всё?

И данные могут быть как монохром/градиент/цвета.

0

39

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

зачем в десятичном виде

Тут хоть исправить пиксел порой можно, красивей как-то выглядит, кто если глянет на монитор, то вообще как XaKep  :D
Я её на скорую руку написал, вроде работает исправно. Добавил отражение в блоке Data.

+1

40

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

красивей как-то выглядит

Мне тоже нравится. Я для часов так стрелки кодировал:

Код:
'+++++СТРЕЛКИ ЧАСОВ+++++
'(
       Край      -     Центр
                    #
                  ## #
       ###########  ### (*) ###
                  ## #
                    #
')

Strelki:
'---------1 вид---------
'Секундная
   Data &B0000000000000000%
   Data &B0000000000000000%
   Data &B1111111111111111%
   Data &B0000000000000000%
   Data &B0000000000000000%

   Data &B0000000000000000%
   Data &B0000000000100000%
   Data &B0000000011011111%
   Data &B0000000000100000%
   Data &B0000000000000000%

'Минутная
   Data &B0000000000000000%
   Data &B0000011111110000%
   Data &B0011100000001111%
   Data &B0000011111110000%
   Data &B0000000000000000%

   Data &B0000000000000000%
   Data &B0000000000000010%
   Data &B0000000000001101%
   Data &B0000000000000010%
   Data &B0000000000000000%

'Часовая
   Data &B0000000000110000%
   Data &B0000000011101110%
   Data &B0000111111000001%
   Data &B0000000011101110%
   Data &B0000000000110000%

   Data &B0000000000000000%
   Data &B0000000000000010%
   Data &B0000000000001101%
   Data &B0000000000000010%
   Data &B0000000000000000%

+1

41

Всё, вроде достаточный функционал. Думаю сохранение файла будет лишним. Надо бы протестирвовать путно)))

https://sun9-39.userapi.com/c855124/v855124067/174479/odB77iz425c.jpg

Свернутый текст

http://s9.uploads.ru/t/9gYO6.jpg

Ссылка всё та-же: https://yadi.sk/d/bsZ_21wIzl_ugw

Теперь вот так вот можно ))))

https://sun9-17.userapi.com/c858532/v858532400/52a20/z_k61t5E4j4.jpg
https://sun9-26.userapi.com/c858416/v858416400/eb5dd/eKrnpPUwd3o.jpg

Отредактировано Ev3658 (2019-11-18 21:56:43)

+3

42

красивА ))

0

43

Всё равно придётся допиливать программу.
Когда устанешь по одному кадру копировать, сделаешь массив кадров, а потом перемещение по ним, а потом всё таки сохранение и в файл.
А потом ещё много чего. И наконец поймешь, что создал уникальный инструмент, который нужен только тебе. Пройдено и неоднократно проверено.
:D

+2

44

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

придётся допиливать программу.

Не не не, глюки конечно есть, но я доволен  :crazy:
На ней как кистью работать можно, быстро результаты получаю, не ожидал, знакогенератор цифр 8х16 за 15 минут сделал.
Тут исходник на коленке запилен, через пару дней не вспомню в нем ничего)))
Видео -  https://yadi.sk/i/NdadNUVg0upp7A

Отредактировано Ev3658 (2019-11-19 00:28:59)

+1

45

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

Пройдено и неоднократно

Да я тут не причём, протестировали вообщем Пикселизатор и оказывается в окно графику выводить не культурно, сохранения бы и галочку чтоб поверх всех окон не была....  :canthearyou:

Сделаль

http://s9.uploads.ru/t/6ubfs.jpg
http://s3.uploads.ru/t/XfiGp.jpg
http://sh.uploads.ru/t/cOfHz.jpg
http://sd.uploads.ru/t/OdWcL.jpg

0

46

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

Да я тут не причём

Я же по доброму, со стариковским опытом  :dontknow:
А вообще здорово, скоро такой же будет функционал:
http://s9.uploads.ru/t/exF2m.jpg

+2

47

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

Пикселизатор и оказывается в окно графику выводить не культурно

Куда ее тогда выводить? Или вы про

Код:
StartDrawing(WindowOutput(0))

При сворачивании/разворачивании или других действиях окно будет перерисовываться что потребует обновить графику.
Для этой цели лучше подойдет ImageGadget, а еще лучше CanvasGadget, который поддерживает работу с мышкой и клавиатурой.

0

48

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

протестировали вообщем Пикселизатор

У меня не запускается. 32 бита.

+1

49

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

У меня не запускается. 32 бита.

Вот, скомпилировал в x86, но не проверял, компилировал в старой версии и пришлось убрать некоторые параметры окон:

http://sd.uploads.ru/t/QcUzR.jpg

:blush:
x86 - https://yadi.sk/d/bsbii5XkEAving
x64 - https://yadi.sk/d/bsZ_21wIzl_ugw

Отредактировано Ev3658 (2019-11-21 22:54:50)

+2

50

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

Здравствуйте, уважаемые форумчане, может кто-то из Вас работал с матрицей для бегущей строки Qiang Li P10 или им подобных?   Информацию не могу найти ни них.

Привет!
Помощь-то нужна ещё кому-то?

Отредактировано samego (2019-11-28 09:12:44)

0

51

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

Привет!
Помощь-то нужна ещё кому-то?

Если только оптимизировать код  :yep:

0

52

Всем привет!

Данный код делал очень давно. Но сейчас одноцветные матрицы уже не актуальны. А код для них существенно отличается от кода для полноцветных матриц.
Проект RED MATRIX Atmega-32
Здесь показаны основные режимы прокрутки и вывода текста.

Для проекта были написаны шрифты.  А позже была написана и программа редактирования шрифтов. В данном проекте реализованы 4 "ходовых" шрифта. Добавлена русификация.
Были разработаны печатные платы под Atmega-8, Atmega-32, Atmega-128, Atmega-328.
Кстати, осталось много не нужных плат, которые могу просто подарить.
Могу выложить фото плат.
Актуальная плата осталась только на Atmega-8(328) для RGB матриц с интерфейсом RS-485.
http://s8.uploads.ru/t/n2waU.jpg

0

53

Наверно после попыток вывести сигнал VGA меня торкнуло на оптимизацию)))

Ваш код вывода данных на дисплей:

Код:

S_load1:
   Shiftout D_red , Shift_clock , Memory(c_1) , 3 , 8
Return
...
...
...
...
Display_refresh:
   Load Timer2 , Timer2reload
   Incr Page_counter
   If Page_counter > 3 Then Page_counter = 0
   Select Case Page_counter

      Case 0:
         For C_1 = 3 To 63 Step 4 : Gosub S_load1 : Next C_1
         Gosub S_load2 : A = 0 : B = 0
      Case 1:
         For C_1 = 2 To 62 Step 4 : Gosub S_load1 : Next C_1
         Gosub S_load2 : A = 1 : B = 0
      Case 2:
         For C_1 = 1 To 61 Step 4 : Gosub S_load1 : Next C_1
         Gosub S_load2 : A = 0 : B = 1
      Case 3:
         For C_1 = 0 To 60 Step 4 : Gosub S_load1 : Next C_1
         Gosub S_load2 : A = 1 : B = 1
   End Select
   Pwm1b = Brightness
   Trigger = 1
Return

Я сделал иначе, выводит одну строку из 4х по прерываниям по таймеру:

Код:
Graf:
'============================= Код вывода на дисплей =================================================
'Рисуем только одну строку из 4х
  Adrsstart = Lsdstr * Triglsd                              'высчитываем начальный адрес строки
  Incr Adrsstart                                            'Прибавляем на один из-за проблем в Баскоме в нумерации массива, он не должен начинатся с нуля
  Adrsend = Adrsstart + Lsdstr                              'высчитываем конечный адрес строки

  For Adrsschet = Adrsstart To Adrsend                      'Перебираем видео память
          Shiftout Data_pin , Clk_pin , Led(adrsschet)      'Вывод данных

  Next Adrsschet

  Set Stb_pin                                               'Дрыгаем защёлкой регистров и через паузу закрываем (для надёжности)

  Select Case Triglsd                                       'Выбираем адрес строки в ячейке (1-4) - тут проблема, нужна оптимизация кода
      Case 0
         A_pin = 1
         B_pin = 1
         Incr Triglsd
      Case 1
         A_pin = 0
         B_pin = 1
         Incr Triglsd
      Case 2
         A_pin = 1
         B_pin = 0
         Incr Triglsd
      Case 3
         A_pin = 0
         B_pin = 0
         Triglsd = 0
  End Select

  Reset Stb_pin                                             'сбрасываем заёлку регистров
  '=====================================================================================================
Return

0

54

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

Наверно после попыток вывести сигнал VGA меня торкнуло на оптимизацию)))

Ваш код вывода данных на дисплей:

Я сделал иначе, выводит одну строку из 4х по прерываниям по таймеру:

Как вариант, CASE можно сделать на ассемблере. Только зачем?

0

55

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

Как вариант, CASE можно сделать на ассемблере. Только зачем?

В целом да, если только чтоб больше модулей охватить одним микроконтроллером.

Кстати, платы очень хорошие, по идее можно было бы вам часы городу предложить маленькие.

0

56

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

В целом да, если только чтоб больше модулей охватить одним микроконтроллером.

Кстати, платы очень хорошие, по идее можно было бы вам часы городу предложить маленькие.

Спасибо!
В полноцветных модулях схемотехника совсем другая. Там нет типовых сдвиговых регистров HC595. Да и сам код обновления экрана почти полностью на ассемблере написан.
На 128 атмеге без проблем можно соединить последовательно 8-10 модулей  S8 SMD 320/160 Qiang Li (20х40). В каждом модуле по 800 RGB светодиодов. Анимацию на бейсике конечно не вывести, но простую динамику и статику легко.
Пример - 10 матриц.
http://s7.uploads.ru/t/RuaWo.jpg

0

57

Выложу рабочий код на одну панель и чуть позже печатку для него:

Свернутый текст
Код:
$Regfile="m328pbdef.dat"
$Crystal=14745600
$hwstack = 120
$swstack = 120
$framesize = 120


Dim X As Word
Dim Y As Byte
Dim S As String * 55
Dim Cl As Byte




Declare Sub Lcdcls()
Declare Sub Point(byval X As Word , Byval Y As Byte , Byval Cl As Byte)       'подпрограмма вывода пикселя

Declare Sub Cifra(byval X As Word , Byval Y As Byte , Byval Num As String * 6)






'Тут на два сегмента:
'Const Lsdram = 129                                          'Количество панелей (65=1 панель, 129=две панели)  - но почему-то надо чуть больше чтоб небыло утчки памяти, по идее 64 и 128 должно быть
Const Lsdram = 65                                           'Это на одну матрицу, но учтите, в цикле координаты X 63 поменяйте на 31
Const Lsdstr = Lsdram / 4                                   'Рассчёт блоков для вывода графики
Dim Endx As Byte
Dim Endstr As Byte
Endx = Lsdram / 2
Endstr = Lsdram / 11




'================= Конфигурация портов
'таймер OC1B Portb.2
Config Timer1 = Pwm ,Pwm = 8,Compare B Pwm = Clear up ,Prescale = 64
' Частота шим-а 1953.125 Гц
Config PORTb.2 = Output 'выход на порт регистра OC1B
Pwm1b = 100
Start Timer1

'==== Выводы экрана
Config Portd.5=output
Config Portd.6=output
Config Portd.7=output
Config Portb.0=output
Config Portb.1=output
Config Portb.2=output

'Oe_pin Alias Portb.2                                        'Это для отклчюения и включения дисплея, можно посадить на таймер и регулировать яркость.

'Set Oe_pin                                                  'Включаем дисплей (можно его на таймер поставить для регулировки яркости)

A_pin Alias Portd.5                                         'Адрес в ячейке
B_pin Alias Portd.6                                         'Адрес в ячейке
Clk_pin Alias Portd.7                                       'строб передачи данных SPI
Stb_pin Alias Portb.0                                       'Строб защёлки
Data_pin Alias Portb.1                                      'Вывод данных SPI


'================= Переменные

Dim Led(200) As Byte                                        'Массив видео памяти
Dim Adrsstart As Byte                                       'координаты памяти
Dim Adrsend As Byte                                         'координаты памяти
Dim Adrsschet As Byte                                       'координаты памяти
Dim Adrs As Byte                                            'координаты памяти
Dim Triglsd As Byte                                         'Адрес строки в ячейке



'============== Основной программы
Dim Rezhim As Byte                                          'Режим устройства


'=============== Переменные влажности  и температуры
Dim T As Byte







'============== Переменные графики
Dim Xadrs As Word
Dim Yadrs As Byte
Dim Xost As Byte                                            'Выссчитывание координаты отстака X (положение бита в байте)
Dim Yost As Byte                                            'высчитывание остатка координаты Y
Dim Trigstr As Byte                                         'для подсчёта строки в кластере


Call Lcdcls()

Set Stb_pin                                                 'Дрыгаем защёлкой регистров чтоб наверняка всё сбросить
Reset Stb_pin
X = 0
Y = 0
Triglsd = 0

Config Timer2 = Timer , Prescale = 256                     'Запускаем таймер, он будет рисовать одну строку из четырёх
On Timer2 Graf
Enable Timer2
Enable Interrupts


'Set Oe_pin                                                  'Включаем дисплей

Dim L As Byte
Dim P As Byte
Dim O As Byte
Dim I As Byte
Dim Tm2 As Byte
Dim Txt As String * 255
Dim Vr As Byte
Dim Animal As Byte
Dim Animalvr As Byte
Dim Vrb As Byte                                             'Временная переменная Байт

Dim Tm As Byte
Do

For P = 30 To 90

   S = " "
   S = S + Str(p)
   S = S + "%"
   Call Cifra(1 , 0 , S)


Waitms 100
Next P
'Call Lcdcls()

  '==================Просто тестовая программа проверки правильности вывода видео данных =================



Loop


Sub Cifra(byval X As Word , Byval Y As Byte , Byval Num As String * 6)
Local Vry As Byte
Local Vrx As Word
Local Vrp As Byte
Local Vro As Byte
Local Vrb As Byte
Local Vrxp As Word
Local P As Byte
Local L As Byte
Local Vr As Byte
Local S As String * 1
Local Compensator As Byte
Local Compensator2 As Word
L = Len(num)
For P = 1 To L                                              'разбераем строку по буквам
    S = Mid(num , P , 1)
    Compensator = 7                                         'компинсация вывода узких знаков (точки и запятой)

    Vry = Y

    Vrxp = Compensator2
    Vrxp = Vrxp + X

    Select Case S                                           '========== Так будет проще для вас, определяем знак в строке
       Case "0"
          Vr = 0
       Case "1"
          Vr = 16
       Case "2"
          Vr = 32
       Case "3"
          Vr = 48
       Case "4"
          Vr = 64
       Case "5"
          Vr = 80
       Case "6"
          Vr = 96
       Case "7"
          Vr = 112
       Case "8"
          Vr = 128
       Case "9"
          Vr = 144
       Case "+"
          Vr = 160

       Case "-"
          Vr = 176
       Case "%"
          Vr = 192
       Case " "                                             'Пробел для стирания
          Vr = 208
       Case "."
         Vr = 224
         Compensator = 3                                    'длина и вправо
         Vrxp = Vrxp - 1                                    'влево
       Case ","
         Vr = 240
         Compensator = 3                                    'длина и вправо
         Vrxp = Vrxp - 1                                    'влево
       Case Else Break
    End Select
     Vr = Vr + 15                                           'Я тут кодкосячил с разворотом шрифта по Y

    For Vro = 0 To 15
       Vrb = Lookup(vr , Cifri)
       Decr Vr                                              'INCR если убрать отражение шрифта по Y
       Vrx = Vrxp

       For Vrp = Compensator To 0 Step -1
          If Vrb.vrp = 1 Then
             Call Point(vrx , Vry , 1)
             Else
             Call Point(vrx , Vry , 0)
          End If
          Incr Vrx
       Next Vrp
      Incr Vry
    Next Vro
    Incr Compensator
    Compensator2 = Compensator2 + Compensator


Next P
Compensator2 = 0
End Sub



Sub Lcdcls()                                                'Очищаем LCD экран
   For Adrs = 1 To Lsdram                                   'очищаем
      Led(adrs) = 255
   Next Adrs
End Sub






Sub Point(x As Word , Y As Byte , Cl As Byte )              'Рисуем точку
   'X = 31 - x
   'Y = 15 - Y
   Xadrs = X / 8                                            'Так как 8 точек в одном слобце, делим и узнаём сколько столбцов
   Xadrs = Xadrs * 4                                        'Умнажаем на 4 кластера в столбце

   Xost = X Mod 8                                           'Выссчитываем пиксель из байта

   Yadrs = Y Mod 4                                          'определяем какая строка в кластере
   Yadrs = Yadrs * Lsdstr                                   'умножаем на длину строки экрана

   Yost = Y / 4                                             'высчитываем сколько кластеров в столбце
   Yadrs = Yadrs + Yost                                     'суммируем полученное

   Yadrs = Xadrs + Yadrs                                    'прибавляем рассчёты по X

   Yadrs = Lsdram - Yadrs                                   'вычитаем из общего массива, там почему-то стабильней
   If Yadrs <= Lsdram And Yadrs > 0 Then
      Led(yadrs).xost = Not Cl.0                            'рисуем точку
   End If

End Sub


Graf:
'============================= Код вывода на дисплей =================================================
'Рисуем только одну строку из 4х

  Adrsstart = Lsdstr * Triglsd                              'высчитываем начальный адрес строки
  Incr Adrsstart                                            'Прибавляем на один из-за проблем в Баскоме в нумерации массива, он не должен начинатся с нуля
  Adrsend = Adrsstart + Lsdstr                              'высчитываем конечный адрес строки

  For Adrsschet = Adrsstart To Adrsend                      'Перебираем видео память
          Shiftout Data_pin , Clk_pin , Led(adrsschet)      'Вывод данных

  Next Adrsschet

  Set Stb_pin                                               'Дрыгаем защёлкой регистров и через паузу закрываем (для надёжности)

  Select Case Triglsd                                       'Выбираем адрес строки в ячейке (1-4) - тут проблема, нужна оптимизация кода
      Case 0
         A_pin = 1
         B_pin = 1
         Incr Triglsd
      Case 1
         A_pin = 0
         B_pin = 1
         Incr Triglsd
      Case 2
         A_pin = 1
         B_pin = 0
         Incr Triglsd
      Case 3
         A_pin = 0
         B_pin = 0
         Triglsd = 0
  End Select

  Reset Stb_pin                                             'сбрасываем заёлку регистров

  '=====================================================================================================
Return



End



Cifri:

'0
DATA &B0011_1000 ' 1
DATA &B0100_0100 ' 2
DATA &B1100_0110 ' 3
DATA &B1100_0110 ' 4
DATA &B1100_0110 ' 5
DATA &B1100_0110 ' 6
DATA &B1100_0110 ' 7
DATA &B1100_0110 ' 8
DATA &B1100_0110 ' 9
DATA &B1100_0110 ' 10
DATA &B1100_0110 ' 11
DATA &B1100_0110 ' 12
DATA &B1100_0110 ' 13
DATA &B0100_0100 ' 14
DATA &B0011_1000 ' 15
DATA &B0000_0000 ' 16
' Байтов:16



'1
DATA &B0001_1000 ' 1
DATA &B0011_1000 ' 2
DATA &B0011_1000 ' 3
DATA &B0111_1000 ' 4
DATA &B0111_1000 ' 5
DATA &B0001_1000 ' 6
DATA &B0001_1000 ' 7
DATA &B0001_1000 ' 8
DATA &B0001_1000 ' 9
DATA &B0001_1000 ' 10
DATA &B0001_1000 ' 11
DATA &B0001_1000 ' 12
DATA &B0001_1000 ' 13
DATA &B0001_1000 ' 14
DATA &B0001_1000 ' 15
DATA &B0000_0000 ' 16
' Байтов:16



'2
DATA &B0011_1000 ' 1
DATA &B0100_0100 ' 2
DATA &B1100_0110 ' 3
DATA &B1100_0110 ' 4
DATA &B1100_0110 ' 5
DATA &B0000_0110 ' 6
DATA &B0000_0100 ' 7
DATA &B0000_1000 ' 8
DATA &B0001_0000 ' 9
DATA &B0010_0000 ' 10
DATA &B0100_0000 ' 11
DATA &B1100_0000 ' 12
DATA &B1100_0000 ' 13
DATA &B1100_0110 ' 14
DATA &B1111_1110 ' 15
DATA &B0000_0000 ' 16
' Байтов:16



'3                                                           '
DATA &B0011_1000 ' 1
DATA &B0100_0100 ' 2
DATA &B1100_0110 ' 3
DATA &B1100_0110 ' 4
DATA &B0000_0110 ' 5
DATA &B0000_0110 ' 6
DATA &B0001_1100 ' 7
DATA &B0001_1100 ' 8
DATA &B0000_0110 ' 9
DATA &B0000_0110 ' 10
DATA &B0000_0110 ' 11
DATA &B1100_0110 ' 12
DATA &B1100_0110 ' 13
DATA &B0100_0100 ' 14
DATA &B0011_1000 ' 15
DATA &B0000_0000 ' 16
' Байтов:16


'4
DATA &B1100_1100 ' 1
DATA &B1100_1100 ' 2
DATA &B1100_1100 ' 3
DATA &B1100_1100 ' 4
DATA &B1100_1100 ' 5
DATA &B1100_1100 ' 6
DATA &B1100_1100 ' 7
DATA &B1111_1110 ' 8
DATA &B1111_1110 ' 9
DATA &B0000_1100 ' 10
DATA &B0000_1100 ' 11
DATA &B0000_1100 ' 12
DATA &B0000_1100 ' 13
DATA &B0000_1100 ' 14
DATA &B0000_1100 ' 15
DATA &B0000_0000 ' 16
' Байтов:16


'5
DATA &B1111_1110 ' 1
DATA &B1100_0110 ' 2
DATA &B1100_0000 ' 3
DATA &B1100_0000 ' 4
DATA &B1100_0000 ' 5
DATA &B1100_0000 ' 6
DATA &B1111_1100 ' 7
DATA &B0000_0110 ' 8
DATA &B0000_0110 ' 9
DATA &B0000_0110 ' 10
DATA &B0000_0110 ' 11
DATA &B1100_0110 ' 12
DATA &B1100_0110 ' 13
DATA &B1100_0110 ' 14
DATA &B0111_1100 ' 15
DATA &B0000_0000 ' 16
' Байтов:16


'6
DATA &B0111_1110 ' 1
DATA &B1100_0110 ' 2
DATA &B1100_0000 ' 3
DATA &B1100_0000 ' 4
DATA &B1100_0000 ' 5
DATA &B1100_0000 ' 6
DATA &B1111_1100 ' 7
DATA &B1100_0110 ' 8
DATA &B1100_0110 ' 9
DATA &B1100_0110 ' 10
DATA &B1100_0110 ' 11
DATA &B1100_0110 ' 12
DATA &B1100_0110 ' 13
DATA &B1100_0110 ' 14
DATA &B0111_1100 ' 15
DATA &B0000_0000 ' 16
' Байтов:16


'7
DATA &B1111_1110 ' 1
DATA &B1111_1110 ' 2
DATA &B0000_0110 ' 3
DATA &B0000_0110 ' 4
DATA &B0000_0110 ' 5
DATA &B0000_1100 ' 6
DATA &B0001_1000 ' 7
DATA &B0001_1000 ' 8
DATA &B0001_1000 ' 9
DATA &B0011_0000 ' 10
DATA &B0011_0000 ' 11
DATA &B0011_0000 ' 12
DATA &B0110_0000 ' 13
DATA &B0110_0000 ' 14
DATA &B0110_0000 ' 15
DATA &B0000_0000 ' 16
' Байтов:16

'8
DATA &B0111_1100 ' 1
DATA &B1100_0110 ' 2
DATA &B1100_0110 ' 3
DATA &B1100_0110 ' 4
DATA &B1100_0110 ' 5
DATA &B1100_0110 ' 6
DATA &B1100_0110 ' 7
DATA &B0111_1100 ' 8
DATA &B1100_0110 ' 9
DATA &B1100_0110 ' 10
DATA &B1100_0110 ' 11
DATA &B1100_0110 ' 12
DATA &B1100_0110 ' 13
DATA &B1100_0110 ' 14
DATA &B0111_1100 ' 15
DATA &B0000_0000 ' 16
' Байтов:16


'9
DATA &B0111_1100 ' 1
DATA &B1100_0110 ' 2
DATA &B1100_0110 ' 3
DATA &B1100_0110 ' 4
DATA &B1100_0110 ' 5
DATA &B1100_0110 ' 6
DATA &B1100_0110 ' 7
DATA &B1100_0110 ' 8
DATA &B0111_1110 ' 9
DATA &B0000_0110 ' 10
DATA &B0000_0110 ' 11
DATA &B0000_0110 ' 12
DATA &B1100_0110 ' 13
DATA &B1100_0110 ' 14
DATA &B0111_1100 ' 15
DATA &B0000_0000 ' 16
' Байтов:16

'+
DATA &B0000_0000 ' 1
DATA &B0000_0000 ' 2
DATA &B0000_0000 ' 3
DATA &B0000_0000 ' 4
DATA &B0011_0000 ' 5
DATA &B0011_0000 ' 6
DATA &B1111_1100 ' 7
DATA &B1111_1100 ' 8
DATA &B0011_0000 ' 9
DATA &B0011_0000 ' 10
DATA &B0000_0000 ' 11
DATA &B0000_0000 ' 12
DATA &B0000_0000 ' 13
DATA &B0000_0000 ' 14
DATA &B0000_0000 ' 15
DATA &B0000_0000 ' 16
' Байтов:16




'-
DATA &B0000_0000 ' 1
DATA &B0000_0000 ' 2
DATA &B0000_0000 ' 3
DATA &B0000_0000 ' 4
DATA &B0000_0000 ' 5
DATA &B0000_0000 ' 6
DATA &B0111_1100 ' 7
DATA &B0111_1100 ' 8
DATA &B0000_0000 ' 9
DATA &B0000_0000 ' 10
DATA &B0000_0000 ' 11
DATA &B0000_0000 ' 12
DATA &B0000_0000 ' 13
DATA &B0000_0000 ' 14
DATA &B0000_0000 ' 15
DATA &B0000_0000 ' 16
' Байтов:16


'%-20
DATA &B0110_0010 ' 1
DATA &B1001_0010 ' 2
DATA &B1001_0100 ' 3
DATA &B0110_0100 ' 4
DATA &B0000_1000 ' 5
DATA &B0000_1000 ' 6
DATA &B0001_0000 ' 7
DATA &B0001_0000 ' 8
DATA &B0001_0000 ' 9
DATA &B0010_0000 ' 10
DATA &B0010_0000 ' 11
DATA &B0100_1100 ' 12
DATA &B0101_0010 ' 13
DATA &B1001_0010 ' 14
DATA &B1000_1100 ' 15
DATA &B0000_0000 ' 16
' Байтов:16


'Пробел для стирания
DATA &B0000_0000 ' 1
DATA &B0000_0000 ' 2
DATA &B0000_0000 ' 3
DATA &B0000_0000 ' 4
DATA &B0000_0000 ' 5
DATA &B0000_0000 ' 6
DATA &B0000_0000 ' 7
DATA &B0000_0000 ' 8
DATA &B0000_0000 ' 9
DATA &B0000_0000 ' 10
DATA &B0000_0000 ' 11
DATA &B0000_0000 ' 12
DATA &B0000_0000 ' 13
DATA &B0000_0000 ' 14
DATA &B0000_0000 ' 15
DATA &B0000_0000 ' 16

'точка
DATA &B00_000000 ' 1
DATA &B00_000000 ' 2
DATA &B00_000000 ' 3
DATA &B00_000000 ' 4
DATA &B00_000000 ' 5
DATA &B00_000000 ' 6
DATA &B00_000000 ' 7
DATA &B00_000000 ' 8
DATA &B00_000000 ' 9
DATA &B00_000000 ' 10
DATA &B00_000000 ' 11
DATA &B00_000000 ' 12
DATA &B00_000111 ' 13
DATA &B00_000111 ' 14
DATA &B00_000111 ' 15
DATA &B00_000000 ' 16
' Байтов:16



'эзапятая
DATA &B00_000000 ' 1
Data &B00_000000                                            ' 2
Data &B00_000000                                            ' 3
Data &B00_000000                                            ' 4
Data &B00_000000                                            ' 5
Data &B00_000000                                            ' 6
Data &B00_000000                                            ' 7
DATA &B00_000000 ' 8
Data &B00_000000                                            ' 9
DATA &B00_000000 ' 10
Data &B00_000000                                            ' 11
DATA &B00_000000 ' 12
Data &B00_000111                                            ' 13
DATA &B00_000111 ' 14
Data &B00_000011                                            ' 15
Data &B00_000100                                            ' 16
' Байтов:16

0

58

В ВК выложил видео, пока в процессе созидания. Код выше использован как графическое ядро.
Жаль датчик атмосферного давления быстро не успел подружить, но уже вот результат:
https://vk.com/video5082961_456240815

Плавный переход между режимами через регулятор яркости в основе аппаратного ШИМ, еле развёртку согласовал.

Код:
$Regfile="m328pbdef.dat"
$Crystal=14745600
$hwstack = 96
$swstack = 120
$framesize = 120
Config Single = Scientific , Digits = 1

'============================= ШИМ яркости
'таймер OC1B Portb.2
Config Timer1 = Pwm ,Pwm = 8,Compare B Pwm = Clear up ,Prescale = 64
Config PORTb.2 = Output 'выход на порт регистра OC1B
Pwm1b = lowled
Start Timer1

'======================== Таймер развёртки
Config Timer2 = Timer , Prescale = 256                    'Запускаем таймер, он будет рисовать одну строку из четырёх
On Timer2 Graf
Enable Timer2

0

59

"Страница доступна только авторизованным пользователям." :dontknow:

0

60

ага

0


Вы здесь » Программирование ATMEL в BASCOM. » Дисплеи и индикация » Led матрица 32*16 для бегущей строки