| 
| marss70 | Дата: Среда, 14.05.2014, 21:30 | Сообщение # 1 |  | Группа: Проверенные Сообщений: 80 
 Статус: Offline | Привет! Кто подскажет, как соединить два и более MAX7219 для вывода инфы длиной более 8-ми знаков? Вот рабочий код для индикатора из 8 знаков. В приложении исходник и Протеус. $regfile = "m8def.dat"
 $crystal = 8000000
 $hwstack = 40
 $swstack = 16
 $framesize = 32
 
 Config Portd = Output
 
 Cs Alias Portd.6
 Ser_clk Alias Portd.7
 Ser_data Alias Portd.5
 
 Config Portc.5 = Output
 Led Alias Portc.5
 
 Dim A As Word
 Dim B As Word
 Dim Digit(8)as Byte
 Dim Y As Byte
 Dim Yy As Byte
 Dim Disp_num As Byte
 Dim Disp_data As Byte
 Dim Digit_str As String * 16
 Dim Temp_str As String * 16
 Gosub Max7219_setup
 
 Do
 Toggle Led
 Digit_str = "12345678"                                      'ñòðîêà êîòîðóþ âûâåäåì íà äèñïëåé
 Gosub Prepare                                               'âûçûâàåì ïîäïðîãðàììó ïîäãîòîâêè è îòïðàâêè äàííûõ
 'âûçûâàåì ïîäïðîãðàììó ïîäãîòîâêè è îòïðàâêè äàííûõ
 Waitms 10
 Loop
 
 End
 'Ïîäãîòîâêà äàííûõ äëÿ ïåðåäà÷è
 Prepare:
 
 For Y = 1 To 8
 Temp_str = Mid(digit_str , Y , 1)
 Select Case Temp_str
 Case "0" : Temp_str = "126"                           '&b01111110
 Case "1" : Temp_str = "48"                            '&b00110000
 Case "2" : Temp_str = "109"                           '&b01101101
 Case "3" : Temp_str = "121"                           '&b01111001
 Case "4" : Temp_str = "51"                            '&b00110011
 Case "5" : Temp_str = "91"                            '&b01011011
 Case "6" : Temp_str = "95"                            '&b01011111
 Case "7" : Temp_str = "112"                           '&b01110000
 Case "8" : Temp_str = "127"                           '&b01111111
 Case "9" : Temp_str = "123"                           '&b01111011
 Case "." : Temp_str = "128"                           '&b10000000
 'ìîæíî è ñàìîñòîÿòåëüíî ââåñòè íóæíûå ñèìâîëû
 Case "A" : Temp_str = "119"                           '&b01110111
 Case "B" : Temp_str = "127"                           '&b01001110
 Case "C" : Temp_str = "78"                            '&b01001110
 Case "D" : Temp_str = "254"                           '&b01001110
 Case "E" : Temp_str = "79"                            '&b01001111
 Case "F" : Temp_str = "71"                            '&b01110111
 Case "G" : Temp_str = "94"                            '&b01011110
 Case "H" : Temp_str = "55"                            '&b00000000
 Case "J" : Temp_str = "56"                            '&b00111101
 Case "L" : Temp_str = "14"                            '&b01011110
 Case "Z" : Temp_str = "73"                            '&b00000000
 Case "O" : Temp_str = "126"                           '&b00111101
 Case "P" : Temp_str = "103"                           '&b00111101
 Case "Q" : Temp_str = "254"                           '&b00111101
 Case "S" : Temp_str = "91"                            '&b00000000
 Case "Y" : Temp_str = "59"                            '&b00000000
 Case "o" : Temp_str = "29"                            '&b00011101
 Case "d" : Temp_str = "61"                            '&b00111101
 Case " " : Temp_str = "0"                             '&b00000000
 Case "q" : Temp_str = "115"                           '&b01001110
 Case "p" : Temp_str = "103"                           '&b01001111
 Case "n" : Temp_str = "21"                            '&b00011101
 Case "b" : Temp_str = "31"                            '&b00111101
 Case "t" : Temp_str = "15"                            '&b00111101
 Case "r" : Temp_str = "5"                             '&b00000000
 Case "o" : Temp_str = "29"                            '&b00000000
 Case "u" : Temp_str = "28"                            '&b00000000
 Case "=" : Temp_str = "9"
 Case "*" : Temp_str = "0"                             '&b00000000
 'è òàê äàëåå...
 End Select
 Digit(y) = Val(temp_str)
 
 'Disp_num = Y                                          'çíàêîìåñòî (ðàçðÿä) íà êîòîðûé âûâîäèì òåêóùóþ öèôðó
 
 Select Case Y
 Case 1 : Disp_num = 8
 Case 2 : Disp_num = 7
 Case 3 : Disp_num = 6
 Case 4 : Disp_num = 5
 Case 5 : Disp_num = 4
 Case 6 : Disp_num = 3
 Case 7 : Disp_num = 2
 Case 8 : Disp_num = 1
 End Select
 
 Disp_data = Digit(y)                                  'äàííûå êîòîðûå îòïðàâëÿåì íà âûáðàííûé ðàçðÿä
 Gosub Disp_write
 Next Y
 'êîãäà âûâåëè äàííûå íà âñå 4 ðàçðÿäà âîçâðàùàåìñÿ â ãëàâíûé öèêë
 Return
 
 'Ïåðåäàåì äàííûå â max7221
 Disp_write:
 Ser_data = 0
 Ser_clk = 0
 Cs = 0
 Shiftout Ser_data , Ser_clk , Disp_num , 1                  'îòïðàâëÿåì íîìåð ðàçðÿäà
 Shiftout Ser_data , Ser_clk , Disp_data , 1                 'îòïðàâëÿåì äàííûå â ýòîò ðàçðÿä
 Cs = 1
 
 Return
 
 'èíèöèàëèçàöèè max7221
 Max7219_setup:
 Waitms 300
 Disp_num = &H0C : Disp_data = 0                             'ðåæèì Shutdown (0-âêëþ÷åí, 1-âûêëþ÷åí)
 Gosub Disp_write
 Disp_num = &H09 : Disp_data = 0                             'ðåæèì ïðÿìîãî óïðàâëåíèÿ ñåãìåíòàìè èíäèêàòîðà
 Gosub Disp_write
 Disp_num = &H0A : Disp_data = 10                            'óðîâåíü ñâå÷åíèÿ ñåãìåíòîâ (0-ìèíèìóì, 15-ìàêñèìóì)
 Gosub Disp_write
 Disp_num = &H0B : Disp_data = 15                            '÷èñëî èñïîëüçóåìûõ ðàçðÿäîâ (ñ÷åò îò 0)
 Gosub Disp_write
 Disp_num = &H0F : Disp_data = 0                             'òåñòîâûé ðåæèì âûêëþ÷åí (0-âûêëþ÷åí, 1-âêëþ÷åí)
 Gosub Disp_write
 Disp_num = &H0C : Disp_data = 1
 Gosub Disp_write
 Return
 Прикрепления: 
						__.rar
							(47.5 Kb)
 
 
 
 Сообщение отредактировал marss70 - Среда, 14.05.2014, 21:31 |  
 |  |  |  | 
| 
| max | Дата: Среда, 14.05.2014, 21:46 | Сообщение # 2 |  |   Группа: Друзья Сообщений: 170 
 Статус: Offline | Тебе сюда. 
 
 |  
 |  |  |  | 
| 
| marss70 | Дата: Среда, 14.05.2014, 22:16 | Сообщение # 3 |  | Группа: Проверенные Сообщений: 80 
 Статус: Offline | Это я видел. Я ничего не понял(. 
 
 |  
 |  |  |  | 
| 
| marss70 | Дата: Пятница, 16.05.2014, 00:17 | Сообщение # 4 |  | Группа: Проверенные Сообщений: 80 
 Статус: Offline |  Вопрос закрыт. Всё в архиве. 
 
 
 
 Сообщение отредактировал marss70 - Пятница, 16.05.2014, 00:19 |  
 |  |  |  |