' in the name of god
$regfile = "M64def.dat"
$crystal = 10000000
$baud = 9600
$hwstack = 128 ' default use 32 for the hardware stack
$swstack = 128 ' default use 10 for the SW stack
$framesize = 256
$baud = 9600
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' '''''
Declare Sub Orb(ddr As Byte , Byval Bitnum As Byte) ' make output ddr.bitnum = output
Declare Sub Setb(port As Byte , Bitnum As Byte) ' make set port.bitnum = 1
Declare Sub Clrb(port As Byte , Bitnum As Byte) ' make reset port.bitnum = 0
Declare Function Rdb(pin As Byte , Bitnum As Byte)as Byte ' read pin of a port pin.bitnum
Declare Sub Tslcdoutins ' send a word instruction to lcd
Declare Sub Tslcdoutdata ' send a data instruction to lcd
'Declare Function Tslcdindata As Word ' read a word data from lcd
Declare Sub Tslcdinit ' initialization of lcd
Declare Sub Lcdfillcolor
Declare Sub Lcdfillcolor2
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' '''''
Dim Ins As Byte
Dim Dat As Word
Dim Dat1 As Byte
Dim Dat2 As Byte
Dim Var11 As Byte
Dim Omid As Word
Dim Counterarmin As Long
Dim Var1 As Word
Dim S As String * 4
Dim Lo As Byte
Dim Ff As Byte
Dim B As Byte
Dim A As Byte
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' '''''
'd.0 reset
'd.1 backlight
'd.2 rs *
'd.3 cs *
'd.4 rd *
'd.5 wr *
'd.6
'd.7
'porta=data
'b.0 chip select *imo
Config Portg = Output
Lcd_rst_port Alias Portg
Lcd_rst_ddr Alias Ddrg
Lcd_rst_pin Alias Ping
Lcd_rst_pin_num Alias 2
' rd pin declare
Lcd_rd_port Alias Porta
Lcd_rd_ddr Alias Ddra
Lcd_rd_pin Alias Pina
Lcd_rd_pin_num Alias 7
'wr pin declare
Lcd_wr_port Alias Porta
Lcd_wr_ddr Alias Ddra
Lcd_wr_pin Alias Pina
Lcd_wr_pin_num Alias 6
' rs pin declare
Lcd_rs_port Alias Porta
Lcd_rs_ddr Alias Ddra
Lcd_rs_pin Alias Pina
Lcd_rs_pin_num Alias 5
' cs pin declare
Lcd_cs_port Alias Porta
Lcd_cs_ddr Alias Ddra
Lcd_cs_pin Alias Pina
Lcd_cs_pin_num Alias 4
' lcd databus declare
Lcd_db_msb_port Alias Portd
Lcd_db_msb_ddr Alias Ddrd
Lcd_db_msb_pin Alias Pind
Lcd_db_lsb_port Alias Portc
Lcd_db_lsb_ddr Alias Ddrc
Lcd_db_lsb_pin Alias Pinc
' lcd global defines
'-------------------tucj screen
Ts_size_x Alias 240
Ts_size_y Alias 320
Ts_val_entry_mod Alias &H1030 '1030 bgr=1
'Ts_ins_gram_hor_ad Alias Ts_ins_gram_adx
'Ts_ins_gram_ver_ad Alias Ts_ins_gram_ady
'Ts_ins_hor_start_ad Alias Ts_ins_start_adx
'Ts_ins_hor_end_ad Alias Ts_ins_end_adx
'Ts_ins_ver_start_ad Alias Ts_ins_start_ady
'Ts_ins_ver_end_ad Alias Ts_ins_end_ady
'==============================regidter====== ===================================
Ts_ins_start_osc Alias &H0000
Ts_ins_driv_out_ctrl Alias &H0001
Ts_ins_driv_wav_ctrl Alias &H0002
Ts_ins_entry_mod Alias &H0003
Ts_ins_resize_ctrl Alias &H0004 'RESIZE CONTROL
Ts_ins_disp_ctrl1 Alias &H0007
Ts_ins_disp_ctrl2 Alias &H0008
Ts_ins_disp_ctrl3 Alias &H0009
Ts_ins_disp_ctrl4 Alias &H000A
Ts_ins_rgb_disp_if_ctrl1 Alias &H000C
Ts_ins_frm_marker_pos Alias &H000D
Ts_ins_rgb_disp_if_ctrl2 Alias &H000F
Ts_ins_pow_ctrl1 Alias &H0010
Ts_ins_pow_ctrl2 Alias &H0011
Ts_ins_pow_ctrl3 Alias &H0012
Ts_ins_pow_ctrl4 Alias &H0013
Ts_ins_gram_hor_ad Alias &H0020
Ts_ins_gram_ver_ad Alias &H0021
Ts_ins_rw_gram Alias &H0022
Ts_ins_pow_ctrl7 Alias &H0029
Ts_ins_frm_rate_col_ctrl Alias &H002B
Ts_ins_gamma_ctrl1 Alias &H0030
Ts_ins_gamma_ctrl2 Alias &H0031
Ts_ins_gamma_ctrl3 Alias &H0032
Ts_ins_gamma_ctrl4 Alias &H0035
Ts_ins_gamma_ctrl5 Alias &H0036
Ts_ins_gamma_ctrl6 Alias &H0037
Ts_ins_gamma_ctrl7 Alias &H0038
Ts_ins_gamma_ctrl8 Alias &H0039
Ts_ins_gamma_ctrl9 Alias &H003C
Ts_ins_gamma_ctrl10 Alias &H003D
Ts_ins_hor_start_ad Alias &H0050
Ts_ins_hor_end_ad Alias &H0051
Ts_ins_ver_start_ad Alias &H0052
Ts_ins_ver_end_ad Alias &H0053
Ts_ins_gate_scan_ctrl1 Alias &H0060
Ts_ins_gate_scan_ctrl2 Alias &H0061
Ts_ins_gate_scan_ctrl3 Alias &H006A
Ts_ins_part_img1_disp_pos Alias &H0080
Ts_ins_part_img1_start_ad Alias &H0081
Ts_ins_part_img1_end_ad Alias &H0082
Ts_ins_part_img2_disp_pos Alias &H0083
Ts_ins_part_img2_start_ad Alias &H0084
Ts_ins_part_img2_end_ad Alias &H0085
Ts_ins_panel_if_ctrl1 Alias &H0090
Ts_ins_panel_if_ctrl2 Alias &H0092
Ts_ins_panel_if_ctrl3 Alias &H0093
Ts_ins_panel_if_ctrl4 Alias &H0095
Ts_ins_panel_if_ctrl5 Alias &H0097
Ts_ins_panel_if_ctrl6 Alias &H0098
' lcd color code defines
Ts_col_red Alias &H001F
Ts_col_green Alias &H07E0
Ts_col_blue Alias &HF800
Ts_col_yellow Alias &H07FF
Ts_col_purple Alias &HF81F
Ts_col_black Alias &H0000
Ts_col_white Alias &HFFFF
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' '''''
' start program
Config Portb = Output
Config Portc = Output
Config Portd = Output
Config Porta = Output
Print "Initation..."
$include "Config_AVR-DOS.BAS"
$include "Config_MMC.bas" 'include mmc
Ff = Drivereset()
Ff = Driveinit()
$external Waitms
If Gbdriveerror <> 0 Then
Print "Error Config"
Print Gbdriveerror
End
End If
'include avr-dos
B = Initfilesystem(1) 'init file system
If B <> 0 Then Print "Error MMC"
'Do
'Toggle Porta
'Toggle Portc
'Toggle Portd
'Waitms 100
'Loop
Print "start"
Print "in the name of God"
Call Tslcdinit
'Call Lcdfillcolor
'Wait 5
'az to send data vardashtam vase afzayesh sorat
Ff = Freefile()
Open "omega.bmp" For Binary As #ff
'Print Lof(#ff) ; " length of file"
'Print Fileattr(#ff) ; " file mode" ' should be 32 for binary
Ins = Ts_ins_hor_start_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata 'start asres hor=0
Ins = Ts_ins_hor_end_ad : Call Tslcdoutins
Dat = &H00EF : Call Tslcdoutdata 'end adres hor=240 f0
Ins = Ts_ins_gram_hor_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_ver_start_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata 'start adrese vertical=0
Ins = Ts_ins_ver_end_ad : Call Tslcdoutins
Dat = &H0140 : Call Tslcdoutdata 'end adrese vertical=540(140hex)
Ins = Ts_ins_gram_ver_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_rw_gram : Call Tslcdoutins '*READ data FROM gram
Set Lcd_rs_port.lcd_rs_pin_num
For Omid = 1 To 70
Get #ff , B
Next
For Counterarmin = 1 To 76800
'76800=240*320
Get #ff , A
Get #ff , B
'----------------------
Reset Lcd_cs_port.lcd_cs_pin_num 'reset cs
'Set Lcd_rs_port.lcd_rs_pin_num 'set rs
'Var1 = Dat
'Shift Var1 , Right , 8
Lcd_db_msb_port = B 'Var1 'porta=var1
Lcd_db_lsb_port = A 'Dat
Reset Lcd_wr_port.lcd_wr_pin_num 'reset wr
Set Lcd_wr_port.lcd_wr_pin_num 'set wr
Set Lcd_cs_port.lcd_cs_pin_num
'-----------------------------
Next
Close #ff
Print "ok"
Wait 4
'---------------------------
End
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' '''''
Sub Tslcdoutdata 'write to internal gram
Reset Lcd_cs_port.lcd_cs_pin_num 'reset cs
Set Lcd_rs_port.lcd_rs_pin_num 'set rs
Var1 = Dat
Shift Var1 , Right , 8
Lcd_db_msb_port = Var1 'Var1 'porta=var1
Lcd_db_lsb_port = Dat 'Dat
Reset Lcd_wr_port.lcd_wr_pin_num 'reset wr
Set Lcd_wr_port.lcd_wr_pin_num 'set wr
Set Lcd_cs_port.lcd_cs_pin_num
End Sub
'***************************************** *
Sub Tslcdoutins 'write an index register
'Local Var1 As Word
Reset Lcd_cs_port.lcd_cs_pin_num 'reset cs
Reset Lcd_rs_port.lcd_rs_pin_num 'reset rs
Set Lcd_rd_port.lcd_rd_pin_num 'set rd
Var1 = Ins
Shift Var1 , Right , 8
Lcd_db_msb_port = Var1
Lcd_db_lsb_port = Ins
Reset Lcd_wr_port.lcd_wr_pin_num 'reset wr
Set Lcd_wr_port.lcd_wr_pin_num 'set wr
Set Lcd_cs_port.lcd_cs_pin_num
End Sub
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' '''''
Sub Tslcdinit
'Local Var1 As Byte
Var1 = 1
Shift Var1 , Left , Lcd_rst_pin_num
Lcd_rst_ddr = Lcd_rst_ddr Or Var1
Reset Lcd_rst_port.lcd_rst_pin_num
Waitms 50
Set Lcd_rst_port.lcd_rst_pin_num
Waitms 50
Waitms 100
Ins = &H00E3 : Call Tslcdoutins 'INDEX REGISTER(IR)
Dat = &H3008 : Call Tslcdoutdata 'set the internal vcore voltage
Ins = &H00EF : Call Tslcdoutins
Dat = &H1231 : Call Tslcdoutdata
Ins = Ts_ins_start_osc : Call Tslcdoutins 'drive code read page51
Dat = &H0001 : Call Tslcdoutdata
Waitms 50
Ins = Ts_ins_driv_out_ctrl : Call Tslcdoutins
Dat = &H0100 : Call Tslcdoutdata 'set SS, SM
Ins = Ts_ins_driv_wav_ctrl : Call Tslcdoutins
Dat = &H0700 : Call Tslcdoutdata 'set 1 line inversion
Ins = Ts_ins_entry_mod : Call Tslcdoutins 'H03 CODE REGISRTE FOR 8 BIT MODE
Dat = Ts_val_entry_mod : Call Tslcdoutdata 'H30 SELECT 8BIT CODE
Ins = Ts_ins_resize_ctrl : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata 'FOR CHANGE SIZE
Ins = Ts_ins_disp_ctrl2 : Call Tslcdoutins
Dat = &H0202 : Call Tslcdoutdata 'SAP=1/BT1=1/APE=1/AP1=1/AP0=1 PAGE64
Ins = Ts_ins_disp_ctrl3 : Call Tslcdoutins
Dat = &H000F : Call Tslcdoutdata
Ins = Ts_ins_disp_ctrl4 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_rgb_disp_if_ctrl1 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_frm_marker_pos : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_rgb_disp_if_ctrl2 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_pow_ctrl1 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_pow_ctrl2 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_pow_ctrl3 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_pow_ctrl4 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Waitms 200
Ins = Ts_ins_pow_ctrl1 : Call Tslcdoutins
Dat = &H17B0 : Call Tslcdoutdata
Ins = Ts_ins_pow_ctrl2 : Call Tslcdoutins
Dat = &H0137 : Call Tslcdoutdata
Waitms 50
Ins = Ts_ins_pow_ctrl3 : Call Tslcdoutins
Dat = &H013C : Call Tslcdoutdata
Waitms 50
Ins = Ts_ins_pow_ctrl4 : Call Tslcdoutins
Dat = &H1400 : Call Tslcdoutdata
Ins = Ts_ins_pow_ctrl7 : Call Tslcdoutins
Dat = &H0007 : Call Tslcdoutdata
Waitms 50
Ins = Ts_ins_gram_hor_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_gram_ver_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
'armin goft 5 taye avval ro 1 kardam lcd khoob shodeh
'baghish ro test nakardehaa
Ins = Ts_ins_gamma_ctrl1 : Call Tslcdoutins
Dat = &H0007 : Call Tslcdoutdata '007
Ins = Ts_ins_gamma_ctrl2 : Call Tslcdoutins
Dat = &H0504 : Call Tslcdoutdata '504
Ins = Ts_ins_gamma_ctrl3 : Call Tslcdoutins
Dat = &H0703 : Call Tslcdoutdata '703
Ins = Ts_ins_gamma_ctrl4 : Call Tslcdoutins
Dat = &H0002 : Call Tslcdoutdata '002
Ins = Ts_ins_gamma_ctrl5 : Call Tslcdoutins
Dat = &H0707 : Call Tslcdoutdata '707
Ins = Ts_ins_gamma_ctrl6 : Call Tslcdoutins
Dat = &H0406 : Call Tslcdoutdata '406
Ins = Ts_ins_gamma_ctrl7 : Call Tslcdoutins
Dat = &H0006 : Call Tslcdoutdata '006
Ins = Ts_ins_gamma_ctrl8 : Call Tslcdoutins
Dat = &H0404 : Call Tslcdoutdata '404
Ins = Ts_ins_gamma_ctrl9 : Call Tslcdoutins
Dat = &H0700 : Call Tslcdoutdata '700
Ins = Ts_ins_gamma_ctrl10 : Call Tslcdoutins
Dat = &H0A08 : Call Tslcdoutdata 'a08
Ins = Ts_ins_hor_start_ad : Call Tslcdoutins 'RAM SITING FOR SLECT PIC POSITION
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_hor_end_ad : Call Tslcdoutins
Dat = &H00EF : Call Tslcdoutdata 'END OF HOR ADRES=239
Ins = Ts_ins_ver_start_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_ver_end_ad : Call Tslcdoutins 'GRAM LINE2 SELECT(WE HAVE 320 LINE)
Dat = &H013F : Call Tslcdoutdata '319 END OF VER
Ins = Ts_ins_gate_scan_ctrl1 : Call Tslcdoutins
Dat = &H2700 : Call Tslcdoutdata
Ins = Ts_ins_gate_scan_ctrl2 : Call Tslcdoutins
Dat = &H0001 : Call Tslcdoutdata
Ins = Ts_ins_gate_scan_ctrl3 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_panel_if_ctrl1 : Call Tslcdoutins
Dat = &H0010 : Call Tslcdoutdata
Ins = Ts_ins_panel_if_ctrl2 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_panel_if_ctrl3 : Call Tslcdoutins
Dat = &H0003 : Call Tslcdoutdata
Ins = Ts_ins_panel_if_ctrl4 : Call Tslcdoutins
Dat = &H0110 : Call Tslcdoutdata
Ins = Ts_ins_panel_if_ctrl5 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_panel_if_ctrl6 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
'------------------------
Ins = Ts_ins_frm_rate_col_ctrl : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
'--------------------------------
Ins = Ts_ins_disp_ctrl1 : Call Tslcdoutins
Dat = &H0133 : Call Tslcdoutdata
End Sub
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' '''''
Sub Lcdfillcolor '**page 52
Local Counter11 As Long 'tabdeile counter1 be counter11
Ins = Ts_ins_hor_start_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata 'start asres hor=0
Ins = Ts_ins_hor_end_ad : Call Tslcdoutins
Dat = &H00EF : Call Tslcdoutdata 'end adres hor=240
Ins = Ts_ins_gram_hor_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_ver_start_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata 'start adrese vertical=0
Ins = Ts_ins_ver_end_ad : Call Tslcdoutins
Dat = &H013F : Call Tslcdoutdata 'end adrese vertical=540(140hex)
Ins = Ts_ins_gram_ver_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_rw_gram : Call Tslcdoutins '*READ data FROM gram
For Counter11 = 0 To 76800 '76800=240*320
Dat = Ts_col_blue : Call Tslcdoutdata
Next
End Sub
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' '''''
Sub Lcdfillcolor2 '**page 52
Local Counter11 As Long 'tabdeile counter1 be counter11
Ins = Ts_ins_hor_start_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata 'start asres hor=0
Ins = Ts_ins_hor_end_ad : Call Tslcdoutins
Dat = &H00EF : Call Tslcdoutdata 'end adres hor=240 f0
Ins = Ts_ins_gram_hor_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_ver_start_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata 'start adrese vertical=0
Ins = Ts_ins_ver_end_ad : Call Tslcdoutins
Dat = &H013F : Call Tslcdoutdata 'end adrese vertical=540(140hex)
Ins = Ts_ins_gram_ver_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_rw_gram : Call Tslcdoutins '*READ data FROM gram
Set Lcd_rs_port.lcd_rs_pin_num 'az to send data vardashtam vase afzayesh sorat
For Counter11 = 0 To 76800
'76800=240*320
Dat = Ts_col_red
'----------------------
Reset Lcd_cs_port.lcd_cs_pin_num 'reset cs
'Set Lcd_rs_port.lcd_rs_pin_num 'set rs
Var1 = Dat
Shift Var1 , Right , 8
Lcd_db_msb_port = Var1 'Var1 'porta=var1
Lcd_db_lsb_port = Dat 'Dat
Reset Lcd_wr_port.lcd_wr_pin_num 'reset wr
Set Lcd_wr_port.lcd_wr_pin_num 'set wr
Set Lcd_cs_port.lcd_cs_pin_num
'-----------------------------
Next
End Sub
$regfile = "M64def.dat"
$crystal = 10000000
$baud = 9600
$hwstack = 128 ' default use 32 for the hardware stack
$swstack = 128 ' default use 10 for the SW stack
$framesize = 256
$baud = 9600
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' '''''
Declare Sub Orb(ddr As Byte , Byval Bitnum As Byte) ' make output ddr.bitnum = output
Declare Sub Setb(port As Byte , Bitnum As Byte) ' make set port.bitnum = 1
Declare Sub Clrb(port As Byte , Bitnum As Byte) ' make reset port.bitnum = 0
Declare Function Rdb(pin As Byte , Bitnum As Byte)as Byte ' read pin of a port pin.bitnum
Declare Sub Tslcdoutins ' send a word instruction to lcd
Declare Sub Tslcdoutdata ' send a data instruction to lcd
'Declare Function Tslcdindata As Word ' read a word data from lcd
Declare Sub Tslcdinit ' initialization of lcd
Declare Sub Lcdfillcolor
Declare Sub Lcdfillcolor2
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' '''''
Dim Ins As Byte
Dim Dat As Word
Dim Dat1 As Byte
Dim Dat2 As Byte
Dim Var11 As Byte
Dim Omid As Word
Dim Counterarmin As Long
Dim Var1 As Word
Dim S As String * 4
Dim Lo As Byte
Dim Ff As Byte
Dim B As Byte
Dim A As Byte
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' '''''
'd.0 reset
'd.1 backlight
'd.2 rs *
'd.3 cs *
'd.4 rd *
'd.5 wr *
'd.6
'd.7
'porta=data
'b.0 chip select *imo
Config Portg = Output
Lcd_rst_port Alias Portg
Lcd_rst_ddr Alias Ddrg
Lcd_rst_pin Alias Ping
Lcd_rst_pin_num Alias 2
' rd pin declare
Lcd_rd_port Alias Porta
Lcd_rd_ddr Alias Ddra
Lcd_rd_pin Alias Pina
Lcd_rd_pin_num Alias 7
'wr pin declare
Lcd_wr_port Alias Porta
Lcd_wr_ddr Alias Ddra
Lcd_wr_pin Alias Pina
Lcd_wr_pin_num Alias 6
' rs pin declare
Lcd_rs_port Alias Porta
Lcd_rs_ddr Alias Ddra
Lcd_rs_pin Alias Pina
Lcd_rs_pin_num Alias 5
' cs pin declare
Lcd_cs_port Alias Porta
Lcd_cs_ddr Alias Ddra
Lcd_cs_pin Alias Pina
Lcd_cs_pin_num Alias 4
' lcd databus declare
Lcd_db_msb_port Alias Portd
Lcd_db_msb_ddr Alias Ddrd
Lcd_db_msb_pin Alias Pind
Lcd_db_lsb_port Alias Portc
Lcd_db_lsb_ddr Alias Ddrc
Lcd_db_lsb_pin Alias Pinc
' lcd global defines
'-------------------tucj screen
Ts_size_x Alias 240
Ts_size_y Alias 320
Ts_val_entry_mod Alias &H1030 '1030 bgr=1
'Ts_ins_gram_hor_ad Alias Ts_ins_gram_adx
'Ts_ins_gram_ver_ad Alias Ts_ins_gram_ady
'Ts_ins_hor_start_ad Alias Ts_ins_start_adx
'Ts_ins_hor_end_ad Alias Ts_ins_end_adx
'Ts_ins_ver_start_ad Alias Ts_ins_start_ady
'Ts_ins_ver_end_ad Alias Ts_ins_end_ady
'==============================regidter====== ===================================
Ts_ins_start_osc Alias &H0000
Ts_ins_driv_out_ctrl Alias &H0001
Ts_ins_driv_wav_ctrl Alias &H0002
Ts_ins_entry_mod Alias &H0003
Ts_ins_resize_ctrl Alias &H0004 'RESIZE CONTROL
Ts_ins_disp_ctrl1 Alias &H0007
Ts_ins_disp_ctrl2 Alias &H0008
Ts_ins_disp_ctrl3 Alias &H0009
Ts_ins_disp_ctrl4 Alias &H000A
Ts_ins_rgb_disp_if_ctrl1 Alias &H000C
Ts_ins_frm_marker_pos Alias &H000D
Ts_ins_rgb_disp_if_ctrl2 Alias &H000F
Ts_ins_pow_ctrl1 Alias &H0010
Ts_ins_pow_ctrl2 Alias &H0011
Ts_ins_pow_ctrl3 Alias &H0012
Ts_ins_pow_ctrl4 Alias &H0013
Ts_ins_gram_hor_ad Alias &H0020
Ts_ins_gram_ver_ad Alias &H0021
Ts_ins_rw_gram Alias &H0022
Ts_ins_pow_ctrl7 Alias &H0029
Ts_ins_frm_rate_col_ctrl Alias &H002B
Ts_ins_gamma_ctrl1 Alias &H0030
Ts_ins_gamma_ctrl2 Alias &H0031
Ts_ins_gamma_ctrl3 Alias &H0032
Ts_ins_gamma_ctrl4 Alias &H0035
Ts_ins_gamma_ctrl5 Alias &H0036
Ts_ins_gamma_ctrl6 Alias &H0037
Ts_ins_gamma_ctrl7 Alias &H0038
Ts_ins_gamma_ctrl8 Alias &H0039
Ts_ins_gamma_ctrl9 Alias &H003C
Ts_ins_gamma_ctrl10 Alias &H003D
Ts_ins_hor_start_ad Alias &H0050
Ts_ins_hor_end_ad Alias &H0051
Ts_ins_ver_start_ad Alias &H0052
Ts_ins_ver_end_ad Alias &H0053
Ts_ins_gate_scan_ctrl1 Alias &H0060
Ts_ins_gate_scan_ctrl2 Alias &H0061
Ts_ins_gate_scan_ctrl3 Alias &H006A
Ts_ins_part_img1_disp_pos Alias &H0080
Ts_ins_part_img1_start_ad Alias &H0081
Ts_ins_part_img1_end_ad Alias &H0082
Ts_ins_part_img2_disp_pos Alias &H0083
Ts_ins_part_img2_start_ad Alias &H0084
Ts_ins_part_img2_end_ad Alias &H0085
Ts_ins_panel_if_ctrl1 Alias &H0090
Ts_ins_panel_if_ctrl2 Alias &H0092
Ts_ins_panel_if_ctrl3 Alias &H0093
Ts_ins_panel_if_ctrl4 Alias &H0095
Ts_ins_panel_if_ctrl5 Alias &H0097
Ts_ins_panel_if_ctrl6 Alias &H0098
' lcd color code defines
Ts_col_red Alias &H001F
Ts_col_green Alias &H07E0
Ts_col_blue Alias &HF800
Ts_col_yellow Alias &H07FF
Ts_col_purple Alias &HF81F
Ts_col_black Alias &H0000
Ts_col_white Alias &HFFFF
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' '''''
' start program
Config Portb = Output
Config Portc = Output
Config Portd = Output
Config Porta = Output
Print "Initation..."
$include "Config_AVR-DOS.BAS"
$include "Config_MMC.bas" 'include mmc
Ff = Drivereset()
Ff = Driveinit()
$external Waitms
If Gbdriveerror <> 0 Then
Print "Error Config"
Print Gbdriveerror
End
End If
'include avr-dos
B = Initfilesystem(1) 'init file system
If B <> 0 Then Print "Error MMC"
'Do
'Toggle Porta
'Toggle Portc
'Toggle Portd
'Waitms 100
'Loop
Print "start"
Print "in the name of God"
Call Tslcdinit
'Call Lcdfillcolor
'Wait 5
'az to send data vardashtam vase afzayesh sorat
Ff = Freefile()
Open "omega.bmp" For Binary As #ff
'Print Lof(#ff) ; " length of file"
'Print Fileattr(#ff) ; " file mode" ' should be 32 for binary
Ins = Ts_ins_hor_start_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata 'start asres hor=0
Ins = Ts_ins_hor_end_ad : Call Tslcdoutins
Dat = &H00EF : Call Tslcdoutdata 'end adres hor=240 f0
Ins = Ts_ins_gram_hor_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_ver_start_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata 'start adrese vertical=0
Ins = Ts_ins_ver_end_ad : Call Tslcdoutins
Dat = &H0140 : Call Tslcdoutdata 'end adrese vertical=540(140hex)
Ins = Ts_ins_gram_ver_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_rw_gram : Call Tslcdoutins '*READ data FROM gram
Set Lcd_rs_port.lcd_rs_pin_num
For Omid = 1 To 70
Get #ff , B
Next
For Counterarmin = 1 To 76800
'76800=240*320

