اطلاعیه
Collapse
No announcement yet.
dht22
Collapse
X
-
پاسخ : dht22
کد:[VB] "regfile[/VB]
کد:[VB][/VB]
کد:[VB][/VB]
کد:[VB][/VB]
کد:[VB][COLOR=#FF0000][FONT=Courier]=[/FONT][/COLOR][COLOR=#008080][FONT=Courier]"m8def.dat$[/FONT][/COLOR] [COLOR=#000000][FONT=Courier][B][COLOR=#000080] crystal[/COLOR][/B][/FONT][/COLOR][COLOR=#FF0000][FONT=Courier]=[/FONT][/COLOR][COLOR=#000000][FONT=Courier] 16000000[/FONT][/COLOR] [COLOR=#000000][FONT=Courier][B][COLOR=#000080]Config[/COLOR][/B][/FONT][/COLOR][B][COLOR=#000080]Lcd[/COLOR] [COLOR=#FF0000]=[/COLOR] 16 [COLOR=#FF0000]*[/COLOR] 2 [B][COLOR=#000080]Config[/COLOR][/B] Lcdpin [COLOR=#FF0000]=[/COLOR] Pin[COLOR=#FF0000],[/COLOR]Rs[COLOR=#FF0000]=[/COLOR][COLOR=#800000]Portc[/COLOR][COLOR=#FF0000].[/COLOR]5[COLOR=#FF0000],[/COLOR]E[COLOR=#FF0000]=[/COLOR][COLOR=#800000]Portc[/COLOR][COLOR=#FF0000].[/COLOR]4[COLOR=#FF0000],[/COLOR]Db4[COLOR=#FF0000]=[/COLOR][COLOR=#800000]Portc[/COLOR][COLOR=#FF0000].[/COLOR]3[COLOR=#FF0000],[/COLOR]Db5[COLOR=#FF0000]=[/COLOR][COLOR=#800000]Portc[/COLOR][COLOR=#FF0000].[/COLOR]2[COLOR=#FF0000],[/COLOR]Db6[COLOR=#FF0000]=[/COLOR][COLOR=#800000]Portc[/COLOR][COLOR=#FF0000].[/COLOR]1[COLOR=#FF0000],[/COLOR]Db7[COLOR=#FF0000]=[/COLOR][COLOR=#800000]Portc[/COLOR][COLOR=#FF0000].[/COLOR]0 [B][COLOR=#000080]Cursor[/COLOR][/B] [B][COLOR=#000080]Off[/COLOR] [B][COLOR=#000080]Cls[/COLOR][/B] [B][COLOR=#000080]Declare[/COLOR][/B] [B][COLOR=#000080]Sub[/COLOR] Get_th[COLOR=#FF0000]([/COLOR]t [B][COLOR=#000080]As[/COLOR] [B][COLOR=#000080]Byte[/COLOR] [COLOR=#FF0000],[/COLOR] H [B][COLOR=#000080]As[/COLOR] [B][COLOR=#000080]Byte[/COLOR][COLOR=#FF0000])[/COLOR] [B][COLOR=#000080]Config[/COLOR][/B] Serialin [COLOR=#FF0000]=[/COLOR] Buffered [COLOR=#FF0000],[/COLOR] Size [COLOR=#FF0000]=[/COLOR] 128 [B][COLOR=#000080]Config[/COLOR][/B] Serialout [COLOR=#FF0000]=[/COLOR] Buffered [COLOR=#FF0000],[/COLOR] Size [COLOR=#FF0000]=[/COLOR] 128 Dht_put [B][COLOR=#000080]Alias[/COLOR] [COLOR=#800000]Portd[/COLOR][COLOR=#FF0000].[/COLOR]6 Dht_get [B][COLOR=#000080]Alias[/COLOR] [COLOR=#800000]Pind[/COLOR][COLOR=#FF0000].[/COLOR]6 Dht_io_set [B][COLOR=#000080]Alias[/COLOR] [COLOR=#800000]Ddrd[/COLOR][COLOR=#FF0000].[/COLOR]6 [B][COLOR=#000080]Dim[/COLOR][/B] T [B][COLOR=#000080]As[/COLOR] [B][COLOR=#000080]Byte[/COLOR] [COLOR=#008000]'перееменная для хранения температуры[/COLOR] [B][COLOR=#000080]Dim[/COLOR][/B] H [B][COLOR=#000080]As[/COLOR] [B][COLOR=#000080]Byte[/COLOR] [COLOR=#008000]'переменная для хранения влажности[/COLOR] [B][COLOR=#000080]Dim[/COLOR][/B] Crc [B][COLOR=#000080]As[/COLOR] [B][COLOR=#000080]Byte[/COLOR] [COLOR=#008000]'переменная для хранения байта четности[/COLOR] [B][COLOR=#000080]Dim[/COLOR][/B] Mybyte [B][COLOR=#000080]As[/COLOR] [B][COLOR=#000080]Byte[/COLOR] [B][COLOR=#000080]Dim[/COLOR][/B] Sensor_data [B][COLOR=#000080]As[/COLOR] [B][COLOR=#000080]String[/COLOR] [COLOR=#FF0000]*[/COLOR] 40 [COLOR=#008000]'сюда будут записываться данные отсылаемые датчиком[/COLOR] [B][COLOR=#000080]Dim[/COLOR][/B] Tmp_str8 [B][COLOR=#000080]As[/COLOR] [B][COLOR=#000080]String[/COLOR] [COLOR=#FF0000]*[/COLOR] 8 [B][COLOR=#000080]Dim[/COLOR][/B] Count [B][COLOR=#000080]As[/COLOR] [B][COLOR=#000080]Byte[/COLOR] [COLOR=#008000]'переменная для подсчета принятых бит[/COLOR] [B][COLOR=#000080]Enable[/COLOR][/B] [B][COLOR=#000080]Interrupts[/COLOR] [B][COLOR=#000080]Set[/COLOR][/B] Dht_io_set [B][COLOR=#000080]Set[/COLOR][/B] Dht_put [B][COLOR=#000080]Lcd[/COLOR][/B] [COLOR=#008080]"AVRproject.ru"[/COLOR] [B][COLOR=#000080]Lowerline[/COLOR][/B] [B][COLOR=#000080]Lcd[/COLOR][/B] [COLOR=#008080]"DHT11 sensor"[/COLOR] [B][COLOR=#000080]Do[/COLOR][/B] [B][COLOR=#000080]Waitms[/COLOR] 1500 [B][COLOR=#000080]Call[/COLOR] Get_th[COLOR=#FF0000]([/COLOR]t [COLOR=#FF0000],[/COLOR] H[COLOR=#FF0000])[/COLOR] [B][COLOR=#000080]Cls[/COLOR] [B][COLOR=#000080]Lcd[/COLOR] [COLOR=#008080]"TMP: "[/COLOR] [COLOR=#FF0000];[/COLOR] T [COLOR=#FF0000];[/COLOR] [COLOR=#008080]"C"[/COLOR] [B][COLOR=#000080]Lowerline[/COLOR] [B][COLOR=#000080]Lcd[/COLOR] [COLOR=#008080]"PHP: "[/COLOR] [COLOR=#FF0000];[/COLOR] H [COLOR=#FF0000];[/COLOR] [COLOR=#008080]"%"[/COLOR] [B][COLOR=#000080]Loop[/COLOR][/B] [B][COLOR=#000080]Sub[/COLOR][/B] Get_th[COLOR=#FF0000]([/COLOR]t [B][COLOR=#000080]As[/COLOR] [B][COLOR=#000080]Byte[/COLOR] [COLOR=#FF0000],[/COLOR] H [B][COLOR=#000080]As[/COLOR] [B][COLOR=#000080]Byte[/COLOR][COLOR=#FF0000])[/COLOR] Count [COLOR=#FF0000]=[/COLOR] 0 Sensor_data [COLOR=#FF0000]=[/COLOR] [COLOR=#008080]""[/COLOR] [B][COLOR=#000080]Set[/COLOR] Dht_io_set [COLOR=#008000]'делаем PD.6 выходом[/COLOR] [B][COLOR=#000080]Reset[/COLOR] Dht_put [COLOR=#008000]'прижимаем шину к земле[/COLOR] [B][COLOR=#000080]Waitms[/COLOR] 25 [COLOR=#008000]'ждем не менее 18мс[/COLOR] [B][COLOR=#000080]Set[/COLOR] Dht_put [COLOR=#008000]'отпускаем шину[/COLOR] [B][COLOR=#000080]Waitus[/COLOR] 40 [B][COLOR=#000080]Reset[/COLOR] Dht_io_set [COLOR=#008000]'делаем PD.6 входом[/COLOR] [B][COLOR=#000080]Waitus[/COLOR] 40 [COLOR=#008000]'ждем 40 мкс[/COLOR] [B][COLOR=#000080]If[/COLOR] Dht_get [COLOR=#FF0000]=[/COLOR] 1 [B][COLOR=#000080]Then[/COLOR] [COLOR=#008000]'если на нем по прежнему 1[/COLOR] H [COLOR=#FF0000]=[/COLOR] 1 [COLOR=#008000]'значит датчик не ответил[/COLOR] [B][COLOR=#000080]Exit[/COLOR] [B][COLOR=#000080]Sub[/COLOR] [COLOR=#008000]'выходим из подпрограммы[/COLOR] [B][COLOR=#000080]End[/COLOR] [B][COLOR=#000080]If[/COLOR] [COLOR=#008000]'если датчик ответил и прижал шину к земле продолжаем работу[/COLOR] [B][COLOR=#000080]Waitus[/COLOR] 80 [COLOR=#008000]'ждем еще 80 мкс[/COLOR] [B][COLOR=#000080]If[/COLOR] Dht_get [COLOR=#FF0000]=[/COLOR] 0 [B][COLOR=#000080]Then[/COLOR] [COLOR=#008000]'если на линии по прежнему 0[/COLOR] H [COLOR=#FF0000]=[/COLOR] 2 [COLOR=#008000]'значит датчик сошел с ума[/COLOR] [B][COLOR=#000080]Exit[/COLOR] [B][COLOR=#000080]Sub[/COLOR] [COLOR=#008000]'выходим из подпрограммы[/COLOR] [B][COLOR=#000080]End[/COLOR] [B][COLOR=#000080]If[/COLOR] [COLOR=#008000]'если все нормально и датчик ответил правильно, тогда продолжаем[/COLOR] [B][COLOR=#000080]While[/COLOR] Dht_get [COLOR=#FF0000]=[/COLOR] 1 [COLOR=#FF0000]:[/COLOR] [B][COLOR=#000080]Wend[/COLOR] [COLOR=#008000]'ждем пока на шине появится 1[/COLOR] [B][COLOR=#000080]Do[/COLOR] [COLOR=#008000]'начинаем принимать 40 бит данных[/COLOR] [B][COLOR=#000080]While[/COLOR] Dht_get [COLOR=#FF0000]=[/COLOR] 0 [COLOR=#FF0000]:[/COLOR] [B][COLOR=#000080]Wend[/COLOR] [COLOR=#008000]'ждем появления на шине 0[/COLOR] [B][COLOR=#000080]Waitus[/COLOR] 30 [COLOR=#008000]'после появления 0 ждем 30мкс [B][COLOR=#000080]If[/COLOR][/B][COLOR=#000000] Dht_get [/COLOR][COLOR=#FF0000]=[/COLOR][COLOR=#000000] 1 [/COLOR][B][COLOR=#000080]Then[/COLOR][/B]'если на шине 1 [COLOR=#000000] Sensor_data [/COLOR][COLOR=#FF0000]=[/COLOR][COLOR=#000000] Sensor_data [/COLOR][COLOR=#FF0000]+[/COLOR][COLOR=#008080]"1"[/COLOR]'записываем в переменную эту единицу [B][COLOR=#000080]While[/COLOR][/B][COLOR=#000000] Dht_get [/COLOR][COLOR=#FF0000]=[/COLOR][COLOR=#000000] 1 [/COLOR][COLOR=#FF0000]:[/COLOR][B][COLOR=#000080]Wend[/COLOR][/B]'и ждем пока датчик отправит следующий бит [B][COLOR=#000080]Else[/COLOR][/B]'иначе, если там был 0 [COLOR=#000000] Sensor_data [/COLOR][COLOR=#FF0000]=[/COLOR][COLOR=#000000] Sensor_data [/COLOR][COLOR=#FF0000]+[/COLOR][COLOR=#008080]"0"[/COLOR]'записываем этот 0 в переменную [B][COLOR=#000080]End[/COLOR][/B][B][COLOR=#000080]If[/COLOR][/B] [B][COLOR=#000080]Incr[/COLOR][/B][COLOR=#000000] Count [/COLOR]'увеличиваем счетчик на 1 [B][COLOR=#000080]Loop[/COLOR][/B][B][COLOR=#000080]Until[/COLOR][/B][COLOR=#000000] Count [/COLOR][COLOR=#FF0000]=[/COLOR][COLOR=#000000] 40 [/COLOR]'повторяем пока счетчик не досчитает до 40 [B][COLOR=#000080]Set[/COLOR][/B][COLOR=#000000] Dht_io_set[/COLOR] [B][COLOR=#000080]Set[/COLOR][/B][COLOR=#000000] Dht_put[/COLOR] 'начинаем раскладывать полученные данные [COLOR=#000000] Tmp_str8 [/COLOR][COLOR=#FF0000]=[/COLOR][B][COLOR=#000080]Left[/COLOR][/B][COLOR=#FF0000]([/COLOR][COLOR=#000000]sensor_data [/COLOR][COLOR=#FF0000],[/COLOR][COLOR=#000000] 8[/COLOR][COLOR=#FF0000])[/COLOR]'берем левые 8 символов переменной [COLOR=#000000] H [/COLOR][COLOR=#FF0000]=[/COLOR][B][COLOR=#000080]Binval[/COLOR][/B][COLOR=#FF0000]([/COLOR][COLOR=#000000]tmp_str8[/COLOR][COLOR=#FF0000])[/COLOR]'это целая часть влажности [COLOR=#000000] Tmp_str8 [/COLOR][COLOR=#FF0000]=[/COLOR][B][COLOR=#000080]Mid[/COLOR][/B][COLOR=#FF0000]([/COLOR][COLOR=#000000]sensor_data [/COLOR][COLOR=#FF0000],[/COLOR][COLOR=#000000] 17 [/COLOR][COLOR=#FF0000],[/COLOR][COLOR=#000000] 8[/COLOR][COLOR=#FF0000])[/COLOR]'вытаскиваем 8 символов из середины [COLOR=#000000] T [/COLOR][COLOR=#FF0000]=[/COLOR][B][COLOR=#000080]Binval[/COLOR][/B][COLOR=#FF0000]([/COLOR][COLOR=#000000]tmp_str8[/COLOR][COLOR=#FF0000])[/COLOR]'это целая часть температуры [COLOR=#000000] Tmp_str8 [/COLOR][COLOR=#FF0000]=[/COLOR][B][COLOR=#000080]Right[/COLOR][/B][COLOR=#FF0000]([/COLOR][COLOR=#000000]sensor_data [/COLOR][COLOR=#FF0000],[/COLOR][COLOR=#000000] 8[/COLOR][COLOR=#FF0000])[/COLOR]'правые 8 символов [COLOR=#000000] Crc [/COLOR][COLOR=#FF0000]=[/COLOR][B][COLOR=#000080]Binval[/COLOR][/B][COLOR=#FF0000]([/COLOR][COLOR=#000000]tmp_str8[/COLOR][COLOR=#FF0000])[/COLOR]'проверочные данные 'проверка контрольной суммы [COLOR=#000000] Mybyte [/COLOR][COLOR=#FF0000]=[/COLOR][COLOR=#000000] T [/COLOR][COLOR=#FF0000]+[/COLOR][COLOR=#000000] H [/COLOR]'складываем значение температуры и влажности [B][COLOR=#000080]If[/COLOR][/B][COLOR=#000000] Mybyte [/COLOR][COLOR=#FF0000]<>[/COLOR][COLOR=#000000] Crc [/COLOR][B][COLOR=#000080]Then[/COLOR][/B]'если контрольная сумма не сошлась [COLOR=#000000] H [/COLOR][COLOR=#FF0000]=[/COLOR][COLOR=#000000] 3 [/COLOR]'значит полученные данные не верны [B][COLOR=#000080]End[/COLOR][/B][B][COLOR=#000080]If[/COLOR][/B] [/COLOR][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B] [B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][B][COLOR=#008000][B][COLOR=#000080]End[/COLOR][/B][B][COLOR=#000080]Sub[/COLOR][/B][/COLOR][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/B][/VB]
جدیدترین ویرایش توسط اشکان غفارزاده; ۱۴:۵۵ ۱۳۹۶/۰۵/۱۸.
دیدگاه
دیدگاه