سلام دوستان
من یک مگا 8 دارم که دما و رطوبت رو با سنسور dht22 اندازه میگیره وبا ارتباط spi به مگا 32 می فرسته واونجا عملیات خاصی روش انجام میشه ...من میخوام دما ورطویت رو با هم بفرستم وتوی مگا 32 جداش کنم واستفاده ...اما گر شدنی نیست چطور میتونم جدا بفرستم که اطلاعاتم قاطی نشه؟؟؟
اسلیو:
مستر
من یک مگا 8 دارم که دما و رطوبت رو با سنسور dht22 اندازه میگیره وبا ارتباط spi به مگا 32 می فرسته واونجا عملیات خاصی روش انجام میشه ...من میخوام دما ورطویت رو با هم بفرستم وتوی مگا 32 جداش کنم واستفاده ...اما گر شدنی نیست چطور میتونم جدا بفرستم که اطلاعاتم قاطی نشه؟؟؟
اسلیو:
کد:
$regfile = "m8adef.dat" $crystal = 8000000 $hwstack = 60 $swstack = 40 $framesize = 40 '------------------------------------------------------------------------------- Config Spi = Hard , Interrupt = Off , Data Order = Lsb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 4 Enable Spi Spiinit Config Pinb.0 = Input Config Portc.0 = Output 'DHT22 Data Config Timer0 = Timer , Prescale = 8 Dim X As Bit X = 0 Dim Main As Byte Main = 1 Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2 Home Lcd "wait...." Wait 1 Cls '.------------------------------------------------------------------------------- 'Const Min_time = 95 'Const Min_time = 48 Const Min_time = 48 '------------------------------------------------------------------------------- Dim B As Single Dim B1 As Byte Dim E As Single Dim E1 As Byte Dim Count As Byte Dim Signaltime(43) As Byte Dim Humidityw As Word Dim Temperaturew As Word Dim Humsens_chksum As Byte Dim Hum1 As String * 4 Dim Temp1 As String * 4 Dim Humiditys As String * 16 Dim Temperatures As String * 16 Dim Code As Byte Dim A As Byte Dim Strstring As String * 14 Dim Ib As Byte Dim Te As Byte Dim Hu As Byte Dim I As Byte '------------------------------------------------------------------------------- Declare Sub Read_timings Declare Sub Humtemp_values Declare Function Compare_chksum(byval Hsens_humidity As Word , _ Byval Hsens_temperature As Word , Byval Hsens_chksum As Byte) As Byte For I = 1 To 5 Toggle Portc.0 Waitms 150 Next Portc.0 = 0 Do Call Humtemp_values Humiditys = Str(humidityw) Temperatures = Str(temperaturew) Hum1 = Format(humiditys , "00.0") Temp1 = Format(temperatures , "00.0") B = Val(temp1) B1 = Int(b) E = Val(hum1) E1 = Int(e) Locate 1 , 1 Lcd B1 Locate 2 , 1 Lcd E1 Spiin B1 , 1 Spiin E1 , 1 Portc.0 = 1 Waitms 50 Portc.0 = 0 Loop End '------------------------------------------------------------------------------- Sub Read_timings Wait 2 Count = 1 Config Pinb.0 = Output : Portb.0 = 0 ' request data Waitms 20 ' wait 20 ms Config Pinb.0 = Input ' wait for data, receive data While Count < 43 'collect 42 timings / signals Bitwait Pinb.0 , Set 'signal goes high > start timer Start Timer0 Bitwait Pinb.0 , Reset 'signal goes low > stop timer Stop Timer0 Signaltime(count) = Tcnt0 'store number of ticks per signal in Signaltime byte Tcnt0 = 0 Incr Count Wend End Sub '############################################## Humidity and temperature values Sub Humtemp_values Local X As Byte Humidityw = 0 Temperaturew = 0 Humsens_chksum = 0 Call Read_timings For Count = 3 To 42 ' skip first two Select Case Count Case 3 To 18 X = 18 - Count If Signaltime(count) > Min_time Then Toggle Humidityw.x Case 19 To 34 X = 34 - Count If Signaltime(count) > Min_time Then Toggle Temperaturew.x Case 34 To 42 X = 42 - Count If Signaltime(count) > Min_time Then Toggle Humsens_chksum.x End Select Next End Sub '######################### Calculate Checksum and compare with trasnmitted value Function Compare_chksum(byval Hsens_humidity As Word , Byval Hsens_temperature As Word , Byval Hsens_chksum As Byte) As Byte Local Chksum As Byte Chksum = Low(hsens_humidity ) + High(hsens_humidity ) Chksum = Chksum + Low(hsens_temperature) Chksum = Chksum + High(hsens_temperature) If Chksum = Hsens_chksum Then Compare_chksum = 1 Else Compare_chksum = 0 End If End Function
کد:
$regfile = "m32def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 Dim B As Byte Dim A As Byte Dim X As Bit X = 0 Dim Main As Byte Main = 1 Config Portb.0 = Output Dim Te As Byte Te = 113 Dim Hu As Byte Dim S As Byte Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portc , Ce = 2 , Ce2 = 3 , Cd = 4 , Rd = 5 , Reset = 6 , Enable = 7 Config Spi = Hard , Interrupt = On , Data Order = Lsb , Master = No , Polarity = High , Phase = 0 , Clockrate = 4 Setfont Font8x8 Enable Interrupts Enable Spi On Spi Reci Cls Lcdat 4 , 1 , "HELLO WORLD" Wait 1 Spiinit Portb.0 = 1 Waitms 1000 Portb.0 = 0 Cls Showpic 96 , 0 , Temp , 0 Do Lcdat 2 , 80 , B Lcdat 2 , 1 , "humi:" ; A Lcdat 3 , 10 , S Spiout Te , 1 Loop End $include "font8x8.font" $lib "glcdks108.lbx" Reci: Spiin B , 1 Spiin A , 1 Incr S Return Temp: $bgf "tempo.bgf"
دیدگاه