Uncle_Dizel |
Дата: Пт, 21.10.2011, 17:19 | Сообщение # 5 |
Группа:
Пользователи
Ранг:
Пытаюсь разобраться
Сообщений:
40
Замечания:
±
На сайте с 09.06.2011
Статус:
Offline
|
DC VAR PortB.6 DTA VAR PortB.5 RST VAR PortB.7 CLK VAR PortB.4 Chr VAR Byte BitMap VAR Word CharCount VAR Byte PosX VAR Byte PosY VAR Byte Column VAR Byte [6] LCDstr VAR Byte [26] LcdData VAR Byte PAUSE 100 GOSUB LCD_INIT PAUSE 100 GOSUB LCD_Clear Start: PosX=0:PosY=0:GOSUB LCD_GotoXY
FOR Chr=0 TO 13 LOOKUP Chr,["NOKIA LCD TEST"],BitMap LCDstr(Chr)=BitMap NEXT Chr GOSUB LCD_StringOut Loop: PAUSE 2000 LOW DC LcdData= %00001101:GOSUB LCD_ByteOut ' Invert PAUSE 2000 LcdData= %00001000:GOSUB LCD_ByteOut ' Blank PAUSE 2000 LcdData= %00001100:GOSUB LCD_ByteOut ' Normal GOTO loop LCD_Init:
LOW RST :pause 20 : HIGH RST : LOW DC ' RESET LCD LcdData= $21: GOSUB LCD_ByteOut ' LCD EXTENDED COMMANDS LcdData= $c8: GOSUB LCD_ByteOut ' SET LCD Vop (CONTRAST) LcdData= $06: GOSUB LCD_ByteOut ' SET TEMP COEFFICENT LcdData= $13: GOSUB LCD_ByteOut ' LCD BIAS MODE LcdData= $20: GOSUB LCD_ByteOut ' LCD STANDARD COMMANDS LcdData= $0c: GOSUB LCD_ByteOut ' LCD IN NORMAL MODE RETURN LCD_ByteOut: SHIFTOUT DTA,CLK,1,[LcdData] RETURN LCD_CharOut: IF lcddata=32 THEN BitMap=216 ' SPACE IF lcddata=42 THEN BitMap=240 ' * IF lcddata=43 THEN BitMap=222 ' + IF lcddata=45 THEN BitMap=228 ' - IF lcddata=46 THEN BitMap=234 ' . IF lcddata=58 THEN BitMap=246 ' : IF LCDData > 47 THEN ' Numbers 0-9 IF lcddata < 59 THEN BitMap=6*(lcddata-48)+156 ELSE ' Capital Letters A-Z BitMap=(LcdData-65) * 6 ENDIF ENDIF FOR Chr=0 TO 5 READ BitMap+Chr,Column(Chr) NEXT Chr HIGH DC SHIFTOUT DTA,CLK,1,[Column(0),Column(1),Column(2),Column(3),Column(4),Column(5)] RETURN LCD_StringOut: FOR CharCount=0 TO 13 LcdData=LCDstr(CharCount) PAUSE 80 GOSUB LCD_CharOut NEXT CharCount RETURN LCD_Clear: PosX=0:PosY=0:GOSUB LCD_GotoXY HIGH DC FOR Chr=1 TO 252 LcdData=0:GOSUB LCD_ByteOut LcdData=0:GOSUB LCD_ByteOut NEXT Chr RETURN LCD_GotoXY: LOW DC LcdData=%01000000 | PosY :GOSUB LCD_ByteOut LcdData=%10000000 | PosX :GOSUB LCD_ByteOut RETURN
'------------------------------------------------- ' Font DATA table '------------------------------------------------- ' DEC Chr HEX Data $7E,$11,$11,$11,$7E,$00 ' 65 A 41 Data $7F,$49,$49,$49,$36,$00 ' 66 B 42 Data $3E,$41,$41,$41,$22,$00 ' 67 C 43 Data $7F,$41,$41,$22,$1C,$00 ' 68 D 44 Data $7F,$49,$49,$49,$41,$00 ' 69 E 45 Data $7F,$09,$09,$09,$01,$00 ' 70 F 46 Data $3E,$41,$49,$49,$7A,$00 ' 71 G 47 Data $7F,$08,$08,$08,$7F,$00 ' 72 H 48 Data $00,$41,$7F,$41,$00,$00 ' 73 I 49 Data $20,$40,$41,$3F,$01,$00 ' 74 J 4A Data $7F,$08,$14,$22,$41,$00 ' 75 K 4B Data $7F,$40,$40,$40,$40,$00 ' 76 L 4C Data $7F,$02,$0C,$02,$7F,$00 ' 77 M 4D Data $7F,$04,$08,$10,$7F,$00 ' 78 N 4E Data $3E,$41,$41,$41,$3E,$00 ' 79 O 4F Data $7F,$09,$09,$09,$06,$00 ' 80 P 50 Data $3E,$41,$51,$21,$5E,$00 ' 81 Q 51 Data $7F,$09,$19,$29,$46,$00 ' 82 R 52 Data $46,$49,$49,$49,$31,$00 ' 83 S 53 Data $01,$01,$7F,$01,$01,$00 ' 84 T 54 Data $3F,$40,$40,$40,$3F,$00 ' 85 U 55 Data $1F,$20,$40,$20,$1F,$00 ' 86 V 56 Data $3F,$40,$38,$40,$3F,$00 ' 87 W 57 Data $63,$14,$08,$14,$63,$00 ' 88 X 58 Data $07,$08,$70,$08,$07,$00 ' 89 Y 59 Data $61,$51,$49,$45,$43,$00 ' 90 Z 5A Data $3E,$51,$49,$45,$3E,$00 ' 48 0 30 Data $00,$42,$7F,$40,$00,$00 ' 49 1 31 Data $42,$61,$51,$49,$46,$00 ' 50 2 32 Data $21,$41,$45,$4B,$31,$00 ' 51 3 33 Data $18,$14,$12,$7F,$10,$00 ' 52 4 34 Data $27,$45,$45,$45,$39,$00 ' 53 5 35 Data $3C,$4A,$49,$49,$30,$00 ' 54 6 36 Data $01,$71,$09,$05,$03,$00 ' 55 7 37 Data $36,$49,$49,$49,$36,$00 ' 56 8 38 Data $06,$49,$49,$49,$3E,$00 ' 57 9 39 Data $00,$00,$00,$00,$00,$00 ' 32 20 Data $08,$08,$3E,$08,$08,$00 ' 43 + 2B Data $08,$08,$08,$08,$08,$00 ' 45 - 2D Data $00,$60,$60,$00,$00,$00 ' 46 . 2E Data $14,$08,$3E,$08,$14,$00 ' 42 * 2A Data $00,$36,$36,$00,$00,$00 ' 58 : 3AДобавлено (21.10.2011, 17.19.38) --------------------------------------------- если я все правильно понел, то это все работает так
Start: PosX=0:PosY=0:GOSUB LCD_GotoXY
FOR Chr=0 TO 13 LOOKUP Chr,["NOKIA LCD TEST"],BitMap Chr(0)....переменная BitMap(N)...LCDstr(0)=BitMap...записываем в массив значение BitMap( получается в кодировке ASCII тоесть ( N=78) LCDstr(Chr)=BitMap NEXT Chr GOSUB LCD_StringOut переходим
LCD_StringOut: FOR CharCount=0 TO 13 LcdData=LCDstr(CharCount) LcdData..присваиваем значение LCDstr(0) тоесть массив (0 адреса тоесть N=78) PAUSE 80 GOSUB LCD_CharOut NEXT CharCount RETURN
LCD_CharOut: IF lcddata=32 THEN BitMap=216 ' SPACE IF lcddata=42 THEN BitMap=240 ' * IF lcddata=43 THEN BitMap=222 ' + IF lcddata=45 THEN BitMap=228 ' - IF lcddata=46 THEN BitMap=234 ' . IF lcddata=58 THEN BitMap=246 ' : IF LCDData > 47 THEN ' Numbers 0-9 IF lcddata < 59 THEN BitMap=6*(lcddata-48)+156 ELSE ' Capital Letters A-Z BitMap=(LcdData-65) * 6 ENDIF ENDIF FOR Chr=0 TO 5 READ BitMap+Chr,Column(Chr) , тоесть у нас получаеться 78+0=78(значит считывает что лежит в 78 ячейки памяти и присваиваем Column(0), это так а как узнать что у нас лежит в 78 ячейки памети? NEXT Chr HIGH DC SHIFTOUT DTA,CLK,1,[Column(0),Column(1),Column(2),Column(3),Column(4),Column(5)] RETURN
|
|
|
|
Uncle_Dizel |
Дата: Чт, 01.12.2011, 18:13 | Сообщение # 14 |
Группа:
Пользователи
Ранг:
Пытаюсь разобраться
Сообщений:
40
Замечания:
±
На сайте с 09.06.2011
Статус:
Offline
|
Добавлено (01.12.2011, 18.13.43) --------------------------------------------- А проблема в следующем: при преобразовании значения, он преобразует его в "НЕХ", а "мне" нужно в "DEC", а это разные значения и в итоге, будет разный результат... Например: "1" в "DEC" она так и останется - "1" , а вот в "НЕХ" - $31 (пишу по памяти, могу ошибиться...)
если я правильно понел проблему можно просто написать подпрограмму в которой каждое значение символа в "НЕХ" присваивалось соответствующие значение в "DEC" if a=30(HEX) then b = 48(DEC) и так для чисел от (0..9)
...............................................DEC Chr HEX Data $3E,$51,$49,$45,$3E,$00 ' 48 0 30 Data $00,$42,$7F,$40,$00,$00 ' 49 1 31 Data $42,$61,$51,$49,$46,$00 ' 50 2 32 Data $21,$41,$45,$4B,$31,$00 ' 51 3 33 Data $18,$14,$12,$7F,$10,$00 ' 52 4 34 Data $27,$45,$45,$45,$39,$00 ' 53 5 35 Data $3C,$4A,$49,$49,$30,$00 ' 54 6 36 Data $01,$71,$09,$05,$03,$00 ' 55 7 37 Data $36,$49,$49,$49,$36,$00 ' 56 8 38 Data $06,$49,$49,$49,$3E,$00 ' 57 9 39
Сообщение отредактировал
Uncle_Dizel - Чт, 01.12.2011, 18:14
|
|
|
|