'18LF4620 32Mhz RX 2XPIC 010818 1800 Define CONFIG1L = 0x00 Define CONFIG1H = 0x08 'INT OSC Define CONFIG2L = 0x1e Define CONFIG2H = 0x00 Define CONFIG3L = 0x00 Define CONFIG3H = 0x81 '0x80 'Set for HVP Define CONFIG4L = 0x80 Define CONFIG4H = 0x00 Define CONFIG5L = 0x0f Define CONFIG5H = 0xc0 Define CONFIG6L = 0x0f Define CONFIG6H = 0xe0 Define CONFIG7L = 0x0f Define CONFIG7H = 0x40 'Define SIMULATION_WAITMS_VALUE = 1 'Comment in for SIM out for PIC Define CLOCK_FREQUENCY = 32 Define SINGLE_DECIMAL_PLACES = 2 Define STRING_MAX_LENGTH = 40 'Needs raising to fit the whole NMEA or BASE sentence for transmit>>>>>>>>>> AllDigital 'SET PIN IN/OUT TRISA = %00000000 '7=XTL 6=XTL 5=0=Slave select TRISB = %00000000 '7=PGD 6=PGC 543210 OLD SERVOS TRISC = %10010000 '7=RX=1 6=RX=0 5=SDO 4=SDI=1 3=SCK=0 1=LCD5110 RST=0 0=LCD5110 DATA=1 COMMAND=0 TRISD = %00000011 '7=RX SWITCH 6=CS3 COMPASS 5=CS2 altmtr c/s=0 4=CS1 lcd5110 c/s=0 3=SET HC-12 C/S=0 1=18lf2520 READY 0=18lf2520 ERROR TRISE = %00000100 '2=Button 1=RlED 0=YLED 'SET BITS ON/OFF PORTA = %00000000 'ON/OFF PORTB = %00000000 LATB = 0 PORTC = %00000000 PORTD = %11110000 'ALL C/S HIGH PORTE = %00000000 'POSS MCLR RE3 WaitMs 10 'SPI ''Define SPI_CS_REG = PORTD [USED WHEN IN SLAVE MODE] ''Define SPI_CS_BIT = 4[USED WHEN IN SLAVE MODE] Define SPI_SCK_REG = PORTC Define SPI_SCK_BIT = 3 Define SPI_SDI_REG = PORTC 'not used, but left in so OSH does not burp Define SPI_SDI_BIT = 4 Define SPI_SDO_REG = PORTC Define SPI_SDO_BIT = 5 SPIPrepare Symbol yled = LATE.0 Symbol rled = LATE.1 Symbol lcd_reset = LATC.1 '[CHECK ALL???????] Symbol lcd_mode = LATC.0 '1=DATA ,0=COMMAND Symbol lcd5110 = LATD.4 '5110 LCD Symbol altmtr = LATD.5 'BAROMETER/TEMP Symbol compss = LATD.6 'MPU-9255 Symbol dataswitch = LATD.7 'RX 2to1 switch 1=GPS 0=HC-12 Symbol radset = LATD.3 'RADSET 0=COMMAND ON 1=DATA ON '#################################################################################################### 'Start up LEDS yled = 1 rled = 0 WaitMs 1000 yled = 0 rled = 1 WaitMs 1000 Dim char As Byte Dim msg1 As String 'any msg data will be passed via this string Dim ascval As String Dim x As Byte Dim y As Byte ''Dim row As Byte 'lcd row pointer Dim xp As Byte 'normal font horiz Dim yp As Byte 'vert lcd location ''''''''GPS Dim str1(80) As Byte 'GPGGA or $BASE STR1 ARRAY Dim strchr As String 'GPGGA or $BASE msg Dim csv As Byte 'COMMA POSITION in GPS msg Dim sinlat As Single Dim sinlong As Single Dim strtim As String Dim strlat As String Dim strlong As String ''Dim char As Byte Dim rxi As Byte Dim txi As Byte ''''''''''''''''''''''''''''SETUP MODULES ''''''''BMP280 CALC 'Dim var1 As Single 'Dim var2 As Single 'Dim b(24) As Byte 'Dim data As Byte 'Dim t_fine As Single 'Dim t_raw As Long 'Dim p_raw As Long 'Dim adc_t As Single 'Dim adc_p As Single 'Dim tp As Single 'TEMP result in CALC 'Dim pr As Single 'PRESS result in CALC 'Dim strtp As String 'Dim strpr As String 'Dim i As Byte 'Dim adr As Byte 'ADDRESS FOR BMP280 'Dim t1 As Word 'Compensation parameters 'Dim t2 As Word 'Dim t3 As Word 'Dim p1 As Word 'Dim p2 As Word 'Dim p3 As Word 'Dim p4 As Word 'Dim p5 As Word 'Dim p6 As Word 'Dim p7 As Word 'Dim p8 As Word 'Dim p9 As Word 'Dim dig_t1 As Single 'Compensation parameters 'Dim dig_t2 As Single 'Dim dig_t3 As Single 'Dim dig_p1 As Single 'Dim dig_p2 As Single 'Dim dig_p3 As Single 'Dim dig_p4 As Single 'Dim dig_p5 As Single 'Dim dig_p6 As Single 'Dim dig_p7 As Single 'Dim dig_p8 As Single 'Dim dig_p9 As Single '############################################################################### ''''''''COMPASS MPU-9250''''[READ = 10000000 00000000] Dim compdata As Byte Dim i2cdisaddr As Byte 'Disable I2C register address i2cdisaddr = 0x0f 'Disable I2C register Dim i2cdis As Byte 'I2C disable setting Dim cntl1addr As Byte 'Power and measurement cntl1addr = 0x0a 'CNTL1 MODE register Address Dim cntl1 As Byte Dim st1addr As Byte 'For checking BIT0 DRDY st1addr = 0x02 Dim compxladdr As Byte 'COMPASS XYZ register addresses(PERHAPS NOT NEEDED] compxladdr = 0x03 Dim compxhaddr As Byte compxladdr = 0x04 Dim compyladdr As Byte compxladdr = 0x04 Dim compyhaddr As Byte compxladdr = 0x06 Dim compzladdr As Byte compxladdr = 0x07 Dim compzhaddr As Byte compxladdr = 0x08 Dim st2addr As Byte 'ST2 Overflow check. READ NECESSARY FOR RELEASE st2addr = 0x0e 'BIT3 = HOFL Overflow check and release. 'OLD COMP MODULEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV ''Dim id_raw As Long 'COMPASS ID ''Dim adc_id As Single ''Dim id As Single 'TEMP result in CALC'###################### ''Dim strid As String ''Dim regb_raw As Byte 'COMPASS REGLB ''Dim strregb As String ''Dim ct_raw As Long 'COMPASS TEMPERATURE ''Dim adc_ct As Single '''Dim ct As Single 'TEMP result in CALC'###################### ''Dim strct As String ''Dim x_rawhb As Byte ''Dim x_raw As Long 'COMPASS X ''Dim adc_x As Single ''Dim xx As Single 'XDATA'############################# ''Dim strx As String ''Dim strxhb As String ''Dim strxlb As String ''Dim y_raw As Long 'COMPASS Y ''Dim adc_y As Singlefhserout ''Dim yy As Single 'YDATA'############################# ''Dim stry As String ''Dim z_raw As Long 'COMPASS Z ''Dim adc_z As Single ''Dim zz As Single 'ZDATA'############################# ''Dim strz As String ''Dim addr As Byte 'ADDRESS FOR COMPASS '''''''''''''''''''''''''''''''''''''''TEST''''''''''''''''''''''''''''''''''''' Dim ident As Byte Dim strdata As String ''''''''''''''''''''''''''''''''''''''''''TEST''''''''''''''''''''''''''''''''''''' ''''''''SERVOS Dim tmr1word As Word Dim servo1 As Single 'dim servo1 As Word 'servo 1 ontime Dim servo2 As Single 'dim servo2 As Word 'servo 2 ontime Dim servo3 As Single 'dim servo3 As Word 'Servo 3 ontime Dim servo4 As Single 'dim servo4 As Word 'Servo 4 ontime Dim tot As Word '22ms - T0 - T3 Dim servo As Byte Dim strbase As String '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Dim st0 As String Dim st1 As String Dim st2 As String Dim st3 As String Dim wt0 As Single Dim wt1 As Single Dim wt2 As Single Dim wt3 As Single Dim arg1 As String '??????????????????????????????? ADCON0 = 0x03 'AN0-1-2-3 Can be used as Analogue inputs. ADCON1 = 0x0e ADCON2 = %10100100 T1CON = %00111101 '1:8 -> Timer1 clock = 1MHz T2CON = 0 T3CON = 0 PIR1 = 0 PIR2 = 0 PIE1 = 0 PIE2 = 0 PIE1.RCIE = 1 'rxd Intr , used for GPS serial input work IPR1 = 0 IPR2 = 0 IPR1.TMR1IP = 1 RCON.IPEN = 1 'This MUST be included when using Interrupts OSCCON = %01100000 'internal 8Mhz clock OSCTUNE.PLLEN = 1 '*4 PLL enabled so Fosc = 32MHZ Disable High Disable Low ''Include "fontsml.bas" 'This 'FONT' file nust be in the same folder as this program code msg1 = "" Hseropen 9600 Hserout "Ready!", CrLf 'Start up LEDS yled = 1 rled = 0 WaitMs 1000 yled = 0 rled = 1 WaitMs 1000 '''''''''''''''''''''''INITIALISATION '''''''''Do a lcd Reset COMMENT IN<<<<<<<<<<<<<< ''''Gosub rst_lcd '5110 states very early RESET is important COMMENT IN<<<<<<<<<<<<<< 'SPIPrepare 'Gosub cmd5110 'init lcd 'WaitMs 10 ''''Call clear() COMMENT IN<<<<<<<<<<<<<< ''''''''''BMP280 INITIALISATION ''''''''''Compensation parameters 'SPICSOn 'For i = 0 To 23 [[[[[[[[BMP280 COMMENTED OUT TOO MANY VARIABLES}}}}}}}}}}}} 'altmtr = 0 'CHIP SELECT BMP280 ON 'adr = 0x88 + i 'SPISend adr 'SPIReceive data 'b(i) = data 'altmtr = 1 'CHIP SELECT BMP280 OFF 'Next i 'SPICSOff ''''''''''Temp coefficents 't1.LB = b(0) 't1.HB = b(1) 't2.LB = b(2) 't2.HB = b(3) 't3.LB = b(4) 't3.HB = b(5) '''''''''''pressure coefficients 'p1.LB = b(6) 'p1.HB = b(7) 'p2.LB = b(8) 'p2.HB = b(9) 'p3.LB = b(10) 'p3.HB = b(11) 'p4.LB = b(12) 'p4.HB = b(13) 'p5.LB = b(14) 'p5.HB = b(15) 'p6.LB = b(16) 'p6.HB = b(17) 'p7.LB = b(18) 'p7.HB = b(19) 'p8.LB = b(20) 'p8.HB = b(21) 'p9.LB = b(22) 'p9.HB = b(23) '''''''''''convert to singles with sign 'dig_t1 = t1 'dig_t2 = t2 'If dig_t2 > 32767 Then 'dig_t2 = dig_t2 - 65536 'Endif 'dig_t3 = t3 'If dig_t3 > 32767 Then 'dig_t3 = dig_t3 - 65536 'Endif 'dig_p1 = p1 'dig_p2 = p2 'If dig_p2 > 32767 Then 'dig_p2 = dig_p2 - 65536 'Endif 'dig_p3 = p3 'If dig_p3 > 32767 Then 'dig_p3 = dig_p3 - 65536 'Endif 'dig_p4 = p4 'If dig_p4 > 32767 Then 'dig_p4 = dig_p4 - 65536 'Endif 'dig_p5 = p5 'If dig_p5 > 32767 Then 'dig_p5 = dig_p5 - 65536 'Endif 'dig_p6 = p6 'If dig_p6 > 32767 Then 'dig_p6 = dig_p6 - 65536 'Endif 'dig_p7 = p7 'If dig_p7 > 32767 Then 'dig_p7 = dig_p7 - 65536 'Endif 'dig_p8 = p8 'If dig_p8 > 32767 Then 'dig_p8 = dig_p8 - 65536 'Endif 'dig_p9 = p9 'If dig_p9 > 32767 Then 'dig_p9 = dig_p9 - 65536 'Endif 'SPICSOn 'altmtr = 0 'CHIP SELECT BMP280 ON 'SPISend 0x60 'WRITE 0xe0 RESET ADDR [Is this needed?] 'SPISend 0xb6 '%10110110 RESET TO 0x00 'altmtr = 1 'CHIP SELECT BMP280 OFF 'altmtr = 0 'CHIP SELECT BMP280 ON 'SPISend 0x74 'WRITE 0xF4 Control CTRL_MEAS reg addr 'SPISend 0x5f '%01011111 T/ON P/ON 't_x2 px16 Normal Mode 'altmtr = 1 'CHIP SELECT BMP280 OFF 'altmtr = 0 'CHIP SELECT BMP280 ON 'SPISend 0x75 'WRITE 0xF5 Control CONFIG reg addr 'SPISend 0x1c '%00011100 osrs_t 0.5ms Table 11-11R filter x16 table 6 'altmtr = 1 'CHIP SELECT BMP280 OFF 'SPICSOff '####################################################################### ''''''''COMPASS INITIALISATION SPICSOn compss = 0 'CHIP SELECT COMPASS ON SPISend 0x0f 'I2C DISABLE REG ADDRESS WRITE SPISend 0x1b 'WRITE I2C DISABLE compss = 1 'CHIP SELECT COMPASS OFF compss = 0 'CHIP SELECT COMPASS ON SPISend 0x0a 'MODE REG ADDRESS WRITE SPISend 0xf2 'WRITE CONTINUOUS MODE compss = 1 'CHIP SELECT COMPASS OFF SPICSOff 'WaitMs 10 '++++++++++++++++++++++++++++++++++++ ''''''''''''''''''''HC-12 INITIALISATION 'PRESS BUTTON (OR RADSET)##Perhaps won't work, cos the HC-12 needs to be switched off for a change###################### radset = 0 'SET HC-12 COMMAND ON WaitMs 100 Hserout "AT+C001", CrLf '433.400SDR# shows WaitMs 100 radset = 1 'SET HC-12 RUN ON WaitMs 100 rled = 0 '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ '########################################################################### 'INTCON.GIE = 1 'Global Interrupt Enable bit 'INTCON.PEIE = 1 'Peripheral Interrupt Enable bit 'INTCON.TMR0IE = 0 'TMR0 Overflow Interrupt Enable bit 'INTCON.INT0IE = 0 'INT0IE: INT0 External Interrupt Enable bit'' 'INTCON.RBIE = 0 'RBIE: RB Port Change Interrupt Enable bit 'INTCON.TMR0IF = 1 'TMR0IF: TMR0 Overflow Interrupt Flag bit 'INTCON.INT0IF = 0 'INT0IF: INT0 External Interrupt Flag bit 'INTCON.RBIF = 0 'RBIF: RB Port Change Interrupt Flag bit(0 = PORTB off) INTCON = %11000100 T1CON.TMR1ON = 0 PIE1.TMR1IE = 1 PIE1.RCIE = 1 '????????????????????????????????????? PIR1.RCIF = 0 msg1 = "" TMR1L = 0xdc TMR1H = 0xf0 Enable High Enable Low ''INTCON.GIE = 1 '%X0000000 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ''INTCON.PEIE = 1 '%0X000000 'SERVO ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' strbase = "1250,1500,1750,2000" msg1 = strbase ''Call strs2hex2(msg1) '?????????????????????????????????? '''idle_loop: '''Goto idle_loop '''End ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' servo1 = 1100 servo2 = 1200 servo3 = 1300 servo4 = 1400 tot = 14000 '22000-t0-t3 servo = 4 tmr1word = 65534 TMR1H = tmr1word.HB TMR1L = tmr1word.LB T1CON.TMR1ON = 1 main: '\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ rled = 1 yled = 0 WaitMs 1000 rled = 0 yled = 1 '''''''READ BMP280 TEMP and PRESS values ADC 20 bit 'SPICSOn 'For i = 0 To 2 'altmtr = 0 'CHIP SELECT BMP280 ON 'adr = 0xfa + i 'SPISend adr 'SPIReceive ALTdata 'b(i) = ALTdata 'altmtr = 1 'CHIP SELECT BMP280 OFF 'Next i 't_raw.LB = b(2) 't_raw.HB = b(1) 't_raw.3B = b(0) 't_raw = ShiftRight(t_raw, 4) 'adc_t = t_raw 'For i = 0 To 2 'altmtr = 0 'CHIP SELECT BMP280 ON 'adr = 0xf7 + i 'SPISend adr 'SPIReceive ALTdata 'b(i) = ALTdata 'altmtr = 1 'CHIP SELECT BMP280 OFF 'Next i 'SPICSOff 'p_raw.LB = b(2) 'p_raw.HB = b(1) 'p_raw.3B = b(0) 'p_raw = ShiftRight(p_raw, 4) 'adc_p = p_raw 'Gosub calc 'strtp = #tp 'From CALC 'strpr = #pr 'From CALC '''''''''''''''''''''''''''''TEST''''''''''''''''''''''''''''''''''''''''' 'READ COMPASS 0X01 REGB ''compss = 0 'CHIP SELECT COMPASS ON ''SPICSOn ''SPISend 0x83 'COMPX ADDR READ ''SPIReceive compdata ''compss = 1 'CHIP SELECT COMPASS OFF ''compss = 0 'CHIP SELECT COMPASS ON ''SPISend 0x8e 'st2addr ADDR READ ''SPIReceive st2addr 'CHECK ST1 (COMPULSARY CLEAR) ''SPICSOff ''compss = 1 'CHIP SELECT COMPASS OFF ''WaitMs 100 '''''''''''''''''''''''''''''TEST'''''''''''''''''''''''''''''''''''''''''''' dataswitch = 0 '0=HC-12 ON ''WaitMs 10 ''Hserin compdata 'TEST:::::::::::::::: ''WaitMs 100 ''dataswitch = 1 '0=HC-12 OFF ''WaitMs 10 '''test ''Hserout "Compdata =", #compdata, CrLf '?????????????????????????????????????????????? ''strregb = #regb_raw '''''''''''''''''''''''''''''TEST'''''''''''''''''''''''''''''''''''''''''''' 'READ X REGISTER 'compss = 0 'CHIP SELECT COMPASS ON 'addr = 0x03 'XDATA ADDRESS XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 'SPICSOn 'For i = 0 To 1 'SPISend addr 'READ X 0X03 'SPIReceive COMPdata 'SPICSOff 'b(i) = COMPdata 'addr = addr + 1 '#################################### 'Next i 'compss = 1 'CHIP SELECT COMPASS OFF 'SPICSOff 'x_raw.HB = b(1) 'x_raw.LB = b(2) 'strx = #x_raw.HB 'strxhb = #x_raw.HB 'strxlb = #x_raw.LB 'READ Y REGISTER 'READ Z REGISTER 'GPS ''''' 'Reads SERVO DATA or NMEA DATA<<<<<<<<<<<<<<<<<<<<<<<< 'bug1:???????????????????????????????????? 'Goto bug1???????????????????????????????? Goto main End ''''''PASTE: $GPGGA,123459.00,5001.00000,N,00059.00000,W,1,04,1.80,1.2,M,47.7,M,,*7F? '''OR PASTE: $BASE,1100,1200,1300,1400,? On Low Interrupt 'NMEA or BASE Save System PIR1.RCIF = 0 PIE1.RCIE = 0 If RCSTA.OERR = 1 Then 'if over run error then flush RXD buffer RCSTA.CREN = 0 RCSTA.CREN = 1 char = RCREG char = RCREG Hserout "RX Err!", CrLf Goto skip1 Endif Hserin char If char = "$" Then 'start str1(0) = char rxi = 1 Else Goto skip1 Endif nxt_rxin: Hserin char If char = "?" Or char = 0x0a Then Goto msg_eol str1(rxi) = char 'Hserout str1(rxi) 'show for testing only rxi = rxi + 1 Goto nxt_rxin 'Hserout CrLf msg_eol: 'Message end of line For x = 0 To 70 Hserout str1(x) Next x Hserout CrLf, CrLf If str1(4) = "G" Then 'G' csv = 0 For txi = 1 To 73 char = str1(txi) strchr = Chr(char) If strchr <> "," Then msg1 = msg1 + strchr Else csv = csv + 1 Gosub get_val Endif Next txi Else msg1 = "" Endif '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' If str1(1) = "B" Then 'B' csv = 0 For txi = 1 To 73 char = str1(txi) strchr = Chr(char) If strchr <> "," Then msg1 = msg1 + strchr Else csv = csv + 1 ''''''Gosub get_val<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Call strs2hex2(msg1) '################################################ Endif Next txi Else msg1 = "" Endif ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Hserout " T=", strtim, " N=", strlat, " W=", strlong, CrLf skip1: PIE1.RCIE = 1 Resume On High Interrupt '4xChannel SERVO Save System PIR1.TMR1IF = 0 'clear the TMR1 IF flag T1CON.TMR1ON = 0 If servo = 4 Then servo = 0 PORTB.0 = 1 tmr1word = 65535 - servo1 TMR1H = tmr1word.HB TMR1L = tmr1word.LB Goto rtn Endif If servo = 0 Then PORTB.0 = 0 PORTB.1 = 1 tmr1word = 65535 - servo2 TMR1H = tmr1word.HB TMR1L = tmr1word.LB Endif If servo = 1 Then PORTB.1 = 0 PORTB.2 = 1 tmr1word = 65535 - servo3 TMR1H = tmr1word.HB TMR1L = tmr1word.LB Endif If servo = 2 Then PORTB.2 = 0 PORTB.3 = 1 tmr1word = 65535 - servo4 TMR1H = tmr1word.HB TMR1L = tmr1word.LB Endif If servo = 3 Then PORTB.3 = 0 tmr1word = 65535 - tot TMR1H = tmr1word.HB TMR1L = tmr1word.LB Endif servo = servo + 1 rtn: T1CON.TMR1ON = 1 Resume 'This subr extracts the main values from the GPS string, into named value messages 'also converts the string to a named numeric value, for maths 'NOTE: hserouts for demo test only get_val: Select Case csv 'COMMA POSITION VALUES Case 1 Case 2 strtim = LeftStr(msg1, 2) + ":" + MidStr(msg1, 3, 2) + ":" + MidStr(msg1, 5, 2) Case 3 strlat = LeftStr(msg1, 10) sinlat = StrValS(strlat) Case 5 strlong = RightStr(msg1, 11) sinlong = StrValS(strlong) Case 12 Case Else EndSelect msg1 = "" Return 'parse msg string into 4, Tmr1 count Up values Proc strs2hex2(arg1 As String) st0 = MidStr(arg1, 5, 4) 'st0 = MidStr(arg1, 1, 4) st1 = MidStr(arg1, 9, 4) 'st1 = MidStr(arg1, 6, 4) st2 = MidStr(arg1, 13, 4) 'st2 = MidStr(arg1, 11, 4) st3 = MidStr(arg1, 17, 4) 'st3 = MidStr(arg1, 16, 4) wt0 = StrValW(st0) wt1 = StrValW(st1) wt2 = StrValW(st2) wt3 = StrValW(st3) servo1 = 65535 - wt0 ''' wt0= NOT wt0 is the same as 65535 -wt0 servo2 = 65535 - wt1 servo3 = 65535 - wt2 servo4 = 65535 - wt3 'the wt is the TMR1 load value Hserout #servo1, ",", #servo2, ",", #servo3, ",", #servo4, CrLf End Proc calc: 'BMP280 'Calculate temperature 'var1 = ((adc_t / 16384 - (dig_t1 / 1024))) * dig_t2 'var2 = (((adc_t) / 131072 - (dig_t1) / 8192) * (adc_t / 131072 - dig_t1 / 8192) * dig_t3) 't_fine = var1 + var2 'tp = (var1 + var2) / 5120 '''Calculate pressure 'var1 = t_fine / 2 - 64000 'var2 = var1 * var1 * dig_p6 / 32768 'var2 = var2 + var1 * dig_p5 * 2 'var2 = var2 / 4 + dig_p4 * 65536 'var1 = ((dig_p3) * var1 * var1 / 524288 + dig_p2 * var1) / 524288 'var1 = (1 + var1 / 32768) * dig_p1 'pr = 1048576 - adc_p 'pr = (pr - (var2 / 4096)) * 6250 / var1 'var1 = dig_p9 * pr * pr / 2147483648 'var2 = pr * dig_p8 / 32768 'pr = pr + (var1 + var2 + dig_p7) / 16 'Return ''Writes the msg To the lcd at xp [column] And yp {row] [WRITES SMALL DIGITS] 'Proc wr_msg(xp As Byte, yp As Byte, msg1 As String) 'lcd_mode = 0 'cmd 'xp = xp * 6 'xp = 0x80 Or xp 'yp = 0x40 Or yp 'SPICSOn 'lcd5110 = 0 '5110 LCD ON 'SPISend xp 'SPISend yp 'lcd5110 = 1 '5110 LCD OFF 'SPICSOff 'lcd_mode = 1 'data 'y = Len(msg1) 'For x = 1 To y 'ascval = MidStr(msg1, x, 1) 'Gosub chr2lcd 'in fontsml.bas 'Next x 'End Proc 'Proc clear() 'For yp = 0 To 5 'Call clr_row(yp) 'Next yp 'End Proc 'Clears all normal font row xp 'Proc clr_row(yp As Byte) 'xp = 0 'lcd_mode = 0 'xp = xp * 6 'xp = 0x80 Or xp 'yp = 0x40 Or yp 'SPICSOn 'lcd5110 = 0 '5110 LCD ON[[[[C/S DOESN'T MAKE ANY DIFFERENCE?????]]] 'SPISend xp 'SPISend yp 'lcd5110 = 1 '5110 LCD OFF 'SPICSOff 'lcd_mode = 1 'SPICSOn 'lcd5110 = 0 '5110 LCD ON 'For x = 0 To 83 'all pixels across 'SPISend 0x00 'Next x 'lcd5110 = 1 '5110 LCD OFF 'SPICSOff 'End Proc 'Initialise 5110 and set lcd writing direction 'cmd5110: 'lcd_reset = 0 'WaitMs 100 'lcd_reset = 1 'WaitMs 10 'lcd_mode = 0 'cmd mode 'WaitMs 10 'SPICSOn 'lcd5110 = 0 '5110 LCD ON 'SPISend 0x21 'WaitUs 100 'SPISend 0xb1 'b8 contrast was b0Set LCD Vop 0xB0 for 5V, 0XB1 for 3.3v, 0XBF if screen too dark] 'WaitUs 100 'SPISend 0x04 'WaitUs 100 'SPISend 0x14 'lcd bias 'WaitUs 100 'SPISend 0x20 'WaitUs 100 'SPISend 0x0c '' 09 now normal data write mode 'WaitUs 100 'lcd5110 = 1 '5110 LCD OFF 'SPICSOff ''this is for setting top left of lcd and bit write direction. 'lcd_mode = 0 'xp = xp * 6 'xp = 0x80 Or xp 'yp = 0x40 Or yp 'SPICSOn 'lcd5110 = 0 '5110 LCD ON 'SPISend xp 'SPISend yp 'lcd5110 = 1 '5110 LCD OFF 'SPICSOff 'WaitMs 5 ''' 'Return ''Reset the lcd 'rst_lcd: 'lcd_reset = 1 'WaitMs 10 'lcd_reset = 0 'WaitMs 10 'lcd_reset = 1 'Return