[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Подключение Atmega-8 к китайской светодиодной матрице P10
samegoДата: Воскресенье, 24.04.2016, 20:46 | Сообщение # 1
Группа: Проверенные
Сообщений: 1

Статус: Offline
Всем добрый день.
Собрал схему на Atmega-8 с двумя светодиодными китайскими матрицами P10 Red/Green.
При написание программы возникла одна проблема. При свечение изображения некоторые светодиоды, расположенные с теми которые светятся, немного подсвечиваются и иногда подмигивают (еле еле заметно).
В этом куске программы данные берутся из внешней памяти.
Может кто сможет подсказать где у меня ошибка. Сразу скажу - код возможно кривоват. Из него даже бегущую строку не сделать.

$map
$regfile = "m8def.dat"
$crystal = 12000000
$hwstack = 128
$swstack = 128
$framesize = 128
$baud = 9600

Config Portd = &B11000000 ' 6,7 port out
Config Portb = &B00001111 ' 0-3 port out
Config Portc = &B00000011 ' 0,1 port out

Sh Alias Portb.0
D_red Alias Portd.6
D_green Alias Portc.0
A_pos Alias Portb.2
B_pos Alias Portb.1
Port_write Alias Portd.7

Peredacha Alias Portc.1
Peredacha = 1

Config Int0 = Low Level
Config Portb.3 = Output
Portb.3 = 1
Tccr2 = &B01101100
Ocr2 = 1

$lib "mcsbyte.lbx"

Config Scl = Portc.5
Config Sda = Portc.4
Config I2cdelay = 1
I2cinit

Dim Temp As Byte , T As Byte , Y As Byte , R(128) As Byte , Temp2 As Byte
Dim Adres As Byte , Page As Byte , Page_read As Byte , Pause As Byte

Page = 164
Page_read = 165
Adres = 0
Pause = 100

Gosub Read_dannie

Do

Gosub Lpokaz

Loop

End

Loads_a:
I2cstart
I2cwbyte Page
I2cwbyte Adres
I2cstart
I2cwbyte Page_read

For T = 1 To 15
I2crbyte R(y) , Ack
lds R16 , {y}
inc R16
sts {y} , R16
Next T
I2crbyte R(y) , Nack

I2cstop
Return

Read_dannie:
Y = 1
For Temp = 1 To 8
Gosub Loads_a
Adres = Adres + 16
lds R16 , {y}
inc R16
sts {y} , R16
Next
Return

Lpokaz:
A_pos = 1 : B_pos = 1
T = 1 : Y = 32
Gosub Sbor
A_pos = 0 : B_pos = 0
T = 33 : Y = 64
Gosub Sbor
A_pos = 1 : B_pos = 0
T = 65 : Y = 96
Gosub Sbor
A_pos = 0 : B_pos = 1
T = 97 : Y = 128
Gosub Sbor
Return

Sbor:
For Temp = T To Y
Gosub Indikator
Next Temp

Port_write = 1
!NOP
!NOP
Port_write = 0
Return

Indikator:
Shiftout D_green , Sh , R(temp) , 0
'Shiftout D_red , Sh , R(temp) , 0
Waitus Pause
Return
Подсвечивающие светодиоды обведены на картинке красным цветом.

Прикрепления: 3408922.jpg (123.3 Kb)


 
exersizzeДата: Среда, 27.04.2016, 21:09 | Сообщение # 2
Группа: Администраторы
Сообщений: 723

Статус: Offline
samego, ну хз. По коду сказать сложно что-то. Попробуй включить светодиоды, в области где идет засвет, по отдельности. Возможно что сама матрица такие сюрпризы выкидывает.

 
  • Страница 1 из 1
  • 1
Поиск: