Всем привет!
Купил себе такой дисплей http://imall.iteadstudio.com/display/tf … 19005.html
Месяц запрягал(руки не доходили) и за одну ночь прорвало.
$regfile = "m1280def.dat"
$crystal = 8000000
$hwstack = 56
$swstack = 32
$framesize = 48
$baud = 9600
'/* LCD color */
Const White = &HFFFF
Const Black = &H0000
Const Blue = &H001F
Const Blue2 = &H051F
Const Red = &HF800
Const Magenta = &HF81F
Const Green = &H07E0
Const Cyan = &H7FFF
Const Yellow = &HFFE0
Const X_const = 240
Const Y_const = 320
Rs Alias Portd.7
Wr Alias Portg.2
Cs Alias Portg.1
Rst Alias Portg.0
Declare Sub Write_command(byval Cmd As Word)
Declare Sub Write_data(byval Ldata As Word)
Declare Sub Write_command_data(byval Cmd As Word , Byval Ldata As Word)
Declare Sub Lcd_init()
'Declare Sub Set_xy(byval X0 As Word , Byval Y0 As Word , Byval X1 As Word , Byval Y1 As Word)
Declare Sub Set_xy()
Declare Sub Pant(byval Color As Word)
Declare Sub Lcd_clear()
Declare Sub Touch_init()
Declare Sub Touch_writedata(byval Ldata As Byte)
Declare Sub Touch_readdata()
Declare Sub Touch_read()
Dim W As Word
Dim X0 As Word , X1 As Word , Y0 As Word , Y1 As Word
Lcd_init
Waitms 50
Lcd_clear
Call Pant(&Hffff)
Call Pant(&H0000)
Wait 1
Call Pant(&Hf800)
Call Pant(&H07e0)
Call Pant(&H001f)
Call Pant(&Hffff)
Wait 1
Call Pant(cyan)
Do
Loop
'===============================================================================
Sub Write_command(byval Cmd As Word)
Cs = 0
Rs = 0
Porta = High(cmd)
Portc = Low(cmd)
Wr = 0
Waitus 3
Wr = 1
Cs = 1
End Sub
Sub Write_data(byval Ldata As Word)
Cs = 0
Rs = 1
Porta = High(ldata)
Portc = Low(ldata)
Wr = 0
Waitus 3
Wr = 1
Cs = 1
End Sub
Sub Write_command_data(byval Cmd As Word , Byval Ldata As Word)
Call Write_command(cmd)
Call Write_data(ldata)
End Sub
Sub Lcd_init()
Config Rs = Output
Config Wr = Output
Config Cs = Output
Config Rst = Output
Ddra = $ff
Ddrc = $ff
Rst = 1
Waitms 15
Rst = 0
Waitms 15
Wr = 1
Cs = 1
Rst = 1
Waitms 20
Call Write_command_data(&H0000 , &H0001)
Call Write_command_data(&H0003 , &HA8A4)
Call Write_command_data(&H000c , &H0000)
Call Write_command_data(&H000d , &H080C)
Call Write_command_data(&H000e , &H2B00)
Call Write_command_data(&H001e , &H00B7)
Call Write_command_data(&H0001 , &H2B3F)
Call Write_command_data(&H0002 , &H0600)
Call Write_command_data(&H0010 , &H0000)
Call Write_command_data(&H0011 , &H6070)
Call Write_command_data(&H0005 , &H0000)
Call Write_command_data(&H0006 , &H0000)
Call Write_command_data(&H0016 , &HEF1C)
Call Write_command_data(&H0017 , &H0003)
Call Write_command_data(&H0007 , &H0233)
Call Write_command_data(&H000b , &H0000)
Call Write_command_data(&H000f , &H0000)
Call Write_command_data(&H0041 , &H0000)
Call Write_command_data(&H0042 , &H0000)
Call Write_command_data(&H0048 , &H0000)
Call Write_command_data(&H0049 , &H013F)
Call Write_command_data(&H004a , &H0000)
Call Write_command_data(&H004b , &H0000)
Call Write_command_data(&H0044 , &HEF00)
Call Write_command_data(&H0045 , &H0000)
Call Write_command_data(&H0046 , &H013F)
Call Write_command_data(&H0030 , &H0707)
Call Write_command_data(&H0031 , &H0204)
Call Write_command_data(&H0032 , &H0204)
Call Write_command_data(&H0033 , &H0502)
Call Write_command_data(&H0034 , &H0507)
Call Write_command_data(&H0035 , &H0204)
Call Write_command_data(&H0036 , &H0204)
Call Write_command_data(&H0037 , &H0502)
Call Write_command_data(&H003a , &H0302)
Call Write_command_data(&H003b , &H0302)
Call Write_command_data(&H0023 , &H0000)
Call Write_command_data(&H0024 , &H0000)
Call Write_command_data(&H0025 , &H8000)
Call Write_command_data(&H004f , &H0000)
Call Write_command_data(&H004e , &H0000)
Call Write_command(&H0022)
End Sub
'Sub Set_xy(byval X0 As Word , Byval Y0 As Word , Byval X1 As Word , Byval Y1 As Word)
Sub Set_xy()
Local I As Word , J As Word
I = Low(x1)
Rotate I , Left , 8
J = I + X0
Call Write_command_data(&H0044 , J)
Call Write_command_data(&H0045 , Y0)
Call Write_command_data(&H0046 , Y1)
Call Write_command_data(&H004e , X0)
Call Write_command_data(&H004f , Y0)
Call Write_command(&H0022)
End Sub
Sub Pant(byval Color As Word)
Local I As Word , J As Word
X0 = 0 : Y0 = 0 : X1 = 239 : Y1 = 319
Call Set_xy()
For I = 0 To 319
For J = 0 To 239
Call Write_data(color)
Next J
Next I
End Sub
Sub Lcd_clear()
Local I As Word , J As Word
X0 = 0 : Y0 = 0 : X1 = 239 : Y1 = 319
Call Set_xy()
For I = 0 To 319
For J = 0 To 239
Call Write_data(&H0000)
Next J
Next I
End Sub
Sub Touch_init()
End Sub
Sub Touch_writedata(byval Ldata As Byte)
End Sub
Sub Touch_readdata()
End Sub
Sub Touch_read()
End Sub
End 'end programЭто демка на основе кода с этой страницы(DC_IM120419005_ITDB02_3.2S.zip).
Планы большие, если интересно буду выкладывать здесь наработки.
P.S. Самое интересное что экран заполняется быстрее, чем в исходной программе.
Исправил неверную ссылку.
Модератор
Отредактировано Александр Д. (2012-08-29 14:31:37)


Очень интересная вещица