Code:
' *
' * Title : LCD Thermometer LM35.bas
' * Version : 1.0
' * Last Updated : 17.04.2006
' * Target : AT Mega8
' * Author : www.avrprojects.net
' * Program code : Bascom AVR
' * Hardware req. : LM35
' * Description : read analog value from LM 35 temperature sensor, show the result on a LCD
' * display with bar-graph
' ***************************************************************************
$regfile = "M8def.dat" ' use the Mega8
$crystal = 1000000
Deflcdchar 0 , 32 , 32 , 31 , 31 , 31 , 31 , 32 , 32 ' replace ? with number (0-7)'
Deflcdchar 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ' replace ? with number (0-7)
Deflcdchar 2 , 16 , 16 , 16 , 16 , 16 , 16 , 16 , 16 ' replace ? with number (0-7)
Deflcdchar 3 , 16 , 16 , 31 , 31 , 31 , 31 , 16 , 16 ' replace ? with number (0-7)
Deflcdchar 4 , 1 , 1 , 31 , 31 , 31 , 31 , 1 , 1 ' replace ? with number (0-7)
Deflcdchar 5 , 32 , 32 , 28 , 28 , 28 , 28 , 32 , 32 ' replace ? with number (0-7)
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
Config Lcd = 16 * 2
Config Pind.1 = Output
Config Pinb.0 = Input
Taster1 Alias Pinb.0
Led1 Alias Portd.1
Config Adc = Single , Prescaler = Auto , Reference = Avcc 'config ADC
Start Adc
Dim X As Word
Const A = 70
Dim W As Word , Perc As Word , Volt As Word , Volt_d As Byte , Channel As Byte , I As Byte , Cols As Byte , Cols_d As Byte
Cls
Cursor Off
Locate 3 , 1
Lcd "0"
Locate 3 , 4
Lcd "10"
Locate 3 , 8
Lcd "20"
Locate 3 , 12
Lcd "30"
Locate 3 , 16
Lcd Chr(223) ; "C"
Do
X = Getadc(1)
If X > A Then
Led1 = 1
Else Led1 = 0
End If
W = Getadc(0)
Volt = W * 5
Volt_d = Volt Mod 10
Volt = Volt / 10
Locate 1 , 1
Lcd Volt ; "," ; Volt_d
Cols = Volt / 2
Locate 2 , 1
For I = 1 To Cols
Select Case I
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 I
Cols_d = Cols Mod 2
If Cols_d > 0 Then
Lcd Chr(5)
Cols = Cols + 2
Else
Cols = Cols + 1
End If
For I = Cols To 20
Select Case I
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 I
Waitms 1000
Loop
End
Darf ich zweimal AVGND und AVCC als Stromversorgung hernehmen ?
Lesezeichen