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

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

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

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


Вы здесь » Программирование ATMEL в BASCOM. » Схемы » Терморегулятор 3310+DS18B20


Терморегулятор 3310+DS18B20

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

1

Хочу поделиться одной конструкцией собрана на дисплее от Nokia3310 в баскоме новичек . Поэтому несудите строго. Захотелось сделать управление на болер на МК в архиве есть все могу выслать . Вот сам код.

'************************* nik4131@ramblr.ru ***********************************
'********************* коректировка и большая помощ ****************************
'************************** edm2007@mail.ru ************************************
$regfile = "m48def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 8
$framesize = 52
'***************************** NOKIA 3310 **************************************
Config Portc.1 = Output : D3310dc Alias Portc.1             'D/C
Config Portc.0 = Output : D3310ce Alias Portc.0             'SCE
Config Portb.5 = Output : D3310re Alias Portb.5             'RESET
'---------------------------------------------------------
Config Spi = Soft , Dout = Portc.2 , Ss = None , Clock = Portc.3
Spiinit
$include "3310init.bas"                                     'не буду объяснять заезжаная тема
'---------------------------------------------------------
Call D3310reset
Call D3310init
Call D3310clear
'****************************** ПОРТЫ I/O **************************************
Config 1wire = Portb.1                                      'вход датчика температуры
Config Pind.2 = Input : Config Pind.3 = Input               'кнопка управления порога температуры
Config Portb.0 = Output                                     'вывод управления реле
Config Portc.5 = Output : Config Portc.4 = Output           'управление светодиодами(можно также устройствами)
Config Pind.0 = Input : Config Pind.1 = Input               'кнопка регулировки гистерезиса температуры
Config Portd.7 = Output : Speaker Alias Portd.7             'вывод динамика
'***************************** ПРЕРЫВАНИЯ **************************************
Config Int0 = Falling                                       'кнопка настроена на
Config Int1 = Falling                                       'падение напряжения
Enable Interrupts                                           'на выводе МК
Enable Int0                                                 'объявляем прерывание
Enable Int1                                                 'объявляем прерывание
On Int0 Pin                                                 'метка кнопок
On Int1 Pin
'***************************** ПЕРЕМЕННЫЕ **************************************
Dim Ds18(2) As Byte
Dim Gradus As Integer
'------------------------------------------------------------
Dim Reg_temper As Word                                      'вывод на экран температуры
Dim Displ_str As String * 10 , Displ_format As String * 10
'------------------------------------------------------------
Dim Key As Byte , Key_str As String * 1                     'Кнопки вывод на экран
'*******************************************************************************
Sound Speaker , 30 , 500
Key = 70                                                    'начальная установка температуры отключения болера(или чего там)
'-------------------
Restore Termo2
Call D3310bmpout
'-------------------
Do
'----------- работа с одним датчиком DS18B20 ---------------
   1wreset
   1wwrite &HCC
   1wwrite &H44
    Waitms 750
   1wreset
   1wwrite &HCC
   1wwrite &HBE
'-----------------------------------------------------------
   Ds18(1) = 1wread()
   Ds18(2) = 1wread()
   Gradus = 0
   Gradus = Makeint(ds18(1) , Ds18(2))
   Gradus = Gradus * 10
   Gradus = Gradus / 16
'------------------------------------------------------------
Gosub Display_3310
   '-----------------управление-----------------
   If Key =< Reg_temper Then Reset Portb.0                  'кнопками устанавливаем порог температур
       Reg_temper = Reg_temper + 5                          'гистерезис 5 градусов
   If Key => Reg_temper Then Set Portb.0
   '---------------------------------------------------------
    '------можно сказать ненужная часть кода-----
   If Portb.0 = 1 Then                                      'так маленькая фигля мигля )))
      Set Portc.4                                           'синий и красный диоды подсветка дисплея
       Else
      Reset Portc.4
     End If
   If Portb.0 = 0 Then
     Set Portc.5
       Else
     Reset Portc.5
   '---------------------------------------------------------
   End If
Loop
End
'*******************************************************************************
Display_3310:
   '---------------------------------------------------------
   Displ_str = Str(gradus)
   Displ_format = Format(displ_str , "+0.0")                'формат вывода данных
   Call D3310position(2 , 2)                                'координаты курсора X,Y
   Call D3310print(displ_format)                            'вывод текста
   '---------------------------------------------------------
   Reg_temper = Gradus / 10                                 'перерасчет для показа установки
   Call D3310position(3 , 4)                                'координаты курсора X,Y
   Key_str = Str(key)
   Call D3310print(key_str)                                 'установка порога отключения (точность 1 градус)
   '---------------------------------------------------------
Return
'*******************************************************************************
Pin:
  Sound Speaker , 30 , 500
   If Pind.2 = 0 Then Incr Key
   If Pind.3 = 0 Then Decr Key
  Eifr = 3
Return
'*******************************************************************************
$include "termo2.bas"
$include "3310end.bas"
'*******************************************************************************

0

2

В железе работает? файл протеус есть? Некоторые непонятки есть. К примеру:

Код:
Key_str As String * 1

, потом   

Код:
Key_str = Str(key)
   Call D3310print(key_str)

Что на индикаторе?

0

3

На индик5аторе показание текущей температуры и показания верхнего порога срабатывания здесь установлен в 70 градусов

0

4

в архиве есть все на почту если вложу только как?

0

5

Я  к тому, что резервируете память под один знак, а выводите на экран два знака.  Т.е. получается в литровой банке, хотите перенести два литра воды.

0

6

согласен с вами это  просто попытка. В железе работает с дисплеем еще не полностью разобрался еще есть конечно проблемы но как есть пока оставил проект как есть кому интересно пришлю полностью

0


Вы здесь » Программирование ATMEL в BASCOM. » Схемы » Терморегулятор 3310+DS18B20