Get #ff , A
Get #ff , B
'----------------------
Reset Lcd_cs_port.lcd_cs_pin_num 'reset cs
'Set Lcd_rs_port.lcd_rs_pin_num 'set rs
'Var1 = Dat
'Shift Var1 , Right , 8
Lcd_db_msb_port = B 'Var1 'porta=var1
Lcd_db_lsb_port = A 'Dat
Reset Lcd_wr_port.lcd_wr_pin_num 'reset wr
Set Lcd_wr_port.lcd_wr_pin_num 'set wr
Set Lcd_cs_port.lcd_cs_pin_num
'-----------------------------
Next
Close #ff
Print "ok"
Wait 4
'---------------------------
End
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' '''''
Sub Tslcdoutdata 'write to internal gram
Reset Lcd_cs_port.lcd_cs_pin_num 'reset cs
Set Lcd_rs_port.lcd_rs_pin_num 'set rs
Var1 = Dat
Shift Var1 , Right , 8
Lcd_db_msb_port = Var1 'Var1 'porta=var1
Lcd_db_lsb_port = Dat 'Dat
Reset Lcd_wr_port.lcd_wr_pin_num 'reset wr
Set Lcd_wr_port.lcd_wr_pin_num 'set wr
Set Lcd_cs_port.lcd_cs_pin_num
End Sub
'***************************************** *
Sub Tslcdoutins 'write an index register
'Local Var1 As Word
Reset Lcd_cs_port.lcd_cs_pin_num 'reset cs
Reset Lcd_rs_port.lcd_rs_pin_num 'reset rs
Set Lcd_rd_port.lcd_rd_pin_num 'set rd
Var1 = Ins
Shift Var1 , Right , 8
Lcd_db_msb_port = Var1
Lcd_db_lsb_port = Ins
Reset Lcd_wr_port.lcd_wr_pin_num 'reset wr
Set Lcd_wr_port.lcd_wr_pin_num 'set wr
Set Lcd_cs_port.lcd_cs_pin_num
End Sub
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' '''''
Sub Tslcdinit
'Local Var1 As Byte
Var1 = 1
Shift Var1 , Left , Lcd_rst_pin_num
Lcd_rst_ddr = Lcd_rst_ddr Or Var1
Reset Lcd_rst_port.lcd_rst_pin_num
Waitms 50
Set Lcd_rst_port.lcd_rst_pin_num
Waitms 50
Waitms 100
Ins = &H00E3 : Call Tslcdoutins 'INDEX REGISTER(IR)
Dat = &H3008 : Call Tslcdoutdata 'set the internal vcore voltage
Ins = &H00EF : Call Tslcdoutins
Dat = &H1231 : Call Tslcdoutdata
Ins = Ts_ins_start_osc : Call Tslcdoutins 'drive code read page51
Dat = &H0001 : Call Tslcdoutdata
Waitms 50
Ins = Ts_ins_driv_out_ctrl : Call Tslcdoutins
Dat = &H0100 : Call Tslcdoutdata 'set SS, SM
Ins = Ts_ins_driv_wav_ctrl : Call Tslcdoutins
Dat = &H0700 : Call Tslcdoutdata 'set 1 line inversion
Ins = Ts_ins_entry_mod : Call Tslcdoutins 'H03 CODE REGISRTE FOR 8 BIT MODE
Dat = Ts_val_entry_mod : Call Tslcdoutdata 'H30 SELECT 8BIT CODE
Ins = Ts_ins_resize_ctrl : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata 'FOR CHANGE SIZE

