massibal
stasera ti faccio andare a letto presto.... accetta il regalino....
ma devi promettere che inizierai a studiare in modo che un giorno potrai ricambiare gli aiuti ricevuti
il forum ha bisogno di nuovi sostenitori ... siamo in pochi ma le richieste di supporto aumentano giorno dopo giorno.
- Code: Select all
' ***************************************************************************
' Termometro con sensore LM35
' Range temperatura del sensore: -55°C .. +150°C
' Range misura LCD: 0 .. 80°C
' Accuratezza: ±0.5°C
' MPU: Atmega328p
' By DLG
' ***************************************************************************
$regfile = "M328pdef.dat" 'puoi usare Mega328p o altro micro
$crystal = 16000000
Deflcdchar 0 , 32 , 32 , 31 , 31 , 31 , 31 , 32 , 32 'crea caratteri speciali
Deflcdchar 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1
Deflcdchar 2 , 16 , 16 , 16 , 16 , 16 , 16 , 16 , 16
Deflcdchar 3 , 16 , 16 , 31 , 31 , 31 , 31 , 16 , 16
Deflcdchar 4 , 1 , 1 , 31 , 31 , 31 , 31 , 1 , 1
Deflcdchar 5 , 32 , 32 , 28 , 28 , 28 , 28 , 32 , 32
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , _
E = Portd.6 , Rs = Portd.7 , Wr = Portd.5
Config Lcd = 20 * 4 'LCD 20x4
Config Adc = Single , Prescaler = Auto , Reference = Avcc 'configura ADC
Start Adc 'start ADC
'-------------------------------------------------------------------------------
Dim V As Word
Dim Perc As Word
Dim Volt As Word
Dim Volt_d As Byte
Dim Channel As Byte
Dim J As Byte
Dim Cols As Byte
Dim Cols_d As Byte
'-------------------------------------------------------------------------------
Cls : Cursor Off
Locate 3 , 1 : Lcd "0" 'mostra range misura
Locate 3 , 5 : Lcd "10"
Locate 3 , 10 : Lcd "20"
Locate 3 , 15 : Lcd "30"
Locate 3 , 19 : Lcd Chr(223) ; "C"
'-------------------------------[ Main ]---------------------------------------
Do
V = Getadc(0) 'leggi dal canale (0)
Volt = V * 5 'moltiplica x 5
Volt_d = Volt Mod 10 'calcola il modulo
Volt = Volt / 10
Locate 1 , 1
Lcd Volt ; "," ; Volt_d
Cols = Volt / 2
Locate 2 , 1
For J = 1 To Cols
Select Case J
Case 1 : Lcd Chr(3)
Case 5 : Lcd Chr(4)
Case 10 : Lcd Chr(4)
Case 15 : Lcd Chr(4)
Case 20 : Lcd Chr(4)
Case Else : Lcd Chr(0)
End Select
Next J
Cols_d = Cols Mod 2
If Cols_d > 0 Then
Lcd Chr(5)
Cols = Cols + 2
Else
Cols = Cols + 1
End If
For J = Cols To 20
Select Case J
Case 1 : Lcd Chr(2)
Case 5 : Lcd Chr(1)
Case 10 : Lcd Chr(1)
Case 15 : Lcd Chr(1)
Case 20 : Lcd Chr(1)
Case Else : Lcd Chr(32)
End Select
Next J
Waitms 500
Loop
'-------------------------------------------------------------------------------
End
l'uscita del sensore LM35 la devi collegare all'ingresso ADC0
in questo proegetto ho utilizzato un lcd 20x4 in modo da visualizzare una sorta di barra Vmeter per indicare anche graficamente il valore della temperatura.
volendo puoi modificare il codice e sostituire l'lcd 20x4 con un 16x2.
ciao e buona notte....