' SET_DEFAULTS PROTON_4 Device= 16F876A XTAL =20 TRISC=%00000000 PORTC=$00 TRISB=%11111111 Symbol nokia_SDA_ = PORTC.3 Symbol nokia_SCL_ = PORTC.4 Symbol nokia_res_ = PORTC.5 Symbol nokia_d_c = PORTC.2 Dim nokia_data As Byte Dim nokia_simvol As Byte ' пересенная символа Dim nokia_bit As nokia_data.7 Dim nokia_cursor_x As Byte ' положение курсора в строке от 0 до 84 Dim nokia_cursor_y As Byte ' положение курсора от 0 до 5 строки Dim nokia_byte_font As Byte 'столбец символа Dim nokia_yy[10] As Word Dim b_nokia As Byte Dim ddram As Word Dim inversia_ As Byte ' установка инверсии inversia_=0 Symbol SET_func=$21 Symbol set_vop=$c8 ' Symbol bias=$13 Symbol horiz=$20 Symbol all_seg_on=$09 Symbol all_seg_off=$08 Symbol seg_norm=$0c Dim st As Byte Dim data_xxx As Word Dim data_xx As DWord Dim data_x As Byte Dim yy As Byte ' размер символа по вертикали с строках Dim xx As Byte ' размер символа по горизонтали в знакоместах Dim ssss As Byte Dim f As Byte Dim a_y As Byte Dim a_x As Byte start: nokia_SCL_=0 DelayMS 1 nokia_SDA_=1 DelayMS 1 nokia_d_c =0 DelayMS 1 nokia_res_=0 DelayMS 200 nokia_res_=1 DelayMS 200 GoSub nokia_init DelayMS 100 GoSub nokia_clear_ram start1: xx=1 nokia_cursor_x=2 : nokia_cursor_y=2 GoSub nokia_cursor_xy nokia_simvol="X" GoSub preobraz_y_x xx=2 nokia_cursor_x=12 : nokia_cursor_y=2 GoSub nokia_cursor_xy nokia_simvol="K" GoSub preobraz_y_x xx=3 nokia_cursor_x=27 : nokia_cursor_y=2 GoSub nokia_cursor_xy nokia_simvol="F" GoSub preobraz_y_x xx=4 nokia_cursor_x=52 : nokia_cursor_y=2 GoSub nokia_cursor_xy nokia_simvol="S" GoSub preobraz_y_x DelayMS 2000 GoSub nokia_clear_ram GoTo start1 nokia_init: DelayMS 200 nokia_data=SET_func GoSub nokia_write_comm nokia_data=set_vop GoSub nokia_write_comm nokia_data=$06 GoSub nokia_write_comm nokia_data=bias GoSub nokia_write_comm nokia_data=$45 GoSub nokia_write_comm nokia_data=horiz GoSub nokia_write_comm nokia_data=all_seg_on GoSub nokia_write_comm GoSub nokia_clear_ram nokia_data=all_seg_off GoSub nokia_write_comm nokia_data=seg_norm GoSub nokia_write_comm nokia_cursor_x=0 nokia_cursor_y=0 GoSub nokia_cursor_xy DelayMS 1 Return nokia_cursor_xy: nokia_data=$40| (nokia_cursor_y & $07) GoSub nokia_write_comm nokia_data=$80 | (nokia_cursor_x & $7f) GoSub nokia_write_comm Return nokia_clear_ram: nokia_cursor_x= 0 nokia_cursor_y= 0 GoSub nokia_cursor_xy For ddram=0 To 503 nokia_data=0 GoSub nokia_write_data Next Return nokia_write_data: nokia_d_c=1 GoSub nokia_cl_data Return nokia_write_comm: nokia_d_c=0 GoSub nokia_cl_data Return nokia_cl_data: For b_nokia=0 To 7 nokia_SCL_=0 nokia_SDA_=nokia_bit nokia_SCL_=1 nokia_data=nokia_data<<1 Next Return preobraz_y_x: For nokia_byte_font=0 To 4 ' цикл считывания байтов символа из таблицы font5_7 5 байтов на символ nokia_data = CRead font5_7+ (nokia_simvol - 32)*5 + nokia_byte_font ' само считывание с учетом смещения ' на 32 , так как в таблице отсутствуют 31 невидимых на экране символов data_x=nokia_data ' переносим во временную пересенную символа data_xx=$0000 ' обнуляем выходную переменную если не зделать то вылезут хвосты предыдущего символа ' если установлена высота силвола более 1 строки , то ' преобразование происходит так: ' из переменной символа ( data_x ) берём младший бит (data_x.0) ' и переносим в самый старший бит (data_xx.31 ) ' в переменную размером в два слова ( data_xx ) , ' так как каждый байт этой переменной ( data_xx ) ' хранит часть символа высотой в одну строку, ' и смещаем вправо один раз (data_xx=data_xx>>1 ) ' опять берём младший бит из переменной символа ( data_x.0 ) ' и переносим в самый старший бит (data_xx.31 ) ' делаем это столько во сколько мы хотим увеличить символ For ssss=0 To 6 ' от 0 до 6 я взял так как символ состоит из 7 бит в высоту For st=1 To 3 ' здесь цикл увеличения в размере в YY раз data_xx.31 =data_x.0 ' переносим data_xx=data_xx>>1 ' и сдвигаем Next data_x=data_x>>1 Next data_xx=data_xx>>8 For st=1 To xx nokia_data =data_xx.BYTE0 GoSub nokia_write_data Next nokia_cursor_y=nokia_cursor_y + 1 ' корректируем переменную Y GoSub nokia_cursor_xy For st=1 To xx nokia_data =data_xx.BYTE1 GoSub nokia_write_data Next nokia_cursor_y=nokia_cursor_y + 1 ' корректируем переменную Y GoSub nokia_cursor_xy For st=1 To xx nokia_data =data_xx.BYTE2 GoSub nokia_write_data Next nokia_cursor_y=nokia_cursor_y -2 nokia_cursor_x=nokia_cursor_x +xx GoSub nokia_cursor_xy Next Return font5_7: CData $00, $00, $00, $00, $00 '20 space CData $00, $00, $5F, $00, $00 '21 ! CData $00, $07, $00, $07, $00 '22 " CData $14, $7F, $14, $7F, $14 '23 # CData $24, $2A, $7F, $2A, $12 '24 $ CData $23, $13, $08, $64, $62 '25 % CData $36, $49, $55, $22, $50 '26 & CData $00, $05, $03, $00, $00 '27 ' CData $00, $1C, $22, $41, $00 '28 ( CData $00, $41, $22, $1C, $00 '29 ) CData $14, $08, $3E, $08, $14 '2a * CData $08, $08, $3E, $08, $08 '2b + CData $00, $50, $30, $00, $00 '2c , CData $08, $08, $08, $08, $08 '2d - CData $00, $60, $60, $00, $00 '2e . CData $20, $10, $08, $04, $02 '2f / CData $3E, $41, $41, $41, $3E '30 0 CData $00, $42, $7F, $40, $00 '31 1 CData $42, $61, $51, $49, $46 '32 2 CData $22, $41, $49, $49, $36 '33 3 CData $18, $14, $12, $7F, $10 '34 4 CData $27, $45, $45, $45, $39 '35 5 CData $3e, $49, $49, $49, $32 '36 6 CData $01, $71, $09, $05, $03 '37 7 CData $36, $49, $49, $49, $36 '38 8 CData $06, $49, $49, $29, $1E '39 9 CData $00, $36, $36, $00, $00 '3a : CData $00, $56, $36, $00, $00 '3b ; CData $08, $14, $22, $41, $00 '3c < CData $14, $14, $14, $14, $14 '3d = CData $00, $41, $22, $14, $08 '3e > CData $02, $01, $51, $09, $06 '3f ? CData $06, $06, $06, $06, $06 '40 @ CData $7E, $11, $11, $11, $7E '41 a CData $7F, $49, $49, $49, $36 '42 b CData $3E, $41, $41, $41, $22 '43 C CData $7F, $41, $41, $22, $1C '44 D CData $7F, $49, $49, $49, $41 '45 E CData $7F, $09, $09, $09, $01 '46 F CData $3E, $41, $49, $49, $7A '47 G CData $7F, $08, $08, $08, $7F '48 H CData $00, $41, $7F, $41, $00 '49 I CData $20, $40, $41, $3F, $01 '4a J CData $7F, $08, $14, $22, $41 '4b K CData $7F, $40, $40, $40, $40 '4c L CData $7F, $02, $0C, $02, $7F '4d M CData $7F, $04, $08, $10, $7F '4e N CData $3E, $41, $41, $41, $3E '4f O CData $7F, $09, $09, $09, $06 '50 P CData $3E, $41, $51, $21, $5E '51 Q CData $7F, $09, $19, $29, $46 '52 r CData $46, $49, $49, $49, $31 '53 s CData $01, $01, $7F, $01, $01 '54 T CData $3F, $40, $40, $40, $3F '55 U CData $1F, $20, $40, $20, $1F '56 V CData $3F, $40, $38, $40, $3F '57 W CData $63, $14, $08, $14, $63 '58 x CData $07, $08, $70, $08, $07 '59 y CData $61, $51, $49, $45, $43 '5a Z CData $00, $7F, $41, $41, $00 '5b [ CData $02, $04, $08, $10, $20 '5c Yen Currency Sign CData $00, $41, $41, $7F, $00 '5d ] CData $04, $02, $01, $02, $04 '5e ^ CData $40, $40, $40, $40, $40 '5f _ CData $00, $07, $05, $07, $00 '60 ` CData $20, $54, $54, $54, $78 '61 a CData $7F, $48, $44, $44, $38 '62 b CData $38, $44, $44, $44, $28 '63 c CData $38, $44, $44, $44, $28 '64 d CData $38, $54, $54, $54, $18 '65 e CData $08, $7E, $09, $01, $02 '66 f CData $0C, $52, $52, $52, $3E '67 g CData $7F, $08, $04, $04, $78 '68 h CData $00, $44, $7D, $40, $00 '69 i CData $20, $40, $44, $3D, $00 '6a j CData $7c, $10, $28, $44, $00 '6b k CData $00, $41, $7F, $40, $00 '6c l CData $7C, $04, $18, $04, $78 '6d m CData $7C, $08, $04, $04, $78 '6e n CData $38, $44, $44, $44, $38 '6f o CData $7C, $14, $14, $14, $08 '70 p CData $08, $14, $14, $18, $7C '71 q CData $7C, $08, $04, $04, $08 '72 r CData $48, $54, $54, $54, $20 '73 s CData $04, $3F, $44, $40, $20 '74 t CData $3C, $40, $40, $20, $7C '75 u CData $1C, $20, $40, $20, $1C '76 v CData $3C, $40, $30, $40, $3C '77 w CData $44, $28, $10, $28, $44 '78 x CData $0C, $50, $50, $50, $3C '79 y CData $44, $64, $54, $4C, $44 '7a z CData $00, $08, $36, $41, $00 '7b < CData $00, $00, $7F, $00, $00 '7c | CData $00, $41, $36, $08, $00 '7d > CData $10, $08, $08, $10, $08 '7e Right Arrow -> CData $78, $46, $41, $46, $78 '7f Left Arrow <- CData $7E, $11, $11, $11, $7E '80 А C0 CData $7F, $49, $49, $49, $31 '81 Б C1 CData $7F, $49, $49, $49, $36 '82 В C2 CData $7F, $01, $01, $01, $03 '83 Г C3 CData $70, $29, $27, $21, $7F '84 Д C4 CData $7F, $49, $49, $49, $41 '85 Е C5 CData $77, $08, $7F, $08, $77 '86 Ж C6 CData $41, $41, $41, $49, $76 '87 З C7 CData $7F, $10, $08, $04, $7F '88 И C8 CData $7F, $10, $09, $04, $7F '89 Й C9 CData $7F, $08, $14, $22, $41 '8A К CA CData $20, $41, $3F, $01, $7F '8B Л CB CData $7F, $02, $0C, $02, $7F '8C М CC CData $7F, $08, $08, $08, $7F '8D Н CD CData $3E, $41, $41, $41, $3E '8E О CE CData $7F, $01, $01, $01, $7F '8F П CF CData $7F, $09, $09, $09, $06 '90 Р D0 CData $3E, $41, $41, $41, $22 '91 С D1 CData $01, $01, $7F, $01, $01 '92 Т D2 CData $47, $28, $10, $08, $07 '93 У D3 CData $1E, $21, $7F, $21, $1E '94 Ф D4 CData $63, $14, $08, $14, $63 '95 Х D5 CData $3F, $20, $20, $20, $5F '96 Ц D6 CData $07, $08, $08, $08, $7F '97 Ч D7 CData $7F, $40, $7F, $40, $7F '98 Ш D8 CData $3F, $20, $3F, $20, $5F '99 Щ D9 CData $01, $7F, $48, $48, $30 '9A Ъ DA CData $7F, $48, $30, $00, $7F '9B Ы DB CData $00, $7F, $48, $48, $30 '9C Ь DC CData $41, $41, $41, $49, $3E '9D Э DD CData $7F, $08, $3E, $41, $3E '9E Ю DE CData $46, $29, $19, $09, $7F '9F Я DF CData $20, $54, $54, $54, $78 'A0 а E0 CData $3C, $4A, $4A, $49, $31 'a1 б E1 CData $7C, $54, $54, $28, $00 'A2 в E2 CData $7C, $04, $04, $04, $0C 'A3 г E3 CData $72, $52, $52, $52, $7E 'A4 д E4 CData $38, $54, $54, $54, $18 'A5 е E5 CData $6C, $10, $7C, $10, $6C 'A6 ж E6 CData $44, $44, $54, $54, $38 'A7 з E7 CData $7C, $20, $10, $08, $7C 'A8 и E8 CData $7C, $21, $12, $09, $7C 'A9 й E9 CData $7C, $10, $28, $44, $00 'AA к EA CData $20, $44, $3C, $04, $7C 'AB л EB CData $7C, $08, $10, $08, $7C 'AC м EC CData $7C, $10, $10, $10, $7C 'AD н ED CData $38, $44, $44, $44, $38 'AE о EE CData $7C, $04, $04, $04, $7C 'AF п EF CData $7C, $14, $14, $14, $08 'B0 р F0 CData $38, $44, $44, $44, $20 'B1 с F1 CData $04, $04, $7C, $04, $04 'B2 т F2 CData $44, $28, $10, $08, $04 'B3 у F3 CData $08, $14, $7E, $14, $08 'B4 ф F4 CData $44, $28, $10, $28, $44 'B5 х F5 CData $3C, $40, $40, $7C, $40 'B6 ц F6 CData $0C, $10, $10, $10, $7C 'B7 ч F7 CData $7C, $40, $7C, $40, $7C 'B8 ш F8 CData $3C, $20, $3C, $20, $7C 'B9 щ F9 CData $04, $7C, $50, $50, $20 'BA ъ FA CData $7C, $50, $20, $00, $7C 'BB ы FB CData $00, $7C, $50, $50, $20 'bc ь FC CData $28, $44, $44, $54, $38 'BD э FD CData $7C, $10, $38, $44, $38 'BE ю FE CData $48, $54, $34, $14, $7C 'BF я FF