'written by JA1XTQ copyright(c)2014 'LCD I2C sample 'PD4 8pin <--- step (rotation 1>10>100>1000>1) 'PD3 7pin <--- up 'PD2 6pin <--- down 'PB5 16pin <--- sda 'PB7 18pin <--- scl $regfile "ATtiny2313.dat" $crystal = 1000000 Dim Fstep As Long Dim Freq As Long Dim Freqb As Long Config Sda = Portb.5 Config Scl = Portb.7 Config Porta = Output 'timing&data Porta = &B000 Config Portd = Input Dim Slave As Byte Dim Temp As Byte Dim Dat As Byte Slave = &H7C 'slave address of AQM0802A-RN-GBW 0X7C Temp = &H00 Dim Lcddisp As String * 9 Dim Freqdata As Single Dim Freqdds As Single Dim Updown As Byte Dim I As Byte Dim J As Integer Dim D As Byte 'Mybaud = 19200 Freq = 07000000 '7MHz Freqb = Freq Fstep = 100 J = 0 Rem LCD INIT Waitms 10 Dat = &H38 'function set Gosub I2c_1byte Dat = &H39 'function set Gosub I2c_1byte Dat = &H14 'internal OSC frequency Gosub I2c_1byte Dat = &H70 'contrast set Gosub I2c_1byte Dat = &H56 'power/icon/contrast control Gosub I2c_1byte Dat = &H6C 'follower control Gosub I2c_1byte Dat = &H38 'Function set Gosub I2c_1byte Dat = &H0C 'display on/off control Gosub I2c_1byte Dat = &H01 'clear display Waitms 5 Lcddisp = "@LCD I2C" I2csend Slave , Lcddisp , 9 Wait 2 Dat = &H01 'clear LCD Gosub I2c_1byte Dat = &H02 'cursol HOME Gosub I2c_1byte Lcddisp = "@ " + Str(freq) I2csend Slave , Lcddisp , 9 Wait 2 Main: Portd = &B11111111 D = Pind D = D And &B00011100 If D = &B00010100 Then Gosub Frequp Else If D = &B00011000 Then Gosub Freqdown Else If D = &B00001100 Then Gosub Freqstep Else End If End If End If If Freq = Freqb Then If J > 3 Then Gosub Ddsif 'sync J = 0 Else Waitms 250 J = J + 1 End If Else Gosub Ddsif Freqb = Freq Waitms 50 End If Goto Main End Freqstep: If Fstep >= 1000 Then Fstep = 1 Else If Fstep >= 100 Then Fstep = 1000 Else If Fstep >= 10 Then Fstep = 100 Else Fstep = 10 End If End If End If Dat = &H01 'clear LCD Gosub I2c_1byte Dat = &H02 'cursol HOME Gosub I2c_1byte Lcddisp = "@s" + Str(fstep) + Space(6) I2csend Slave , Lcddisp , 9 Waitms 50 Return Frequp: Freq = Freq + Fstep If Freq >= 7100000 Then Freq = 7100000 Dat = &H01 'clear LCD Gosub I2c_1byte Dat = &H02 'cursol HOME Gosub I2c_1byte Lcddisp = "@u" + Str(freq) I2csend Slave , Lcddisp , 9 Waitms 50 Return Freqdown: Freq = Freq - Fstep If Freq <= 7000000 Then Freq = 7000000 Dat = &H01 'clear LCD Gosub I2c_1byte Dat = &H02 'cursol HOME Gosub I2c_1byte Lcddisp = "@d" + Str(freq) I2csend Slave , Lcddisp , 9 Waitms 50 Return Ddsif: Porta = &B010 'startbit Waitms 5 Porta = &B000 'startbit_end Waitms 5 For I = 0 To 31 If Freq.i = 1 Then Porta = &B011 Else Porta = &B010 'databit Waitms 1 Porta = &B000 Waitms 1 Next I Porta = &B000 'end Waitms 5 Return 'sub I2c_1byte: I2cstart I2cwbyte Slave 'slave adr I2cwbyte Temp 'command I2cwbyte Dat 'data I2cstop Waitus 27 Return