ايران ويج

نسخه‌ی کامل: مشکل در نشان دادن دما
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام دوستان
من یه دماسنج با lm35 ساختم ولی وقتی میخواد دمارو نشون بده عدد 499 رو نشون میده سنسور رو تست کردم سالم بود فقط مدار برای مگا 32 بود من تغیرش دادم به مگا هشت البته مدار ترموستات هست ولی دما رو هم نشون میده
کد php:
$regfile "m8def.dat"
$crystal 800000

Config Lcdpin 
Pin Rs Pind.0 Pind.2 Db4 Pind.4 Db5 Pind.5 Db6 Pind.6 Db7 Pind.7
Config Lcd 
16 2
Cursor Off
Cls

Config Adc 
Single Prescaler Auto Reference Avcc
Start Adc

Config Portb.6 
Input Portb.6 Up_key1 Alias Pinb.6
Config Portb.7 
Input Portb.7 Down_key1 Alias Pinb.7
Config Portb.5 
Input Portb.5 Up_key2 Alias Pinb.5
Config Portb.4 
Input Portb.4 Down_key2 Alias Pinb.4

Config Portc.3 
Output Portc.3 Heaters Alias Portc.3
Config Portc.2 
Output Portc.2 Fan Alias Portc.2

Dim W 
As Word Temp As Single
Dim Input_mv 
As Single

Dim Maximum_temperature 
As Single
Dim Maximum_temperature_eeprom 
As Eram Single
Dim Maximum_temperature_high 
As Single
Dim Maximum_temperature_low 
As Single

Dim Minimum_temperature 
As Single
Dim Minimum_temperature_eeprom 
As Eram Single
Dim Minimum_temperature_high 
As Single
Dim Minimum_temperature_low 
As Single

Dim T 
As Word 300

  Set Portc.2
   Waitms 200
   Reset Portc.2
   Waitms 200
   Set Portc.2
   Waitms 200
   Reset Portc.2
'Gosub Eeprom_default
Gosub Eeprom_load
Gosub Display_start_text

Do
   If Up_key1 = 0 Then
      Gosub Up_maximum_temperature
      Gosub Eeprom_save
   End If
   If Down_key1 = 0 Then
      Gosub Down_maximum_temperature
      Gosub Eeprom_save
   End If
   If Up_key2 = 0 Then
      Gosub Up_minimum_temperature
      Gosub Eeprom_save
   End If
   If Down_key2 = 0 Then
      Gosub Down_minimum_temperature
      Gosub Eeprom_save
   End If
   Gosub Red_temp
   Gosub Setting_hiter
   Gosub Setting_fan
   Gosub Show_temp
   Waitms T

Loop

End
'
//////////////////////////////////////////////


'**********************************************
Display_start_text:
   Cls :
   Locate 1 , 1 : Lcd " mehran  abbasi"
   Wait 1
   Locate 2 , 1 : Lcd "  ****  "
   Wait 7 : Cls
   Locate 1 , 1 : Lcd " control daghigh "
   Locate 2 , 1 : Lcd "    damaye motor"
   Wait 1
   Display Off
   Wait 1
   Display On

   Wait 6 : Cls
Return

'
**********************************************
Eeprom_default:
   
Maximum_temperature 30.0
   Minimum_temperature 
20.0
   Maximum_temperature_eeprom 
Maximum_temperature
   Minimum_temperature_eeprom 
Minimum_temperature
Return

'**********************************************
Eeprom_save:
   Maximum_temperature_eeprom = Maximum_temperature
   Minimum_temperature_eeprom = Minimum_temperature
Return

'
**********************************************
Eeprom_load:
   
Maximum_temperature Maximum_temperature_eeprom
   Minimum_temperature 
Minimum_temperature_eeprom
Return

'**********************************************
Up_maximum_temperature:
   Maximum_temperature = Maximum_temperature + 0.5
   If Maximum_temperature < 0 Or Maximum_temperature > 99 Then Maximum_temperature = 0
Return

'
**********************************************
Down_maximum_temperature:
   
Maximum_temperature Maximum_temperature 0.5
   
If Maximum_temperature Or Maximum_temperature 99 Then Maximum_temperature 99
Return

'**********************************************
Up_minimum_temperature:
   Minimum_temperature = Minimum_temperature + 0.5
   If Minimum_temperature < 0 Or Minimum_temperature > 99 Then Minimum_temperature = 0
Return

'
**********************************************
Down_minimum_temperature:
   
Minimum_temperature Minimum_temperature 0.5
   
If Minimum_temperature Or Minimum_temperature 99 Then Minimum_temperature 99
Return

'**********************************************
Red_temp:
   W = Getadc(0)
   Input_mv = W * 4.8828125
   Temp = Input_mv / 10
Return

'
**********************************************
Show_temp:
   
Locate 1 Lcd "damaye motor: "
   
Locate 2 Lcd Fusing(minimum_temperature "#.#")
   
Locate 2 Lcd "<"
   
Locate 2 Lcd Fusing(temp "#.#")
   
Locate 2 10 Lcd "<"
   
Locate 2 11 Lcd Fusing(maximum_temperature "#.#")
Return

'**********************************************
Setting_fan:
   Maximum_temperature_high = Maximum_temperature
   Maximum_temperature_low = Maximum_temperature - 1
   If Temp > Maximum_temperature_high Then
      Set Fan
   Elseif Temp < Maximum_temperature_low Then
      Reset Fan
   End If
Return

'
**********************************************
Setting_hiter:
   
Minimum_temperature_high Minimum_temperature 1
   Minimum_temperature_low 
Minimum_temperature
   
If Temp Minimum_temperature_low Then
      Set Heaters
   
Elseif Temp Minimum_temperature_high Then
      Reset Heaters
   End 
If
Return 
سلام
مهندس وقت نکردم برنامه رو چک کنم:(
فقط محاسبات و چک کنید که اشتباه نکرده باشید
یا موقع تعویض میکروها، یه سری پورت و پین هارو جا ننداخته باشیدو...
اگه شماتیکش و پیوست کنید بهتره میشه کمکتون کرد.


خوش باشید.
وقتی به جای خروجی سنسور منفی میدم بهadcعدد صفر نشون میده و وقتی مثبت میدم عدد 499 رو نشون میده !