'------------------------------------- 'Project: Measuring temperature ' with LM35, ADC0831 & AT90S2313 'File: tempLM35-D.bas = DEMO 'File: tempLM35.hex = COMPLETE 'Copyright: Kripa PURI 'WWW: www.avr.4mg.com 'Device: Atmel AVR uC 'Date: 16.10.2004 '------------------------------------- $crystal = 4000000 $regfile = "2313def.dat" Dim A As Byte , Temp As Byte , T1 As Byte , T2 As Byte Deflcdchar 0 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32 Config Lcd = 16 * 2 'Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 'Enable = Portd.1 , Rs = Portd.0 '------------------------------------- 'Standard LCD 2x16; type:CMC216x01 or sim.; www.cct.com.my 'pin1: Ground(-) 'pin2: Supply(+) 'pin3: Supply(0V-5V DC) for LCD Contrast Level 'pin4: RS Signal 'pin5: R/W Selection 'pin6: Enable Signal 'pin7: Db0 (Data Bus Line) 'pin8: Db1 (Data Bus Line) 'pin9: Db2 (Data Bus Line) 'pin10: Db3 (Data Bus Line) 'pin11: Db4 (Data Bus Line) 'pin12: Db5 (Data Bus Line) 'pin13: Db6 (Data Bus Line) 'pin14: Db7 (Data Bus Line) 'pin15: Backlight Ground(-) 'pin16: Backlight Supply(+) '------------------------------------- Config Portd = &B11111111 Config Portb = &B00011110 Tran1 Alias Portb.4 Tran2 Alias Portb.3 Clk Alias Portd.6 Adcout Alias Pinb.0 Cs1 Alias Portb.2 Cs2 Alias Portb.1 Set Portb.0 Set Portb.5 Set Portb.6 Set Portb.7 Set Cs1 Set Cs2 Cls Cursor Off Noblink Lcd "WWW.AVR.4MG.COM" Wait 2 Lowerline Lcd "GSM: 040 832 179" Wait 2 Cls Do 'beremo senzor No.1 Reset Cs1 Gosub Pulse Gosub Pulse A = 0 T1 = 0 For Temp = 1 To 8 T1 = T1 * 2 Gosub Pulse T1 = T1 + A If Adcout = 1 Then A = 1 Else A = 0 End If Next Temp Set Cs1 Waitms 100 'beremo senzor No.2 Reset Cs2 Gosub Pulse Gosub Pulse A = 0 T2 = 0 For Temp = 1 To 8 T2 = T2 * 2 Gosub Pulse T2 = T2 + A If Adcout = 1 Then A = 1 Else A = 0 End If Next Temp Set Cs2 Waitms 100 'pogoji za vklop relejev ' 'V hex verziji je tukaj podprogram MENU, za vnos temperature T1 in T2. 'Temperaturo T1 in T2 pri kateri vklopi rele, vnesemo s pomočjo tipk 5,6,in 7. ' If T1 < 24 Then Set Tran1 End If If T1 > 27 Then Reset Tran1 End If If T2 < 26 Then Set Tran2 End If If T2 > 29 Then Reset Tran2 End If 'izpisemo na LCD display prvo in drugo temperaturo, ter stanje izhodov Locate 1 , 1 Lcd "T1:" If T1 < 10 Then Lcd " " Lcd T1 ; Chr(0) ; "C" Locate 1 , 10 Lcd "Out1:" ; Tran1 Locate 2 , 1 Lcd "T2:" If T2 < 10 Then Lcd " " Lcd T2 ; Chr(0) ; "C" Locate 2 , 10 Lcd "Out2:" ; Tran2 Wait 1 Loop Pulse: Set Clk Waitus 10 Reset Clk Return