Ins = Ts_ins_disp_ctrl2 : Call Tslcdoutins
Dat = &H0202 : Call Tslcdoutdata 'SAP=1/BT1=1/APE=1/AP1=1/AP0=1 PAGE64
Ins = Ts_ins_disp_ctrl3 : Call Tslcdoutins
Dat = &H000F : Call Tslcdoutdata
Ins = Ts_ins_disp_ctrl4 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_rgb_disp_if_ctrl1 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_frm_marker_pos : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_rgb_disp_if_ctrl2 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_pow_ctrl1 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_pow_ctrl2 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_pow_ctrl3 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_pow_ctrl4 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Waitms 200
Ins = Ts_ins_pow_ctrl1 : Call Tslcdoutins
Dat = &H17B0 : Call Tslcdoutdata
Ins = Ts_ins_pow_ctrl2 : Call Tslcdoutins
Dat = &H0137 : Call Tslcdoutdata
Waitms 50
Ins = Ts_ins_pow_ctrl3 : Call Tslcdoutins
Dat = &H013C : Call Tslcdoutdata
Waitms 50
Ins = Ts_ins_pow_ctrl4 : Call Tslcdoutins
Dat = &H1400 : Call Tslcdoutdata
Ins = Ts_ins_pow_ctrl7 : Call Tslcdoutins
Dat = &H0007 : Call Tslcdoutdata
Waitms 50
Ins = Ts_ins_gram_hor_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_gram_ver_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
'armin goft 5 taye avval ro 1 kardam lcd khoob shodeh
'baghish ro test nakardehaa
Ins = Ts_ins_gamma_ctrl1 : Call Tslcdoutins
Dat = &H0007 : Call Tslcdoutdata '007
Ins = Ts_ins_gamma_ctrl2 : Call Tslcdoutins
Dat = &H0504 : Call Tslcdoutdata '504
Ins = Ts_ins_gamma_ctrl3 : Call Tslcdoutins
Dat = &H0703 : Call Tslcdoutdata '703
Ins = Ts_ins_gamma_ctrl4 : Call Tslcdoutins
Dat = &H0002 : Call Tslcdoutdata '002
Ins = Ts_ins_gamma_ctrl5 : Call Tslcdoutins
Dat = &H0707 : Call Tslcdoutdata '707
Ins = Ts_ins_gamma_ctrl6 : Call Tslcdoutins
Dat = &H0406 : Call Tslcdoutdata '406
Ins = Ts_ins_gamma_ctrl7 : Call Tslcdoutins
Dat = &H0006 : Call Tslcdoutdata '006
Ins = Ts_ins_gamma_ctrl8 : Call Tslcdoutins
Dat = &H0404 : Call Tslcdoutdata '404
Ins = Ts_ins_gamma_ctrl9 : Call Tslcdoutins
Dat = &H0700 : Call Tslcdoutdata '700
Ins = Ts_ins_gamma_ctrl10 : Call Tslcdoutins
Dat = &H0A08 : Call Tslcdoutdata 'a08
Ins = Ts_ins_hor_start_ad : Call Tslcdoutins 'RAM SITING FOR SLECT PIC POSITION
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_hor_end_ad : Call Tslcdoutins
Dat = &H00EF : Call Tslcdoutdata 'END OF HOR ADRES=239
Ins = Ts_ins_ver_start_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_ver_end_ad : Call Tslcdoutins 'GRAM LINE2 SELECT(WE HAVE 320 LINE)
Dat = &H013F : Call Tslcdoutdata '319 END OF VER
Ins = Ts_ins_gate_scan_ctrl1 : Call Tslcdoutins
Dat = &H2700 : Call Tslcdoutdata
Ins = Ts_ins_gate_scan_ctrl2 : Call Tslcdoutins
Dat = &H0001 : Call Tslcdoutdata
Ins = Ts_ins_gate_scan_ctrl3 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_panel_if_ctrl1 : Call Tslcdoutins
Dat = &H0010 : Call Tslcdoutdata
Ins = Ts_ins_panel_if_ctrl2 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_panel_if_ctrl3 : Call Tslcdoutins
Dat = &H0003 : Call Tslcdoutdata
Ins = Ts_ins_panel_if_ctrl4 : Call Tslcdoutins
Dat = &H0110 : Call Tslcdoutdata
Ins = Ts_ins_panel_if_ctrl5 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_panel_if_ctrl6 : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
'------------------------
Ins = Ts_ins_frm_rate_col_ctrl : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
'--------------------------------
Ins = Ts_ins_disp_ctrl1 : Call Tslcdoutins
Dat = &H0133 : Call Tslcdoutdata
End Sub
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' '''''
Sub Lcdfillcolor '**page 52
Local Counter11 As Long 'tabdeile counter1 be counter11
Ins = Ts_ins_hor_start_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata 'start asres hor=0
Ins = Ts_ins_hor_end_ad : Call Tslcdoutins
Dat = &H00EF : Call Tslcdoutdata 'end adres hor=240
Ins = Ts_ins_gram_hor_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_ver_start_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata 'start adrese vertical=0
Ins = Ts_ins_ver_end_ad : Call Tslcdoutins
Dat = &H013F : Call Tslcdoutdata 'end adrese vertical=540(140hex)
Ins = Ts_ins_gram_ver_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_rw_gram : Call Tslcdoutins '*READ data FROM gram
For Counter11 = 0 To 76800 '76800=240*320

Dat = Ts_col_blue : Call Tslcdoutdata
Next
End Sub
''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' ''''''''&# 039;''''''' 9;'''''''' '''''
Sub Lcdfillcolor2 '**page 52
Local Counter11 As Long 'tabdeile counter1 be counter11
Ins = Ts_ins_hor_start_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata 'start asres hor=0
Ins = Ts_ins_hor_end_ad : Call Tslcdoutins
Dat = &H00EF : Call Tslcdoutdata 'end adres hor=240 f0
Ins = Ts_ins_gram_hor_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_ver_start_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata 'start adrese vertical=0
Ins = Ts_ins_ver_end_ad : Call Tslcdoutins
Dat = &H013F : Call Tslcdoutdata 'end adrese vertical=540(140hex)
Ins = Ts_ins_gram_ver_ad : Call Tslcdoutins
Dat = &H0000 : Call Tslcdoutdata
Ins = Ts_ins_rw_gram : Call Tslcdoutins '*READ data FROM gram
Set Lcd_rs_port.lcd_rs_pin_num 'az to send data vardashtam vase afzayesh sorat
For Counter11 = 0 To 76800
'76800=240*320

Dat = Ts_col_red
'----------------------
Reset Lcd_cs_port.lcd_cs_pin_num 'reset cs
'Set Lcd_rs_port.lcd_rs_pin_num 'set rs
Var1 = Dat
Shift Var1 , Right , 8
Lcd_db_msb_port = Var1 'Var1 'porta=var1
Lcd_db_lsb_port = Dat 'Dat
Reset Lcd_wr_port.lcd_wr_pin_num 'reset wr
Set Lcd_wr_port.lcd_wr_pin_num 'set wr
Set Lcd_cs_port.lcd_cs_pin_num
'-----------------------------
Next
End Sub
من کلا از این برنامه سر در نمیارم کسی می تونه خط به خط این برنامه را برام طوری توضیح بده که خودم اون طور که می خوام این برنامه را بنویسم؟!!!
دیدگاه