پاسخ : کدهای راه اندازی LCD-N96 با Bascom
ممنون بررسی میکنم .اگه دانشگاه هم بری یه سر به اینجا بزن. :read:
ممنون بررسی میکنم .اگه دانشگاه هم بری یه سر به اینجا بزن. :read:
$regfile = "M128def.dat" $crystal = 11059200 $baud = 9600 $hwstack = 128 ' default use 32 for the hardware stack $swstack = 128 ' default use 10 for the SW stack $framesize = 256 $baud = 9600 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 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 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 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 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '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 Portc Lcd_db_msb_ddr Alias Ddrc Lcd_db_msb_pin Alias Pinc Lcd_db_lsb_port Alias Portf Lcd_db_lsb_ddr Alias Ddrf Lcd_db_lsb_pin Alias Pinf ' 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 'dec=80 Ts_ins_hor_end_ad Alias &H0051 'dec=81 Ts_ins_ver_start_ad Alias &H0052 'dec=82 Ts_ins_ver_end_ad Alias &H0053 'dec=83 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 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' 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 Set Portb.5 : Waitms 300 : Reset Portb.5 Print "start" Print "in the name of God" Call Tslcdinit 'Call Lcdfillcolor 'Wait 5 Portd.7 = 1 'az to send data vardashtam vase afzayesh sorat Ff = Freefile() Open "omega.bmp" For Binary As #ff Portg.3 = 1 'Print Lof(#ff) ; " length of file" 'Print Fileattr(#ff) ; " file mode" ' should be 32 for binary Ins = Ts_ins_hor_start_ad : Call Tslcdoutins 'dec=80 Dat = &H0000 : Call Tslcdoutdata 'start asres hor=0 Ins = Ts_ins_hor_end_ad : Call Tslcdoutins 'dec=81 Dat = &H00EF : Call Tslcdoutdata 'end adres hor=240 f0 Ins = Ts_ins_gram_hor_ad : Call Tslcdoutins 'dec=32 Dat = &H0000 : Call Tslcdoutdata Ins = Ts_ins_ver_start_ad : Call Tslcdoutins 'dec=82 Dat = &H0000 : Call Tslcdoutdata 'start adrese vertical=0 Ins = Ts_ins_ver_end_ad : Call Tslcdoutins 'dec=83 Dat = &H0140 : Call Tslcdoutdata 'end adrese vertical=540(140hex)(des=320) Ins = Ts_ins_gram_ver_ad : Call Tslcdoutins 'dec=33 Dat = &H0000 : Call Tslcdoutdata Ins = Ts_ins_rw_gram : Call Tslcdoutins '*READ data FROM gram dec=34 Set Lcd_rs_port.lcd_rs_pin_num A = 0 : B = 0 For Omid = 1 To 70 Get #ff , B Next For Counterarmin = 1 To 76800 'A = 0 'B = Counterarmin '76800=240*320 ;) Get #ff , A Get #ff , B 'A = 100 'B = 0 '---------------------- 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 Portg.3 = 0 Print "ok" Wait 4 '--------------------------- End '------------------------------------------------------------------------------- '-----------------------------Sub Tslcdoutdata---------------------------------- '------------------------------------------------------------------------------- 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----------------------------------- '------------------------------------------------------------------------------- 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 '------------------------------------------------------------------------------- '-------------------------------Sub Tslcdinit----------------------------------- '------------------------------------------------------------------------------- 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 '------------------------------------------------------------------------------- '-----------------------------Sub Lcdfillcolor---------------------------------- '------------------------------------------------------------------------------- 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 '------------------------------------------------------------------------------- '-----------------------------Sub Lcdfillcolor2--------------------------------- '------------------------------------------------------------------------------- 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
دیدگاه