Хочу поделиться одной конструкцией собрана на дисплее от 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"
'*******************************************************************************