Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Дисплеи и индикация » помогите с отображением температуры на дисплее


помогите с отображением температуры на дисплее

Сообщений 1 страница 7 из 7

1

Здравствуйте, кто поможет такая проблема
Есть термометр на DS18x20 max 4 датчика
в начале такой код

Cnt1wire = 1wirecount()
   If Cnt1wire > Max1wire Then
      Cnt1wire = Max1wire
   End If

подскажите как отобразить значение температуры на 4 строчном жки в формате

T1=     
T2=
T3=
T4=

отталкиваясь от изначально такого кода

Lcd "T" ; Cnt ; "=" ; Sign_t ; T_int ; "." ; T_frac ; Chr(0) ; " C"

заранее благодарю

0

2

для очистки индикатора и перевода курсора в начало (позиция 1 первой строки) использовать cls
для управления курсором используем Locate
Переводим курсор на вторую строку:
Locate 1, 2 (где 2 = номер строки)

для перемещения по строкам можно использовать:
UPPERLINE , THIRDLINE , FOURTHLINE , Lowerline

0

3

Это я понял, я имел ввиду значение Cnt, получится четыре строки  где периодично будет отображаться одинаковое значение температуры 1, 2, 3, 4 датчиков
нужно другое решение что-то вроде
первая строка Lcd "T"; Cnt 1
вторая строка  Lcd"T"; Cnt2 и т.д.

0

4

может поможет... я так делал.

Код:
W = 1wirecount()
Dsid1(1) = 1wsearchfirst()
Do
 Dsid2(1) = 1wsearchnext()
Loop Until Err = 1
Cls
'_________________________основной цикл программы________________________________________________________
Do
Gosub Convallt                                              'переходим на подпрограмму подачи запросов в датчик температуры
1wverify Dsid1(1)
X = 1                                                            'переменная номера строки дисплея
Gosub Temperature                                           'переходим на подпрограмму подсчета и вывода температуры на дисплей
1wverify Dsid2(1)
X = 2
Gosub Temperature
Loop
End
'_________________________________________________________________________________
Convallt:
 1wreset                                                   
 1wwrite &HCC                                            
 1wwrite &H44
 Waitms 750
Return                                                   
'----------------
Temperature:
If Err = 0 Then
1wwrite &HBE
Byte0 = 1wread()                                          
Byte1 = 1wread()                                           
If Byte1 >= 248 Then                                      
Byte0 = &HFF - Byte0
Byte1 = &HFF - Byte1
Signtemperatura = "-"
Else
Signtemperatura = "+"
End If
T1 = Byte0 / 16                                          
T2 = Byte1 * 16                                         
T1 = T1 + T2
If Signtemperatura = "-" Then Incr T1

If X = 1 Then T = "dat 1 "                              'подставляем имя датчика
If X = 2 Then T = "dat 2 "

Locate X , 1                                                'указываем куда вывести на дисплей
Lcd T ; Signtemperatura ; T1 ; "C" ; Chr(0) ; "   "        
End If
Return

0

5

А я брал за основу AN#111 (http://www.mcselec.com/index.php?option … ;Itemid=57), когда делал термостат, в комментах все очень наглядно, что и где, добавить еще два датчика - совершенно не проблема, но нужно помнить, что при выходе одного датчика из строя и замене на другой, его положение в программе изменится, поэтому, я добавил процедуру присвоения конкретного ID-шника.

0

6

спасибо за ответы, а можно пример кода с ID?

0

7

Это курсор дисплея.
Его отображение отключается так

Код:
Cursor Off

0


Вы здесь » Программирование ATMEL в BASCOM. » Дисплеи и индикация » помогите с отображением температуры на дисплее